refactor: migrate to Tencent Cloud backend
这个提交包含在:
@@ -0,0 +1,47 @@
|
||||
const ble = require('../services/ble')
|
||||
|
||||
function assert(condition, message) {
|
||||
if (!condition) throw new Error(message)
|
||||
}
|
||||
|
||||
function bytes(buffer) {
|
||||
return Array.from(new Uint8Array(buffer))
|
||||
}
|
||||
|
||||
function xor(arr) {
|
||||
return arr.reduce((acc, item) => acc ^ item, 0)
|
||||
}
|
||||
|
||||
function testBuildFrameChecksum() {
|
||||
const frame = bytes(ble.buildFrame(0x02, [0x7F, 0x01]))
|
||||
assert(frame[0] === 0xAA && frame[1] === 0x55, 'frame header mismatch')
|
||||
assert(frame[2] === 0x02, 'frame length mismatch')
|
||||
assert(frame[3] === 0x02, 'frame type mismatch')
|
||||
assert(frame[frame.length - 1] === xor(frame.slice(0, -1)), 'checksum must include header, len, type, payload')
|
||||
}
|
||||
|
||||
function testParseStatusFrame() {
|
||||
const payload = [0x02, 0x7F, 0x02, 200, 0x00, 0x09, 0x27, 0xC0, 0x00, 0x01, 86, 36, 1, 2]
|
||||
const frame = ble.buildFrame(0x21, payload)
|
||||
const parsed = ble.parseFrame(frame)
|
||||
assert(parsed.type === 0x21, 'status type mismatch')
|
||||
const status = ble.parseStatusReport(parsed.payload)
|
||||
assert(status.mode_state === 0x02, 'mode_state mismatch')
|
||||
assert(status.region_mask === 0x7F, 'region mask mismatch')
|
||||
assert(status.remaining_ms === 600000, 'remaining_ms mismatch')
|
||||
assert(status.battery === 86, 'battery mismatch')
|
||||
assert(status.temperature === 36, 'temperature mismatch')
|
||||
}
|
||||
|
||||
function testBindPayloadLength() {
|
||||
const userBytes = ble.hexToBytes('0000000000000001')
|
||||
const tokenBytes = ble.hexToBytes('0011223344556677')
|
||||
assert(userBytes.length === 8, 'user id must be 8 bytes')
|
||||
assert(tokenBytes.length === 8, 'bind token must be 8 bytes')
|
||||
}
|
||||
|
||||
testBuildFrameChecksum()
|
||||
testParseStatusFrame()
|
||||
testBindPayloadLength()
|
||||
|
||||
console.log('BLE frame tests passed')
|
||||
在新工单中引用
屏蔽一个用户