diff --git a/src/plugins/hotspot.ts b/src/plugins/hotspot.ts index 95d6d6f7c..27fdbff3a 100644 --- a/src/plugins/hotspot.ts +++ b/src/plugins/hotspot.ts @@ -1,13 +1,22 @@ import {Plugin, Cordova} from './plugin'; +import {Network} from './interfaces/network.interface'; +import {NetworkConfig} from './interfaces/network-config.interface'; +import {ConnectionInfo} from './interfaces/connection-info.interface'; +import {HotspotDevice} from './interfaces/hotspot-device.interface'; + /** * @name Hotspot * @description * @usage * ```js - * import {Hotspot} from 'ionic-native'; - * + * import {Hotspot, Network} from 'ionic-native'; * + * ... + * Hotspot.scanWifi().then((networks: Array) => { + * console.log(networks); + * }); + * ... * * ``` */ @@ -23,84 +32,191 @@ export class Hotspot { static isAvailable(): Promise {return; } @Cordova() - static toggleWifi(): Promise {return; } + static toggleWifi(): Promise {return; } + + /** + * Configures and starts hotspot with SSID and Password + * + * @param {string} SSID - SSID of your new Access Point + * @param {string} mode - encryption mode (Open, WEP, WPA, WPA_PSK) + * @param {string} password - password for your new Access Point + * + * @return {Promise} - Promise to call once hotspot is started, or reject upon failure + */ + @Cordova() + static createHotspot(ssid: string, mode: string, password: string): Promise {return; } + + /** + * Turns on Access Point + * + * @return {Promise} - true if AP is started + */ + @Cordova() + static startHotspot(): Promise {return; } + + /** + * Configures hotspot with SSID and Password + * + * @param {string} SSID - SSID of your new Access Point + * @param {string} mode - encryption mode (Open, WEP, WPA, WPA_PSK) + * @param {string} password - password for your new Access Point + * + * @return {Promise} - Promise to call when hotspot is configured, or reject upon failure + */ + @Cordova() + static configureHotspot(ssid: string, mode: string, password: string): Promise {return; } + + /** + * Turns off Access Point + * + * @return {Promise} - Promise to turn off the hotspot, true on success, false on failure + */ + @Cordova() + static stopHotspot(): Promise {return; } + + /** + * Checks if hotspot is enabled + * + * @return {Promise} - Promise that hotspot is enabled, rejected if it is not enabled + */ + @Cordova() + static isHotspotEnabled(): Promise {return; } @Cordova() - static createHotspot(ssid: string, mode: string, password: string): Promise {return; } + static getAllHotspotDevices(): Promise> {return; } + + /** + * Connect to a WiFi network + * + * @param {string} ssid + * SSID to connect + * @param {string} password + * password to use + * + * @return {Promise} + * Promise that connection to the WiFi network was successfull, rejected if unsuccessful + */ + @Cordova() + static connectToWifi(ssid: string, password: string): Promise {return; } + + /** + * Connect to a WiFi network + * + * @param {string} ssid + * SSID to connect + * @param {string} password + * Password to use + * @param {string} authentication + * Authentication modes to use (LEAP, SHARED, OPEN) + * @param {string[]} encryption + * Encryption modes to use (CCMP, TKIP, WEP104, WEP40) + * + * @return {Promise} + * Promise that connection to the WiFi network was successfull, rejected if unsuccessful + */ + @Cordova() + static connectToWifiAuthEncrypt(ssid: string, password: string, authentication: string, encryption: Array): Promise {return; } + + /** + * Add a WiFi network + * + * @param {string} ssid + * SSID of network + * @param {string} mode + * Authentication mode of (Open, WEP, WPA, WPA_PSK) + * @param {string} password + * Password for network + * + * @return {Promise} + * Promise that adding the WiFi network was successfull, rejected if unsuccessful + */ + @Cordova() + static addWifiNetwork(ssid: string, mode: string, password: string): Promise {return; } + + /** + * Remove a WiFi network + * + * @param {string} ssid + * SSID of network + * + * @return {Promise} + * Promise that removing the WiFi network was successfull, rejected if unsuccessful + */ + @Cordova() + static removeWifiNetwork(ssid: string): Promise {return; } @Cordova() - static startHotspot(): Promise {return; } + static isConnectedToInternet(): Promise {return; } @Cordova() - static configureHotspot(ssid: string, mode: string, password: string): Promise {return; } + static isConnectedToInternetViaWifi(): Promise {return; } @Cordova() - static stopHotspot(): Promise {return; } + static isWifiOn(): Promise {return; } @Cordova() - static isHotspotEnabled(): Promise {return; } + static isWifiSupported(): Promise {return; } @Cordova() - static getAllHotspotDevices(): Promise {return; } + static isWifiDirectSupported(): Promise {return; } @Cordova() - static connectToHotspot(ssid, password): Promise {return; } + static scanWifi(): Promise> {return; } @Cordova() - static connectToWifiAuthEncrypt(ssid, password, authentication, encryption): Promise {return; } + static scanWifiByLevel(): Promise> {return; } @Cordova() - static addWifiNetwork(ssid, mode, password): Promise {return; } + static startWifiPeriodicallyScan(interval: number, duration: number): Promise {return; } @Cordova() - static removeWifiNetwork(ssid): Promise {return; } + static stopWifiPeriodicallyScan(): Promise {return; } @Cordova() - static isConnectedToInternet(): Promise {return; } + static getNetConfig(): Promise {return; } @Cordova() - static isConnectedToInternetViaWifi(): Promise {return; } + static getConnectionInfo(): Promise {return; } @Cordova() - static isWifiOn(): Promise {return; } + static pingHost(ip: string): Promise {return; } + /** + * Gets MAC Address associated with IP Address from ARP File + * + * @param {string} ip - IP Address that you want the MAC Address of + * + * @return {Promise} - A Promise for the MAC Address + */ @Cordova() - static isWifiSupported(): Promise {return; } + static getMacAddressOfHost(ip: string): Promise {return; } + /** + * Checks if IP is live using DNS + * + * @param {string} ip - IP Address you want to test + * + * @return {Promise} - A Promise for whether the IP Address is reachable + */ @Cordova() - static isWifiDirectSupported(): Promise {return; } + static isDnsLive(ip: string): Promise {return; } + /** + * Checks if IP is live using socket And PORT + * + * @param {string} ip - IP Address you want to test + * + * @return {Promise} - A Promise for whether the IP Address is reachable + */ @Cordova() - static scanWifi(): Promise {return; } + static isPortLive(ip: string): Promise {return; } + /** + * Checks if device is rooted + * + * @return {Promise} - A Promise for whether the device is rooted + */ @Cordova() - static scanWifiByLevel(): Promise {return; } - - @Cordova() - static startPeriodicallyScan(interval, duration): Promise {return; } - - @Cordova() - static stopPeriodicallyScan(): Promise {return; } - - @Cordova() - static getNetConfig(): Promise {return; } - - @Cordova() - static getConnectionInfo(): Promise {return; } - - @Cordova() - static pingHost(ip): Promise {return; } - - @Cordova() - static getMacAddressOfHost(ip): Promise {return; } - - @Cordova() - static isDnsLive(ip): Promise {return; } - - @Cordova() - static isPortLife(ip): Promise {return; } - - @Cordova() - static isRooted(): Promise {return; } + static isRooted(): Promise {return; } } diff --git a/src/plugins/interfaces/connection-info.interface.ts b/src/plugins/interfaces/connection-info.interface.ts new file mode 100644 index 000000000..37a7c73b6 --- /dev/null +++ b/src/plugins/interfaces/connection-info.interface.ts @@ -0,0 +1,30 @@ +/** + * @name ConnectionInfo + */ +export interface ConnectionInfo { + /** + * @property {string} SSID + * The service set identifier (SSID) of the current 802.11 network. + */ + SSID: string; + /** + * @property {string} BSSID + * The basic service set identifier (BSSID) of the current access point. + */ + BSSID: string; + /** + * @property {string} linkSpeed + * The current link speed in Mbps + */ + linkSpeed: string; + /** + * @property {string} IPAddress + * The IP Address + */ + IPAddress: string; + /** + * @property {string} networkID + * Each configured network has a unique small integer ID, used to identify the network when performing operations on the supplicant. + */ + networkID: string; +} diff --git a/src/plugins/interfaces/hotspot-device.interface.ts b/src/plugins/interfaces/hotspot-device.interface.ts new file mode 100644 index 000000000..660dbb42c --- /dev/null +++ b/src/plugins/interfaces/hotspot-device.interface.ts @@ -0,0 +1,15 @@ +/** + * @name HotspotDevice + */ +export interface HotspotDevice { + /** + * @property {string} ip + * Hotspot IP Address + */ + ip: string; + /** + * @property {string} mac + * Hotspot MAC Address + */ + mac: string; +} diff --git a/src/plugins/interfaces/network-config.interface.ts b/src/plugins/interfaces/network-config.interface.ts new file mode 100644 index 000000000..ce48444c0 --- /dev/null +++ b/src/plugins/interfaces/network-config.interface.ts @@ -0,0 +1,21 @@ +/** + * @name ConnectionInfo + */ +export interface NetworkConfig { + /** + * @property {string} deviceIPAddress - Device IP Address + */ + deviceIPAddress: string; + /** + * @property {string} deviceMacAddress - Device MAC Address + */ + deviceMacAddress: string; + /** + * @property {string} gatewayIPAddress - Gateway IP Address + */ + gatewayIPAddress: string; + /** + * @property {string} gatewayMacAddress - Gateway MAC Address + */ + gatewayMacAddress: string; +} diff --git a/src/plugins/interfaces/network.interface.ts b/src/plugins/interfaces/network.interface.ts new file mode 100644 index 000000000..16243a1c7 --- /dev/null +++ b/src/plugins/interfaces/network.interface.ts @@ -0,0 +1,37 @@ +/** + * @name Network + * @description + * Based on [ScanResult](http://developer.android.com/reference/android/net/wifi/ScanResult.html) + */ +export interface Network { + /** + * @property {string} SSID + * Human readable network name + */ + SSID: string; + /** + * @property {string} BSSID + * MAC Address of the access point + */ + BSSID: string; + /** + * @property {number (int)} frequency + * The primary 20 MHz frequency (in MHz) of the channel over which the client is communicating with the access point. + */ + frequency: number; + /** + * @property {number} level + * The detected signal level in dBm, also known as the RSSI. + */ + level: number; + /** + * @property {number} timestamp + * Timestamp in microseconds (since boot) when this result was last seen. + */ + timestamp: number; + /** + * @property {string} capabilities + * Describes the authentication, key management, and encryption schemes supported by the access point. + */ + capabilities: string; +}