release 0.3.2 Фиксы:
- Data Access API расширено функциями для чтения/записи регистров - API для реквестов MB_RespGet.. перенесено в modbus_master - Мастер: коллбек реквеста вызывается и при таймауте - В коллбеке можно понять статус реквеста по hmodbus->RS_STATUS
This commit is contained in:
@@ -348,16 +348,18 @@ void RS_UART_Handler(RS_HandleTypeDef *hRS)
|
||||
RS_Set_RX_End(hRS);
|
||||
|
||||
// Парсим наше сообщение
|
||||
RS_StatusTypeDef parse_res = RS_Parse_Message(hRS, hRS->pMessagePtr, hRS->pBufferPtr);
|
||||
hRS->RS_STATUS = RS_Parse_Message(hRS, hRS->pMessagePtr, hRS->pBufferPtr);
|
||||
|
||||
// Если сообещине принято корректно
|
||||
if(parse_res == RS_OK)
|
||||
if(hRS->RS_STATUS == RS_OK)
|
||||
{
|
||||
RS_Timeout_Stop(hRS);
|
||||
|
||||
hRS->lastPacketTick = uwTick;
|
||||
hRS->lastPacketTick = local_time();
|
||||
if(hRS->sRS_Mode < RS_MASTER_MODE_START)
|
||||
{
|
||||
RS_Response(hRS, hRS->pMessagePtr); // отвечаем на запрос
|
||||
}
|
||||
else
|
||||
{
|
||||
if(hRS->pCallback)
|
||||
@@ -435,12 +437,20 @@ void RS_TIM_Handler(RS_HandleTypeDef *hRS)
|
||||
HAL_TIM_IRQHandler(hRS->htim);
|
||||
|
||||
RS_Abort(hRS, ABORT_RS);
|
||||
|
||||
|
||||
if(hRS->pMessagePtr->MbAddr == hRS->ID) // ошибка если таймаут по нашему сообщению
|
||||
TrackerCnt_Err(hRS->rs_err);
|
||||
hRS->RS_STATUS = RS_TIMEOUT;
|
||||
|
||||
if(hRS->sRS_Mode < RS_MASTER_MODE_START)
|
||||
if(hRS->pMessagePtr->MbAddr == hRS->ID) // ошибка если таймаут по нашему сообщению
|
||||
TrackerCnt_Err(hRS->rs_err);
|
||||
|
||||
if(hRS->sRS_Mode == RS_MASTER_REQUEST) {
|
||||
// Мастер: таймаут ответа -> освобождаем для нового запроса
|
||||
if(hRS->sRS_Mode >= RS_MASTER_MODE_START)
|
||||
{ // Мастер: коллбек и освобождение для нового запроса
|
||||
if(hRS->pCallback)
|
||||
{
|
||||
hRS->pCallback(hRS, hRS->pMessagePtr); // обрабатываем ответ
|
||||
}
|
||||
RS_Set_Free(hRS);
|
||||
} else {
|
||||
// Слейв: перезапускаем прием
|
||||
|
||||
Reference in New Issue
Block a user