TT12-MCU/applications/软件工作流程.md
2023-05-18 08:58:26 +08:00

2.9 KiB
Raw Blame History

接收:

透传数据

4k缓存串口收数据快满时转存为文件文件名由时间戳+1字节随机码组成随机码防止RTC意外复位后产生的时间错乱。

“rxlog/2023_05_05/2023_05_05_10_59_23_123”

转发指令

状态采集

天通状态及定位数据编码规则如下:

    //    第1节为高3位分别为sim、rw和jh其余位为xhxh值若大于31则为3131=b0001 1111
    //    第2-5字节为经度。114.410050= 0xF2 0xD1 0xE4 0x42
    //    第6-9字节为纬度。30.426840= 0x2B 0x6A 0xF3 0x41
    //    第10字节为高度只保留整数。-31.5= 0x0A

有卡已入网已鉴权信号6纬度30.426840, 经度114.410050, 高度-31.5 编码为0xE6 0xF2 0xD1 0xE4 0x42 0x2B 0x6A 0xF3 0x41 0x0A

时戳编码为6字节

年月日时分秒各一个字节表示, 年取后两位(202323

压缩:

采用fastlz算法对数据文件文件进行压缩算法项可配置。

加密:

从用AES-256算法对压缩后文件进行加密算法项可配置。

分包:

加密后文件需要进行分包切片每切片数据大小不超过180字节。

打包:

切片数据按帧协议进行打包,协议如下:

typedef struct{
    //帧头
    //格式是TT厂家确定的厂家不变则不会变13字节
    rt_uint8_t fstart[4];//
    rt_uint8_t fnum[2] ;
    rt_uint8_t fbak[2] ;
    rt_uint8_t ftype[2] ;//固定位0x7021
    rt_uint8_t fdlen[2] ;//总数据长度从ccid开始计算
    rt_uint8_t fcrc[1] ;//

    //数据体,部分自定义
    //目标终端前4字节必须为CCID厂家定义
    rt_uint8_t ftccid[4] ;//

    //数据体自定义部分,格式如下
    rt_uint8_t findex[7] ;//唯一ID号索引号年月日时分秒+1字节随机码 年取后两位2023即23随机码为防止RTC复位后时间错乱
    rt_uint8_t fcfg[1] ;//数据类型|压缩方式|加密方式
    rt_uint8_t fcurpiece[1];//当前分片数
    rt_uint8_t fallpiece[1];//总分片数
    rt_uint8_t fdata[];//当前分片数据,为待发数据

}MSG;

配置项

fcfg为配置项长1字节数据类型压缩方式加密方式对应控制字的和。

    //加密低2位
    CRY_NONE=0,
    CRY_AES,
    CRY_RSA,
    
    //压缩次高2位
    COMP_NONE=(0<<2),
    COMP_QUICK_LZ=(1<<2),//压缩率中等demo约1/0.62,资源占用少
    COMP_LZMA=(2<<2),//压缩率可能最高,样例报错还未定位,猜测是内存不足

    //数据类型子类随CTRL_MODE不同而不同共3位8种
    MODE_0=(0<<4),
    MODE_1=(1<<4),
    // 。。。
    MODE_7=(1<<4),

    //数据类型,最高位
    CTRL_MODE=(0<<7),
    DATA_MODE=(1<<7),

发送:

与天通设备进行通信,将打包后数据依次送出。

发送逻辑

连续5个周期为激活状态且信号强度不低于5