2023-05-18 00:58:26 +00:00
|
|
|
|
# 接收:
|
|
|
|
|
## 透传数据
|
|
|
|
|
4k缓存串口收数据,快满时转存为文件,文件名由`时间戳+1字节随机码`组成,随机码防止RTC意外复位后产生的时间错乱。
|
|
|
|
|
|
|
|
|
|
例`“rxlog/2023_05_05/2023_05_05_10_59_23_123”`。
|
|
|
|
|
## 转发指令
|
|
|
|
|
## 状态采集
|
|
|
|
|
天通状态及定位数据编码规则如下:
|
|
|
|
|
```c
|
|
|
|
|
// 第1节为高3位分别为sim、rw和jh,其余位为xh,xh值若大于31则为31(31=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字节:
|
|
|
|
|
```c
|
|
|
|
|
年月日时分秒各一个字节表示, 年取后两位(2023即23)
|
|
|
|
|
```
|
|
|
|
|
如
|
|
|
|
|
|
|
|
|
|
# 压缩:
|
|
|
|
|
采用fastlz算法对数据文件文件进行压缩,算法项可配置。
|
|
|
|
|
# 加密:
|
|
|
|
|
从用AES-256算法对压缩后文件进行加密,算法项可配置。
|
|
|
|
|
# 分包:
|
|
|
|
|
加密后文件需要进行分包切片,每切片数据大小不超过180字节。
|
|
|
|
|
# 打包:
|
|
|
|
|
切片数据按帧协议进行打包,协议如下:
|
|
|
|
|
```c
|
|
|
|
|
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字节,为**数据类型**、**压缩方式**、**加密方式**对应控制字的和。
|
|
|
|
|
```c
|
|
|
|
|
//加密,低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),
|
|
|
|
|
```
|
|
|
|
|
# 发送:
|
2023-06-01 09:10:00 +00:00
|
|
|
|
与TT设备进行通信,将打包后数据依次送出。
|
2023-05-18 00:58:26 +00:00
|
|
|
|
## 发送逻辑
|
2023-06-01 09:10:00 +00:00
|
|
|
|
先依次检查发送条件,满足条件后开始发送,发送完毕后关闭TT设备
|
|
|
|
|
## 发送条件
|
2023-06-01 02:23:08 +00:00
|
|
|
|
### 软件条件
|
2023-06-01 09:10:00 +00:00
|
|
|
|
需求条件1:待发数据大小累计超minSizeToSend的设置值
|
|
|
|
|
需求条件2:sendInterval设置值到达
|
|
|
|
|
以上任意条件满足则进入硬件条件检查
|
2023-06-01 02:23:08 +00:00
|
|
|
|
### 硬件条件
|
2023-06-01 09:10:00 +00:00
|
|
|
|
需求条件1:TT连续5个周期为激活状态且信号强度不低于5。
|
|
|
|
|
软件条件满足后TT上电,MaxWaitTime内不达标则断电重启并重试MaxRetryCnt,如仍不成功则等待下次发送
|
2023-06-01 02:23:08 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# 配置文件
|
|
|
|
|
系统信息采用ini文件记录各项功能参数及信息。
|
|
|
|
|
配置文件分为两大部分,可调参数部分和统计信息部分。前者可通过网络下发,后者只读。
|
|
|
|
|
## 下发配置
|
2023-08-31 08:12:44 +00:00
|
|
|
|
下发配置文件仅含需要更改的参数。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# 超时关机机制
|
|
|
|
|
超时机制优先级较低,开启需具备以下几个条件:
|
|
|
|
|
- TT激活
|
|
|
|
|
- 不在开窗区间(自动或手动)
|
|
|
|
|
开启后收到有效数据(来源含TT和串口,非心跳包数据)会重置超时时间
|