protocol

package module
v1.0.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 23, 2020 License: MIT Imports: 12 Imported by: 0

README

无线设备探测 - 设备控制协议

字节序

小端

帧结构

消息头 消息体 帧尾
20字节 可变 1 字节 0xAE

消息头格式

字段名 类型 描述
Begin uint16 消息头长度 20
TotalLenth uint32 消息总长度(包括消息头消息体)
CommandId int16 命令或响应类型
Sid uint32 流水号,顺序累加,步长为1,循环使用(一对请求和应答消息的流水号必须相同)
BodyLenth uint32 消息体长度

命令类型 CommandId

请求 CommandId 即命令编号,回复 CommandId 为命令编号的负值

消息体

默认回复
字段名 类型 描述
Code unit16 错误码
1 设备登录

请求:

字段名 类型 描述
Mac [6]unit8 mac地址

回复:

默认

2 心跳检测

请求:

字段名 类型 描述
无,只有消息头

回复:

字段名 类型 描述
3 设备退出

请求:

字段名 类型 描述
无,只有消息头,不需要回复
4 停止检测

请求:

字段名 类型 描述
无,只有消息头

回复:

默认

5 设定检测周期

请求:

字段名 类型 描述
Time uint32 间隔时间,单位:毫秒

回复: 默认

6 摄像头上报

请求:

字段名 类型 描述
mac [6]uint8 摄像头mac
ApIssi int8 热点强度 有符号(-128db -0db)
Type uint8 类型: 1 AP 2 STA
Channel uint8 频点号(1-13)
Second Channel uint8 第二频点号(目前不用)
Cam type uint8 0:非摄像头1:摄像头
SSID Len uint8 SSID的长度(0-32) 如果类型为AP 则为此AP名称如果类型为STA 则为此STA连接的AP的名称
SSID [SSID Len]uint8 SSID内容 长度为SSID Len

回复: 默认

7 检测数据上报
字段名 类型 描述
mac [6]uint8 被检测mac
data [1en]uint8 压缩后的数据

回复: 默认

8 无线信号上报

请求:

字段名 类型 描述
signal system int8 信号制式, 2:2g 3:3g 4:4g
ApIssi int8 信号强度 有符号(-128db -0db)
信号状态 int8 1:发现信号0:信号消失

回复: 默认

9 WIFI信息上报

请求:

字段名 类型 描述
Msg type uint8 子类型 数值设为1 对应设备登记
Id uint16 每个mac地址对应一个ID 目前最大300
mac [6]uint8 摄像头mac
ApIssi int8 热点强度 有符号(-128db -0db)
Type uint8 类型: 1 AP 2 STA
Channel uint8 频点号(1-13)
Second Channel uint8 第二频点号(目前不用)
Cam type uint8 0:非摄像头1:摄像头
SSID Len uint8 SSID的长度(0-32) 如果类型为AP 则为此AP名称如果类型为STA 则为此STA连接的AP的名称
SSID [SSID Len]uint8 SSID内容 长度为SSID Len
字段名 类型 描述
Msg type uint8 子类型 数值设为2 对应设备状态维护
Start Id uint16 开始位置
End Id uint16 结束位置
state uint8 0 无变化 1 删除
字段名 类型 描述
Msg type uint8 子类型 数值设为3 对应强度信息
Id uint16 一个ID后面跟一个强度
Rssi int8 热点强度 有符号(-128db -0db)
Verify value uint8 此ID对应Mac地址的校验和(临时)

回复: 默认

10 固件升级

请求:

字段名 类型 描述
Size INT(4) 固件大小
Offset INT(4) 此包的数据在固件中的位置
Number INT(1) 固件编号 目前仅一个 设置为1
Rev INT(1) 保留
Len INT(2) 此次传输的数据长度
Data INT(Len) 固件数据

回复:

字段名 类型 描述
Number INT(1) 固件编号 与收到的消息对应
Status INT(1) 状态标志 0:正常 非0:出错
Rev INT(2) 保留
Recvd INT(4) 此固件已收到的字节数
11 查询版本

请求:

字段名 类型 描述
Size INT(4) 固件大小
Offset INT(4) 此包的数据在固件中的位置
Number INT(1) 固件编号 目前仅一个 设置为1
Rev INT(1) 保留
Len INT(2) 此次传输的数据长度
Data INT(Len) 固件数据

回复:

字段名 类型 描述
Hardware Major Number INT(1) 硬件主版本号
Hardware Minor Number INT(1) 硬件子版本号
Firmware Major Number INT(1) 固件主版本号
Firmware Minor Number INT(1) 固件子版本号
Firmware Build Number INT(2) 固件编译号
12 局域网探测上报

请求:

字段名 类型 描述
Mac UINT8[6] 固件大小
Rssi INT8 此包的数据在固件中的位置
Type UINT8 类型: 1 AP 2 STA
IP4 UINT32
DevType UINT8 1: 是摄像头
Rev UINT8[30]
DescribeLen UINT8
Describe UINT8[DescribeLen]

回复: 默认

13 摄像头上报v2

请求:

字段名 类型 描述
mac [6]uint8 摄像头mac
ApIssi int8 热点强度 有符号(-128db -0db)
Type uint8 类型: 1 AP 2 STA
Channel uint8 频点号(1-13)
Second Channel uint8 第二频点号(目前不用)
Cam type uint8 0:非摄像头1:摄像头
LinkCnt uint8 AP下STA数量
Rev [16]uint8
SSID Len uint8 SSID的长度(0-32) 如果类型为AP 则为此AP名称如果类型为STA 则为此STA连接的AP的名称
SSID [SSID Len]uint8 SSID内容 长度为SSID Len

回复: 默认

14 请求Wifi信息

请求:

字段名 字节数 类型 描述
NeedRssi 1 int8 是否需要强度信息 1 需要 0 不需要
NeedStream 1 int8 是否需要流量 1需要 0不需要
Period 2 Int16 多长时间发送一次 ms为单位(先按3000)
Retrans 1 int8 是否需要重传拓扑结构 1 需要 0 不需要
Cnt 1 int8 开启扫描的mac地址的个数 0xff表示全选 0xfe表示所有AP 0xfd表示所有STA
Mac地址(可选) 1 INT(6*Cnt) 如果Cnt为非全选 此处跟着mac地址

回复: 默认

15 Wifi信息更新
字段名 类型 描述
MapNum INT(2) Mac与Id的映射表编号
单元1
单元2
……
CRC16 INT(2) 由Map num和所有单元数据计算出的CRC
字段 类型 描述
Type INT(1) 设置为0x00
Len INT(1) 长度为0

2 网络拓扑结构传输结束

字段 类型 描述
Type INT(1) 设置为0x01
Len INT(1) 长度为0

3 一个ap信息

字段 类型 描述
Type INT(1) 设置为0x10
Len INT(1) 长度为13+SSID Len
Mac INT(6) 6个字节mac地址
Id INT(1) 这个地址对应的id
Rssi INT(1) 强度
Channel INT(1) 频点号(1-13)
Second Channel INT(1) 第二频点 0:NONE 1:ABOVE 2:BELOW
UpStream INT(1) 上行流量(STAàAP)
DownStream INT(1) 下行流量(APàSTA)
SSID Len INT(1) 此AP的SSID长度 长度为0时为未知
SSID INT(SSID Len) SSID内容 长度为SSID Len

4 一个sta信息

字段 类型 描述
Type INT(1) 设置为0x20
Len INT(1) 长度为11
Mac INT(6) 6个字节mac地址
Id INT(1) 这个地址对应的id
Rssi INT(1) 强度
Ap_id INT(1) 此sta连接的ap的id
Up stream INT(1) 上行流量(STAàAP)
Down stream INT(1) 下行流量(APàSTA)

5 一个probe信息(后期可能加上 不需要id 属于sta)

字段 类型 描述
Type INT(1) 设置为0x21
Len INT(1) 长度为7
Mac INT(6) 6个字节mac地址
Rssi INT(1) 强度

6 强度信息

字段 类型 描述
Type INT(1) 设置为0x40
Len INT(1) 长度为3*n
Id INT(1) 第1个id
Rssi INT(1) 第1个id对应的强度
Verify value INT(1) 此id对应Mac地址的校验和(临时)
Id INT(1) 第2个id
Rssi INT(1) 第2个id对应的强度
Verify value INT(1) 此id对应Mac地址的校验和(临时)
Id INT(1) 第3个id
Rssi INT(1) 第3个id对应的强度
Verify value INT(1) 此id对应Mac地址的校验和(临时)
……..
……..
Id INT(1) 第n个id
Rssi INT(1) 第n个id对应的强度
Verify value INT(1) 此id对应Mac地址的校验和(临时)

7 流量信息

字段 类型 描述
Type INT(1) 设置为0x50
Len INT(1) 长度为4*n
Id INT(1) 第1个id
Up stream INT(1) 第1个id对应的上行流量(STAàAP)
Down stread INT(1) 第1个id对应的下行流量(APàSTA)
Verify value INT(1) 此id对应Mac地址的校验和(临时)
Id INT(1) 第2个id
Rssi INT(1) 第2个id对应的强度
Up stream INT(1) 第2个id对应的上行流量(STAàAP)
Down stread INT(1) 第2个id对应的下行流量(APàSTA)
Verify value INT(1) 此id对应Mac地址的校验和(临时)
Id INT(1) 第3个id
Up stream INT(1) 第3个id对应的上行流量(STAàAP)
Down stread INT(1) 第3个id对应的下行流量(APàSTA)
Verify value INT(1) 此id对应Mac地址的校验和(临时)
……..
Id INT(1) 第n个id
Up stream INT(1) 第n个id对应的上行流量(STAàAP)
Down stread INT(1) 第n个id对应的下行流量(APàSTA)
Verify value INT(1) 此id对应Mac地址的校验和(临时)

8 强度和流量信息

字段 类型 描述
Type INT(1) 设置为0x60
Len INT(1) 长度为5*n
Id INT(1) 第1个id
Rssi INT(1) 第1个id对应的强度
Up stream INT(1) 第1个id对应的上行流量(STAàAP)
Down stread INT(1) 第1个id对应的下行流量(APàSTA)
Verify value INT(1) 此id对应Mac地址的校验和(临时)
Id INT(1) 第2个id
Up stream INT(1) 第2个id对应的上行流量(STAàAP)
Down stread INT(1) 第2个id对应的下行流量(APàSTA)
Verify value INT(1) 此id对应Mac地址的校验和(临时)
Id INT(1) 第3个id
Rssi INT(1) 第3个id对应的强度
Up stream INT(1) 第3个id对应的上行流量(STAàAP)
Down stread INT(1) 第3个id对应的下行流量(APàSTA)
Verify value INT(1) 此id对应Mac地址的校验和(临时)
……..
Id INT(1) 第n个id
Rssi INT(1) 第n个id对应的强度
Up stream INT(1) 第n个id对应的上行流量(STAàAP)
Down stread INT(1) 第n个id对应的下行流量(APàSTA)
Verify value INT(1) 此id对应Mac地址的校验和(临时)

回复: 默认

详细说明:

一条协议中的多个单元之间没有任何关系,可以任何类型混合,但设备端需保证每个id使用时,前面已同步过对应的mac地址。因为ap/sta拓扑结构维护单元发送数量较少,而强度/流量单元发送数量较多,两者一般不放在同一条协议中,但也可以一条协议内发过去。

为了节省tickdig的数据交互资源,流量用一个字节传输,因为流量统计并不精确,所以单位也不用太精确,现在小于1KB的用1KB表示 ,这一个字节的意义定义如下,前两个比特位表示单位,分别为,0b00表示单位为KB,这样范围到了0-63KB;0b01表示单位为4KB,这样范围为64-316KB((x+16)*4KB);0b10表示单位为32KB,这样范围为320-2336KB((x+10)*32KB);0b11表示单位为256KB,这样范围为2368-18432KB((x+9)*256KB)。

mac对的id范围目前为0-249,即最高250个mac,大于此值有其它意义,255表示空id,如果某个mac对应此id,表示则此mac已经长时间无数据,设备已从拓扑结构中删除;254表示选中所有AP设备;253表示选中所有sta设备。

流程:

当设备第一次发送拓扑结构或APP主动请求时,发送完整的拓扑结构,之后只发送有变化的个别mac的维护信息。(APP发出的命令大概为此功能开始并带一些参数包括是否需要传完整拓扑结构、是否需要实时更新强度或流量、需要哪些mac的强度或流量等等)。

发送完整的拓扑结构特点为发送大量ap/sta单元并且会发送拓扑结构传输开始单元和结束单元,如果接收到开始单元,这时APP之前保存的拓扑结构认为已失效,可以按需求清除或作为历史记录。之后的拓扑结构和id与mac的对应关系应重新建立。收到拓扑结构传输结束单元,预示着当前ap/sta信息已全部发送,之后只在某个设备信息有变化时发个别的ap/sta单元等mac维护信息。

防止id与mac的对应关系与设备不同步,设备每有一次新的映射后随机生成一个Map num,APP需要比对此Map num,如果发生变化,之前保存的对应关系应该清除,重新建立对应关系并保存下新的Map num。

APP应如实回应状态信息,如返回CRC错或设备收回应超时,设备应重发消息。如找不到id或mac不匹配,此时肯定对应关系已发生变化,这时设备改变Map num重新发送整个拓扑网络数据。

Mac地址的校验和为mac的6个字节相加保留一个字节的结果 ,仅在调试期间用,验证id与mac的对应关系是否正确。

APP的处理:

开始和结束单元仅作为实现APP功能作用,与拓扑结构维护没关系。任何的ap/sta单元,包括传输整个拓扑结构时的大量的和后面某个mac信息变化时的个别的,都应作为同样的拓扑结构维护信息,对当前已保存的拓扑结构进行更新。如开始刚接收到一个ap单元,这时的拓扑结构就是仅一个ap,后面再收到ap时就是对当前仅一个ap的拓扑结构更新为两个ap,后面再在此基础上更新。

如果收到一个ap/sta单元,而之前已保存过此mac的信息,此时应该根据变化作不同的处理,如果是id已变化 ,可以仅将之前对应的id改为新传入的,原来与此ap对应的sta可以不变,仍然保留对应关系;如果ap的状态变为了sta,则需要将之前与此ap对应的所有sta取消关联,使之成为未连接状态,之后此mac作为sta正常处理;如果是sta修改为了ap,则应该与之前关联的ap取消关联,之后按正常ap处理。如果新收到的ap/sta单元中的id之前有记录对应的mac,而与本次不匹配,则原来对应的mac认为已经失效,需要进行相应删除操作。

sta单元中的AP_id和强度流量单元中的id,都是需要找之前的id-mac对应表的,如果找不到需要返回错误,调试期间还需要找到对应mac后比对校验和,如果不匹配返回相应错误。 如果sta单元的AP_id为空id,表示没有关联的ap。

ap/sta单元中的自身mac对应id如果为空id,则此mac已失效;如果为有效id,但此id之前有过对应不同的mac,则原来的mac认为已失效,需从已保存的拓扑结构中删除,并完善ap和sta解除关联的操作。

16 无线协议类型设置 WirelessScanTypeSet

请求:

字段 类型 描述
协议类型Wireless Type Int(1) [表1](#### 表1:无线协议类型Wireless Type)
协议类型Wireless Type Int(1) [表1](#### 表1:无线协议类型Wireless Type)

举例:app中显示所有无线协议的当前状态:

0x01 0x00 0xFF 0xFE
所有协议 帧尾

回复: 默认

17 无线协议检测距离设置 WirelessScanRangeSet

请求:

字段 类型 描述
无线协议类型Wireless Type Int(1) [表1](#### 表1:无线协议类型Wireless Type)
无线信号设置距离wirelessRange Int(1) [表2](#### 表2:无线信号设置距离)
……
无线协议类型Wireless Type Int(1) [表1](#### 表1:无线协议类型Wireless Type)
无线信号设置距离wirelessRange Int(1) [表2](#### 表2:无线信号设置距离)

举例:距离设置成功

0x01
消息内容:所有协议距离50cm

回复: 默认

18 无线协议检测开始 WirelessScanBegin

请求:

字段 类型 描述
无线协议检测开始ScanBegin Int(1) 0x00

举例:

0x07 0x01
消息长度 消息内容

回复: 默认

19 无线协议检测停止 WirelessScanEnd

请求:

字段 类型 描述
无线协议检测开始ScanEnd Int(1) 0x00

回复: 默认

20 无线协议检测上报 WirelessScanUpload

请求:

字段 类型 描述
本次上报数据的扫描次数scannums Int(1) 2.5s会扫描5~6次
信号单元
信号单元
……

信号单元:

字段 类型 描述
本次扫描上报的数据大小scannum uint16
无线协议类型WirelessType int8 [表1](#### 表1:无线协议类型Wireless Type)
无线信号强度值WirelessIntensity int8 0~0xFF
无线协议相关频点信息WirelessInfo int16 [表4](#### 表4:无线协议相关频点信息)
无线协议数据量Wirelessdataquantity uint16 0~0xFFFF
表1:无线协议类型Wireless Type
名称 编码
下述所有协议 0xFF
中国移动GSM900/1800 01
中国联通GSM900/1800 02
中国电信CDMA/CDMA2000 03
中国移动3G TDSCDMA 04
中国联通3G WCDMA 05
中国移动4GTDD-LTE 06
中国联通4G FDD-LTE 07
中国电信4G FDD-LTE 08
433M/315M 09
WiFi2.4G 0A
ISM2.4G 0B
800M 0C
表2:无线信号设置距离
距离 编码
20cm 01
50cm 02
1M 03
3M 04
5M 05
表4:无线协议相关频点信息
名称 频点序列号信息
中国移动GSM900/1800 195/9991024/512561/587636
中国联通GSM900/1800 96125/662736/
中国电信CDMA/CDMA2000 1~7
中国移动3G TDSCDMA 未定
中国联通3G WCDMA 1~3
中国移动4G TDDLTE 1~8
中国联通4G FDD-LTE 1
中国电信4G FDD-LTE 1
433M/315M 2
WiFi2.4G 10
ISM2.4G 11
800M NULL
21 0-6G数据上报 Data0To6GUpload

请求:

字段 类型 描述
FreqStart uint64 开始频率
FreqEnd uint64 结束频率
Rev [6]uint8 保留
Count uint16 强度数量
PowerData [Count]uint8 强度数据

回复: 默认

错误码

code 描述
0 成功
20001 内部错误
20002 Header 长度错误
20003 指令不存在
20004 body格式错误
20005 设备不存在
20006 不支持该协议

Documentation

Index

Constants

View Source
const (
	CMDAESKey                      CMD = 99
	CMDLoginResp                       = -CMDLogin
	CMDHeartbeatResp                   = -CMDHeartbeat
	CMDLogoutResp                      = -CMDLogout
	CMDStopDetectResp                  = -CMDStopDetect
	CMDSetDetectPeriodResp             = -CMDSetDetectPeriod
	CMDCamDetectedResp                 = -CMDCamDetected
	CMDDetectDataUploadResp            = -CMDDetectDataUpload
	CMDWirelessSignalReportingResp     = -CMDWirelessSignalReporting
	CMDWifiDetectedResp                = -CMDWifiDetected
	CMDFirmwareUpdateResp              = -CMDFirmwareUpdate
	CMDCheckVersionResp                = -CMDCheckVersion
	CMDCamDetectedLANResp              = -CMDCamDetectedLAN
	CMDCamDetectedV2Resp               = -CMDCamDetectedV2
	CMDWifiInfoStartResp               = -CMDWifiInfoStart
	CMDWifiInfoUpdateResp              = -CMDWifiInfoUpdate
	CMDWirelessScanTypeSetResp         = -CMDWirelessScanTypeSet
	CMDWirelessScanRangeSetResp        = -CMDWirelessScanRangeSet
	CMDWirelessScanBeginResp           = -CMDWirelessScanBegin
	CMDWirelessScanEndResp             = -CMDWirelessScanEnd
	CMDWirelessScanUploadResp          = -CMDWirelessScanUpload
)
View Source
const HeaderLen = 16

Variables

This section is empty.

Functions

func AddHeader

func AddHeader(cmd CMD, sid uint32, body []byte) (data []byte, err error)

func DecryptBodyData

func DecryptBodyData(headerData, encryptBodyData []byte, cry *Encrypt) (data []byte, err error)

func EncodeRespBody

func EncodeRespBody(base *RespBase) (data []byte)

func FirmwareUpdateRespToData

func FirmwareUpdateRespToData(firmwareUpdateResp *FirmwareUpdateResp) (data []byte, err error)

func FirmwareUpdateToData

func FirmwareUpdateToData(data []byte) (rData [][]byte, rLens []int, err error)

func GenKeyData

func GenKeyData(mac []byte) (en []byte)

func GetAesKeyAndAesIV

func GetAesKeyAndAesIV(keyData []byte) (AesKey, AesIV []byte, err error)

Types

type CMD

type CMD int16
const (
	CMDErr CMD = iota
	CMDLogin
	CMDHeartbeat
	CMDLogout
	CMDStopDetect
	CMDSetDetectPeriod
	CMDCamDetected
	CMDDetectDataUpload
	CMDWirelessSignalReporting
	CMDWifiDetected
	CMDFirmwareUpdate
	CMDCheckVersion
	CMDCamDetectedLAN
	CMDCamDetectedV2
	CMDWifiInfoStart
	CMDWifiInfoUpdate
	CMDWirelessScanTypeSet
	CMDWirelessScanRangeSet
	CMDWirelessScanBegin
	CMDWirelessScanEnd
	CMDWirelessScanUpload
)

func (CMD) String

func (c CMD) String() string

type CamDetected

type CamDetected struct {
	CamDetectedConst
	SSID []uint8
}

func CamDetectedFromData

func CamDetectedFromData(data []byte) (camDetected *CamDetected, err error)

type CamDetectedConst

type CamDetectedConst struct {
	Mac           [6]uint8
	ApIssi        int8
	Type          uint8
	Channel       uint8
	SecondChannel uint8
	CamType       uint8 //1: 是摄像头
	SSIDLen       uint8
}

func (CamDetectedConst) GetMac

func (c CamDetectedConst) GetMac(split string) (mac string, err error)

type CamDetectedConstV2

type CamDetectedConstV2 struct {
	Mac           [6]uint8
	ApIssi        int8
	Type          uint8
	Channel       uint8
	SecondChannel uint8
	CamType       uint8 //1: 是摄像头
	LinkCnt       uint8
	Rev           [16]uint8
	SSIDLen       uint8
}

func (CamDetectedConstV2) GetMac

func (c CamDetectedConstV2) GetMac(split string) (mac string)

type CamDetectedLAN

type CamDetectedLAN struct {
	CamDetectedLANConst
	Describe []uint8
}

func CamDetectedLANFromData

func CamDetectedLANFromData(data []byte) (camDetectedLAN *CamDetectedLAN, err error)

type CamDetectedLANConst

type CamDetectedLANConst struct {
	Mac         [6]uint8
	Rssi        int8
	Type        uint8
	IP4         uint32
	DevType     uint8 //1: 是摄像头
	Rev         [30]uint8
	DescribeLen uint8
}

func (CamDetectedLANConst) GetMac

func (c CamDetectedLANConst) GetMac(split string) (mac string, err error)

type CamDetectedV2

type CamDetectedV2 struct {
	CamDetectedConstV2
	SSID []uint8
}

func CamDetectedV2FromData

func CamDetectedV2FromData(data []byte) (camDetected *CamDetectedV2, err error)

func (*CamDetectedV2) ToBytes

func (c *CamDetectedV2) ToBytes() (data []byte)

type CheckVersionResp

type CheckVersionResp struct {
	HardwareMajor int8
	HardwareMinor int8
	FirmwareMajor int8
	FirmwareMinor int8
	FirmwareBuild int16
}

func CheckVersionRespFromData

func CheckVersionRespFromData(data []byte) (checkVersionResp *CheckVersionResp, err error)

func (*CheckVersionResp) Firmware

func (c *CheckVersionResp) Firmware() string

func (*CheckVersionResp) Hardware

func (c *CheckVersionResp) Hardware() string

func (*CheckVersionResp) ToData

func (c *CheckVersionResp) ToData() (data []byte)

type Data0To6GUpload

type Data0To6GUpload struct {
	Data0To6GUploadConst
	PowerData []uint8 // 强度数据
}

func (*Data0To6GUpload) Parse

func (d *Data0To6GUpload) Parse(data []byte) (err error)

type Data0To6GUploadConst

type Data0To6GUploadConst struct {
	FreqStart uint64   // 开始频率
	FreqEnd   uint64   // 结束频率
	Rev       [6]uint8 // 保留
	Count     uint16   // 强度数量
}

type Encrypt

type Encrypt struct {
	AesKey []byte
	AesIV  []byte
}

type ErrType

type ErrType int16
const (
	ErrType_Unknown  ErrType = -1
	ErrType_Internal ErrType = iota + 20001
	ErrType_Header
	ErrType_Cmd
	ErrType_Body
	ErrType_DeviceNotExist
	ErrType_NotLogin
	ErrType_MacIdNotExist
	ErrType_MacIdVerifyError
	ErrType_NoSid
	ErrType_Crypt
)
const ErrType_Success ErrType = 0

func GetErrorCode

func GetErrorCode(err error) (code ErrType)

type Error

type Error struct {
	Code ErrType
	// contains filtered or unexported fields
}

type FirmwareUpdate

type FirmwareUpdate struct {
	Size   int32
	Offset int32
	Number int8
	Rev    int8
	Len    int16
}

func FirmwareUpdateFromData

func FirmwareUpdateFromData(data []byte) (firmwareUpdate *FirmwareUpdate, data_ []byte, err error)

type FirmwareUpdateResp

type FirmwareUpdateResp struct {
	Number int8
	Status int8
	Rev    int16
	Recvd  int32
}

func FirmwareUpdateRespFromData

func FirmwareUpdateRespFromData(data []byte) (firmwareUpdateResp *FirmwareUpdateResp, err error)
type Header struct {
	CommandId CMD
	Sid       uint32
	BodyLen   uint32
}

func HeaderFromData

func HeaderFromData(data []byte, cry *Encrypt) (header *Header, err error)

type Header16

type Header16 struct {
	Begin     uint16
	TotalLen  uint32
	CommandId CMD
	Sid       uint32
	BodyLen   uint32
}

type HeaderAll

type HeaderAll struct {
	Begin    uint16
	TotalLen uint32
	Header
}

type Login

type Login struct {
	Mac [6]byte
}

func (*Login) Parse

func (l *Login) Parse(data []byte) (err error)

type RespBase

type RespBase struct {
	Code int16
}

func DecodeRespBody

func DecodeRespBody(data []byte) (base *RespBase, err error)

type WifiInfoStart

type WifiInfoStart struct {
	WifiInfoStartBase
	Macs [][]byte
}

func (*WifiInfoStart) ToBytes

func (w *WifiInfoStart) ToBytes() (data []byte)

type WifiInfoStartBase

type WifiInfoStartBase struct {
	NeedRssi   int8
	NeedStream int8
	Period     int16
	Retrans    int8
	Cnt        uint8
}

type WifiInfoStartResp

type WifiInfoStartResp struct {
	Cnt int8
}

func (*WifiInfoStartResp) Parse

func (w *WifiInfoStartResp) Parse(data []byte) (err error)

type WifiInfoUpdate

type WifiInfoUpdate struct {
	MapNum int16
	Units  []WifiInfoUpdateUnit
	CRC16  int16
}

func (*WifiInfoUpdate) Parse

func (w *WifiInfoUpdate) Parse(data []byte) (err error)

type WifiInfoUpdateResp

type WifiInfoUpdateResp struct {
	Status WifiInfoUpdateRespStatus
}

func NewWifiInfoUpdateResp

func NewWifiInfoUpdateResp(status WifiInfoUpdateRespStatus) *WifiInfoUpdateResp

func (*WifiInfoUpdateResp) ToBytes

func (w *WifiInfoUpdateResp) ToBytes() (data []byte)

type WifiInfoUpdateRespStatus

type WifiInfoUpdateRespStatus int16
const (
	WifiInfoUpdateRespStatus_Normal     WifiInfoUpdateRespStatus = 0
	WifiInfoUpdateRespStatus_CRCError   WifiInfoUpdateRespStatus = 1
	WifiInfoUpdateRespStatus_NoId       WifiInfoUpdateRespStatus = 2
	WifiInfoUpdateRespStatus_IDMacError WifiInfoUpdateRespStatus = 3
)

type WifiInfoUpdateUnit

type WifiInfoUpdateUnit interface {
	Parse(r io.Reader) (err error)
}

func NewWifiInfoUpdateUnitByData

func NewWifiInfoUpdateUnitByData(r io.Reader) (w WifiInfoUpdateUnit, err error)

type WifiInfoUpdateUnitAP

type WifiInfoUpdateUnitAP struct {
	WifiInfoUpdateUnitBase
	WifiInfoUpdateUnitAPConst
	SSID string
}

func (*WifiInfoUpdateUnitAP) Parse

func (w *WifiInfoUpdateUnitAP) Parse(r io.Reader) (err error)

type WifiInfoUpdateUnitAPConst

type WifiInfoUpdateUnitAPConst struct {
	Mac           [6]byte
	Id            int8
	Rssi          int8
	Channel       int8
	SecondChannel int8
	UpStream      int8
	DownStream    int8
	SSIDLen       int8
}

type WifiInfoUpdateUnitBase

type WifiInfoUpdateUnitBase struct {
	Type int8
	Len  int8
}

type WifiInfoUpdateUnitBegin

type WifiInfoUpdateUnitBegin struct {
	WifiInfoUpdateUnitBase
}

func (*WifiInfoUpdateUnitBegin) Parse

func (w *WifiInfoUpdateUnitBegin) Parse(r io.Reader) (err error)

type WifiInfoUpdateUnitEnd

type WifiInfoUpdateUnitEnd struct {
	WifiInfoUpdateUnitBase
}

func (*WifiInfoUpdateUnitEnd) Parse

func (w *WifiInfoUpdateUnitEnd) Parse(r io.Reader) (err error)

type WifiInfoUpdateUnitProbe

type WifiInfoUpdateUnitProbe struct {
	Mac  [6]byte
	Rssi int8
}

func (*WifiInfoUpdateUnitProbe) Parse

func (w *WifiInfoUpdateUnitProbe) Parse(r io.Reader) (err error)

type WifiInfoUpdateUnitRssi

type WifiInfoUpdateUnitRssi struct {
	WifiInfoUpdateUnitBase
	List []*WifiInfoUpdateUnitRssiOne
}

func (*WifiInfoUpdateUnitRssi) Parse

func (w *WifiInfoUpdateUnitRssi) Parse(r io.Reader) (err error)

type WifiInfoUpdateUnitRssiAndStream

type WifiInfoUpdateUnitRssiAndStream struct {
	WifiInfoUpdateUnitBase
	List []*WifiInfoUpdateUnitRssiAndStreamOne
}

func (*WifiInfoUpdateUnitRssiAndStream) Parse

func (w *WifiInfoUpdateUnitRssiAndStream) Parse(r io.Reader) (err error)

type WifiInfoUpdateUnitRssiAndStreamOne

type WifiInfoUpdateUnitRssiAndStreamOne struct {
	Id          int8
	Rssi        int8
	UpStream    int8
	DownStread  int8
	VerifyValue int8
}

type WifiInfoUpdateUnitRssiOne

type WifiInfoUpdateUnitRssiOne struct {
	Id          int8
	Rssi        int8
	VerifyValue int8
}

type WifiInfoUpdateUnitSTA

type WifiInfoUpdateUnitSTA struct {
	Mac        [6]byte
	Id         int8
	Rssi       int8
	APId       int8
	UpStream   int8
	DownStream int8
}

func (*WifiInfoUpdateUnitSTA) Parse

func (w *WifiInfoUpdateUnitSTA) Parse(r io.Reader) (err error)

type WifiInfoUpdateUnitStream

type WifiInfoUpdateUnitStream struct {
	WifiInfoUpdateUnitBase
	List []*WifiInfoUpdateUnitStreamOne
}

func (*WifiInfoUpdateUnitStream) Parse

func (w *WifiInfoUpdateUnitStream) Parse(r io.Reader) (err error)

type WifiInfoUpdateUnitStreamOne

type WifiInfoUpdateUnitStreamOne struct {
	Id          int8
	UpStream    int8
	DownStread  int8
	VerifyValue int8
}

type WirelessRange

type WirelessRange int8
const (
	WirelessRange_20cm WirelessRange = 1
	WirelessRange_50cm WirelessRange = 2
	WirelessRange_1M   WirelessRange = 3
	WirelessRange_3M   WirelessRange = 4
	WirelessRange_5M   WirelessRange = 5
)

type WirelessScanBegin

type WirelessScanBegin struct {
	Value int8
}

type WirelessScanEnd

type WirelessScanEnd struct {
	Value int8
}

type WirelessScanRangeSet

type WirelessScanRangeSet struct {
	Type  WirelessType
	Range WirelessRange
}

type WirelessScanTypeSet

type WirelessScanTypeSet struct {
	TypeList []WirelessType
}

type WirelessScanUpload

type WirelessScanUpload struct {
	ScanCount int8
	ScanList  []*WirelessScanUploadOne
}

type WirelessScanUploadOne

type WirelessScanUploadOne struct {
	ScanData     int16
	Type         WirelessType
	Intensity    int8
	Info         int16
	DataQuantity int16
}

type WirelessType

type WirelessType uint8
const (
	WirelessType_All            WirelessType = 0xFF
	WirelessType_CM_GSM900_1800 WirelessType = 1
	WirelessType_CU_GSM900_1800 WirelessType = 2
	WirelessType_CT_CDMA_2000   WirelessType = 3
	WirelessType_CM_3G_TDSCDMA  WirelessType = 4
	WirelessType_CU_3G_WCDMA    WirelessType = 5
	WirelessType_CM_4GTDD_LTE   WirelessType = 6
	WirelessType_CU_4GFDD_LTE   WirelessType = 7
	WirelessType_CT_4G_FDD_LTE  WirelessType = 8
	WirelessType_433M_315M      WirelessType = 0x09
	WirelessType_WiFi_2_4G      WirelessType = 0x0A
	WirelessType_ISM_2_4G       WirelessType = 0x0B
	WirelessType_800M           WirelessType = 0x0C
)

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL