Loading...
Searching...
No Matches
rs_message.c File Reference

Реализация протоколов обмена по RS/UART. More...

`#include "rs_message.h"`
`#include "modbus_diag.h"`
Include dependency graph for rs_message.c:

Go to the source code of this file.

## Functions

void | RS_UART_Init (void)
void | RS_UART_DeInit (UART_HandleTypeDef *huart)
void | RS_TIM_Init (void)
void | RS_TIM_DeInit (TIM_HandleTypeDef *htim)
RS_StatusTypeDef | RS_Receive_IT (RS_HandleTypeDef *hRS, RS_MsgTypeDef *RS_msg)
| Начать прием по прерываниям.
RS_StatusTypeDef | RS_Transmit_IT (RS_HandleTypeDef *hRS, RS_MsgTypeDef *RS_msg)
| Начать передачу по прерываниям.
RS_StatusTypeDef | RS_Init (RS_HandleTypeDef *hRS, UART_HandleTypeDef *huart, TIM_HandleTypeDef *htim, uint8_t *pRS_BufferPtr)
| Инициалазация структуры RS_HandleTypeDef.
RS_StatusTypeDef | RS_Abort (RS_HandleTypeDef *hRS, RS_AbortTypeDef AbortMode)
| Отменить прием/передачу RS/UART.
RS_StatusTypeDef | RS_Handle_Receive_Start (RS_HandleTypeDef *hRS, RS_MsgTypeDef *RS_msg)
| Обработчик для начала приема.
RS_StatusTypeDef | RS_Handle_Transmit_Start (RS_HandleTypeDef *hRS, RS_MsgTypeDef *RS_msg)
| Обработчик для начала передачи.
RS_StatusTypeDef | RS_UART_TxCpltCallback (RS_HandleTypeDef *hRS)
| UART TX Callback: коллбек после окончания передачи.
void | RS_UART_Handler (RS_HandleTypeDef *hRS)
| Обработчик прерывания UART.
void | RS_TIM_Handler (RS_HandleTypeDef *hRS)
| Обработчик прерывания TIM.
RS_StatusTypeDef | RS_Timeout_Start (RS_HandleTypeDef *hRS)
| Запуск таймаута приема.
RS_StatusTypeDef | RS_Timeout_Stop (RS_HandleTypeDef *hRS)
| Остановка таймаута приема.
RS_StatusTypeDef | RS_Timeout_Update (RS_HandleTypeDef *hRS)
| Обновление (сброс) таймаута приема.
__weak RS_StatusTypeDef | RS_Response (RS_HandleTypeDef *hRS, RS_MsgTypeDef *RS_msg)
| Пользовательская функция для ответа на запрос по UART.
__weak RS_StatusTypeDef | RS_Collect_Message (RS_HandleTypeDef *hRS, RS_MsgTypeDef *RS_msg, uint8_t *msg_uart_buff)
| Пользовательская функция для сбора сообщения в буфер UART.
__weak RS_StatusTypeDef | RS_Parse_Message (RS_HandleTypeDef *hRS, RS_MsgTypeDef *RS_msg, uint8_t *msg_uart_buff)
| Пользовательская функция для парса сообщения из буфера UART.

## Variables

uint8_t | RS_Buffer [MSG_SIZE_MAX]

## Detailed Description

Реализация протоколов обмена по RS/UART.

Модуль реализует асинхронный обмен сообщениями через UART с использованием:

- Прерываний по приему/передаче
- Детектирования конца фрейма по IDLE линии
- Таймаутов через таймер
- Двухстадийного приема (заголовок + данные)

# Архитектура:

В режиме слейв:

- Инициализация приема с сообщения с максимальным размером MSG_SIZE_MAX
- При срабатывании прерывания IDLE - обработка полученного сообщения В режиме мастер (пока не реализовано):
- Отправка запроса и переход в режим приема сообщения с максимальным размером MSG_SIZE_MAX
- При срабатывании прерывания IDLE - обработка полученного ответа

# Необходимые обработчики:

- RS_UART_Handler() в UARTx_IRQHandler вместо HAL_UART_IRQHandler()
- RS_TIM_Handler() в TIMx_IRQHandler вместо HAL_TIM_IRQHandler()

Definition in file rs_message.c.

## Variable Documentation

## RS_Buffer

uint8_t RS_Buffer[MSG_SIZE_MAX]

Definition at line 28 of file rs_message.c.