Skip to content

Commit

Permalink
Remove auto from Adapter type.
Browse files Browse the repository at this point in the history
  • Loading branch information
Nerivec committed Oct 10, 2024
1 parent 27eeee6 commit ecbbe12
Show file tree
Hide file tree
Showing 3 changed files with 12 additions and 43 deletions.
27 changes: 10 additions & 17 deletions src/adapter/adapterDiscovery.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import {Bonjour, Service} from 'bonjour-service';

import {logger} from '../utils/logger';
import {SerialPort} from './serialPort';
import {Adapter, DiscoverableUSBAdapter, USBAdapterFingerprint, ValidAdapter} from './tstype';
import {Adapter, DiscoverableUSBAdapter, USBAdapterFingerprint} from './tstype';

const NS = 'zh:adapter:discovery';

Expand Down Expand Up @@ -343,7 +343,7 @@ function matchUSBFingerprint(
return match && (score > USBFingerprintMatchScore.VID_PID || !conflictProne) ? [portInfo.path, score] : undefined;
}

export async function matchUSBAdapter(adapter: ValidAdapter, path: string): Promise<boolean> {
export async function matchUSBAdapter(adapter: Adapter, path: string): Promise<boolean> {
const isWindows = platform() === 'win32';
const portList = await getSerialPortList();

Expand All @@ -369,7 +369,7 @@ export async function matchUSBAdapter(adapter: ValidAdapter, path: string): Prom
}

export async function findUSBAdapter(
adapter?: ValidAdapter,
adapter?: Adapter,
path?: string,
): Promise<[adapter: DiscoverableUSBAdapter, path: PortInfo['path']] | undefined> {
const isWindows = platform() === 'win32';
Expand Down Expand Up @@ -415,7 +415,7 @@ export async function findUSBAdapter(
}
}

export async function findmDNSAdapter(path: string): Promise<[adapter: ValidAdapter, path: string, baudRate: number]> {
export async function findmDNSAdapter(path: string): Promise<[adapter: Adapter, path: string, baudRate: number]> {
const mdnsDevice = path.substring(7);

if (mdnsDevice.length == 0) {
Expand Down Expand Up @@ -446,11 +446,7 @@ export async function findmDNSAdapter(path: string): Promise<[adapter: ValidAdap
const adapter = mdnsAdapter;
const baudRate = mdnsBaud;

if (adapter && adapter !== 'auto') {
resolve([adapter, path, baudRate]);
} else {
reject(new Error(`Adapter ${adapter} is not supported.`));
}
resolve([adapter, path, baudRate]);
} else {
bj.destroy();
reject(
Expand All @@ -471,14 +467,14 @@ export async function findmDNSAdapter(path: string): Promise<[adapter: ValidAdap
});
}

export async function findTCPAdapter(path: string, adapter?: Adapter): Promise<[adapter: ValidAdapter, path: string]> {
export async function findTCPAdapter(path: string, adapter?: Adapter): Promise<[adapter: Adapter, path: string]> {
const regex = /^tcp:\/\/(?:[0-9]{1,3}\.){3}[0-9]{1,3}:\d{1,5}$/gm;

if (!regex.test(path)) {
throw new Error(`Invalid TCP path, expected format: tcp://<host>:<port>`);
}

if (!adapter || adapter === 'auto') {
if (!adapter) {
throw new Error(`Cannot discover TCP adapters at this time. Specify valid 'adapter' and 'port' in your configuration.`);
}

Expand All @@ -500,16 +496,13 @@ export async function findTCPAdapter(path: string, adapter?: Adapter): Promise<[
* @returns path Path to adapter.
* @returns baudRate [optional] Discovered baud rate of the adapter. Valid only for mDNS discovery at the moment.
*/
export async function discoverAdapter(
adapter?: Adapter,
path?: string,
): Promise<[adapter: ValidAdapter, path: string, baudRate?: number | undefined]> {
export async function discoverAdapter(adapter?: Adapter, path?: string): Promise<[adapter: Adapter, path: string, baudRate?: number | undefined]> {
if (path) {
if (path.startsWith('mdns://')) {
return await findmDNSAdapter(path);
} else if (path.startsWith('tcp://')) {
return await findTCPAdapter(path, adapter);
} else if (adapter && adapter !== 'auto') {
} else if (adapter) {
try {
const matched = await matchUSBAdapter(adapter, path);

Expand All @@ -527,7 +520,7 @@ export async function discoverAdapter(

try {
// default to matching USB
const match = await findUSBAdapter(adapter && adapter !== 'auto' ? adapter : undefined, path);
const match = await findUSBAdapter(adapter, path);

if (!match) {
throw new Error(`No valid USB adapter found`);
Expand Down
3 changes: 1 addition & 2 deletions src/adapter/tstype.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
export type Adapter = 'auto' | 'deconz' | 'ember' | 'zstack' | 'zboss' | 'zigate' | 'ezsp';
export type ValidAdapter = 'deconz' | 'ember' | 'zstack' | 'zboss' | 'zigate' | 'ezsp';
export type Adapter = 'deconz' | 'ember' | 'zstack' | 'zboss' | 'zigate' | 'ezsp';
export type DiscoverableUSBAdapter = 'deconz' | 'ember' | 'zstack' | 'zboss' | 'zigate';

export type USBAdapterFingerprint = {
Expand Down
25 changes: 1 addition & 24 deletions test/adapter/adapter.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -126,23 +126,6 @@ describe('Adapter', () => {
`port, got: 1122`,
);
});

it('returns auto adapter', async () => {
mockBonjourResult.mockReturnValueOnce({
name: 'Mock Adapter',
type: `my_adapter_mdns`,
port: '1122',
addresses: ['192.168.1.123'],
txt: {
radio_type: 'auto',
baud_rate: 115200,
},
});

expect(async () => {
await Adapter.create({panID: 0, channelList: []}, {path: `mdns://my_adapter`}, 'test.db', {disableLED: false});
}).rejects.toThrow(`Adapter auto is not supported.`);
});
});

describe('TCP discovery', () => {
Expand Down Expand Up @@ -171,7 +154,7 @@ describe('Adapter', () => {

it('invalid adapter', async () => {
expect(async () => {
await Adapter.create({panID: 0x1a62, channelList: [11]}, {path: `tcp://192.168.1.321:3456`, adapter: `auto`}, 'test.db.backup', {
await Adapter.create({panID: 0x1a62, channelList: [11]}, {path: `tcp://192.168.1.321:3456`}, 'test.db.backup', {
disableLED: false,
});
}).rejects.toThrow(`Cannot discover TCP adapters at this time. Specify valid 'adapter' and 'port' in your configuration.`);
Expand Down Expand Up @@ -382,12 +365,6 @@ describe('Adapter', () => {
expect(async () => {
await Adapter.create({panID: 0x1a62, channelList: [11]}, {}, 'test.db.backup', {disableLED: false});
}).rejects.toThrow(`USB adapter discovery error (spawn udevadm ENOENT). Specify valid 'adapter' and 'port' in your configuration.`);

listSpy.mockRejectedValueOnce(new Error('spawn udevadm ENOENT'));

expect(async () => {
await Adapter.create({panID: 0x1a62, channelList: [11]}, {adapter: 'auto'}, 'test.db.backup', {disableLED: false});
}).rejects.toThrow(`USB adapter discovery error (spawn udevadm ENOENT). Specify valid 'adapter' and 'port' in your configuration.`);
});

it('throws on failure to detect with conflict vendor+product IDs', async () => {
Expand Down

0 comments on commit ecbbe12

Please sign in to comment.