forked from espressif/esp-modbus
bugfix next message shifting
This commit is contained in:
@@ -174,9 +174,11 @@ static esp_err_t mbc_serial_master_send_request(mb_param_request_t* request, voi
|
|||||||
MB_MASTER_CHECK((data_ptr != NULL),
|
MB_MASTER_CHECK((data_ptr != NULL),
|
||||||
ESP_ERR_INVALID_ARG, "mb incorrect data pointer.");
|
ESP_ERR_INVALID_ARG, "mb incorrect data pointer.");
|
||||||
|
|
||||||
eMBMasterReqErrCode mb_error = MB_MRE_NO_REG;
|
eMBMasterReqErrCode mb_error = MB_MRE_MASTER_BUSY;
|
||||||
esp_err_t error = ESP_FAIL;
|
esp_err_t error = ESP_FAIL;
|
||||||
|
|
||||||
|
if (xMBMasterRunResTake(MB_RESPONSE_TICS)) {
|
||||||
|
|
||||||
uint8_t mb_slave_addr = request->slave_addr;
|
uint8_t mb_slave_addr = request->slave_addr;
|
||||||
uint8_t mb_command = request->command;
|
uint8_t mb_command = request->command;
|
||||||
uint16_t mb_offset = request->reg_start;
|
uint16_t mb_offset = request->reg_start;
|
||||||
@@ -186,6 +188,8 @@ static esp_err_t mbc_serial_master_send_request(mb_param_request_t* request, voi
|
|||||||
mbm_opts->mbm_reg_buffer_ptr = (uint8_t*)data_ptr;
|
mbm_opts->mbm_reg_buffer_ptr = (uint8_t*)data_ptr;
|
||||||
mbm_opts->mbm_reg_buffer_size = mb_size;
|
mbm_opts->mbm_reg_buffer_size = mb_size;
|
||||||
|
|
||||||
|
vMBMasterRunResRelease();
|
||||||
|
|
||||||
// Calls appropriate request function to send request and waits response
|
// Calls appropriate request function to send request and waits response
|
||||||
switch(mb_command)
|
switch(mb_command)
|
||||||
{
|
{
|
||||||
@@ -235,6 +239,7 @@ static esp_err_t mbc_serial_master_send_request(mb_param_request_t* request, voi
|
|||||||
mb_error = MB_MRE_NO_REG;
|
mb_error = MB_MRE_NO_REG;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Propagate the Modbus errors to higher level
|
// Propagate the Modbus errors to higher level
|
||||||
switch(mb_error)
|
switch(mb_error)
|
||||||
|
@@ -255,9 +255,11 @@ static esp_err_t mbc_tcp_master_send_request(mb_param_request_t* request, void*
|
|||||||
MB_MASTER_CHECK((request != NULL), ESP_ERR_INVALID_ARG, "mb request structure.");
|
MB_MASTER_CHECK((request != NULL), ESP_ERR_INVALID_ARG, "mb request structure.");
|
||||||
MB_MASTER_CHECK((data_ptr != NULL), ESP_ERR_INVALID_ARG, "mb incorrect data pointer.");
|
MB_MASTER_CHECK((data_ptr != NULL), ESP_ERR_INVALID_ARG, "mb incorrect data pointer.");
|
||||||
|
|
||||||
eMBMasterReqErrCode mb_error = MB_MRE_NO_REG;
|
eMBMasterReqErrCode mb_error = MB_MRE_MASTER_BUSY;
|
||||||
esp_err_t error = ESP_FAIL;
|
esp_err_t error = ESP_FAIL;
|
||||||
|
|
||||||
|
if (xMBMasterRunResTake(MB_RESPONSE_TIMEOUT)) {
|
||||||
|
|
||||||
uint8_t mb_slave_addr = request->slave_addr;
|
uint8_t mb_slave_addr = request->slave_addr;
|
||||||
uint8_t mb_command = request->command;
|
uint8_t mb_command = request->command;
|
||||||
uint16_t mb_offset = request->reg_start;
|
uint16_t mb_offset = request->reg_start;
|
||||||
@@ -267,6 +269,8 @@ static esp_err_t mbc_tcp_master_send_request(mb_param_request_t* request, void*
|
|||||||
mbm_opts->mbm_reg_buffer_ptr = (uint8_t*)data_ptr;
|
mbm_opts->mbm_reg_buffer_ptr = (uint8_t*)data_ptr;
|
||||||
mbm_opts->mbm_reg_buffer_size = mb_size;
|
mbm_opts->mbm_reg_buffer_size = mb_size;
|
||||||
|
|
||||||
|
vMBMasterRunResRelease();
|
||||||
|
|
||||||
// Calls appropriate request function to send request and waits response
|
// Calls appropriate request function to send request and waits response
|
||||||
switch(mb_command)
|
switch(mb_command)
|
||||||
{
|
{
|
||||||
@@ -317,6 +321,7 @@ static esp_err_t mbc_tcp_master_send_request(mb_param_request_t* request, void*
|
|||||||
mb_error = MB_MRE_NO_REG;
|
mb_error = MB_MRE_NO_REG;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Propagate the Modbus errors to higher level
|
// Propagate the Modbus errors to higher level
|
||||||
switch(mb_error)
|
switch(mb_error)
|
||||||
|
Reference in New Issue
Block a user