[Upload Code]:add com deal code
This commit is contained in:
parent
e7e8f6fffe
commit
237c17e181
3
CAN/XM-01/.vscode/settings.json
vendored
3
CAN/XM-01/.vscode/settings.json
vendored
@ -8,6 +8,7 @@
|
||||
"mymattress_ctrl.h": "c",
|
||||
"can.h": "c",
|
||||
"mcu_body_analyzer.h": "c",
|
||||
"mysensor_deal.h": "c"
|
||||
"mysensor_deal.h": "c",
|
||||
"protocol_parser.h": "c"
|
||||
}
|
||||
}
|
@ -63,6 +63,8 @@ extern uint8_t sensor_uart_rx_buffer[SENSOR_RX_BUFFER_SIZE];
|
||||
|
||||
extern uint16_t output_uart_rx_len;
|
||||
extern uint8_t output_uart_rx_buffer[OUTPUT_RX_BUFFER_SIZE];
|
||||
|
||||
extern char Project_Version[16];
|
||||
/* USER CODE END EM */
|
||||
|
||||
/* Exported functions prototypes ---------------------------------------------*/
|
||||
|
@ -7,7 +7,16 @@ extern "C"
|
||||
#endif
|
||||
#include "main.h"
|
||||
|
||||
extern struct rt_event output_uart_rx_event;
|
||||
typedef enum
|
||||
{
|
||||
STATE_WAIT_RECV = 0,
|
||||
STATE_PARSE_FRAME,
|
||||
STATE_HANDLE_CMD,
|
||||
// 错误处理
|
||||
STATE_BACK_WAIT,
|
||||
} CommState;
|
||||
|
||||
extern struct rt_event output_uart_rx_event;
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
59
CAN/XM-01/Core/Inc/protocol_parser.h
Normal file
59
CAN/XM-01/Core/Inc/protocol_parser.h
Normal file
@ -0,0 +1,59 @@
|
||||
#ifndef PROTOCOL_PARSER_H
|
||||
#define PROTOCOL_PARSER_H
|
||||
|
||||
#include <stdint.h>
|
||||
#include <stdbool.h>
|
||||
|
||||
#define FRAME_HEAD_1 0xA5
|
||||
#define FRAME_HEAD_2 0xA5
|
||||
#define VERSION 0x01
|
||||
#define MAX_PAYLOAD_LEN 268
|
||||
|
||||
// FRAME_CTL 标志位宏定义(1字节,共8位)
|
||||
// Bit7 - CRC 校验
|
||||
#define FRAME_CTL_CRC_EN (1 << 7)
|
||||
// Bit6 - 是否需要ACK
|
||||
#define FRAME_CTL_ACK_REQ (1 << 6)
|
||||
#define FRAME_CTL_NACK_REQ (0 << 6)
|
||||
// Bit5~4 - 加密方式
|
||||
#define FRAME_CTL_ENC_NONE (0 << 4) // 不加密
|
||||
#define FRAME_CTL_ENC_XOR (1 << 4) // XOR 加密
|
||||
#define FRAME_CTL_ENC_AES (2 << 4) // AES 加密(预留)
|
||||
// Bit0 - 帧类型
|
||||
#define FRAME_CTL_TYPE_DATA (0 << 0)
|
||||
#define FRAME_CTL_TYPE_ACK (1 << 0)
|
||||
|
||||
// protocol_parser.h 或 utils.h 中添加
|
||||
#ifndef BSWAP16
|
||||
#define BSWAP16(x) ((((x) & 0xFF00) >> 8) | (((x) & 0x00FF) << 8))
|
||||
#endif
|
||||
|
||||
// 常见控制域组合宏
|
||||
#define FRAME_CTL_DATA_CRC_NACK (FRAME_CTL_CRC_EN | FRAME_CTL_NACK_REQ | FRAME_CTL_TYPE_DATA | FRAME_CTL_ENC_NONE)
|
||||
|
||||
typedef struct __attribute__((packed))
|
||||
{
|
||||
uint8_t head[2];
|
||||
uint8_t version;
|
||||
uint8_t frame_ctl;
|
||||
uint16_t seq_num;
|
||||
uint16_t payload_len;
|
||||
uint8_t payload[MAX_PAYLOAD_LEN];
|
||||
uint16_t crc;
|
||||
|
||||
// 解析后的状态标志位(独立字段)
|
||||
uint8_t need_ack : 1; // 需要ACK
|
||||
uint8_t is_ack : 1; // ACK帧还是数据
|
||||
uint8_t crc_enabled : 1;
|
||||
uint8_t encrypted : 1;
|
||||
uint8_t decrypted : 1;
|
||||
uint8_t reserved : 3;
|
||||
} ProtocolFrame;
|
||||
|
||||
void Protocol_BuildFrame(ProtocolFrame *frame, uint8_t frame_ctl, uint16_t seq,
|
||||
const uint8_t *payload, uint16_t payload_len, bool enable_crc);
|
||||
|
||||
bool Protocol_ParseFrame(const uint8_t *data, uint16_t len, ProtocolFrame *frame);
|
||||
uint16_t Protocol_CRC16_CCITT(uint16_t pre_crc, const uint8_t *data, uint16_t len);
|
||||
|
||||
#endif
|
@ -42,6 +42,7 @@
|
||||
/* Private macro -------------------------------------------------------------*/
|
||||
/* USER CODE BEGIN PM */
|
||||
|
||||
char Project_Version[16] = {"V1.0.0"};
|
||||
/* USER CODE END PM */
|
||||
|
||||
/* Private variables ---------------------------------------------------------*/
|
||||
|
@ -5,8 +5,161 @@
|
||||
#include "rtthread.h"
|
||||
#include "mySensor_deal.h"
|
||||
#include "myEdge_ai_app.h"
|
||||
#include "myOutput_deal.h"
|
||||
#include "protocol_parser.h"
|
||||
|
||||
static ProtocolFrame resp;
|
||||
static ProtocolFrame rx_frame;
|
||||
static uint8_t send_buf[512];
|
||||
static uint8_t recv_buf[512];
|
||||
static uint16_t recv_len = 0;
|
||||
static rt_tick_t start_tick = 0;
|
||||
static rt_uint16_t seq_num = 1;
|
||||
static rt_uint16_t Upload_Time = 100;
|
||||
static CommState comm_state = STATE_WAIT_RECV;
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// 状态包上传
|
||||
uint8_t myPayload[8 + 260] = {0x02, 0x11};
|
||||
static void upload_StatusPackage(void)
|
||||
{
|
||||
rt_uint8_t output_frame_ctrl = FRAME_CTL_TYPE_DATA;
|
||||
// TODO:数据填充
|
||||
//---------------------------------------------
|
||||
|
||||
//---------------------------------------------
|
||||
output_frame_ctrl |= FRAME_CTL_CRC_EN;
|
||||
Protocol_BuildFrame(&resp,
|
||||
output_frame_ctrl,
|
||||
seq_num++,
|
||||
myPayload,
|
||||
sizeof(myPayload),
|
||||
true);
|
||||
// uart_send((uint8_t *)&resp, 8 + sizeof(payload) + 2);
|
||||
hex_dump_simple((uint8_t *)&resp, 8 + sizeof(myPayload) + 2);
|
||||
rt_memcpy(send_buf, (uint8_t *)&resp, 8 + sizeof(myPayload) + 2);
|
||||
}
|
||||
|
||||
// 状态机处理
|
||||
static void comm_state_machine_run(void)
|
||||
{
|
||||
rt_uint32_t e;
|
||||
switch (comm_state)
|
||||
{
|
||||
case STATE_WAIT_RECV:
|
||||
{
|
||||
// rt_kprintf("Wait Message...\n");
|
||||
if (rt_event_recv(&output_uart_rx_event, 0x01, RT_EVENT_FLAG_OR | RT_EVENT_FLAG_CLEAR, RT_WAITING_FOREVER, &e) == RT_EOK)
|
||||
{
|
||||
rt_kprintf("Deal Data Ready...\n");
|
||||
hex_dump_simple(output_uart_rx_buffer, output_uart_rx_len);
|
||||
// 拷贝 成功
|
||||
rt_memcpy(recv_buf, output_uart_rx_buffer, output_uart_rx_len);
|
||||
recv_len = output_uart_rx_len;
|
||||
comm_state = STATE_PARSE_FRAME;
|
||||
rt_memset(output_uart_rx_buffer, 0, sizeof(output_uart_rx_buffer));
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
case STATE_PARSE_FRAME:
|
||||
{
|
||||
if (Protocol_ParseFrame(recv_buf, recv_len, &rx_frame) == true)
|
||||
{
|
||||
rt_kprintf("Parse Data Done...\n");
|
||||
if (rx_frame.is_ack)
|
||||
{
|
||||
// 收到 ACK 帧,可处理 ACK 状态标志 继续等待接收
|
||||
rt_kprintf("[ACK] Frame received. SEQ=%d\n", rx_frame.seq_num);
|
||||
comm_state = STATE_BACK_WAIT;
|
||||
}
|
||||
else
|
||||
{
|
||||
// 非 ACK,跳转执行命令
|
||||
comm_state = STATE_HANDLE_CMD;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
rt_kprintf("Parse Data Fail...\n");
|
||||
comm_state = STATE_BACK_WAIT;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
case STATE_HANDLE_CMD:
|
||||
{
|
||||
uint8_t mcmd = rx_frame.payload[0];
|
||||
uint8_t scmd = rx_frame.payload[1];
|
||||
|
||||
// 软件版本读取命令
|
||||
if (mcmd == 0x02 && scmd == 0x12)
|
||||
{
|
||||
rt_uint8_t output_frame_ctrl = FRAME_CTL_TYPE_ACK;
|
||||
uint8_t payload[1 + 1 + 16] = {0x02, 0x12, 0x00};
|
||||
rt_memcpy(&payload[3], Project_Version, rt_strlen(Project_Version));
|
||||
if (rx_frame.crc_enabled)
|
||||
output_frame_ctrl |= FRAME_CTL_CRC_EN;
|
||||
Protocol_BuildFrame(&resp,
|
||||
output_frame_ctrl,
|
||||
rx_frame.seq_num,
|
||||
payload,
|
||||
sizeof(payload),
|
||||
true);
|
||||
// uart_send((uint8_t *)&resp, 8 + sizeof(payload) + 2);
|
||||
hex_dump_simple((uint8_t *)&resp, 8 + sizeof(payload) + 2);
|
||||
}
|
||||
// 设置状态包上报间隔
|
||||
else if (mcmd == 0x02 && scmd == 0x10)
|
||||
{
|
||||
rt_uint8_t output_frame_ctrl = FRAME_CTL_TYPE_ACK;
|
||||
uint8_t payload[1 + 1 + 1 + 2] = {0x02, 0x10, 0x00};
|
||||
Upload_Time = (rx_frame.payload[2] << 8) + (rx_frame.payload[3]);
|
||||
// 0.1秒~30秒 都是正常范围
|
||||
if (Upload_Time >= 100 && Upload_Time <= 30000)
|
||||
payload[2] = 0x00;
|
||||
else
|
||||
payload[2] = 0xe1;
|
||||
payload[3] = rx_frame.payload[2];
|
||||
payload[4] = rx_frame.payload[3];
|
||||
if (rx_frame.crc_enabled)
|
||||
output_frame_ctrl |= FRAME_CTL_CRC_EN;
|
||||
Protocol_BuildFrame(&resp,
|
||||
output_frame_ctrl,
|
||||
rx_frame.seq_num,
|
||||
payload,
|
||||
sizeof(payload),
|
||||
true);
|
||||
// uart_send((uint8_t *)&resp, 8 + sizeof(payload) + 2);
|
||||
hex_dump_simple((uint8_t *)&resp, 8 + sizeof(payload) + 2);
|
||||
}
|
||||
else
|
||||
{
|
||||
rt_kprintf("[WARN] Unhandled CMD: MCMD=0x%02X SCMD=0x%02X\n", mcmd, scmd);
|
||||
}
|
||||
comm_state = STATE_BACK_WAIT;
|
||||
break;
|
||||
}
|
||||
case STATE_BACK_WAIT:
|
||||
{
|
||||
rt_memset(&rx_frame, 0, sizeof(&rx_frame));
|
||||
rt_memset(recv_buf, 0, sizeof(recv_buf));
|
||||
recv_len = 0;
|
||||
comm_state = STATE_WAIT_RECV;
|
||||
break;
|
||||
}
|
||||
default:
|
||||
break;
|
||||
}
|
||||
// 默认上报状态
|
||||
if (rt_tick_get_millisecond() - start_tick > Upload_Time)
|
||||
{
|
||||
upload_StatusPackage();
|
||||
start_tick = rt_tick_get_millisecond();
|
||||
}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/* 定义线程栈与控制块(静态分配) */
|
||||
@ -19,21 +172,10 @@ static rt_uint8_t output_thread_stack[OUTPUT_THREAD_STACK_SIZE];
|
||||
// rt_uint16_t start_pos = 0;
|
||||
static void output_thread_entry(void *parameter)
|
||||
{
|
||||
rt_uint32_t e;
|
||||
while (1)
|
||||
{
|
||||
// rt_kprintf("Wait Message...\n");
|
||||
if (rt_event_recv(&output_uart_rx_event, 0x01, RT_EVENT_FLAG_OR | RT_EVENT_FLAG_CLEAR, RT_WAITING_FOREVER, &e) == RT_EOK)
|
||||
{
|
||||
// 处理函数 拷贝 成功
|
||||
// if (extract_mattress_frame(output_uart_rx_buffer, sizeof(output_uart_rx_buffer)))
|
||||
// {
|
||||
// model.status = AI_STATUS_IDLE;
|
||||
rt_kprintf("Deal Data Ready...\n");
|
||||
// rt_event_send(&data_ready_event, 0x01);
|
||||
// }
|
||||
rt_memset(output_uart_rx_buffer, 0, sizeof(output_uart_rx_buffer));
|
||||
}
|
||||
// comm_state_machine_run();
|
||||
upload_StatusPackage();
|
||||
rt_thread_mdelay(15);
|
||||
}
|
||||
}
|
||||
|
106
CAN/XM-01/Core/Src/protocol_parser.c
Normal file
106
CAN/XM-01/Core/Src/protocol_parser.c
Normal file
@ -0,0 +1,106 @@
|
||||
#include <main.h>
|
||||
#include "protocol_parser.h"
|
||||
|
||||
#define XOR_KEY 0x5A
|
||||
|
||||
static void xor_crypt(uint8_t *data, uint16_t len)
|
||||
{
|
||||
for (uint16_t i = 0; i < len; i++)
|
||||
{
|
||||
data[i] ^= XOR_KEY;
|
||||
}
|
||||
}
|
||||
|
||||
uint16_t Protocol_CRC16_CCITT(uint16_t pre_crc, const uint8_t *data, uint16_t len)
|
||||
{
|
||||
uint16_t crc16 = pre_crc;
|
||||
uint8_t i;
|
||||
while (len--)
|
||||
{
|
||||
for (i = 0x80; i != 0; i >>= 1)
|
||||
{
|
||||
if ((crc16 & 0x8000) != 0)
|
||||
{
|
||||
crc16 = crc16 << 1;
|
||||
crc16 = crc16 ^ 0x3121;
|
||||
}
|
||||
else
|
||||
{
|
||||
crc16 = crc16 << 1;
|
||||
}
|
||||
if ((*data & i) != 0)
|
||||
{
|
||||
crc16 = crc16 ^ 0x3121;
|
||||
}
|
||||
}
|
||||
data++;
|
||||
}
|
||||
return crc16;
|
||||
}
|
||||
uint16_t crc = 0;
|
||||
void Protocol_BuildFrame(ProtocolFrame *frame, uint8_t frame_ctl, uint16_t seq,
|
||||
const uint8_t *payload, uint16_t payload_len, bool enable_crc)
|
||||
{
|
||||
frame->head[0] = FRAME_HEAD_1;
|
||||
frame->head[1] = FRAME_HEAD_2;
|
||||
frame->version = VERSION;
|
||||
frame->frame_ctl = frame_ctl;
|
||||
frame->seq_num = BSWAP16(seq);
|
||||
frame->payload_len = BSWAP16(payload_len);
|
||||
|
||||
rt_memcpy(frame->payload, payload, payload_len);
|
||||
|
||||
// 若设置加密标志位,则加密
|
||||
if ((frame_ctl & 0x30) >> 4 == 0x01)
|
||||
{
|
||||
xor_crypt(frame->payload, payload_len);
|
||||
}
|
||||
if (enable_crc)
|
||||
{
|
||||
crc = Protocol_CRC16_CCITT(0xFFFF, (uint8_t *)frame, 6 + payload_len);
|
||||
// 高低位交换
|
||||
frame->crc = BSWAP16(crc);
|
||||
}
|
||||
else
|
||||
{
|
||||
frame->crc = 0;
|
||||
}
|
||||
}
|
||||
|
||||
bool Protocol_ParseFrame(const uint8_t *data, uint16_t len, ProtocolFrame *frame)
|
||||
{
|
||||
if (len < 9 || data[0] != FRAME_HEAD_1 || data[1] != FRAME_HEAD_2)
|
||||
return false;
|
||||
rt_memcpy(frame->head, data, 2);
|
||||
frame->version = data[2];
|
||||
frame->frame_ctl = data[3];
|
||||
frame->seq_num = (data[4] << 8) | data[5];
|
||||
frame->payload_len = (data[6] << 8) | data[7];
|
||||
|
||||
uint16_t total_len = 8 + frame->payload_len;
|
||||
uint16_t with_crc_len = total_len + ((frame->frame_ctl & 0x80) ? 2 : 0);
|
||||
if (len < with_crc_len)
|
||||
return false;
|
||||
rt_memcpy(frame->payload, &data[8], frame->payload_len);
|
||||
// 设置状态标志
|
||||
frame->need_ack = (frame->frame_ctl & 0x40) ? 1 : 0;
|
||||
frame->is_ack = (frame->frame_ctl & 0x01) ? 1 : 0;
|
||||
frame->crc_enabled = (frame->frame_ctl & 0x80) ? 1 : 0;
|
||||
frame->encrypted = ((frame->frame_ctl & 0x30) >> 4) == 0x01;
|
||||
frame->decrypted = 0;
|
||||
// CRC 校验
|
||||
if (frame->crc_enabled)
|
||||
{
|
||||
frame->crc = (data[8 + frame->payload_len] << 8) | data[8 + frame->payload_len + 1];
|
||||
uint16_t crc_calc = Protocol_CRC16_CCITT(0xFFFF, data, 8 + frame->payload_len);
|
||||
if (frame->crc != crc_calc)
|
||||
return false;
|
||||
}
|
||||
// 加密解密(仅支持 XOR)
|
||||
if (frame->encrypted)
|
||||
{
|
||||
xor_crypt(frame->payload, frame->payload_len);
|
||||
frame->decrypted = 1;
|
||||
}
|
||||
return true;
|
||||
}
|
File diff suppressed because one or more lines are too long
@ -140,12 +140,12 @@
|
||||
<SetRegEntry>
|
||||
<Number>0</Number>
|
||||
<Key>DLGUARM</Key>
|
||||
<Name></Name>
|
||||
<Name>d</Name>
|
||||
</SetRegEntry>
|
||||
<SetRegEntry>
|
||||
<Number>0</Number>
|
||||
<Key>JL2CM3</Key>
|
||||
<Name>-U59800869 -O78 -S5 -ZTIFSpeedSel1000 -A0 -C0 -JU1 -JI127.0.0.1 -JP0 -RST0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8001 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -TB1 -TFE0 -FO15 -FD20000000 -FC1000 -FN1 -FF0STM32F4xx_1024.FLM -FS08000000 -FL0100000 -FP0($$Device:STM32F405RGTx$CMSIS\Flash\STM32F4xx_1024.FLM)</Name>
|
||||
<Name>-U59800869 -O78 -S2 -ZTIFSpeedSel5000 -A0 -C0 -JU1 -JI127.0.0.1 -JP0 -RST0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8001 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -TB1 -TFE0 -FO15 -FD20000000 -FC1000 -FN1 -FF0STM32F4xx_1024.FLM -FS08000000 -FL0100000 -FP0($$Device:STM32F405RGTx$CMSIS\Flash\STM32F4xx_1024.FLM)</Name>
|
||||
</SetRegEntry>
|
||||
<SetRegEntry>
|
||||
<Number>0</Number>
|
||||
@ -158,13 +158,56 @@
|
||||
<Name>-U-O142 -O2254 -S0 -C0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32F4xx_1024.FLM -FS08000000 -FL0100000 -FP0($$Device:STM32F405RGTx$CMSIS\Flash\STM32F4xx_1024.FLM)</Name>
|
||||
</SetRegEntry>
|
||||
</TargetDriverDllRegistry>
|
||||
<Breakpoint/>
|
||||
<Breakpoint>
|
||||
<Bp>
|
||||
<Number>0</Number>
|
||||
<Type>0</Type>
|
||||
<LineNumber>60</LineNumber>
|
||||
<EnabledFlag>1</EnabledFlag>
|
||||
<Address>134227730</Address>
|
||||
<ByteObject>0</ByteObject>
|
||||
<HtxType>0</HtxType>
|
||||
<ManyObjects>0</ManyObjects>
|
||||
<SizeOfObject>0</SizeOfObject>
|
||||
<BreakByAccess>0</BreakByAccess>
|
||||
<BreakIfRCount>1</BreakIfRCount>
|
||||
<Filename>..\Core\Src\protocol_parser.c</Filename>
|
||||
<ExecCommand></ExecCommand>
|
||||
<Expression>\\XM_01\../Core/Src/protocol_parser.c\60</Expression>
|
||||
</Bp>
|
||||
<Bp>
|
||||
<Number>1</Number>
|
||||
<Type>0</Type>
|
||||
<LineNumber>41</LineNumber>
|
||||
<EnabledFlag>1</EnabledFlag>
|
||||
<Address>134255062</Address>
|
||||
<ByteObject>0</ByteObject>
|
||||
<HtxType>0</HtxType>
|
||||
<ManyObjects>0</ManyObjects>
|
||||
<SizeOfObject>0</SizeOfObject>
|
||||
<BreakByAccess>0</BreakByAccess>
|
||||
<BreakIfRCount>1</BreakIfRCount>
|
||||
<Filename>..\Core\Src\myOutput_deal.c</Filename>
|
||||
<ExecCommand></ExecCommand>
|
||||
<Expression>\\XM_01\../Core/Src/myOutput_deal.c\41</Expression>
|
||||
</Bp>
|
||||
</Breakpoint>
|
||||
<WatchWindow1>
|
||||
<Ww>
|
||||
<count>0</count>
|
||||
<WinNumber>1</WinNumber>
|
||||
<ItemText>aiInData</ItemText>
|
||||
</Ww>
|
||||
<Ww>
|
||||
<count>1</count>
|
||||
<WinNumber>1</WinNumber>
|
||||
<ItemText>crc</ItemText>
|
||||
</Ww>
|
||||
<Ww>
|
||||
<count>2</count>
|
||||
<WinNumber>1</WinNumber>
|
||||
<ItemText>send_buf</ItemText>
|
||||
</Ww>
|
||||
</WatchWindow1>
|
||||
<Tracepoint>
|
||||
<THDelay>0</THDelay>
|
||||
@ -406,6 +449,18 @@
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>2</GroupNumber>
|
||||
<FileNumber>15</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>..\Core\Src\protocol_parser.c</PathWithFileName>
|
||||
<FilenameWithoutPath>protocol_parser.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
</Group>
|
||||
|
||||
<Group>
|
||||
@ -416,7 +471,7 @@
|
||||
<RteFlg>0</RteFlg>
|
||||
<File>
|
||||
<GroupNumber>3</GroupNumber>
|
||||
<FileNumber>15</FileNumber>
|
||||
<FileNumber>16</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -428,7 +483,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>3</GroupNumber>
|
||||
<FileNumber>16</FileNumber>
|
||||
<FileNumber>17</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -440,7 +495,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>3</GroupNumber>
|
||||
<FileNumber>17</FileNumber>
|
||||
<FileNumber>18</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -452,7 +507,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>3</GroupNumber>
|
||||
<FileNumber>18</FileNumber>
|
||||
<FileNumber>19</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -464,7 +519,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>3</GroupNumber>
|
||||
<FileNumber>19</FileNumber>
|
||||
<FileNumber>20</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -476,7 +531,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>3</GroupNumber>
|
||||
<FileNumber>20</FileNumber>
|
||||
<FileNumber>21</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -488,7 +543,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>3</GroupNumber>
|
||||
<FileNumber>21</FileNumber>
|
||||
<FileNumber>22</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -500,7 +555,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>3</GroupNumber>
|
||||
<FileNumber>22</FileNumber>
|
||||
<FileNumber>23</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -512,7 +567,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>3</GroupNumber>
|
||||
<FileNumber>23</FileNumber>
|
||||
<FileNumber>24</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -524,7 +579,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>3</GroupNumber>
|
||||
<FileNumber>24</FileNumber>
|
||||
<FileNumber>25</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -536,7 +591,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>3</GroupNumber>
|
||||
<FileNumber>25</FileNumber>
|
||||
<FileNumber>26</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -548,7 +603,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>3</GroupNumber>
|
||||
<FileNumber>26</FileNumber>
|
||||
<FileNumber>27</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -560,7 +615,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>3</GroupNumber>
|
||||
<FileNumber>27</FileNumber>
|
||||
<FileNumber>28</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -572,7 +627,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>3</GroupNumber>
|
||||
<FileNumber>28</FileNumber>
|
||||
<FileNumber>29</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -584,7 +639,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>3</GroupNumber>
|
||||
<FileNumber>29</FileNumber>
|
||||
<FileNumber>30</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -604,7 +659,7 @@
|
||||
<RteFlg>0</RteFlg>
|
||||
<File>
|
||||
<GroupNumber>4</GroupNumber>
|
||||
<FileNumber>30</FileNumber>
|
||||
<FileNumber>31</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -624,7 +679,7 @@
|
||||
<RteFlg>0</RteFlg>
|
||||
<File>
|
||||
<GroupNumber>5</GroupNumber>
|
||||
<FileNumber>31</FileNumber>
|
||||
<FileNumber>32</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -636,7 +691,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>5</GroupNumber>
|
||||
<FileNumber>32</FileNumber>
|
||||
<FileNumber>33</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -656,7 +711,7 @@
|
||||
<RteFlg>0</RteFlg>
|
||||
<File>
|
||||
<GroupNumber>6</GroupNumber>
|
||||
<FileNumber>33</FileNumber>
|
||||
<FileNumber>34</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -668,7 +723,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>6</GroupNumber>
|
||||
<FileNumber>34</FileNumber>
|
||||
<FileNumber>35</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -680,7 +735,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>6</GroupNumber>
|
||||
<FileNumber>35</FileNumber>
|
||||
<FileNumber>36</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -692,7 +747,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>6</GroupNumber>
|
||||
<FileNumber>36</FileNumber>
|
||||
<FileNumber>37</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -704,7 +759,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>6</GroupNumber>
|
||||
<FileNumber>37</FileNumber>
|
||||
<FileNumber>38</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -716,7 +771,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>6</GroupNumber>
|
||||
<FileNumber>38</FileNumber>
|
||||
<FileNumber>39</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -728,7 +783,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>6</GroupNumber>
|
||||
<FileNumber>39</FileNumber>
|
||||
<FileNumber>40</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -740,7 +795,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>6</GroupNumber>
|
||||
<FileNumber>40</FileNumber>
|
||||
<FileNumber>41</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -752,7 +807,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>6</GroupNumber>
|
||||
<FileNumber>41</FileNumber>
|
||||
<FileNumber>42</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -764,7 +819,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>6</GroupNumber>
|
||||
<FileNumber>42</FileNumber>
|
||||
<FileNumber>43</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -784,7 +839,7 @@
|
||||
<RteFlg>0</RteFlg>
|
||||
<File>
|
||||
<GroupNumber>7</GroupNumber>
|
||||
<FileNumber>43</FileNumber>
|
||||
<FileNumber>44</FileNumber>
|
||||
<FileType>5</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -804,7 +859,7 @@
|
||||
<RteFlg>0</RteFlg>
|
||||
<File>
|
||||
<GroupNumber>8</GroupNumber>
|
||||
<FileNumber>44</FileNumber>
|
||||
<FileNumber>45</FileNumber>
|
||||
<FileType>4</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -824,7 +879,7 @@
|
||||
<RteFlg>0</RteFlg>
|
||||
<File>
|
||||
<GroupNumber>9</GroupNumber>
|
||||
<FileNumber>45</FileNumber>
|
||||
<FileNumber>46</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -836,7 +891,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>9</GroupNumber>
|
||||
<FileNumber>46</FileNumber>
|
||||
<FileNumber>47</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -848,7 +903,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>9</GroupNumber>
|
||||
<FileNumber>47</FileNumber>
|
||||
<FileNumber>48</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -860,7 +915,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>9</GroupNumber>
|
||||
<FileNumber>48</FileNumber>
|
||||
<FileNumber>49</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -872,7 +927,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>9</GroupNumber>
|
||||
<FileNumber>49</FileNumber>
|
||||
<FileNumber>50</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -892,7 +947,7 @@
|
||||
<RteFlg>0</RteFlg>
|
||||
<File>
|
||||
<GroupNumber>10</GroupNumber>
|
||||
<FileNumber>50</FileNumber>
|
||||
<FileNumber>51</FileNumber>
|
||||
<FileType>2</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -904,7 +959,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>10</GroupNumber>
|
||||
<FileNumber>51</FileNumber>
|
||||
<FileNumber>52</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -924,7 +979,7 @@
|
||||
<RteFlg>0</RteFlg>
|
||||
<File>
|
||||
<GroupNumber>11</GroupNumber>
|
||||
<FileNumber>52</FileNumber>
|
||||
<FileNumber>53</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -936,7 +991,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>11</GroupNumber>
|
||||
<FileNumber>53</FileNumber>
|
||||
<FileNumber>54</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -948,7 +1003,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>11</GroupNumber>
|
||||
<FileNumber>54</FileNumber>
|
||||
<FileNumber>55</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -960,7 +1015,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>11</GroupNumber>
|
||||
<FileNumber>55</FileNumber>
|
||||
<FileNumber>56</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -972,7 +1027,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>11</GroupNumber>
|
||||
<FileNumber>56</FileNumber>
|
||||
<FileNumber>57</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -984,7 +1039,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>11</GroupNumber>
|
||||
<FileNumber>57</FileNumber>
|
||||
<FileNumber>58</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -996,7 +1051,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>11</GroupNumber>
|
||||
<FileNumber>58</FileNumber>
|
||||
<FileNumber>59</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -1008,7 +1063,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>11</GroupNumber>
|
||||
<FileNumber>59</FileNumber>
|
||||
<FileNumber>60</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -1020,7 +1075,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>11</GroupNumber>
|
||||
<FileNumber>60</FileNumber>
|
||||
<FileNumber>61</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -1032,7 +1087,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>11</GroupNumber>
|
||||
<FileNumber>61</FileNumber>
|
||||
<FileNumber>62</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -1044,7 +1099,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>11</GroupNumber>
|
||||
<FileNumber>62</FileNumber>
|
||||
<FileNumber>63</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -1056,7 +1111,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>11</GroupNumber>
|
||||
<FileNumber>63</FileNumber>
|
||||
<FileNumber>64</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -1068,7 +1123,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>11</GroupNumber>
|
||||
<FileNumber>64</FileNumber>
|
||||
<FileNumber>65</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -1080,7 +1135,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>11</GroupNumber>
|
||||
<FileNumber>65</FileNumber>
|
||||
<FileNumber>66</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -1092,7 +1147,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>11</GroupNumber>
|
||||
<FileNumber>66</FileNumber>
|
||||
<FileNumber>67</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -1104,7 +1159,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>11</GroupNumber>
|
||||
<FileNumber>67</FileNumber>
|
||||
<FileNumber>68</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@ -1116,7 +1171,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>11</GroupNumber>
|
||||
<FileNumber>68</FileNumber>
|
||||
<FileNumber>69</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
|
@ -610,6 +610,11 @@
|
||||
<FileType>1</FileType>
|
||||
<FilePath>../Core/Src/stm32f4xx_hal_msp.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>protocol_parser.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\Core\Src\protocol_parser.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
</Group>
|
||||
<Group>
|
||||
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user