From 63e20630c9845e82ef34bd8476c3b2facfda972d Mon Sep 17 00:00:00 2001 From: Aditya Naik Date: Wed, 12 Feb 2020 14:42:00 -0500 Subject: Removed ST HAL dependencies for portability --- src/modbus.c | 28 ++++++++++------------------ 1 file changed, 10 insertions(+), 18 deletions(-) (limited to 'src/modbus.c') diff --git a/src/modbus.c b/src/modbus.c index 98f40bd..4bacdaf 100644 --- a/src/modbus.c +++ b/src/modbus.c @@ -50,9 +50,8 @@ MB_StatusTypeDef WriteSingleRegister(modbus_slave_device *device, uint16_t reg_a MB_StatusTypeDef modbus_transaction(uint8_t func, modbus_slave_device *device, uint16_t rw_addr, int read_num, uint16_t write_value) { - uint8_t adu[256], adu_currsize=0; + uint16_t adu[256], adu_currsize=0; MB_StatusTypeDef MB_status = MB_OK; - HAL_StatusTypeDef UART_status = HAL_OK; /* Add the values that are relevant to all (supported) functions to the buffer */ adu[adu_currsize++] = device->slave_id; @@ -84,8 +83,8 @@ MB_StatusTypeDef modbus_transaction(uint8_t func, modbus_slave_device *device, adu[adu_currsize] = 0; /* Send data using HAL UART */ - for (int i=0; i < adu_currsize; i++) { - UART_status = HAL_UART_Transmit(&device->modbus_uart, &adu[i], 1, MODBUS_TIMEOUT); + for (uint8_t i=0; i < adu_currsize; i++) { + MB_status = MB_UART_Tx(&device->modbus_uart, &adu[i], (uint8_t*)1, &device->modbus_timeout); } @@ -93,10 +92,10 @@ MB_StatusTypeDef modbus_transaction(uint8_t func, modbus_slave_device *device, adu_currsize = 0; int rx_curr_bytesize = 8; - while (rx_curr_bytesize > 0 && MB_status == MB_OK && UART_status == HAL_OK) { - UART_status = HAL_UART_Receive(&device->modbus_uart, &adu[adu_currsize++], - 1, MODBUS_TIMEOUT); - if (UART_status == HAL_OK) { + while (rx_curr_bytesize > 0 && MB_status == MB_OK) { + MB_status = MB_UART_Rx(&device->modbus_uart, &adu[adu_currsize++], + (uint8_t*)1, &device->modbus_timeout); + if (MB_status == MB_OK) { rx_curr_bytesize--; if (adu_currsize == 5) { if (adu[0] != device->slave_id) { @@ -122,12 +121,9 @@ MB_StatusTypeDef modbus_transaction(uint8_t func, modbus_slave_device *device, } } } - else { - MB_status = UART_status + 3; - } } - if (adu_currsize > 5 && MB_status == MB_OK && UART_status == HAL_OK) { + if (adu_currsize > 5 && MB_status == MB_OK) { crc = 0xffff; for (int i=0; i < adu_currsize - 2; i++) { crc = crc16_update(crc, adu[i]); @@ -140,7 +136,7 @@ MB_StatusTypeDef modbus_transaction(uint8_t func, modbus_slave_device *device, } /* For read operations: disassemble ADU into words */ - if (MB_status == MB_OK && UART_status == HAL_OK) { + if (MB_status == MB_OK) { switch (adu[1]) { case read_input_regs: case read_holding_regs: @@ -152,11 +148,7 @@ MB_StatusTypeDef modbus_transaction(uint8_t func, modbus_slave_device *device, } break; } - } - - if (!MB_status && UART_status) { - MB_status = UART_status + 3; - } + } return MB_status; } -- cgit v1.2.3