设备通讯协议 .docx
设备通讯协议设备通信协议书目。 适用范围 错误! 未定义书签。2。 协议框架 . 错误 错误! 未定义书签。3。协议内容 误错 错误! 未定义书签。3。1 设备内部组网协议(或者 MCU 透传模式协议) 误错 错误! 未定义书签。3、.1 通讯吩咐格式误错 错误! 未定义书签。1、2 配对机制误错 错误! 未定义书签。. 连接机制误错 错误! 未定义书签。3、1、 心跳机制误错 错误! 未定义书签。3。 设备与云端通讯协议 . 错误 错误! 未定义书签。3。1 通讯吩咐格式误错 错误! 未定义书签。.2。2 连接流程 . 错误! 未定义书签。3、3 数据包格式定义 . 错误 错误! 未定义书签。3。3、1 误错式格据数讯通间备设 错误! 未定义书签。3.3.2 设备与云、PP 通讯数据格式误错 错误! 未定义书签。4. 公共吩咐定义 . 10.编码表 误错 错误! 未定义书签。1 节点类型表 误错 错误! 未定义书签。5、2 吩咐回应编码表 . 错误 错误! 未定义书签。1. 围范用适 适用范围 本协议定义 Wii 模块与CU 限制单元,Wii 模块与云 A间,以及主从模块之间得通讯协议框架。2. 协议框架 协议基于二进制协议框架,完成吩咐发送接收、吩咐上报、内部组网等功能。3. 协议内容 3 、1 设备内部组网协议( 或者 MCU 透传模式协议) 备内部组网协议包括设备配对、连接、心跳机制等,目得就是将一个子设备加入到设备组中,并保持连接。3 、1 、 通讯 吩咐格式 采纳二进制得通讯协议格式,包格式如下表: 同步头 Had Oi 包 长 度 ( 变长) 加 密 随机 数 (Oton) 源 设 备类型(pion) 源 设 备编 码 (Oion) M e MD D Payl a CRC( ption) 2B 1B 12 B 1 B 1B 1B N B 具体得包格式在后续章节介绍 3 。1.2 配对机制 配对机制仅适用于设备内组网模式,U 透传模式不须要组网协议。进入配对模式由主从设备分别触发,只有在进入配对模式后,才处理相关得配对吩咐、 从设备进入配对模式后定时发送配对恳求,直到收到恳求回应。主设备收到恳求后安排一个设备 ID 给从设备,标识此 ID 被占用,并等待采集器得上线通知,肯定时间内收到通知之后确认存入设备列表,假如没有上线通知,则认为设备没有配对胜利,从子设备中删除、 从设备收到配对回应后存储设备 ID,并且发送上线通知,收到上线通知后完成配对。配对得过程如下图所示: 主模块 从模块主设备回应恳求从设备发送配对恳求从设备上线进入配对模式配对结束主设备回应设备上线3.1.3 连接机制 设备每次上电连接须要发送上线通知以及连接所须要得参数给主设备,如下图所示: WiFi模块 MCU/从模块上线通知上线通知回应云连接胜利(仅用于透传模式)WiFi通路配置(仅用于透传模式)吩咐交互状态上报 3 。1.4 心跳机制 运用对等得心跳机制,主设备与从设备都可以发觉对方得异样状态。3 、2 设备与云端 通讯协议 设备与云端通讯协议基于MQT协议,数据包运用MQT协议传输,数据加密方式采纳SL加密,吩咐码采纳进制吩咐格式同设备间通讯协议、 、2 、1 MQTT 通讯框架 本协议就是针对与设备得数据通信,目前通信节点包括:设备、云端与PP 终端三方、WII 上得协议采纳 MQT 协议框架,串口上得通信采纳包含包头与校验得二进制协议,通信包采纳二进制格式传输,高位在前低位在后、 Ø 此协议 定义得 MQ T Topi 类型有以下 2 种: 单播,unicat /u/TagetType/TrgetI 广播,racat/b/SurceT/SourcD 注释: TrgetType:目标设备类型,TaretID:目标设备编码 Soueype:源设备类型,SurcID:源设备编码 3 、2 、2通讯吩咐格式 设备与云端、A得通讯吩咐分为种: 恳求与回应、通知吩咐、广播吩咐,详细得吩咐以及格式在后面章节介绍。3. .2 连接流程 设备连接云端得步骤如下图: WiFi模块 云建立MQTT连接订阅设备主题吩咐交互状态上报等待连接路由等待MCU上电,获得密钥https获得server信息https发送server信息。3 数据包格式定义 数据包得格式依据通讯双方得不同、数据链路得差异会有不同得包格式,本协议为尽量保证数据包格式得统一,做了几点规划: 1. 数据包格式中核心得部分包括 CD I与 CMD Palod,这两部分格式全部得包中保持一样,CD D 个字节,CMD ayloa紧跟 CMD I长度字节。2. 设备间通讯,包括内部吩咐、外部转发吩咐等得数据包格式虽然可能不一样,但就是都可以通过包头中得 Option 字节进行区分,可以公用相同得解析函数 3. 外部串口通讯得吩咐格式与设备间通讯格式保持一样。3.3.1 设备间通讯数据格式 同步头 ad ptin 包 长 度 ( 变长) 加 密 随机数(Opin) 源 设 备类 型(Option) 源 设 备编 码(Opt on) CMD Key MD D Paload C(Option) B 1B 1 B 1 1B 3B 1B B NB 2B 3 。3. .1 Fix header 固定帧头,格式如下表: 同步头 Had ptin 包长度(变长) 2y 1Byt 2 yte 同步头: 0x C E ead Opin: Bi Bit t Bt4 it3 i Bi1 it0 预留 预留 预留 预留 Ch ckSu 校验 广 播 类型链路 CC 校验 加密选项 ypedfen OTIONAL_ENYPT_B (10), OINAL_C_BT = (1<), TIONAL_BADT_AALINBIT = (12), OTINAL_CHEKSUM_BT = (1<3), OptinalBi; 包长度: 长度包括本字节之后得全部数据得长度 长度就是 12 个字节 字节数 取值 长度范围 007 01272 00180FF 1216383 长度得编码方式参考 MQT: 如长度就是=(6 + 228) ,那么会被编码为两个字节,低字节为65+28 = 193。高字节为。、3 。1 、 可变包格式 可变包格式须要通过 Hea Otio来解析,格式如下表: Opin Bit0 ption Bit2Opton Bt Opti Bit 加密随机数 设备类型 设备编码 消 息体。、。CRC 校验 ChckSum Byte 1te 3e 。.、。2ye 1Byt 异或随机数: 如Hed Option中得加密选项为,那么加密随机数这个字节不存在,同时数据不会进行加密 源设备信息: 用于广播类型得数据链路,须要标识数据得来源、 C 校验: 采纳6bit 得 C算法,RC 算法参照附录。ecS: 采纳 8it 得与校验,用于对数据长度比较敏感,但就是又须要进行数据校验得场景 设备编码与设备类型: aload 中可能须要用到得内部设备 Tye 与D 得定义: 内部设备 Type 与设备 ID 在设备配对时由主设备安排给从设备, 其中 Type 由主设备获得到从设备得 Deve pe 之后映射一个数值,并安排给从设备,建立映射关系、 ID 得字节构成为: Byt3 B2 Byte 随机数,避开不同子网得D 冲突 I序号,由主设备维护 3 、. 。3 吩咐消息体 结构如下表 CD CM I Palo Bte Byt N Byte CM Key: 吩咐标识,主要作用就是标识吩咐得类型以及编号,由主设备生成,发送给从设备,从设备将 ky 返回给主设备,另外在还标识吩咐得类型 MD Key 描述 备注 设备内部消息(组网、透传模式得内部消息) 这些吩咐没有重发机制,不能保障肯定到达 Noy 类消息3 Bodst 类消息 41 预留eserved 3225 动态安排得ky,用于数据得转发、透传 此范围得吩咐假如没有回复会重发,重发肯定次数后丢弃,所以此消息可能会多次到达CMD D: 吩咐码,1 个字节 吩咐码 描述 配对恳求 2 配对恳求回应 3 设备启动通知 设备启动回应 5 WiFi 就绪通知 iF断开通知 7 云就绪通知 云断开通知 9 Wi 上电通知 0 WiFi 模块配置完成通知 11 退出 WFi 模块配置 12 退出 WiFi 模块配置回应 3 重新配置 WiFi 模块 重新配置 WiFi 模块回应 5 设置 WF模块串口波特率 16 设置 Wii 模块串口波特率回应 1 查询 WF模块串口波特率 18 查询 WiFi 模块串口波特率回应 WiFi 模块消息起始32 设备上线通知 3 WiF配置完成通知 获得设备iF模块监控信息 35 获得设备 WFi 模块监控信息回应 36 设置路由器信息 37 设置路由器信息得回应 3 删除子设备 39 删除子设备回应 4 获得在线设备列表 41 获得在线设备列表回应 42 设置设备拥有者 4 设置设备拥有者回应 44 设置配对模式4 设置配对模式回应 46 在线设备列表变更通知 473 Fi 模块预留 全部设备公共吩咐起始64 主 MCU T传输文件 65 主 MCU OTA 传输文件回应 66 设置出厂参数 67 设置出厂参数回应 68 bug Lo输出限制 69 Dg o输出限制回应 70 eugLog 信息输出 71 从 TA 传输文件 2 从CU OTA 传输文件回应 3 云端推送通知信息 76 OTA 完成通知上报 79 设备公共吩咐预留 设备业务吩咐起始27 设备自定义设备内部消息 12255 设备自定义设备与云端/APP 通讯消息 Payloa: 吩咐数据, N 字节 5、4 实例 一个全部 Opi都打开得包结构如下: 同步头 ea Opti n 包 长 度 ( 变长) 加 密 随机 数(Option) 源 设 备类型(ption) 源 设 备编 码(Option) CMD Key CMD D ayload C C(Opt on) 2 1B 12 B 1B 3B 1B 1 NB 2B 3 。3. 、4 数据组包实例 以下就是运用 CRC 校验,并且加密得数据包得组包过程: 假设吩咐包就是 2 4,4 个字节,现在要组包 :CR 第一步计算这 4 个字节得c 值,假设算出来就是 5、6 第一步 C之后得数据包就变成了、2、3、5、6, 6 个字节 2:加密加密第一步: 加入一个随机数,假设这个随机数就是 , 现在包就就是个字节了,0、3、4、6加密其次步: 异或 ,将除加密随机数外得其她数据都与加密随机数进行异或,得到得数据应当就是 0、2、5、 机密第三步:查表加密,假设表中0对应得就是6、1对应得就是5依次类推,那么查表之后得数据变为了、5、4、3、1、0 加密结束,alod 最终就就是 6、5、2、1、了 3:加入包头 aylad 就是 7 个字节,optionl 就是 CRC 与加密,那么包头为 FE 5C 03 07 最终包数据为:FE 5C 07 06 0 04 0 02 01 0 解包得过程与组包相反 . 。2 设备与云、A 通讯数据格式 吩咐数据格式: 源设备类型 源设备 C ID 5Byte 1yt 1yte N Bte 3.3.2 Pad 串口通讯数据格式 下行数据格式,PA>设备 同步头 Hea O tion 包 长 度 ( 变长) 加 密 随机 数(Opt ) 源 设 备类 型 (O ti ) 源 设 备编 码(Opti n) 源设备 GUID 目标设备 GUID C I Payoa CRC( t) 2B 1B 2 B 1 1B 3B 34 字节 1B B 2B 上行数据格式,设备-PAD 同步头 He Op ion 包 长 度 ( 变长) 加 密 随机 数 (Oion) 源 设 备类 型(Opti ) 源 设 备编 码(Option) 源设备UID MD ID a ad RC(Opin) 2B 1B 1 B B B 3B 34 字节 1B B B 4. 公共吩咐定义 下表就是公共吩咐码以及吩咐数据得定义,此表仅涉及到上文提到得 CMD I与吩咐信息码(或回复码),吩咐中得其她部分数据请参考上文中得数据包定义。吩咐码吩咐描述通信方吩咐 组成备注设备内部吩咐起始1 恳求配对 从设备—主设备 · CMD eyB,00 · CMD IDte 5 个字节得业务设备类型,须要向乐君申请,并且保存在从设· 业务设备类型5Byte · 当前得内部设备类型1Byt · 当前得内部设备编码3By,全 0 表示未配置过,非全 0 表示之前配置过 · 设备业务编码长度1Byt · 设备业务编码N B ·备中 设备业务编码就是用从设备自行定义得设备 ID 字符串,不超过3字节 恳求配对回应 主设备—>从设备 · CD e,001 · MD IByte · C1yte,参考 R表 · 安排得设备类型1te · 安排得设备 ID3Byte 3 设备启动通知 CU/从设备主设备 · C Key1Byt, x1 · CM ID1Bye · 版本号1Byte · 子设备类型1By,参考 5。3 章节:子设备类型表 · 业务设备类型5Byt · 内部设备类型1Be · 内部设备编码3Byt · 设备业务编码长度1yt · 设备业务编码N Bte · 设备启动通知得回应 主设备-CU从设备 · MD Key1Bt, x01 · MD ID1Bye · RCyte, 参考 RC 表 WiFi 就绪通知 主设备-MCU从设备 · CMD Key1Byte, x01 · M ID1Byte · 6 Fi 断开通知 主设备-MC/从设备 · CM y1Be, 0x01 · CMD ID1Byt · 云就绪通知 主设备->MC/从设备 · CMD Ky1Byte, 0x01 · CMD ID1Byte ·8 云断开通知 主设备-MCU/从设备 · MD eyBt, 0 · CMD ID1Bt · 9 WiFi 模块上电通知 Wi模块->MC · CD Ke1Byte, x01 · CD I1te ·WiFi 模块上电后定时发送上电通知给 MCU,直至 M上报上线通知给 Wi模块(适用于用于透传模式) 0 WF模块配置完成通知 WiFi 模块—>MCU · CMD Key1Byte, 0x01 · MD ID1Byte · C1ye,0 胜利,3 超时,退出 退出 WF模块配置 MU—>WF模块 · CM Key1Byte, 0x1 · CM IDBy · 1 退出 WFi 模块配置回应 WiFi 模块—MU · CD K1Byte, 0x01 · M ID1Byte · R1Byte,胜利,失败3 重新配置 W模块 MCU—Fi 模块 · CM Key1By, x1 · CMD D1Byte · 1 重新配置 WiFi 模块回应 WFi 模块—>MCU · CMD Key1Bye, x01 · MD IDBte · RCByt,0 胜利,1 失败1 设置 Wii 模块串口波特率 MUiFi 模块 · CMD KyBye, 0 · D I1Byt · Baudrate4y Baudrae 取值: 9600 9200 38400 5600 1100 其她值返回 fal 默认值就是 90 6 设置 Wi 模块串口波特率回应 WiFi 模块—>C · D KeyByte, 01 · CMD ID1Be · RC1Byte,0 胜利,1 失败 返回值以新设置得波特率发送 17 查询iFi 模块串口波特率 C>WiFi 模块 · CM Ke1Byte, 0x0 · D IByt ·8 查询Fi 模块串口波特率回应 iFi 模块-M · CD ey1Bye, x01 · CM IBe · RC1Byte,0 胜利,1 失败 · Budrte4Bye · W W i Fi 模块吩咐起始2 设备信息上报 W模块— Cou/APP · CM ID1Bte · um1yte,设备个数 · 设备拥有者得小智Dstrig, 10 字节 · WiFi 模块 Ma地址SCII,12 字节 · GUDSCII,17 字节、设备业务编码长度1ye、设备业务编码N By、固件版本1BE、设备硬件架构类型1BTE、设置就是否在线1Byt,若干TT 主题: / /SourceType /SourceID 第一个设备就是主设备 设备硬件架构类型参考 设备硬件架构类型编码表 设备就是否在线,0 不在线,在线 3 iFi 配置完成通知 F模块APP · CMD ID1t · 设备 GIDASCII,17 字节 · 用户得小智 Iti, 1字节 · 设备业务编码长度1yt · 设备业务编码N yteMTT 主题: /u/TargTpe/Target34 获得 WiFi 模块监控数据 CoudAPPWiFi 模块 · CMD D1ye · 35 获得 WFi 模块监控数据回应 Wi模块->ClodA · D D1Byte · WiFi 模块连接信号强度1yt,有符号得 1 个字节,一般范围在-100Db0Dm · WiFi 模块型号1byte, 小于6 字节得字符串36 设置 WiFi 配置信息AP/Clou串口限制端>设备 · CM ID1Byte · 就是否设置拥有者 I1Byt,不设置,1 设置 · 设备拥有者得小智 IDtrin, 10 字节 · 就是否设置路由器信息1Byte,0 不设置,1 设置 · SSID Len,用户名长度1 YT,用户名长度小于等于32 字节 · W Len,密码长度 BT,密码小于等于 64 字节 · SID · WD3 设置i 配置信息回应 设备>APP/Clu/串口限制端 · CMD ID1Byte · R(参考吩咐回应编码表:0胜利,1 失败 · 3 删除子设备P/Cloud/串口限制端->设备 · CMD ID1Byte · GUIDCII,7 字节 · 3 删除子设备回应 设备> APP/Cloud/串口限制端 · CD I1ye · (参考吩咐回应编码表:0 胜利,失败 · 40 获得设备列表 AP/Cou/串口限制端—主设备· CMD yte · 1 获得设备列表回应 主设备-APP/Cloud/串口限制端 · CMD IDyte · um1yte,设备个数 · 设备拥有者得小智 IDting, 1字节 · iFi 模块 Ma地址ASCI,12 字节 · GUIDASCII,字节、设备业务编码长度1te、设备业务编码N Byte、固件版本1BYE、设备硬件架构类型1BYE、设置就是否在线Be,若干 ·设备就是否在线,0 不在线,1 在线4 设置设备进入配对模式 AppCoud/串口限制端-设备 · CMD ID1Bte · 4 设置设备进入配对模式回应 设备- App/Clou/串口限制端 · M I1Byte · R(参考吩咐回应编码表:0胜利,失败) BYTE · 47 设置设备退出配对模式 Ap/loud串口限制端>设备 · D I1Byte · 4 设置设备退出配对模式回应 设备 p/Clod串口限制端 · CD IDBye · RC(参考吩咐回应编码表:0胜利,1 失败) BYTE49 恳求同步时间 设备>ud · CMD ID1yte · 50 恳求同步时间回应 Cld—>设备 · CMD 1Byte · C(参考吩咐回应编码表:胜利,1 失败) BY · T时间67Byte,格式就是秒-分—时日—月-年-星期几,各一个字节 ·星期几得范围从 17,1表示星期一 5 扫描 AP 列表 限制端>设备 · CD D1Byt · 52 扫描 AP 列表回应 设备到限制端 · CMD IDBte · RC(参考吩咐回应编码表:0胜利,1 失败) TE · A mer1Bye,扫描到得 AP 数量 · A信息Byte,SI yte,RSSI 信号强度 若干 SSID为字符串,最大32字节,返回数据中固定 32 字节位置存放 SSID。信号强度取值范围 00全部 设备公共吩咐起始 4 主 MCU OA 传输文件 Cloud-设备 · CMD ID1Byte · 总包数2Byte · 当前包号2yte · 包内容N BTE,最大长度 1265 主 MC OTA 传输文件回应 设备—>Cloud · D ID1Bye · R(参考吩咐回应编码表:胜利,1 失败,2 包号错误,33 数据校验错误) YTE · 当前包号2Bte 66 设置出厂信息 Ap/oud设备 · CMD ID1Byte · 设备 ID2 ye · 设备业务 ID 长度1 Byte · 设备业务 IDN Byte 设备业务 ID 长度为 0 表示不须要设备业务 ID 短暂只须要工厂测试程序支持 设置出厂信息回应 设备App/Clud · M I1yt · RC(参考吩咐回应编码表:0胜利,失败 · 68 Dbug og 输出限制 p/Clu—>设备 · MD IDBe · Deug Lo开关1Byte,关,1 开 · 就是否掉电保存1Bte,掉电不保存,1 掉电保存 短暂云端实现 9 Debg og 输出限制回应 设备— App/Cloud · M ID1Bte · C(参考吩咐回应编码表:胜利,1 失败 · 0 DebgL信息输出 设备—> App/Cou · CMD IDBye · 固件版本 vrsion1Bye · 日志类型 LogTypeByte · Lg 内容NByte,字符串 · 71 从 MU OT传输文件 lod->设备 · CMD ID1yt · 总包数2Byte · 当前包号Bye 用于升级主从 MC架构下得从 MUC 固件· 包内容N BYTE,最大长度024 从 MC OTA 传输文件回应 设备-lud · MD 1By e e · R ( 参考吩咐回应编码表:0胜利,1 失败,3 包号错误,33数据校验错误) 1BYTE · 当前 包号2B 73 云端推送通知信息 CoudAPP/设备 · MD ID 1Byte· 推送信息内容n yte · ·6 OTA 升级完成上报 设备— Cod/AP · CMD D1yte · R1Byte, 0 胜利,失败 云端以这个吩咐作为 OT真正完成得推断标准 5.编码表 . 节点类型编码表 节点 类型 编码 类型 名称5. 吩咐回应编码表 01,公共错误码 吩咐 回应 编码 吩咐 回应 含义 0 胜利 1 失败 内部通讯公共 RC 值起始 2 配对失败,设备满 3 WiF配置(as link)超时4 i 配置(Easyli)退出 531 内部通讯公共C 值预留 外部通讯公共 RC 值起始 32 OA 包号错误 3 OTA 数据校验错误 34 当前状态不允许TA 363 外部通讯公共 RC 值预留 业务C 值起始 455 业务错误码 。 子设备类型表 子设备类型 描述 透传模式下得CU 设备 组网模式下得从设备 5 5 。设备硬件 架构 类型编码表设备硬件结构类型描述 单 MCU 架构 1 双 MU 架构(iFi 模块+限制 MCU 模块) 6. 附录 6 。1 CRC 校验算法 tc ont uit8 c_cc_htb = / C 高位查表 x, 0xC1, 0x8, 040, 0x, 0x, x0, 041, 00, xC, 080, 0x4,0,4x0 ,18x0 ,Cx0 ,0xx01, 0xC, 0x80, 41, 00, xC, 81, 0x40, x00, xC1, 0x8, 0x0, 0x1, 00, 0x0, 0x41,001, 0xC0, 0x0, 0x4,0 ,04x0 ,8x0 ,x0 ,0x0 ,40 ,8x0 ,1Cx0 ,000x01, 0xC0, 80, 1, 0x00, 0, 0x81, 00, 0x1, 0x, 0x8, 0x41, 0x1, xC0, 0x80, 041,0 ,00x0x1, 0x81, 4,0x0, 0xC, x0, 0x41, 00, 0xC, x81, 04, ,0x0 ,80 ,1Cx ,00xx01, x, 0x80, 041,0x, 0xC, 0x8, 40,0 ,14x0 ,080 ,0Cx0 ,1x0 ,10 ,0x0 ,Cx0 ,10xx0, 0C1, x81, 0x40, 000, 0x1, 0x1, 04, 0x01, xC0, 0x80, 041, 0x01, 0xC0, 0x8, x41, 0x00, 0xC, x81, 0x40,0x01, 0x, 0x0, 0x41, 0x0, 0xC1, x81, 0x, x00, 0x, 0x1, x40, 0x01, 0xC, x0, 01,0x01, 0xC0, x80, 4, 0x00, 0xC1, 8, 0x40, x00, C, 0x1, 0x40, x1, 00, 0x80, 0x1, x0, 0C1, 0x81, 0x4, 0x01, 0xC, x80, 01, 0x01, 0xC0, 00, x41,0,040 ,x ,Cx0 ,0xx00, 0xC1, 0x1, x40, 0, 0xC, x0, 0x41, 0x01, 0xC0, 0x80, 0x4, x0, 0xC1, 0x1, 0x40,x01, 0x0, 0x, 0x4, 0x00, 0x1, 81, 0x40, 00, x1, 0x1, 0x40, 0x01, x0, 0x80, 041, x0, C1, 0x81, 0x, 0x0, 0C0, 0x80, 0x1, 0x01, 0C0, 08, 0x41, x0, 0xC1, x, 0x0,0x01, 0xC, 0x0, 0x, 0x00, 0x1, 0x81, 40, 0x0, 0C1, 081, 0x, 0x1, , 0x80, ,0x0, 0xC0, x80, 0x4, 0x00, C, x1, x40, 0x0, xC1, 1, 04, 0x01, xC0, 0x80, 0x, 0x00, xC1, x1, 0x4, x01, 0xC0, 0x80, x1, 0x1, 0x0, , 0x1,0 4 ,18x0 ,Cx0 ,; stt ont int8 c_cr_ltab / CR校验查表低 8 位 00, 0xC0, 0xC1, 0x01, xC3, 0x03, 0x2, 0xC, 0xC, 0x06, 07, xC,05, 0x5, 0xC4, 04,0C, 0x0, 0x0D, 0xCD, 0x0, 0xCF, 0xC, 00E,0 ,0x0 ,Cx0 ,ACx ,A0x0xC9, 009, x, 0x8,x, 0x8, 0x9, 0D9, 0x1B, 0xD, xD, 0x1, 0xE, 0xDE, 0xD, 0xF, 0xDD, 01D, 01, xDC, 014, 0xD4, 0D5, 0x5, 0xD7, 07, 0x, 0xD6, xD2, 0x, x3, 0xD3, 01, 0x1, 00, 00,0xF0, x30, 031, xF, 0x3, 03, 0x2, 032,0x0 ,7F ,F0 ,637, 0F5, 0x35, 0x34, xF4,0xC, xFC, 0xFD, 03D,0 ,BFx ,B30 ,Ax0 ,AF ,EFx0 ,E3x0 ,Fx0 ,FFx0x39, 0xF9, 0xF8, 0x38, 0x28, 0xE8, xE9, 02, 0xEB, 0x2B, 0x2, xA, 0xEE, 0x2E, 02F, 0xEF, 02D, 0xD, 0EC, 0xC,0xE4, 0x24, 025, 0E5, 27, 0E7, 0x6, 02, ,2x0 ,3x0 ,2Ex ,20xE, 0x21, x2, 0xE0,0A0, 0x60, x1, x1,0 ,Ax0 ,6A ,6x ,260 ,2A0 ,3A0 ,x0x7, 0x5, 0x65, x64, 0xA4, 06C, 0AC, 0AD, 0x6, 0AF, 06F, 0x6E, 0E, 0AA, 0x6A, 0x6B, 0xA, 0x69, 0, 0xA8, 068,0x7, 0xB8, 0xB9, 79, 0xB, 0x7, 0xA, 0xB,0 ,Fx0 ,F70 ,E7x ,E0x7, 0xD, 0x