From e5d64cb0787bc15c6803111f644c4432f852241d Mon Sep 17 00:00:00 2001 From: aohanli@psunsky.com Date: Wed, 9 Oct 2024 16:24:52 +0800 Subject: [PATCH] 增加后台静默升级相关协议的流程 --- 通讯协议-教育新版-基站部分.md | 28 ++++++++++++++++++++++++++++ 通讯协议-教育新版-表决器部分.md | 72 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 98 insertions(+), 2 deletions(-) diff --git a/通讯协议-教育新版-基站部分.md b/通讯协议-教育新版-基站部分.md index a8eaf55..dc610b7 100644 --- a/通讯协议-教育新版-基站部分.md +++ b/通讯协议-教育新版-基站部分.md @@ -1923,6 +1923,34 @@ SDK向基站发送: | 3 | CMDTYPE | 应答类型
11通用附加配置 | | 4 | MODE | 53 读基站键盘欠费检测
54 写基站键盘欠费检测 | | 5 | DATA | 0关、1开 | + +### 5.2.35 写基站后台升级状态 + +电脑向基站发送: + +| **字节** | **标识符** | **描述** | +| --- | --- | --- | +| 1 | BASECMD | 0x61 基站管理类指令 | +| 2 | BASEID | 指定的基站编号,为0时候不指定 | +| 3 | CMDTYPE | 基站管理命令类型
11 通用附加配置 | +| 4 | MODE | 60 告知基站,SDK有新的后台升级固件。在上电以及导入新的固件的时候告知基站| +| 5-7 | 固件版本信息 |SW1 SW2 SW3| +| 8 | 硬件型号 | HMODEL | +| 9 | 升级模式 | 1 直接开启升级
2 基站判断升级判断当前有版本不一致键盘升级 | + + +基站应答: + +| **字节** | **标识符** | **描述** | +| --- | --- | --- | +| 1 | BASECMD | 0x61 基站管理类指令 | +| 2 | BASEID | 指定的基站编号,为0时候不指定 | +| 3 | CMDTYPE | 基站管理命令类型
11 通用附加配置 | +| 4 | MODE | 60 告知基站,SDK有新的后台升级固件以及上电告知一次 | +| 5-7 | 固件版本信息 |SW1 SW2 SW3| +| 8 | 硬件型号 | HMODEL | +| 9 | 升级模式 | 1 直接开启升级
2 基站判断升级判断当前有版本不一致键盘升级 | + ## 5.3 白名单设置 ### 5.3.1 白名单按区设置 diff --git a/通讯协议-教育新版-表决器部分.md b/通讯协议-教育新版-表决器部分.md index 5737fae..991b5a7 100644 --- a/通讯协议-教育新版-表决器部分.md +++ b/通讯协议-教育新版-表决器部分.md @@ -183,7 +183,7 @@ K1版本,带上下限的时候,不支持大小题号: | **字节** | **标识符** | **描述** | | --- | --- | --- | | 5 | MODE | =9,模拟测试 | -| 6 | MODE1 | 模拟模式
1 报告状态,用状态报告指令报告相关状态,键盘显示大ID和SN,用于生产排查,使用3.2.5节SN号+ID 号的状态报告提交结果
(远距离考勤防冲突测试,MODE2值是1秒发多少次,MODE3是发送多少秒就停止。这样,老批量速度测试软件就可评估)
2 三键表决模拟,1号赞成,2号反对,3号弃权,4号赞成,5号反对。。。依次类推
3报告状态, ~~但带~~~~ SN号信息(同模式1,放这里只是表示也支持模式3)~~,键盘显示姓名和SN号,使用3.2.3节SN+ID+字符串格式提交结果,如果要支持16字符姓名,使用3.2.5状态报告里面的姓名模式
4远距离考勤测试,MODE2值是1秒发多少次,MODE3是射频功率等级,用于研发内部测试批量键盘通过校门的效果
5 WIFI数据传输测试(用模拟的语音数据测试,3.2.10节)
6 键盘扫描测试,开启此题后,键盘按任意键上传状态信息,用于生成编号等操作)| +| 6 | MODE1 | 模拟模式
1 报告状态,用状态报告指令报告相关状态,键盘显示大ID和SN,用于生产排查,使用3.2.5节SN号+ID 号的状态报告提交结果
(远距离考勤防冲突测试,MODE2值是1秒发多少次,MODE3是发送多少秒就停止。这样,老批量速度测试软件就可评估)
2 三键表决模拟,1号赞成,2号反对,3号弃权,4号赞成,5号反对。。。依次类推
3报告状态, ~~但带~~~~ SN号信息(同模式1,放这里只是表示也支持模式3)~~,键盘显示姓名和SN号,使用3.2.3节SN+ID+字符串格式提交结果,如果要支持16字符姓名,使用3.2.5状态报告里面的姓名模式
4远距离考勤测试,MODE2值是1秒发多少次,MODE3是射频功率等级,用于研发内部测试批量键盘通过校门的效果
5 WIFI数据传输测试(用模拟的语音数据测试,3.2.10节)
6 键盘扫描测试,开启此题后,键盘按任意键上传状态信息,用于生成编号等操作)
7 键盘扫描测试,开启此题后,键盘自动提交一包后台静默升级的状态包| | 7 | MODE2 | 启动后,多少秒内随机模拟按下按键,0=马上
Mode1=5时,是WIFI测试方法,暂0,数据传输测试 | | 8 | MODE3 | 提交成功后,多少秒内再重新提交,模拟修改按键,0=不测试| | 9-24 | 。。。 | 参数值没有意义 | @@ -931,7 +931,7 @@ Cmd_Data 不足32一包 后面补0 | **字节** | **标识符** | **描述** | | --- | --- | --- | | 1 | ANSCMD | 0x93新体系硬件序列号提交结果
0x94硬件序列号带编号提交结果(S6Plus)
0x94开头时候,第7、8字节是键盘编号 | -| 2 | ANSTYPE | 数据包类型(根据ANSTYPE的不同,第3字节起数据格式有不同定义)
0 状态
1 统一BCD码格式
2 测验中的单选多选排序类型
3 测验中的数字题结果类型(最多12位数)
4 填空和测验中的字符串
6 键盘主动提交,带类型
7 SN+ID,含电量统一BCD格式数据,按字母解码
8 SN+ID,含电量统一BCD格式数据,按数字解码
9 SN+ID的字符串,带电量和效验

11 登录信息
12键盘请求
13 多包申请
14 考勤定位
15 批次表决BCD码格式数据,按字母ABCD解码
16 批次表决BCD码格式数据,按数字解码

20 语音数据

32 键盘申请发送透传数据包

99 固件升级结果
| +| 2 | ANSTYPE | 数据包类型(根据ANSTYPE的不同,第3字节起数据格式有不同定义)
0 状态
1 统一BCD码格式
2 测验中的单选多选排序类型
3 测验中的数字题结果类型(最多12位数)
4 填空和测验中的字符串
6 键盘主动提交,带类型
7 SN+ID,含电量统一BCD格式数据,按字母解码
8 SN+ID,含电量统一BCD格式数据,按数字解码
9 SN+ID的字符串,带电量和效验

11 登录信息
12键盘请求
13 多包申请
14 考勤定位
15 批次表决BCD码格式数据,按字母ABCD解码
16 批次表决BCD码格式数据,按数字解码

20 语音数据

32 键盘申请发送透传数据包
40 反馈键盘后台升级情况包
99 固件升级结果| | 3-6 | KEYSN | 表决器硬件序列号,4字节,高位在前
例如SN号AB120500,那么第1字节值是0xAB,第2字节0x12,依次类推 | | 7 | DATAPOS/ADDH | 功能等同投票信标中的DATAPOS,正常提交结果必须等同于当前DATAPOS,用于基站判断,是否是当次投票结果。由于新体系键盘出于省电,平常是不监听信标的,就有可能提交结果的时候,投票已经停止或者已经到下一个,这样,基站就能判断结果无效反馈给键盘
启动投票的时候,键盘记录DATAPOS值下来,提交结果带上,不要用信标里面的值。
为0表示不需要,例如遥控器
ANSCMD=0x94时候,本字节是键盘编号高位ADDH字节 | | 8 | SENDPOS/ ADDL | 键盘提交一次结果就变化一次,用于SDK判断,是否和上次结果一样,这样,对于重复数据,SDK就不弹出消息
这对遥控器操作比较有用
ANSCMD=0x94时候,本字节是键盘编号低位ADDL字节 | @@ -1239,7 +1239,24 @@ M6键盘批次表决,由于题目数量有两字节,原有的ANSTYPE=7的数 | 21 | VOLT | 电池电压,单位20mV | | 22 | SendPos | 该次结果发送次数 键盘自己计数 | | 23-24 || CRC,1到第22字节 | +### 3.2.14 键盘后台静默升级状态包 +数据格式是: + +| **字节** | **标识符** | **描述** | +| --- | --- | --- | +| 1 | ANSCMD | 0x94 使用硬件序列号提交单包结果 | +| 2 | ANSTYPE | 40 键盘发送给基站 后台升级情况不方便,这样修改就比较容易解析数据 (该包基站处理,不提交给SDK)
==键盘自主发送 无需升级、已收全的键盘、版本与升级固件一致的键盘 不回复该包。同时增加模式测试9子类7章节2.2.7 开测试可以让键盘发送一次该包。无需升级以及已接收完整的键盘或版本与升级固件一致 也需回复该包。方便上层查看实时状态制作测试软件==| +| 3-6 | KEYSN | 表决器硬件序列号,4字节,高位在前 | +| 7 | Percentage | 键盘接收情况百分比 ,收到为100%之后 基站可以无视该包下面Offset Start Bit MAP数据 | +| 8 | Offset Start | 上传键盘丢失包数 计算偏移起点值(不完全反馈)256K 需要32个8 现在只有10*8 = 80K | +| 9 | PACK_END | 键盘端收到的最大包序号,可以与下面bit表共同确认未收到的数据 | +| 10-12 | SW | 键盘升级数据的版本号,SW1 SW2 SW3| +| 13-22 | Bit MAP | 10字节 偏移之后的键盘接收固件情况 bit位单位1K 基站判断时注意别越界| +| 23-24|CRC|CRC,1到第22字节 | + +==bit比对以前是 for (uint8_t i = 0; i < 32; i++)== +==现在为:for (uint8_t i = Offset Start; i < 32; i++)== # 四、上传多包类   上传多包类指令主要用于表决器向基站快速传送一批次的数据,因为不需要竞争通讯的时序,效率较片段提交的方式高效得多。 @@ -3347,6 +3364,57 @@ Rule: | 2 | TitieNum | 2字节题目编号 | | 2 | TitieNum | 2字节题目编号 | ---- + +## 6.7 透传多包后台升级 + +   +==后台升级流程:== +1、基站上电自动找SDK获取 是否有预存的键盘固件==基站协议5.2.35 写基站后台升级状态==。获取相应信息。(附带强制升级与判断升级两种逻辑给于基站判断) +2、基站收取键盘数据时(投票包与状态包) 自动预览键盘数据内的版本信息位置。(根据SDK设置)发现有与预存键盘固件版本低的可以开启升级。或收到键盘提交的升级过程的数据包==键盘协议3.2.14 键盘后台静默升级状态包==,则可以开启进入后台升级流程 +3、基站开启周期性发送升级数据包==键盘协议6.7.1后台升级数据格式==。(每次发送逻辑都是从序号小的开始增大循环) 键盘自己判断是否需要升级与接收升级包 +4、键盘在接收升级包过程中固定时长或接收若干包则提交一包百分比接收包==键盘协议3.2.14 键盘后台静默升级状态包==,(该包同时反馈收到的数据缺失情况) +5、基站接收到键盘发送的数据缺失包,置位重发数据表示位,用于下一次发送的序号。 + + +具体事项如下: +==SDK:== +1、导入可升级固件、可选强制升级与判断升级两类。 +2、可制作后台升级软件 间隔时间询问键盘后台升级状态(9键盘测试类) + +==基站:== +1、 查询基站是否有升级固件。 +2、 进入发送条件:接收到键盘数据/状态包中版本号与当前版本不符合/SDK导入新的后台升级固件、单次触发(导入动作)/接收到键盘发送的后台升级反馈包中未满100%的键盘值。 +3、 循环发送,单次发送到结束过程中的接收到的键盘反馈包,置位下一次发送的数据BIT标志(与原固件升级类似) + +==键盘:== +1、 接收到后台升级包 判断是否需要升级。 +2、 触发后台升级状态之后,间隔时长回复基站当前升级状况。 + +### 6.7.1 后台升级数据格式 + +| **字节** | **标识符** | **描述** | +| --- | --- | --- | +| 4 | ATC | 配对码 | +| 4 | MATCHCODE | 核准匹配码 0xfe 48 de 7f | +| 1 | PACKMAX | 后续传输包数量 此处为32 | +| 1 | DOWNCMD | 0x05 透传数据传输
0x01 统一升级数据包
0x02 统一升级透传询问带回复SN
==0x03 后台升级1K数据包==| +| 2 | CRC16 | LostBuf 的校验和 | +| 1 | DOWNPOS | 透传序号 不能为0 1-255基站自增(新的一轮升级) | +| 1 | DOWNCount | 当前包序号 0开始 | +| 1 | NULL | NULL | +| 1 | NULL | NULL | +| 1 | CountMax | 本轮次传输包最大序号 | +| 1 | SpaceTime | 0默认不休眠 (每帧 帧间距离)可用于键盘休眠 也可不休,原则上 SpaceTime= PACKMAX*1MS,基站填写 | +| 4 | DOWNLEN | 4BYTE待升固件大小 | +| 2 | DOWNCRC | 2BYTE待升固件校验字(CRC-16) | +| 1 | HW | 硬件版本 -> (区分硬件,键盘自己识别) | +| 3 | SW | 固件版本 | +| 1| BR |硬件分支 同硬件信号下匹配的不同分支| +| 4 | 预留 | NULL ,实际物理包头32不含数据 为包头信息| +| N | DownData| 透传数据 暂定 1024B | +---- + + # 七、组网 组网逻辑: 基站在0频点广播信息,键盘监听0频点。(手动登录则需要保证监听时长,扫描多一些频点) 键盘在0频点听到连接信息之后,有密码,选择该基站时,则需输入密码正确才可跳转到正常频点入网。无密码则直接跳转到正常频点去组网。 -- libgit2 0.21.4