From 3af05e442d4f6e64289a6160c01def75d9e3c0ef Mon Sep 17 00:00:00 2001 From: mmcw-dev Date: Thu, 4 Jan 2018 16:10:38 -0500 Subject: [PATCH] Track the local ip address of the wlan0 interface and report information to the BLE service. --- lib/ble/index.js | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/lib/ble/index.js b/lib/ble/index.js index 2be0f0c..8bb39ea 100644 --- a/lib/ble/index.js +++ b/lib/ble/index.js @@ -22,6 +22,7 @@ const bleno = require('bleno') let currentWifi = 'disconnected' +let currentAddr = null let getState const chars = [] @@ -78,6 +79,7 @@ function onWifiWrite (data, offset, withoutResponse, callback) { return callback(result) } currentWifi = ssid + currentAddr = getIp() log.info(`Connected to AP`, { ssid : ssid }) result = bleno.Characteristic.RESULT_SUCCESS return callback(result) @@ -96,6 +98,7 @@ function onWifiRead (offset, callback) { } wifiRes.available = list wifiRes.current = currentWifi + wifiRes.ip = currentAddr log.info('Discovered available APs', { found : list.length }) data = new Buffer(JSON.stringify(wifiRes)) callback(result, data.slice(offset, data.length)) @@ -133,6 +136,23 @@ function spoofMac () { return MACTMP } +function getIp () { + let addr = null + let ipv4 + const ifaces = os.networkInterfaces() + if (ifaces && ifaces.wlan0) { + ipv4 = ifaces.wlan0.filter(iface => { + if (iface.family === 'IPv4') { + return iface + } + }) + if (ipv4.length === 1) { + addr = ipv4.address + } + } + return addr +} + function capitalize (s) { return s[0].toUpperCase() + s.slice(1) @@ -186,6 +206,7 @@ class BLE { return log.error('wifi.getNetwork', err) } currentWifi = ssid + currentAddr = getIp() log.info('wifi.getNetwork', {ssid : ssid}) }) }