83 lines
1.9 KiB
C
83 lines
1.9 KiB
C
/***
|
||
* @Author: shenghao.xu
|
||
* @Date: 2023-04-04 08:38:48
|
||
* @LastEditors: shenghao.xu
|
||
* @LastEditTime: 2023-04-04 08:47:04
|
||
* @Description: 处理传输层的数据
|
||
* @email:545403892@qq.com
|
||
* @Copyright (c) 2023 by shenghao.xu, All Rights Reserved.
|
||
*/
|
||
|
||
#ifndef COMPONENTS_COMMON_INCLUDE_DATA_ANALYSIS_H_
|
||
#define COMPONENTS_COMMON_INCLUDE_DATA_ANALYSIS_H_
|
||
#include <stdbool.h>
|
||
#include "data_type_def.h"
|
||
|
||
typedef enum
|
||
{
|
||
DATA_1,
|
||
DATA_2,
|
||
DATA_MAX,
|
||
} DataId_t; // 处理数据模块的个数,请根据实际情况修改
|
||
|
||
#define DATA_NUM (DATA_MAX)
|
||
|
||
#define DATA_BUF_RECV_SQQ_LEN 650u
|
||
#define DATA_BUF_SEND_SQQ_LEN 0u
|
||
|
||
#define DATA_SD_LEN_MAX 2
|
||
#define DATA_LD_LEN_MAX 2
|
||
#define DATA_ED_LEN_MAX 1
|
||
|
||
typedef struct _data_reg_t_
|
||
{
|
||
struct
|
||
{
|
||
uint8_t len;
|
||
uint8_t pos;
|
||
uint8_t data[DATA_SD_LEN_MAX];
|
||
bool valid;
|
||
} sd; // start delimiter
|
||
|
||
struct
|
||
{
|
||
uint8_t len;
|
||
uint8_t pos; // 偏移量,在wait_end_state中根据帧长去掉固定长度来判断是否是结束符
|
||
uint8_t little_endian;
|
||
bool valid;
|
||
} ld; // length describe
|
||
|
||
struct
|
||
{
|
||
uint16_t len_max;
|
||
uint16_t len_min;
|
||
} argu;
|
||
|
||
struct
|
||
{
|
||
uint8_t len;
|
||
uint8_t data[DATA_ED_LEN_MAX];
|
||
bool valid;
|
||
} ed;
|
||
|
||
bool echo_en;
|
||
void (*func_ptr)(void);
|
||
} data_reg_t;
|
||
|
||
typedef void (*data_interupt_cb_t)(uint8_t id, uint8_t ch); // 中断回调函数,数据从这里写入
|
||
|
||
extern uint8_t data_read(uint8_t id, void *buffer, uint16_t len);
|
||
|
||
extern void data_write(uint8_t id, uint8_t *const string, uint16_t len);
|
||
|
||
extern void lock_data(uint8_t data_id);
|
||
|
||
extern void unlock_data(uint8_t data_id);
|
||
|
||
extern data_interupt_cb_t data_fsm_init(uint8_t data_id);
|
||
|
||
extern bool data_reg(uint8_t id, data_reg_t reg);
|
||
|
||
extern void data_unreg(uint8_t id);
|
||
#endif /* COMPONENTS_COMMON_INCLUDE_DATA_ANALYSIS_H_ */
|