service 0xFFF0 characteristic 0xFFF2 --> commands service 0xFFF0 characteristic 0xFFF1 --> responses
0xB4 0x4B len type <payload> csum
len -> number of bytes in payload
csum -> add all of the previous bytes in the packet and truncate to 1 byte
send cmd 0x14 first?
cur_key_i cur_pkt_i_2bytes <inner> csum
csum is sometimes over just inner, sometimes includes the cur_
as well
fragmented into chunks of 12 bytes (at least when sending to the device)
inner contents:
tot_keys tot_pkts_2bytes <real_payload>
1 byte len + string (GB2312?)
payload is 8 bytes BCD yyyyMMddHHmmss + day-of-week
reply 0x02 and 0x0E
reply 0x02 RETURN_DEVICE_MSG
<mac address 6 bytes> <charge in bars?> <hardware ver> <production batch 4 bytes> <firmware ver> <init> <state (whether bark-stop is enabled)>
reply 0x0E
fragmented bulk data
<pet name str>
payload is 1 byte 0x00 = ok 0x01 = error? bad command? 0x06 = error? bad checksum? 0x0a = shock cooldown
fragmented bulk data
`db voice_2bytes volume vibration shock`
key 1 = repetitive
key 2 = progressive 1st bark
key 3 = progressive 2nd bark
key 4 = progressive 3rd bark
checksum DOES include current
reply 0x08 RETRUN_CONFIG (RETURN_CONFIG?)
fragmented bulk data
db voice_2bytes volume vibration shock
key 1 = repetitive
key 2 = progressive 1st bark
key 3 = progressive 2nd bark
key 4 = progressive 3rd bark
payload is 7 bytes BCD yyyyMMddHHmmss
reply 0x0B RETRUN_RECORD (RETURN_RECORD?)
fragmented bulk data
yyyy MM dd HH mm ss ?? db sound shock ultrasonic
fragmented bulk data
`<pet name str>`
checksum does NOT include current
payload is 1 byte of vibration intensity (1, 2, 3)
payload is 1 byte of shock intensity [1-99]
payload is 7 bytes
db open h1 m1 h2 m2 tzoff
not sure what open or the times do?
reply 0x12
db open h1 m1 h2 m2 tzoff
not sure what open or the times do?
seems to be sent before certain commands?
payload is 1 byte 0/1
reply 0x16
cur_db <unk bytes 8b>
payload is 7 bytes 00 00 00 00 00 00 00 disable 01 01 00 00 00 00 00 enable now 00 01 yy MM dd HH mm enable later
reply 0x21 AA BB XX XX XX XX XX CC DD EE FF GG HH II
reply 0x24
fragmented bulk data
<voice num 2 bytes> <voice name str>
payload
fragmented bulk data
db voice_2bytes volume vibration shock
reply 0x29
fragmented bulk data
db voice_2bytes volume vibration shock
payload is 1 byte 0 = repetitive 1 = progressive
reply 0x2D 1 byte
B4 4B 01 10 30 40 --> shock with intensity 48