Skip to content

Commit fb1fa9b

Browse files
committed
feat: ZigBee on Host
1 parent 6b67be8 commit fb1fa9b

File tree

7 files changed

+734
-3
lines changed

7 files changed

+734
-3
lines changed

src/adapter/adapter.ts

+1
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@ export abstract class Adapter extends events.EventEmitter<AdapterEventMap> {
6464
zstack: ['./z-stack/adapter/zStackAdapter', 'ZStackAdapter'],
6565
zboss: ['./zboss/adapter/zbossAdapter', 'ZBOSSAdapter'],
6666
zigate: ['./zigate/adapter/zigateAdapter', 'ZiGateAdapter'],
67+
zoh: ['./zoh/adapter/zohAdapter', 'ZoHAdapter'],
6768
};
6869
const [adapter, path] = await discoverAdapter(serialPortOptions.adapter, serialPortOptions.path);
6970
const detectedAdapter = adapterLookup[adapter];

src/adapter/adapterDiscovery.ts

+5
Original file line numberDiff line numberDiff line change
@@ -345,6 +345,11 @@ function matchUSBFingerprint(
345345
}
346346

347347
export async function matchUSBAdapter(adapter: Adapter, path: string): Promise<boolean> {
348+
// no point in matching this
349+
if (adapter === 'zoh') {
350+
return false;
351+
}
352+
348353
const isWindows = platform() === 'win32';
349354
const portList = await getSerialPortList();
350355

src/adapter/socketPortUtils.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
1-
function isTcpPath(path: string): boolean {
1+
export function isTcpPath(path: string): boolean {
22
// tcp path must be:
33
// tcp://<host>:<port>
44
const regex = /^(?:tcp:\/\/)[\w.-]+[:][\d]+$/gm;
55
return regex.test(path);
66
}
77

8-
function parseTcpPath(path: string): {host: string; port: number} {
8+
export function parseTcpPath(path: string): {host: string; port: number} {
99
const str = path.replace('tcp://', '');
1010
return {
1111
host: str.substring(0, str.indexOf(':')),

src/adapter/tstype.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
export type Adapter = 'deconz' | 'ember' | 'zstack' | 'zboss' | 'zigate' | 'ezsp';
1+
export type Adapter = 'deconz' | 'ember' | 'zstack' | 'zboss' | 'zigate' | 'ezsp' | 'zoh';
22
export type DiscoverableUSBAdapter = 'deconz' | 'ember' | 'zstack' | 'zboss' | 'zigate';
33

44
export type USBAdapterFingerprint = {

src/adapter/zoh/adapter/utils.ts

+27
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
/**
2+
* @param value 64-bit bigint
3+
* @returns 16-length hex string in big-endian
4+
*/
5+
export function bigUInt64ToHexBE(value: bigint): string {
6+
return value.toString(16).padStart(16, '0');
7+
}
8+
9+
/**
10+
* @param value 64-bit bigint
11+
* @returns 8-bytelength buffer in little-endian
12+
*/
13+
export function bigUInt64ToBufferLE(value: bigint): Buffer {
14+
const b = Buffer.alloc(8);
15+
b.writeBigUInt64LE(value, 0);
16+
return b;
17+
}
18+
19+
/**
20+
* @param value 64-bit bigint
21+
* @returns 8-bytelength buffer in big-endian
22+
*/
23+
export function bigUInt64ToBufferBE(value: bigint): Buffer {
24+
const b = Buffer.alloc(8);
25+
b.writeBigUInt64BE(value, 0);
26+
return b;
27+
}

0 commit comments

Comments
 (0)