Skip to content

Commit

Permalink
feat: Support mdns discovery for all adapter instead of just zstack (#…
Browse files Browse the repository at this point in the history
…763)

* mdns dicovery fix. adapter always zstack

* Add unsupported adapter test

* change type of radio

* lint fix

* lint fix

* Update adapter.ts

---------

Co-authored-by: Koen Kanters <koenkanters94@gmail.com>
  • Loading branch information
Tarik2142 and Koenkk authored Sep 17, 2023
1 parent ec114df commit 1a3edaf
Show file tree
Hide file tree
Showing 2 changed files with 47 additions and 1 deletion.
11 changes: 10 additions & 1 deletion src/adapter/adapter.ts
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,16 @@ abstract class Adapter extends events.EventEmitter {
serialPortOptions.path = `tcp://${mdnsIp}:${mdnsPort}`;
serialPortOptions.adapter = mdnsAdapter;
serialPortOptions.baudRate = mdnsBaud;
resolve(new adapter(networkOptions, serialPortOptions, backupPath, adapterOptions, logger));

if (adapterLookup.hasOwnProperty(serialPortOptions.adapter)
&& serialPortOptions.adapter !== 'auto') {
adapter = adapterLookup[serialPortOptions.adapter];
resolve(
new adapter(networkOptions, serialPortOptions, backupPath, adapterOptions, logger)
);
} else {
reject(new Error(`Adapter ${serialPortOptions.adapter} is not supported.`));
}
} else {
bj.destroy();
reject(new Error(
Expand Down
37 changes: 37 additions & 0 deletions test/controller.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3534,6 +3534,43 @@ describe('Controller', () => {

});

it('Adapter mdns detection unsupported adapter test', async () => {
const fakeAdapterName = 'mdns_test_device';
const fakeIp = '111.111.111.111';
const fakePort = 6638;
const fakeRadio = 'auto';
const fakeBaud = '115200';

const mockLoggerDebug = jest.fn();
const mockLoggerInfo = jest.fn();
const mockLoggerWarn = jest.fn();
const mockLoggerError = jest.fn();
const mockLogger: LoggerStub = {
debug: mockLoggerDebug,
info: mockLoggerInfo,
warn: mockLoggerWarn,
error: mockLoggerError
};

Bonjour.prototype.findOne = function(opts?: BrowserConfig | undefined, timeout?: number, callback?: CallableFunction) {
setTimeout(() => {
callback({name: 'fakeAdapter', type: fakeAdapterName, port: fakePort, addresses: [fakeIp], txt: {radio_type: fakeRadio, baud_rate: fakeBaud}});
}, 200);
}

let error;
try {
await Adapter.create(null, {path: `mdns://${fakeAdapterName}`, baudRate: 100, rtscts: false, adapter: null}, null, null, mockLogger);
} catch (e) {
error = e;
}

expect(error).toStrictEqual(new Error(
`Adapter ${fakeRadio} is not supported.`
));

});

it('Adapter mdns detection zstack test', async () => {
const fakeAdapterName = 'mdns_test_device';
const fakeIp = '111.111.111.111';
Expand Down

0 comments on commit 1a3edaf

Please sign in to comment.