feat: 完善Mesh继电器OTA升级闭环
This commit is contained in:
@@ -2,9 +2,9 @@
|
||||
* @file business_protocol.h
|
||||
* @brief STM8 业务帧协议接口。
|
||||
*
|
||||
* 业务帧格式:SRC_H SRC_L | CMD | LEN | DATA | CRC16_L CRC16_H。
|
||||
* 业务帧格式:SRC_H SRC_L | CMD | LEN | DATA | CRC16_H CRC16_L。
|
||||
* SRC 为发送方的 Mesh 短地址;CRC 使用 CRC-16/MODBUS,计算范围为
|
||||
* SRC、CMD、LEN 和 DATA,线上低字节在前。
|
||||
* SRC、CMD、LEN 和 DATA,线上高字节在前。
|
||||
*/
|
||||
#ifndef BUSINESS_PROTOCOL_H
|
||||
#define BUSINESS_PROTOCOL_H
|
||||
@@ -35,6 +35,16 @@
|
||||
/** 业务命令:电流阈值配置。 */
|
||||
#define CMD_THRESHOLD_CONFIG 0x06u
|
||||
|
||||
/** 设备上线广播通知;DATA长度为0,不需要应答。 */
|
||||
#define CMD_DEVICE_ONLINE 0x07u
|
||||
|
||||
/** 主机广播可用固件版本和长度;DATA长度为4,不直接启动OTA。 */
|
||||
#define CMD_FIRMWARE_ANNOUNCE 0x10u
|
||||
|
||||
/** 设备发现自己需要升级后的响应命令;DATA返回当前版本和目标版本。 */
|
||||
#define CMD_FIRMWARE_ANNOUNCE_RESPONSE \
|
||||
(CMD_FIRMWARE_ANNOUNCE | CMD_RESPONSE_FLAG)
|
||||
|
||||
/** 查询当前主程序固件版本。 */
|
||||
#define CMD_FIRMWARE_VERSION_QUERY 0x0Eu
|
||||
|
||||
@@ -69,6 +79,12 @@ void BusinessProtocol_Init(void);
|
||||
/** 处理 UART 输入和待发送业务帧。 */
|
||||
void BusinessProtocol_Task(void);
|
||||
|
||||
/** 强制将业务应答放入随机延时队列,供异步广播应答使用。 */
|
||||
void BusinessProtocol_QueueDelayedResponse(uint16_t address,
|
||||
uint8_t command,
|
||||
const uint8_t *data,
|
||||
uint8_t length);
|
||||
|
||||
/**
|
||||
* 向解析器输入一个字节。
|
||||
*
|
||||
@@ -87,9 +103,6 @@ uint8_t BusinessProtocol_GetCommand(void);
|
||||
/** 读取最近一帧合法业务帧的数据长度。 */
|
||||
uint8_t BusinessProtocol_GetDataLength(void);
|
||||
|
||||
/** 读取最近一帧合法业务帧的数据区;返回 0 表示下标越界。 */
|
||||
uint8_t BusinessProtocol_GetDataByte(uint8_t index, uint8_t *value);
|
||||
|
||||
/** 读取最近一帧合法业务帧携带的发送方 Mesh 短地址。 */
|
||||
uint16_t BusinessProtocol_GetSourceAddress(void);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user