Skip to content

Commit dc23bc5

Browse files
committed
Android changes
1 parent b5cc9c5 commit dc23bc5

File tree

11 files changed

+69
-38
lines changed

11 files changed

+69
-38
lines changed

pom.xml

+3
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,9 @@
116116
<groupId>org.apache.maven.plugins</groupId>
117117
<artifactId>maven-javadoc-plugin</artifactId>
118118
<version>2.9.1</version>
119+
<configuration> ^M
120+
<source>8</source> ^M
121+
</configuration>^M
119122
<executions>
120123
<execution>
121124
<id>attach-javadocs</id>

src/main/java/com/github/mob41/blapi/A1Device.java

+3-3
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131
import java.io.IOException;
3232
import java.net.DatagramPacket;
3333

34-
import javax.xml.bind.DatatypeConverter;
34+
import static com.github.mob41.blapi.HexUtil.bytes2hex;
3535

3636
import com.github.mob41.blapi.mac.Mac;
3737
import com.github.mob41.blapi.pkt.CmdPayload;
@@ -68,13 +68,13 @@ public byte[] getData() {
6868
});
6969
byte[] data = packet.getData();
7070

71-
log.debug("A1 check sensors received encrypted bytes: " + DatatypeConverter.printHexBinary(data));
71+
log.debug("A1 check sensors received encrypted bytes: " + bytes2hex(data));
7272

7373
int err = data[0x22] | (data[0x23] << 8);
7474

7575
if (err == 0) {
7676
byte[] pl = decryptFromDeviceMessage(data);
77-
log.debug("A1 check sensors received bytes (decrypted):" + DatatypeConverter.printHexBinary(pl));
77+
log.debug("A1 check sensors received bytes (decrypted):" + bytes2hex(pl));
7878

7979
float temp = (float) ((pl[0x4] * 10 + pl[0x5]) / 10.0);
8080
float hum = (float) ((pl[0x6] * 10 + pl[0x7]) / 10.0);

src/main/java/com/github/mob41/blapi/BLDevice.java

+8-8
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@
3838
import java.util.List;
3939
import java.util.Random;
4040

41-
import javax.xml.bind.DatatypeConverter;
41+
import static com.github.mob41.blapi.HexUtil.bytes2hex;
4242

4343
import org.slf4j.Logger;
4444
import org.slf4j.LoggerFactory;
@@ -389,7 +389,7 @@ public boolean auth(boolean reauth) throws IOException {
389389
log.debug("auth Sending CmdPacket with AuthCmdPayload: cmd=" + Integer.toHexString(sendPayload.getCommand())
390390
+ " len=" + sendPayload.getPayload().getData().length);
391391

392-
log.debug("auth AuthPayload initial bytes to send: {}", DatatypeConverter.printHexBinary(sendPayload.getPayload().getData()));
392+
log.debug("auth AuthPayload initial bytes to send: {}", bytes2hex(sendPayload.getPayload().getData()));
393393

394394
DatagramPacket recvPack = sendCmdPkt(10000, 2048, sendPayload);
395395

@@ -401,7 +401,7 @@ public boolean auth(boolean reauth) throws IOException {
401401
return false;
402402
}
403403

404-
log.debug("auth recv encrypted data bytes (" + data.length +") after initial req: {}", DatatypeConverter.printHexBinary(data));
404+
log.debug("auth recv encrypted data bytes (" + data.length +") after initial req: {}", bytes2hex(data));
405405

406406
byte[] payload = null;
407407
try {
@@ -417,11 +417,11 @@ public boolean auth(boolean reauth) throws IOException {
417417
return false;
418418
}
419419

420-
log.debug("auth Packet received payload bytes: " + DatatypeConverter.printHexBinary(payload));
420+
log.debug("auth Packet received payload bytes: " + bytes2hex(payload));
421421

422422
key = subbytes(payload, 0x04, 0x14);
423423

424-
log.debug("auth Packet received key bytes: " + DatatypeConverter.printHexBinary(key));
424+
log.debug("auth Packet received key bytes: " + bytes2hex(key));
425425

426426
if (key.length % 16 != 0) {
427427
log.error("auth Received key len is not a multiple of 16! Aborting");
@@ -434,7 +434,7 @@ public boolean auth(boolean reauth) throws IOException {
434434

435435
id = subbytes(payload, 0x00, 0x04);
436436

437-
log.debug("auth Packet received id bytes: " + DatatypeConverter.printHexBinary(id) + " with ID len=" + id.length);
437+
log.debug("auth Packet received id bytes: " + bytes2hex(id) + " with ID len=" + id.length);
438438

439439
log.debug("auth End of authentication method");
440440
alreadyAuthorized = true;
@@ -530,7 +530,7 @@ public DatagramPacket sendCmdPkt(int timeout, int bufSize, CmdPayload cmdPayload
530530
public DatagramPacket sendCmdPkt(InetAddress sourceIpAddr, int sourcePort, int timeout, int bufSize,
531531
CmdPayload cmdPayload) throws IOException {
532532
CmdPacket cmdPkt = new CmdPacket(mac, pktCount++, id, aes, cmdPayload);
533-
log.debug("sendCmdPkt - Send Command Packet bytes: {}", DatatypeConverter.printHexBinary(cmdPkt.getData()));
533+
log.debug("sendCmdPkt - Send Command Packet bytes: {}", bytes2hex(cmdPkt.getData()));
534534
return sendPkt(sock, cmdPkt, InetAddress.getByName(host), 80, timeout, bufSize);
535535
}
536536

@@ -1041,7 +1041,7 @@ public static DatagramPacket sendPkt(DatagramSocket sock, Packet pkt, InetAddres
10411041
}
10421042
}
10431043

1044-
log.debug("sendPkt - recv data bytes (" + recepack.getData().length +") after initial req: {}", DatatypeConverter.printHexBinary(recepack.getData()));
1044+
log.debug("sendPkt - recv data bytes (" + recepack.getData().length +") after initial req: {}", bytes2hex(recepack.getData()));
10451045
recepack.setData(removeNullsFromEnd(recepack.getData(), 0));
10461046
return recepack;
10471047
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package com.github.mob41.blapi;
2+
3+
public class HexUtil {
4+
5+
private static final char[] hexCode = "0123456789abcdef".toCharArray();
6+
7+
public static String bytes2hex(byte[] data) {
8+
StringBuilder r = new StringBuilder(data.length * 2);
9+
byte[] var3 = data;
10+
int var4 = data.length;
11+
12+
for(int var5 = 0; var5 < var4; ++var5) {
13+
byte b = var3[var5];
14+
r.append(hexCode[b >> 4 & 15]);
15+
r.append(hexCode[b & 15]);
16+
}
17+
18+
return r.toString();
19+
}
20+
public static final byte[] hex2bytes(String s) {
21+
int len = s.length();
22+
byte[] data = new byte[len / 2];
23+
for (int i = 0; i < len; i += 2) {
24+
data[i / 2] = (byte) ((Character.digit(s.charAt(i), 16) << 4)
25+
+ Character.digit(s.charAt(i+1), 16));
26+
}
27+
return data;
28+
}
29+
30+
}

src/main/java/com/github/mob41/blapi/MP1Device.java

+4-4
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232
import java.io.IOException;
3333
import java.net.DatagramPacket;
3434

35-
import javax.xml.bind.DatatypeConverter;
35+
import static com.github.mob41.blapi.HexUtil.bytes2hex;
3636

3737
import com.github.mob41.blapi.mac.Mac;
3838
import com.github.mob41.blapi.pkt.CmdPayload;
@@ -116,7 +116,7 @@ public byte[] getData() {
116116
int err = data[0x22] | (data[0x23] << 8);
117117

118118
if (err == 0) {
119-
log.debug("MP1 set state mask received encrypted bytes: " + DatatypeConverter.printHexBinary(data));
119+
log.debug("MP1 set state mask received encrypted bytes: " + bytes2hex(data));
120120
} else {
121121
log.warn("MP1 set state mask received returned err: " + Integer.toHexString(err) + " / " + err);
122122
}
@@ -171,13 +171,13 @@ public byte[] getData() {
171171

172172
byte[] data = packet.getData();
173173

174-
log.debug("MP1 get states raw received encrypted bytes: " + DatatypeConverter.printHexBinary(data));
174+
log.debug("MP1 get states raw received encrypted bytes: " + bytes2hex(data));
175175

176176
int err = data[0x22] | (data[0x23] << 8);
177177

178178
if (err == 0) {
179179
byte[] pl = decryptFromDeviceMessage(data);
180-
log.debug("MP1 get states raw received bytes (decrypted): " + DatatypeConverter.printHexBinary(pl));
180+
log.debug("MP1 get states raw received bytes (decrypted): " + bytes2hex(pl));
181181
byte state = 0;
182182
if (pl[0x3c] >= 48 && pl[0x3c] <= 57) {
183183
String decodeValue1;

src/main/java/com/github/mob41/blapi/RM2Device.java

+5-5
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131
import java.io.IOException;
3232
import java.net.DatagramPacket;
3333

34-
import javax.xml.bind.DatatypeConverter;
34+
import static com.github.mob41.blapi.HexUtil.bytes2hex;
3535

3636
import com.github.mob41.blapi.mac.Mac;
3737
import com.github.mob41.blapi.pkt.cmd.rm2.CheckDataCmdPayload;
@@ -88,7 +88,7 @@ public byte[] checkData() throws Exception {
8888

8989
int err = data[0x22] | (data[0x23] << 8);
9090

91-
log.debug("RM2 check data received encrypted bytes: " + DatatypeConverter.printHexBinary(data));
91+
log.debug("RM2 check data received encrypted bytes: " + bytes2hex(data));
9292

9393

9494
if (err == 0) {
@@ -115,7 +115,7 @@ public boolean enterLearning() throws IOException {
115115
DatagramPacket packet = sendCmdPkt(10000, cmdPayload);
116116

117117
byte[] data = packet.getData();
118-
log.debug("RM2 enter learning received encrypted bytes: " + DatatypeConverter.printHexBinary(data));
118+
log.debug("RM2 enter learning received encrypted bytes: " + bytes2hex(data));
119119
int err = data[0x22] | (data[0x23] << 8);
120120

121121
if (err == 0) {
@@ -139,12 +139,12 @@ public double getTemp() throws Exception {
139139
DatagramPacket packet = sendCmdPkt(new RMTempCmdPayload());
140140
byte[] data = packet.getData();
141141

142-
log.debug("RM2 get temp received encrypted bytes: " + DatatypeConverter.printHexBinary(data));
142+
log.debug("RM2 get temp received encrypted bytes: " + bytes2hex(data));
143143
int err = data[0x22] | (data[0x23] << 8);
144144

145145
if (err == 0) {
146146
byte[] pl = decryptFromDeviceMessage(data);
147-
log.debug("RM2 get temp received bytes (decrypted): " + DatatypeConverter.printHexBinary(pl));
147+
log.debug("RM2 get temp received bytes (decrypted): " + bytes2hex(pl));
148148

149149
return (double) (pl[0x4] * 10 + pl[0x5]) / 10.0;
150150
} else {

src/main/java/com/github/mob41/blapi/SP1Device.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232
import java.io.IOException;
3333
import java.net.DatagramPacket;
3434

35-
import javax.xml.bind.DatatypeConverter;
35+
import static com.github.mob41.blapi.HexUtil.bytes2hex;
3636

3737
import com.github.mob41.blapi.mac.Mac;
3838
import com.github.mob41.blapi.pkt.CmdPayload;
@@ -70,7 +70,7 @@ public byte[] getData() {
7070

7171
byte[] data = packet.getData();
7272

73-
log.debug("SP1 set power received encrypted bytes: " + DatatypeConverter.printHexBinary(data));
73+
log.debug("SP1 set power received encrypted bytes: " + bytes2hex(data));
7474

7575
int err = data[0x22] | (data[0x23] << 8);
7676

src/main/java/com/github/mob41/blapi/SP2Device.java

+4-4
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232
import java.io.IOException;
3333
import java.net.DatagramPacket;
3434

35-
import javax.xml.bind.DatatypeConverter;
35+
import static com.github.mob41.blapi.HexUtil.bytes2hex;
3636

3737
import com.github.mob41.blapi.mac.Mac;
3838
import com.github.mob41.blapi.pkt.CmdPayload;
@@ -75,7 +75,7 @@ public byte[] getData() {
7575

7676
byte[] data = packet.getData();
7777

78-
log.debug("SP2 set state received encrypted bytes: " + DatatypeConverter.printHexBinary(data));
78+
log.debug("SP2 set state received encrypted bytes: " + bytes2hex(data));
7979

8080
int err = data[0x22] | (data[0x23] << 8);
8181

@@ -109,13 +109,13 @@ public byte[] getData() {
109109
});
110110
byte[] data = packet.getData();
111111

112-
log.debug("SP2 get state received encrypted bytes: " + DatatypeConverter.printHexBinary(data));
112+
log.debug("SP2 get state received encrypted bytes: " + bytes2hex(data));
113113

114114
int err = data[0x22] | (data[0x23] << 8);
115115

116116
if (err == 0) {
117117
byte[] pl = decryptFromDeviceMessage(data);
118-
log.debug("SP2 get state received bytes (decrypted): " + DatatypeConverter.printHexBinary(pl));
118+
log.debug("SP2 get state received bytes (decrypted): " + bytes2hex(pl));
119119
return pl[0x4] == 1 ? true : false;
120120
} else {
121121
log.warn("SP2 get state received an error: " + Integer.toHexString(err) + " / " + err);

src/main/java/com/github/mob41/blapi/dev/hysen/BaseHysenDevice.java

+3-3
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131

3232
import java.io.IOException;
3333

34-
import javax.xml.bind.DatatypeConverter;
34+
import static com.github.mob41.blapi.HexUtil.bytes2hex;
3535

3636
import com.github.mob41.blapi.BLDevice;
3737
import com.github.mob41.blapi.mac.Mac;
@@ -92,7 +92,7 @@ public double getRoomTemp() throws Exception {
9292
public BaseStatusInfo getBasicStatus() throws Exception {
9393
byte[] pl = new GetBasicInfoCommand().execute(this);
9494
if (pl != null) {
95-
log.debug("getBasicStatus - received bytes: {}", DatatypeConverter.printHexBinary(pl));
95+
log.debug("getBasicStatus - received bytes: {}", bytes2hex(pl));
9696
return new BaseStatusInfo(pl);
9797
}
9898
return null;
@@ -101,7 +101,7 @@ public BaseStatusInfo getBasicStatus() throws Exception {
101101
public AdvancedStatusInfo getAdvancedStatus() throws Exception {
102102
byte[] pl = new GetStatusCommand().execute(this);
103103
if (pl != null) {
104-
log.debug("getAdvancedStatus - received bytes: {}", DatatypeConverter.printHexBinary(pl));
104+
log.debug("getAdvancedStatus - received bytes: {}", bytes2hex(pl));
105105
return new AdvancedStatusInfo(pl);
106106
}
107107
return null;

src/main/java/com/github/mob41/blapi/pkt/CmdPacket.java

+4-6
Original file line numberDiff line numberDiff line change
@@ -28,16 +28,14 @@
2828
*******************************************************************************/
2929
package com.github.mob41.blapi.pkt;
3030

31-
import javax.xml.bind.DatatypeConverter;
32-
3331
import org.slf4j.Logger;
3432
import org.slf4j.LoggerFactory;
3533

3634
import com.github.mob41.blapi.BLDevice;
3735
import com.github.mob41.blapi.ex.BLApiRuntimeException;
3836
import com.github.mob41.blapi.mac.Mac;
3937
import com.github.mob41.blapi.pkt.auth.AES;
40-
38+
import static com.github.mob41.blapi.HexUtil.bytes2hex;
4139
/**
4240
* This constructs a byte array with the format of a command to the Broadlink
4341
* device
@@ -133,7 +131,7 @@ public CmdPacket(Mac targetMac, int count, byte[] id, AES aesInstance, CmdPayloa
133131

134132
int checksumpayload = 0xbeaf;
135133
for (int i = 0; i < payloadPad.length; i++) {
136-
checksumpayload = checksumpayload + Byte.toUnsignedInt(payloadPad[i]);
134+
checksumpayload = checksumpayload + (int)(Byte.valueOf(payloadPad[i]).intValue() & 0xff);
137135
checksumpayload = checksumpayload & 0xffff;
138136
}
139137

@@ -146,7 +144,7 @@ public CmdPacket(Mac targetMac, int count, byte[] id, AES aesInstance, CmdPayloa
146144
log.debug("Encrypting payload");
147145

148146
payload = aesInstance.encrypt(payloadPad);
149-
log.debug("Encrypted payload bytes: {}", DatatypeConverter.printHexBinary(payload));
147+
log.debug("Encrypted payload bytes: {}", bytes2hex(payload));
150148

151149
log.debug("Encrypted. len=" + payload.length);
152150
} catch (Exception e) {
@@ -168,7 +166,7 @@ public CmdPacket(Mac targetMac, int count, byte[] id, AES aesInstance, CmdPayloa
168166

169167
int checksumpkt = 0xbeaf;
170168
for (int i = 0; i < data.length; i++) {
171-
checksumpkt = checksumpkt + Byte.toUnsignedInt(data[i]);
169+
checksumpkt = checksumpkt + (int)(Byte.valueOf(data[i]).intValue() & 0xff);
172170
checksumpkt = checksumpkt & 0xffff;
173171
// log.debug("index: " + i + ", data byte: " + Byte.toUnsignedInt(data[i]) + ", checksum: " + checksumpkt);
174172
}

src/main/java/com/github/mob41/blapi/pkt/cmd/hysen/BaseHysenCommand.java

+3-3
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import java.net.DatagramPacket;
44
import java.util.Arrays;
55

6-
import javax.xml.bind.DatatypeConverter;
6+
import static com.github.mob41.blapi.HexUtil.bytes2hex;
77

88
import org.slf4j.Logger;
99
import org.slf4j.LoggerFactory;
@@ -33,14 +33,14 @@ public byte[] execute(BaseHysenDevice device) throws Exception {
3333
byte[] data = packet.getData();
3434

3535
log.debug(this.getClass().getSimpleName() + " received encrypted bytes: "
36-
+ DatatypeConverter.printHexBinary(data));
36+
+ bytes2hex(data));
3737

3838
int err = data[0x22] | (data[0x23] << 8);
3939

4040
if (err == 0) {
4141
byte[] pl = device.decryptFromDeviceMessage(data);
4242
log.debug(this.getClass().getSimpleName() + " received bytes (decrypted): "
43-
+ DatatypeConverter.printHexBinary(pl));
43+
+ bytes2hex(pl));
4444
return Arrays.copyOfRange(pl, 2, pl.length);
4545
} else {
4646
log.warn(this.getClass().getSimpleName() + " received an error: " + Integer.toHexString(err) + " / " + err);

0 commit comments

Comments
 (0)