KeyboardParameterStateRequest.java
3.43 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
package com.sunvote.cmd.state;
import com.sunvote.cmd.BaseCmd;
import com.sunvote.cmd.ICmd;
/**
* Created by Elvis on 2017/8/11.
* Email:Eluis@psunsky.com
* Description:
* 3查询和设置键盘参数
* 包括键盘编号ID,键盘序列号SN,配对码。
* 提供设置命令,是考虑到APP可能在实际应用或生产设置中,直接通过APP设置会更方便。
* SDK提交给模块:
* 字节 标识符 描述
* 1 REQUEST_CMD 0x70 状态类指令
* 2 CMD1 命令类型
* 5 查询键盘参数(第3字节后数据填0)
* 6 设置键盘参数(第3字节后数据才有效)
* 3-4 KEYID 键盘编号,高位在前
* (如果全0不修改键盘编号)
* 5-10 KEYSN 6字节键盘序列号(设置功能不对外开放)
* (如果第1字节FF表示不修改SN)
* 11-14 MATCHCODE 4字节配对码(设置功能不对外开放)
* (如果全FF表示不修改)
*/
public class KeyboardParameterStateRequest extends StateBaseCmd {
public KeyboardParameterStateRequest(){}
public KeyboardParameterStateRequest(KeyboardParameterStateResponse response){
parseCmd(response.toBytes());
setCmd(REQUEST_CMD);
}
public static final int CMD_LENGTH = 14;
/**
* 状态类指令
*/
private byte cmd = REQUEST_CMD ;
/**
* 命令类型
*/
private byte cmd1;
/**
* 键盘编号,高位在前
* (如果全0不修改键盘编号)
*/
private byte[] keyid = new byte[2];
/**
* 6字节键盘序列号(设置功能不对外开放)
* (如果第1字节FF表示不修改SN)
*/
private byte[] skysn = new byte[6];
/**
* 4字节配对码(设置功能不对外开放)
* (如果全FF表示不修改)
*/
private byte[] matchCode = new byte[4];
public byte getCmd() {
return cmd;
}
public void setCmd(byte cmd) {
this.cmd = cmd;
}
public byte getCmd1() {
return cmd1;
}
public void setCmd1(byte cmd1) {
this.cmd1 = cmd1;
}
public byte[] getKeyid() {
return keyid;
}
public void setKeyid(byte[] keyid) {
this.keyid = keyid;
}
public byte[] getSkysn() {
return skysn;
}
public void setSkysn(byte[] skysn) {
this.skysn = skysn;
}
public byte[] getMatchCode() {
return matchCode;
}
public void setMatchCode(byte[] matchCode) {
this.matchCode = matchCode;
}
@Override
public byte[] toBytes() {
byte[] result = new byte[14];
result[0] = cmd;
result[1] = cmd1;
for (int i = 0; i < 2; i++) {
result[2 + i] = keyid[i];
}
for (int i = 0; i < 6; i++) {
result[4 + i] = skysn[i];
}
for (int i = 0; i < 4; i++) {
result[10 + i] = matchCode[i];
}
return result;
}
@Override
public ICmd parseCmd(byte[] source, int start) {
if (source != null && source.length >= CMD_LENGTH+start) {
cmd = source[start + 0];
cmd1 = source[start + 1];
for (int i = 0; i < 2; i++) {
keyid[i] = source[start + 2 + i];
}
for (int i = 0; i < 6; i++) {
skysn[i] = source[start + 4 + i];
}
for (int i = 0; i < 4; i++) {
matchCode[i] = source[start + 10 + i];
}
}
return this;
}
}