forked from yudi_xiao/expo-ble-app-demo
expo-ble模块测试demo 联调BLE模块 take 10 新增log 打印ani文件前后512字节
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
import {ProtocolFrame} from './types';
|
||||
import {FRAME_CONSTANTS, COMMAND_TYPES, FRAME_HEAD} from './Constants';
|
||||
import {FRAME_CONSTANTS, APP_COMMAND_TYPES, FRAME_HEAD} from './Constants';
|
||||
|
||||
export class ProtocolManager {
|
||||
|
||||
@@ -13,9 +13,7 @@ export class ProtocolManager {
|
||||
for (let i = 0; i < frameData.length; i++) {
|
||||
sum += frameData[i];
|
||||
}
|
||||
const checksumV1 = (0 - sum) & 0xff
|
||||
const checksum = (~sum + 1) & 0xff
|
||||
console.debug(`[ProtocolManager] Checksum V1 calculated: 0 - ${sum} = ${checksumV1.toString(16).padStart(2, '0')}`);
|
||||
console.debug(`[ProtocolManager] Checksum calculated: 0 - ${sum} = ${checksum.toString(16).padStart(2, '0')}`);
|
||||
return checksum;
|
||||
}
|
||||
@@ -25,10 +23,9 @@ export class ProtocolManager {
|
||||
}
|
||||
|
||||
static createFrame(
|
||||
type: COMMAND_TYPES,
|
||||
type: APP_COMMAND_TYPES,
|
||||
data: Uint8Array,
|
||||
head: FRAME_HEAD = FRAME_CONSTANTS.HEAD_APP_TO_DEVICE,
|
||||
requireFragmentation: boolean = true,
|
||||
maxDataSize: number = FRAME_CONSTANTS.MAX_DATA_SIZE
|
||||
): Uint8Array[] {
|
||||
// Max pages index is 4 bytes, so we can fit up to 65535 pages of data
|
||||
@@ -36,7 +33,7 @@ export class ProtocolManager {
|
||||
if (data.length > maxTotalSize) {
|
||||
throw new Error(`Data size ${data.length} exceeds max size ${maxTotalSize}`);
|
||||
}
|
||||
if (data.length <= maxDataSize || !requireFragmentation) {
|
||||
if (data.length <= maxDataSize) {
|
||||
console.debug(`[ProtocolManager] Frame size ${data.length} is less than max size ${maxDataSize}, not fragmented`);
|
||||
return [this.createSingleFrame(type, data, head)];
|
||||
} else {
|
||||
@@ -45,7 +42,7 @@ export class ProtocolManager {
|
||||
}
|
||||
}
|
||||
|
||||
private static createSingleFrame(type: COMMAND_TYPES, data: Uint8Array, head: FRAME_HEAD): Uint8Array {
|
||||
private static createSingleFrame(type: APP_COMMAND_TYPES, data: Uint8Array, head: FRAME_HEAD): Uint8Array {
|
||||
const buffer = new Uint8Array(FRAME_CONSTANTS.HEADER_SIZE + data.length + FRAME_CONSTANTS.FOOTER_SIZE);
|
||||
let offset = 0;
|
||||
|
||||
@@ -78,7 +75,7 @@ export class ProtocolManager {
|
||||
return buffer;
|
||||
}
|
||||
|
||||
private static createFragmentedFrames(type: COMMAND_TYPES, data: Uint8Array, head: FRAME_HEAD, maxDataSize: number): Uint8Array[] {
|
||||
private static createFragmentedFrames(type: APP_COMMAND_TYPES, data: Uint8Array, head: FRAME_HEAD, maxDataSize: number): Uint8Array[] {
|
||||
const frames: Uint8Array[] = [];
|
||||
const totalSize = data.length;
|
||||
const totalPages = Math.ceil(totalSize / maxDataSize);
|
||||
|
||||
Reference in New Issue
Block a user