1import * as NETMGR from 'NETMGR' 2import * as events from 'events' 3 4class netMgr extends events.EventEmitter { 5 constructor(options) { 6 super(); 7 8 if (!options || !options.name) { 9 throw new Error('device info error'); 10 } 11 12 this.options = { 13 name: options.name 14 }; 15 16 this.name = options.name 17 this._init(); 18 this.dev_handler = this._getDev(); 19 } 20 21 _init() { 22 if (NETMGR.serviceInit() !== 0) { 23 this.emit('error', 'netmgr init error'); 24 } 25 } 26 27 _getDev() { 28 console.log('wifi name:' + this.name) 29 var dev_handler = NETMGR.getDev(this.name); 30 if (dev_handler == -1) { 31 console.log('netmgr get wifi dev error: ' + this.name); 32 return; 33 } 34 35 return dev_handler; 36 } 37 38 setMsgCb(cb) { 39 NETMGR.setMsgCb(this.dev_handler, cb); 40 } 41 42 delMsgCb(cb) { 43 NETMGR.delMsgCb(this.dev_handler, cb); 44 } 45 46 setAutoReconnect(flag) { 47 var ret = NETMGR.setAutoReconnect(this.dev_handler, flag); 48 if (ret !== 0) { 49 this.emit('error', 'netmgr set auto reconnect error'); 50 } 51 } 52 53 connect(options) { 54 55 options = { 56 ssid: options.ssid, 57 password: options.password, 58 bssid: options.bssid || '', 59 timeout_ms: options.timeout_ms || 18000 60 } 61 62 NETMGR.connect(this.dev_handler, options, function (status) { 63 if (status == 'DISCONNECT') { 64 this.emit('disconnect', options.ssid); 65 return; 66 } 67 this.emit('connect', options.ssid); 68 }.bind(this)); 69 } 70 71 disconnect() { 72 var ret = NETMGR.disconnect(this.dev_handler); 73 if (ret !== 0) { 74 this.emit('error', 'netmgr disconnect error'); 75 return; 76 } 77 this.emit('disconnect', ssid); 78 } 79 80 getType() { 81 return NETMGR.getType(); 82 } 83 84 getState() { 85 var ret = NETMGR.getState(this.dev_handler); 86 switch (ret) { 87 case 0: 88 return 'disconnecting'; 89 case 1: 90 return 'disconnected'; 91 case 2: 92 return 'connecting'; 93 case 3: 94 return 'connected'; 95 case 4: 96 return 'obtaining ip'; 97 case 5: 98 return 'network connected'; 99 case 6: 100 return 'failed'; 101 } 102 } 103 104 saveConfig() { 105 var ret = NETMGR.saveConfig(this.dev_handler); 106 if (ret !== 0) { 107 this.emit('error', 'netmgr save config error'); 108 } 109 } 110 111 setIfConfig(options) { 112 113 options = { 114 dhcp_en: options.dhcp_en || true, 115 ip_addr: options.ip_addr || '', 116 mask: options.mask || '', 117 gw: options.gw || '', 118 dns_server: options.dns_server || '', 119 mac: options.mac || '' 120 } 121 122 var ret = NETMGR.setIfConfig(this.dev_handler, options); 123 if (ret !== 0) { 124 this.emit('error', 'netmgr save config error'); 125 } 126 } 127 128 getIfConfig() { 129 var config = NETMGR.getIfConfig(this.dev_handler); 130 if (!config) { 131 this.emit('error', 'get if config error'); 132 } 133 return config; 134 } 135} 136 137export function openNetMgrClient(options) { 138 return new netMgr(options); 139} 140