diff --git a/src/hub.ts b/src/hub.ts index 27028bd..cc905e0 100644 --- a/src/hub.ts +++ b/src/hub.ts @@ -168,6 +168,26 @@ export class Hub extends EventEmitter { } + public getDeviceAtPort (portName: string) { + const portId = this._portNames[portName]; + if (portId) { + return this._attachedDevices[portId]; + } else { + throw new Error(`Port ${portName} does not exist on this hub type`); + } + } + + + public getDevices () { + return Object.values(this._attachedDevices); + } + + + public getDevicesByType (deviceType: number) { + return this.getDevices().filter((device) => device.type === deviceType); + } + + public getPortNameForPortId (portId: number) { for (const port of Object.keys(this._portNames)) { if (this._portNames[port] === portId) { diff --git a/src/poweredup-browser.ts b/src/poweredup-browser.ts index 5fab9be..3fd5144 100644 --- a/src/poweredup-browser.ts +++ b/src/poweredup-browser.ts @@ -74,44 +74,55 @@ export class PoweredUP extends EventEmitter { /** * Retrieve a list of Powered UP Hubs. - * @method PoweredUP#getConnectedHubs + * @method PoweredUP#getHubs * @returns {Hub[]} */ - public getConnectedHubs () { - return Object.keys(this._connectedHubs).map((uuid) => this._connectedHubs[uuid]); + public getHubs () { + return Object.values(this._connectedHubs); } /** * Retrieve a Powered UP Hub by UUID. - * @method PoweredUP#getConnectedHubByUUID + * @method PoweredUP#getHubByUUID * @param {string} uuid * @returns {Hub | null} */ - public getConnectedHubByUUID (uuid: string) { + public getHubByUUID (uuid: string) { return this._connectedHubs[uuid]; } /** * Retrieve a Powered UP Hub by primary MAC address. - * @method PoweredUP#getConnectedHubByPrimaryMACAddress + * @method PoweredUP#getHubByPrimaryMACAddress * @param {string} address * @returns {Hub} */ - public getConnectedHubByPrimaryMACAddress (address: string) { - return Object.keys(this._connectedHubs).map((uuid) => this._connectedHubs[uuid]).filter((hub) => hub.primaryMACAddress === address)[0]; + public getHubByPrimaryMACAddress (address: string) { + return Object.values(this._connectedHubs).filter((hub) => hub.primaryMACAddress === address)[0]; } /** * Retrieve a list of Powered UP Hub by name. - * @method PoweredUP#getConnectedHubsByName + * @method PoweredUP#getHubsByName * @param {string} name * @returns {Hub[]} */ - public getConnectedHubsByName (name: string) { - return Object.keys(this._connectedHubs).map((uuid) => this._connectedHubs[uuid]).filter((hub) => hub.name === name); + public getHubsByName (name: string) { + return Object.values(this._connectedHubs).filter((hub) => hub.name === name); + } + + + /** + * Retrieve a list of Powered UP Hub by type. + * @method PoweredUP#getHubsByType + * @param {string} name + * @returns {Hub[]} + */ + public getHubsByType (hubType: number) { + return Object.values(this._connectedHubs).filter((hub) => hub.type === hubType); } diff --git a/src/poweredup-node.ts b/src/poweredup-node.ts index 88a9eb3..e6fe53d 100644 --- a/src/poweredup-node.ts +++ b/src/poweredup-node.ts @@ -92,44 +92,55 @@ export class PoweredUP extends EventEmitter { /** * Retrieve a list of Powered UP Hubs. - * @method PoweredUP#getConnectedHubs + * @method PoweredUP#getHubs * @returns {Hub[]} */ - public getConnectedHubs () { - return Object.keys(this._connectedHubs).map((uuid) => this._connectedHubs[uuid]); + public getHubs () { + return Object.values(this._connectedHubs); } /** * Retrieve a Powered UP Hub by UUID. - * @method PoweredUP#getConnectedHubByUUID + * @method PoweredUP#getHubByUUID * @param {string} uuid * @returns {Hub | null} */ - public getConnectedHubByUUID (uuid: string) { + public getHubByUUID (uuid: string) { return this._connectedHubs[uuid]; } /** * Retrieve a Powered UP Hub by primary MAC address. - * @method PoweredUP#getConnectedHubByPrimaryMACAddress + * @method PoweredUP#getHubByPrimaryMACAddress * @param {string} address * @returns {Hub} */ - public getConnectedHubByPrimaryMACAddress (address: string) { - return Object.keys(this._connectedHubs).map((uuid) => this._connectedHubs[uuid]).filter((hub) => hub.primaryMACAddress === address)[0]; + public getHubByPrimaryMACAddress (address: string) { + return Object.values(this._connectedHubs).filter((hub) => hub.primaryMACAddress === address)[0]; } /** * Retrieve a list of Powered UP Hub by name. - * @method PoweredUP#getConnectedHubsByName + * @method PoweredUP#getHubsByName * @param {string} name * @returns {Hub[]} */ - public getConnectedHubsByName (name: string) { - return Object.keys(this._connectedHubs).map((uuid) => this._connectedHubs[uuid]).filter((hub) => hub.name === name); + public getHubsByName (name: string) { + return Object.values(this._connectedHubs).filter((hub) => hub.name === name); + } + + + /** + * Retrieve a list of Powered UP Hub by type. + * @method PoweredUP#getHubsByType + * @param {string} name + * @returns {Hub[]} + */ + public getHubsByType (hubType: number) { + return Object.values(this._connectedHubs).filter((hub) => hub.type === hubType); }