1 /* 2 * This is sound cordova_plugin (TV specific API). 3 * Apache License (2004). See http://www.apache.org/licenses/LICENSE-2.0 4 * 5 * Copyright (c) 2014, LG Electronics, Inc. 6 */ 7 8 /** 9 * This represents the deviceInfo API itself, and provides a global namespace for operating deviceInfo service. 10 * @class 11 */ 12 cordova.define('cordova/plugin/deviceInfo', function (require, exports, module) { // jshint ignore:line 13 14 var service; 15 if (window.PalmSystem){ // jshint ignore:line 16 console.log("Window.PalmSystem Available"); // jshint ignore:line 17 service = require('cordova/plugin/webos/service'); 18 } else { 19 service = { 20 Request : function(uri, params) { 21 console.log(uri + " invoked. But I am a dummy because PalmSystem is not available"); // jshint ignore:line 22 23 if (typeof params.onFailure === 'function') { 24 params.onFailure({ returnValue:false, 25 errorText:"PalmSystem Not Available. Cordova is not installed?"}); 26 } 27 }}; 28 } 29 30 /** 31 * deviceInfo interface 32 */ 33 var DeviceInfo = function () { 34 }; 35 36 function log(msg) { 37 // //console.log//will be removed // jshint ignore:line 38 } 39 40 function checkErrorCodeNText(result, errorCode, errorText) { 41 42 if (result.errorCode === undefined || result.errorCode === null ) { 43 result.errorCode = errorCode; 44 } 45 if (result.errorText === undefined || result.errorText === null) { 46 result.errorText = errorText; 47 } 48 } 49 50 51 /** 52 * @namespace DeviceInfo.EddystoneFrame 53 */ 54 DeviceInfo.EddystoneFrame = { 55 /** 56 * UUID 57 * @since 1.4 58 * @constant 59 */ 60 UUID: "uid", 61 /** 62 * URL 63 * @since 1.4 64 * @constant 65 */ 66 URL: "url" 67 }; 68 69 /** 70 * Gets network information. Network information includes IP address assigned to wireless / wired LAN, gateway address, netmask and DNS address. 71 * @class DeviceInfo 72 * @param {Function} successCallback success callback function. 73 * @param {Function} errorCallback failure callback function. 74 * @return {Object} 75 * <div align=left> 76 * <table class="hcap_spec" width=400> 77 * <thead><tr><th>Property</th><th>Type</th><th>Description</th></tr></thead> 78 * <tbody> 79 * <tr><th>isInternetConnectionAvailable</th><th>Boolean</th><th>Internet connection true: connected, false: not connected</th></tr> 80 * <tr class="odd"><th>wired</th><th>Object</th><th>Wired network information object. </th></tr> 81 * <tr><th>wired.state</th><th>String</th><th>Wired network connection "connected": connected "disconnected": not connected</th></tr> 82 * <tr class="odd"><th>wired.interfaceName</th><th>String</th><th>Wired network interface name. </th></tr> 83 * <tr><th>wired.ipAddress</th><th>String</th><th>IP address assigned to the wired network interface. </th></tr> 84 * <tr class="odd"><th>wired.netmask</th><th>String</th><th>Netmask assigned to the wired network interface. </th></tr> 85 * <tr><th>wired.gateway</th><th>String</th><th>Gateway address assigned to the wired network interface</th></tr> 86 * <tr class="odd"><th>wired.onInternet</th><th>String</th><th>Internet connection to the wired network "yes": connected "no": not connected. </th></tr> 87 * <tr><th>wired.method</th><th>String</th><th>IP allocation "manual": fixed allocation "dhcp": dynamic allocation</th></tr> 88 * <tr class="odd"><th>wired.dns1</th><th>String</th><th>DNS address assigned to the wired network interface. </th></tr> 89 * <tr><th>wired.dns2</th><th>String</th><th>Secondary DNS address assigned to the wired network interface. </th></tr> 90 * <tr class="odd"><th>wifi</th><th>Object</th><th>Wireless network information object. </th></tr> 91 * <tr><th>wifi.state</th><th>String</th><th>Wireless network connection "connected": connected "disconnected": not connected</th></tr> 92 * <tr class="odd"><th>wifi.interfaceName</th><th>String</th><th>Wireless network interface name. </th></tr> 93 * <tr><th>wifi.ipAddress</th><th>String</th><th>IP address assigned to the wireless network interface. </th></tr> 94 * <tr class="odd"><th>wifi.netmask</th><th>String</th><th>Netmask assigned to the wireless network interface. </th></tr> 95 * <tr><th>wifi.gateway</th><th>String</th><th>Gateway address assigned to the wireless network interface</th></tr> 96 * <tr class="odd"><th>wifi.onInternet</th><th>String</th><th>Internet connection to the wireless network "yes": connected "no": not connected. </th></tr> 97 * <tr><th>wifi.method</th><th>String</th><th>IP allocation "manual": fixed allocation "dhcp": dynamic allocation</th></tr> 98 * <tr class="odd"><th>wifi.dns1</th><th>String</th><th>DNS address assigned to the wireless network interface. </th></tr> 99 * <tr><th>wifi.dns2</th><th>String</th><th>Secondary DNS address assigned to the wireless network interface. </th></tr> 100 * </tbody> 101 * </table> 102 * </div> 103 * 104 * @example 105 * // Javascript code 106 * function getNetworkInformation () { 107 * function successCb(cbObject) { 108 * console.log("cbObject : " + JSON.stringify(cbObject)); 109 * console.log("isInternetConnectionAvailable : " + cbObject.isInternetConnectionAvailable); 110 * console.log("wired.state : " + cbObject.wired.state); 111 * console.log("wired.method : " + cbObject.wired.method); 112 * console.log("wired.ipAddress : " + cbObject.wired.ipAddress); 113 * console.log("wired.netmask : " + cbObject.wired.netmask); 114 * console.log("wired.dns1 : " + cbObject.wired.dns1); 115 * console.log("wired.dns2 : " + cbObject.wired.dns2); 116 * console.log("wifi.state : " + cbObject.wifi.state); 117 * console.log("wifi.method : " + cbObject.wifi.method); 118 * console.log("wifi.ipAddress : " + cbObject.wifi.ipAddress); 119 * console.log("wifi.netmask : " + cbObject.wifi.netmask); 120 * console.log("wifi.dns1 : " + cbObject.wifi.dns1); 121 * console.log("wifi.dns2 : " + cbObject.wifi.dns2); 122 * } 123 * 124 * function failureCb(cbObject) { 125 * var errorCode = cbObject.errorCode; 126 * var errorText = cbObject.errorText; 127 * console.log ("Error Code [" + errorCode + "]: " + errorText); 128 * } 129 * 130 * var deviceInfo = new DeviceInfo(); 131 * deviceInfo.getNetworkInfo(successCb, failureCb); 132 * } 133 * @since 1.0 134 * @see 135 * <a href="DeviceInfo%23getNetworkMacInfo.html">DeviceInfo.getNetworkMacInfo()</a><br>, 136 * <a href="DeviceInfo%23setNetworkInfo.html">DeviceInfo.setNetworkInfo()</a><br> 137 */ 138 DeviceInfo.prototype.getNetworkInfo = function (successCallback, errorCallback) { 139 140 log("getNetworkInfo: "); 141 service.Request('luna://com.webos.service.commercial.signage.storageservice/network/', { 142 method: 'getNetworkInfo', 143 parameters: {}, 144 onSuccess: function (result) { 145 if (typeof successCallback === 'function') { 146 delete result.returnValue; 147 successCallback(result); 148 } 149 }, 150 onFailure: function (error) { 151 log("getNetworkInfo: onFailure"); 152 if (error.errorText.indexOf('Unknown method') !== -1) { 153 // Call old method 154 service.Request('luna://com.palm.connectionmanager', { 155 method: 'getstatus', 156 parameters: {}, 157 onSuccess: function (result) { 158 log("getNetworkInfo: onSuccess"); 159 delete result.returnValue; 160 if (typeof successCallback === 'function') { 161 successCallback(result); 162 } 163 }, 164 onFailure: function (error) { 165 log("getNetworkInfo: onFailure"); 166 delete error.returnValue; 167 if (typeof errorCallback === 'function') { 168 errorCallback(error); 169 } 170 } 171 }); 172 } 173 else { 174 delete error.returnValue; 175 if (typeof errorCallback === 'function') { 176 errorCallback(error); 177 } 178 } 179 } 180 }); 181 /* 182 service.Request('luna://com.palm.connectionmanager', { 183 method: 'getstatus', 184 parameters: {}, 185 onSuccess: function(result) { 186 log("getNetworkInfo: onSuccess"); 187 delete result.returnValue; 188 if (typeof successCallback === 'function') { 189 successCallback(result); 190 } 191 }, 192 onFailure: function(error) { 193 log("getNetworkInfo: onFailure"); 194 delete error.returnValue; 195 if (typeof errorCallback === 'function') { 196 errorCallback(error); 197 } 198 } 199 }); 200 */ 201 log("DeviceInfo.getNetworkInfo Done"); 202 }; 203 204 /** 205 * Sets network information. Network information includes IP address assigned to wireless / wired LAN, gateway address, netmask and DNS address. 206 * @class DeviceInfo 207 * @param {Function} successCallback success callback function. 208 * @param {Function} errorCallback failure callback function. 209 * @param {Object} options 210 * <div align=left> 211 * <table class="hcap_spec" width=400> 212 * <thead><tr><th>Property</th><th>Type</th><th>Description</th><th>Required</th></tr></thead> 213 * <tbody> 214 * <tr><th>wired</th><th>Object</th><th>Wired network information object. </th><th>required</th></tr> 215 * <tr class="odd"><th>wired.enabled</th><th>Boolean</th><th>Wired network connection true : enabled false : disabled </th><th>required</th></tr> 216 * <tr><th>wired.method</th><th>String</th><th>IP allocation "manual": fixed allocation "dhcp": dynamic allocation, If DHCP is enabled then ipAddress, gateway, netmask and DNS settings are ignored.</th><th>required</th></tr> 217 * <tr class="odd"><th>wired.ipAddress</th><th>String</th><th>IP address assigned to the wired network interface. </th><th>required</th></tr> 218 * <tr><th>wired.netmask</th><th>String</th><th>Netmask assigned to the wired network interface. </th><th>required</th></tr> 219 * <tr class="odd"><th>wired.gateway</th><th>String</th><th>Gateway address assigned to the wired network interface</th><th>required</th></tr> 220 * <tr><th>wired.dns1</th><th>String</th><th>DNS address assigned to the wired network interface. </th><th>required</th></tr> 221 * <tr class="odd"><th>wired.dns2</th><th>String</th><th>Secondary DNS address assigned to the wired network interface. </th><th>required</th></tr> 222 * <tr><th>wifi</th><th>Object</th><th>Wireless network information object. </th><th>required</th></tr> 223 * <tr class="odd"><th>wifi.method</th><th>String</th><th>IP allocation "manual": fixed allocation "dhcp": dynamic allocation, If DHCP is enabled then ipAddress, gateway, netmask and DNS settings are ignored.</th><th>required</th></tr> 224 * <tr><th>wifi.enabled</th><th>Boolean</th><th>Wireless network connection true : enabled false : disabled </th><th>required</th></tr> 225 * <tr class="odd"><th>wifi.ipAddress</th><th>String</th><th>IP address assigned to the wireless network interface. </th><th>required</th></tr> 226 * <tr><th>wifi.netmask</th><th>String</th><th>Netmask assigned to the wireless network interface. </th><th>required</th></tr> 227 * <tr class="odd"><th>wifi.gateway</th><th>String</th><th>Gateway address assigned to the wireless network interface</th><th>required</th></tr> 228 * <tr><th>wifi.dns1</th><th>String</th><th>DNS address assigned to the wireless network interface. </th><th>required</th></tr> 229 * <tr class="odd"><th>wifi.dns2</th><th>String</th><th>Secondary DNS address assigned to the wireless network interface. </th><th>required</th></tr> 230 * </tbody> 231 * </table> 232 * </div> 233 * 234 * @example 235 * // Javascript code 236 * function setNetworkInformation () { 237 * function successCb() { 238 * console.log("successCb"); 239 * } 240 * 241 * function failureCb(cbObject) { 242 * var errorCode = cbObject.errorCode; 243 * var errorText = cbObject.errorText; 244 * console.log ("Error Code [" + errorCode + "]: " + errorText); 245 * } 246 * 247 * var deviceInfo = new DeviceInfo(); 248 * var wired = { 249 * enabled : true, 250 * method : "manual", 251 * ipAddress : "192.168.0.2", 252 * netmask : "255.255.255.0", 253 * gateway : "192.168.0.1", 254 * dns1 : "156.147.135.180", 255 * dns2 : "156.147.135.181" 256 * }; 257 * var wifi = { 258 * enabled : true, 259 * method : "manual", 260 * ipAddress : "192.168.0.2", 261 * netmask : "255.255.255.0", 262 * gateway : "192.168.0.1", 263 * dns1 : "156.147.135.180", 264 * dns2 : "156.147.135.181" 265 * }; 266 * var options = { 267 * wired : wired, 268 * wifi : wifi 269 * }; 270 * deviceInfo.setNetworkInfo(successCb, failureCb, options); 271 * } 272 * @since 1.3 273 * @see 274 * <a href="DeviceInfo%23getNetworkInfo.html">DeviceInfo.getNetworkInfo()</a><br> 275 */ 276 DeviceInfo.prototype.setNetworkInfo = function (successCallback, errorCallback, options) { 277 278 log("setNetworkInfo: "); 279 280 service.Request('luna://com.webos.service.commercial.signage.storageservice/network/', { 281 method: 'setNetworkInfo', 282 parameters: options, 283 onSuccess: function(result) { 284 log("setNetworkInfo: onSuccess"); 285 if (typeof successCallback === 'function') { 286 successCallback(); 287 } 288 }, 289 onFailure: function(error) { 290 log("setNetworkInfo: onFailure"); 291 delete error.returnValue; 292 if (typeof errorCallback === 'function') { 293 errorCallback(error); 294 } 295 } 296 }); 297 298 log("DeviceInfo.setNetworkInfo Done"); 299 }; 300 301 /** 302 * Gets beacon information. 303 * @class DeviceInfo 304 * @param {Function} successCallback success callback function. 305 * @param {Function} errorCallback failure callback function. 306 * @return {Object} 307 * <div align=left> 308 * <table class="hcap_spec" width=400> 309 * <thead><tr><th>Property</th><th>Type</th><th>Description</th><th>Required</th></tr></thead> 310 * <tbody> 311 * <tr><th>enabled</th><th>Boolean</th><th>Beacon is enabled true: enabled, false: disabled</th><th>required</th></tr> 312 * <tr class="odd"><th>uuid</th><th>String</th><th>UUID of beacon, 32 hexadecimal digits. Only valid when 'enabled' is true.</th><th>required</th></tr> 313 * <tr><th>major</th><th>Number</th><th>Major number of beacon.(0 ~ 65535) Only valid when 'enabled' is true.</th><th>required</th></tr> 314 * <tr class="odd"><th>minor</th><th>Number</th><th>Minor number of beacon.(0 ~ 65535) Only valid when 'enabled' is true.</th><th>required</th></tr> 315 * </tbody> 316 * </table> 317 * </div> 318 * 319 * @example 320 * // Javascript code 321 * function getBeaconInfo () { 322 * function successCb(cbObject) { 323 * console.log("cbObject : " + JSON.stringify(cbObject)); 324 * console.log("enabled : " + cbObject.enabled); 325 * console.log("uuid : " + cbObject.uuid); 326 * console.log("major : " + cbObject.major); 327 * console.log("minor : " + cbObject.minor); 328 * } 329 * 330 * function failureCb(cbObject) { 331 * var errorCode = cbObject.errorCode; 332 * var errorText = cbObject.errorText; 333 * console.log ("Error Code [" + errorCode + "]: " + errorText); 334 * } 335 * 336 * var deviceInfo = new DeviceInfo(); 337 * deviceInfo.getBeaconInfo(successCb, failureCb); 338 * } 339 * 340 * @since 1.3 341 * @see 342 * <a href="DeviceInfo%23setBeaconInfo.html">DeviceInfo.setBeaconInfo()</a><br>, 343 */ 344 DeviceInfo.prototype.getBeaconInfo = function (successCallback, errorCallback) { 345 346 log("getBeaconInfo: "); 347 348 service.Request("luna://com.webos.service.commercial.signage.storageservice/network/", { 349 method: 'getBeaconInfo', 350 parameters: {}, 351 onSuccess: function(result) { 352 log("getBeaconInfo: onSuccess"); 353 delete result.returnValue; 354 if (typeof successCallback === 'function') { 355 successCallback(result); 356 } 357 }, 358 onFailure: function(error) { 359 log("getBeaconInfo: onFailure"); 360 delete error.returnValue; 361 if (typeof errorCallback === 'function') { 362 errorCallback(error); 363 } 364 } 365 }); 366 367 log("DeviceInfo.getBeaconInfo Done"); 368 }; 369 370 371 /** 372 * Sets beacon information. 373 * @class DeviceInfo 374 * @param {Function} successCallback success callback function. 375 * @param {Function} errorCallback failure callback function. 376 * @param {Object} options 377 * <div align=left> 378 * <table class="hcap_spec" width=400> 379 * <thead><tr><th>Property</th><th>Type</th><th>Description</th><th>Required</th></tr></thead> 380 * <tbody> 381 * <tr><th>enabled</th><th>Boolean</th><th>Beacon is enabled true: enabled, false: disabled</th><th>required</th></tr> 382 * <tr class="odd"><th>uuid</th><th>String</th><th>UUID of beacon, 32 hexadecimal digits. Only valid when 'enabled' is true.</th><th>required</th></tr> 383 * <tr><th>major</th><th>Number</th><th>Major number of beacon.(0 ~ 65535) Only valid when 'enabled' is true.</th><th>required</th></tr> 384 * <tr class="odd"><th>minor</th><th>Number</th><th>Minor number of beacon.(0 ~ 65535) Only valid when 'enabled' is true.</th><th>required</th></tr> 385 * </table> 386 * </div> 387 * 388 * @example 389 * // Javascript code 390 * function setBeaconInfo () { 391 * function successCb() { 392 * console.log("successCb"); 393 * } 394 * 395 * function failureCb(cbObject) { 396 * var errorCode = cbObject.errorCode; 397 * var errorText = cbObject.errorText; 398 * console.log ("Error Code [" + errorCode + "]: " + errorText); 399 * } 400 * 401 * var deviceInfo = new DeviceInfo(); 402 * 403 * var options = { 404 * enabled : true, 405 * uuid : "1A2B3C4D5E1A2B3C4D5E1A2B3C4D5EFF", 406 * major :1234, 407 * minor :4321 408 * }; 409 * 410 * deviceInfo.setBeaconInfo(successCb, failureCb, options); 411 * } 412 * @since 1.3 413 * @see 414 * <a href="DeviceInfo%23getBeaconInfo.html">DeviceInfo.getBeaconInfo()</a><br> 415 */ 416 DeviceInfo.prototype.setBeaconInfo = function (successCallback, errorCallback, options) { 417 418 log("setBeaconInfo: "); 419 420 var regex = function(uuid) { 421 422 if (typeof uuid === "undefined" || uuid === null || uuid.length != 32) { 423 return false; 424 } 425 426 var reg = new RegExp(/^[a-fA-F0-9]*$/g); 427 return reg.exec(uuid) !== null ? true : false; 428 429 }; 430 431 if (options.enabled === true && (regex(options.uuid) === false || 432 isNaN(options.major) || options.major < 0 || options.major > 65535 || 433 isNaN(options.minor) || options.minor < 0 || options.minor > 65535) ){ 434 435 log("setBeaconInfo: options are invalid."); 436 437 if (typeof errorCallback === 'function') { 438 var result = {}; 439 checkErrorCodeNText(result, "DSBI", "DeviceInfo.setBeaconInfo. Invalid options."); 440 errorCallback(result); 441 } 442 443 return; 444 } 445 446 service.Request('luna://com.webos.service.commercial.signage.storageservice/network/', { 447 method: 'setBeaconInfo', 448 parameters: options, 449 onSuccess: function(result) { 450 log("setBeaconInfo: onSuccess"); 451 if (typeof successCallback === 'function') { 452 successCallback(); 453 } 454 }, 455 onFailure: function(error) { 456 log("setBeaconInfo: onFailure"); 457 delete error.returnValue; 458 if (typeof errorCallback === 'function') { 459 errorCallback(error); 460 } 461 } 462 }); 463 464 log("DeviceInfo.setBeaconInfo Done"); 465 }; 466 467 /** 468 * Gets Soft AP information. 469 * @class DeviceInfo 470 * @param {Function} successCallback success callback function. 471 * @param {Function} errorCallback failure callback function. 472 * @return {Object} 473 * <div align=left> 474 * <table class="hcap_spec" width=400> 475 * <thead><tr><th>Property</th><th>Type</th><th>Description</th></tr></thead> 476 * <tbody> 477 * <tr><th>enabled</th><th>Boolean</th><th>Soft AP is enabled true: enabled, false: disabled</th></tr> 478 * <tr class="odd"><th>ssid</th><th>String</th><th>SSID of Soft AP (Maximum length is 32). Only valid when 'enabled' is true.</th></tr> 479 * <tr><th>securityKey</th><th>String</th><th>Security key(6 characters). It is automatically prefixed with "LG". Only valid when 'enabled' is true.</th></tr> 480 * </tbody> 481 * </table> 482 * </div> 483 * 484 * @example 485 * // Javascript code 486 * function getSoftApInfo () { 487 * function successCb(cbObject) { 488 * console.log("cbObject : " + JSON.stringify(cbObject)); 489 * console.log("enabled : " + cbObject.enabled); 490 * console.log("ssid : " + cbObject.ssid); 491 * console.log("securityKey : " + cbObject.securityKey); 492 * } 493 * 494 * function failureCb(cbObject) { 495 * var errorCode = cbObject.errorCode; 496 * var errorText = cbObject.errorText; 497 * console.log ("Error Code [" + errorCode + "]: " + errorText); 498 * } 499 * 500 * var deviceInfo = new DeviceInfo(); 501 * deviceInfo.getSoftApInfo(successCb, failureCb); 502 * } 503 * 504 * @since 1.3 505 * @see 506 * <a href="DeviceInfo%23setSoftApInfo.html">DeviceInfo.setSoftApInfo()</a><br>, 507 */ 508 DeviceInfo.prototype.getSoftApInfo = function (successCallback, errorCallback) { 509 510 log("getSoftApInfo: "); 511 512 service.Request("luna://com.webos.service.commercial.signage.storageservice/network/", { 513 method: 'getSoftApInfo', 514 parameters: {}, 515 onSuccess: function(result) { 516 log("getSoftApInfo: onSuccess"); 517 delete result.returnValue; 518 if (typeof successCallback === 'function') { 519 successCallback(result); 520 } 521 }, 522 onFailure: function(error) { 523 log("getSoftApInfo: onFailure"); 524 delete error.returnValue; 525 if (typeof errorCallback === 'function') { 526 errorCallback(error); 527 } 528 } 529 }); 530 531 log("DeviceInfo.getSoftApInfo Done"); 532 }; 533 534 /** 535 * Sets Soft AP information. 536 * @class DeviceInfo 537 * @param {Function} successCallback success callback function. 538 * @param {Function} errorCallback failure callback function. 539 * @param {Object} options 540 * <div align=left> 541 * <table class="hcap_spec" width=400> 542 * <thead><tr><th>Property</th><th>Type</th><th>Description</th><th>Required</th></tr></thead> 543 * <tbody> 544 * <tr><th>enabled</th><th>Boolean</th><th>Soft AP is enabled true: enabled, false: disabled</th><th>required</th></tr> 545 * <tr class="odd"><th>ssid</th><th>String</th><th>SSID of Soft AP (Maximum length is 32). Only valid when 'enabled' is true.</th><th>required</th></tr> 546 * <tr><th>securityKey</th><th>String</th><th>Security key(6 characters). It is automatically prefixed with "LG". Only valid when 'enabled' is true.</th><th>required</th></tr> 547 * </tbody> 548 * </table> 549 * </div> 550 * 551 * @example 552 * // Javascript code 553 * function setSoftApInfo () { 554 * function successCb(cbObject) { 555 * console.log("cbObject : " + JSON.stringify(cbObject)); 556 * console.log("enabled : " + cbObject.enabled); 557 * console.log("ssid : " + cbObject.ssid); 558 * console.log("securityKey : " + cbObject.securityKey); 559 * } 560 * 561 * function failureCb(cbObject) { 562 * var errorCode = cbObject.errorCode; 563 * var errorText = cbObject.errorText; 564 * console.log ("Error Code [" + errorCode + "]: " + errorText); 565 * } 566 * 567 * var deviceInfo = new DeviceInfo(); 568 * 569 * var options = { 570 * enabled : true, 571 * ssid : "LG SIGNAGE", 572 * securityKey : "404571" 573 * }; 574 * 575 * deviceInfo.setSoftApInfo(successCb, failureCb, options); 576 * } 577 * 578 * @since 1.3 579 * @see 580 * <a href="DeviceInfo%23getSoftApInfo.html">DeviceInfo.getSoftApInfo()</a><br>, 581 */ 582 DeviceInfo.prototype.setSoftApInfo = function (successCallback, errorCallback, options) { 583 584 log("setSoftApInfo: "); 585 586 if (options.enabled === true && ( // Add condition 587 (options.ssid !== null && options.ssid.length > 32) || 588 (options.securityKey !== null && options.securityKey.length !== 6))) { 589 590 log("setSoftApInfo: options are invalid."); 591 592 if (typeof errorCallback === 'function') { 593 var result = {}; 594 checkErrorCodeNText(result, "DSSI", "DeviceInfo.setSoftApInfo. Invalid options."); 595 errorCallback(result); 596 } 597 598 return; 599 } 600 601 602 service.Request("luna://com.webos.service.commercial.signage.storageservice/network/", { 603 method: 'setSoftApInfo', 604 parameters: options, 605 onSuccess: function(result) { 606 log("setSoftApInfo: onSuccess"); 607 if (typeof successCallback === 'function') { 608 successCallback(); 609 } 610 }, 611 onFailure: function(error) { 612 log("setSoftApInfo: onFailure"); 613 delete error.returnValue; 614 if (typeof errorCallback === 'function') { 615 errorCallback(error); 616 } 617 } 618 }); 619 620 log("DeviceInfo.setSoftApInfo Done"); 621 }; 622 623 /** 624 * Gets list of detected wifi networks. 625 * @class DeviceInfo 626 * @param {Function} successCallback success callback function. 627 * @param {Function} errorCallback failure callback function. 628 * @return {Object} 629 * <div align=left> 630 * <table class="hcap_spec" width=400> 631 * <thead><tr><th>Property</th><th>Type</th><th>Description</th></tr></thead> 632 * <tbody> 633 * <tr><th>networkInfo</th><th>Array</th><th>Array of Wifi network information objects</th></tr> 634 * <tr class="odd"><th>networkInfo.signalLevel</th><th>Number</th><th>Signal level (0 ~ 100)</th></tr> 635 * <tr><th>networkInfo.ssid</th><th>String</th><th>SSID</th></tr> 636 * </tbody> 637 * </table> 638 * </div> 639 * 640 * @example 641 * // Javascript code 642 * function getWifiList () { 643 * function successCb(cbObject) { 644 * 645 * console.log("cbObject : " + JSON.stringify(cbObject)); 646 * 647 * for(var i=0; i < cbObject.networkInfo.length; i++) { 648 * console.log("network info : ssid " + cbObject.networkInfo[i].ssid); 649 * console.log("network info : signalLevel " + cbObject.networkInfo[i].signalLevel); 650 * } 651 * } 652 * 653 * function failureCb(cbObject) { 654 * var errorCode = cbObject.errorCode; 655 * var errorText = cbObject.errorText; 656 * console.log ("Error Code [" + errorCode + "]: " + errorText); 657 * } 658 * 659 * var deviceInfo = new DeviceInfo(); 660 * deviceInfo.getWifiList(successCb, failureCb); 661 * } 662 * @since 1.3 663 * @see 664 * <a href="DeviceInfo%23connectWifi.html">DeviceInfo.connectWifi()</a><br> 665 */ 666 DeviceInfo.prototype.getWifiList = function (successCallback, errorCallback) { 667 668 log("getWifiList: "); 669 670 service.Request('luna://com.webos.service.commercial.signage.storageservice/network/', { 671 method: 'getWifiList', 672 parameters: {}, 673 onSuccess: function(result) { 674 log("getWifiList: onSuccess"); 675 delete result.returnValue; 676 if (typeof successCallback === 'function') { 677 successCallback(result); 678 } 679 }, 680 onFailure: function(error) { 681 log("getWifiList: onFailure"); 682 delete error.returnValue; 683 if (typeof errorCallback === 'function') { 684 errorCallback(error); 685 } 686 } 687 }); 688 689 log("DeviceInfo.getWifiList Done"); 690 }; 691 692 /** 693 * Connects wifi network using SSID and password. 694 * @class DeviceInfo 695 * @param {Function} successCallback success callback function. 696 * @param {Function} errorCallback failure callback function. 697 * @param {Object} options 698 * <div align=left> 699 * <table class="hcap_spec" width=400> 700 * <thead><tr><th>Property</th><th>Type</th><th>Description</th><th>Required</th></tr></thead> 701 * <tbody> 702 * <tr><th>ssid</th><th>String</th><th>SSID (Maximum length is 32)</th><th>required</th></tr> 703 * <tr class="odd"><th>password</th><th>String</th><th>password</th><th>required</th></tr> 704 * <tr><th>hidden</th><th>Boolean</th><th>true : hidden AP. false : open AP(default)</th><th>optional</th></tr> 705 * </tbody> 706 * </table> 707 * </div> 708 * 709 * @example 710 * // Javascript code 711 * function connectWifi () { 712 * function successCb() { 713 * console.log("successCb"); 714 * } 715 * 716 * function failureCb(cbObject) { 717 * var errorCode = cbObject.errorCode; 718 * var errorText = cbObject.errorText; 719 * console.log ("Error Code [" + errorCode + "]: " + errorText); 720 * } 721 * 722 * var deviceInfo = new DeviceInfo(); 723 * 724 * var options = { 725 * ssid : "AP_NAME", 726 * password : "12341234" 727 * }; 728 * 729 * deviceInfo.connectWifi(successCb, failureCb, options); 730 * } 731 * @since 1.3 732 * @see 733 * <a href="DeviceInfo%23getWifiList.html">DeviceInfo.getWifiList()</a><br> 734 */ 735 DeviceInfo.prototype.connectWifi = function (successCallback, errorCallback, options) { 736 737 log("connectWifi: "); 738 739 service.Request('luna://com.webos.service.commercial.signage.storageservice/network/', { 740 method: 'connectWifi', 741 parameters: options, 742 onSuccess: function(result) { 743 log("connectWifi: onSuccess"); 744 if (typeof successCallback === 'function') { 745 successCallback(); 746 } 747 }, 748 onFailure: function(error) { 749 log("connectWifi: onFailure"); 750 delete error.returnValue; 751 if (typeof errorCallback === 'function') { 752 errorCallback(error); 753 } 754 } 755 }); 756 757 log("DeviceInfo.connectWifi Done"); 758 }; 759 760 /** 761 * Starts WPS (Wifi Protected Setup) using PBC (Push Button Configuration) or PIN. 762 * @class DeviceInfo 763 * @param {Function} successCallback success callback function. 764 * @param {Function} errorCallback failure callback function. 765 * @param {Object} options 766 * <div align=left> 767 * <table class="hcap_spec" width=400> 768 * <thead><tr><th>Property</th><th>Type</th><th>Description</th><th>Required</th></tr></thead> 769 * <tbody> 770 * <tr><th>method</th><th>String</th><th>PBC : Push WPS button on your wireless router after the call with this parameter.<br>PIN : Enter the PIN which is returned with the success callback in your router's setting menu.</th><th>required</th></tr> 771 * </tbody> 772 * </table> 773 * </div> 774 * @return {Object} 775 * <div align=left> 776 * <table class="hcap_spec" width=400> 777 * <thead><tr><th>Property</th><th>Type</th><th>Description</th></tr></thead> 778 * <tbody> 779 * <tr><th>pin</th><th>String</th><th>If PIN method is used, this is returned in success callback. </th></tr> 780 * </tbody> 781 * </table> 782 * </div> 783 * 784 * @example 785 * // Javascript code 786 * function startWpsbyPBC () { 787 * function successCb() { 788 * console.log("successCb"); 789 * } 790 * 791 * function failureCb(cbObject) { 792 * var errorCode = cbObject.errorCode; 793 * var errorText = cbObject.errorText; 794 * console.log ("Error Code [" + errorCode + "]: " + errorText); 795 * } 796 * 797 * var deviceInfo = new DeviceInfo(); 798 * 799 * var options = { 800 * method : "PBC" 801 * }; 802 * 803 * deviceInfo.startWps(successCb, failureCb, options); 804 * } 805 * 806 * // Javascript code 807 * function startWpsbyPIN () { 808 * function successCb(cbObject) { 809 * console.log("successCb PIN : " + cbObject.pin); 810 * } 811 * 812 * function failureCb(cbObject) { 813 * var errorCode = cbObject.errorCode; 814 * var errorText = cbObject.errorText; 815 * console.log ("Error Code [" + errorCode + "]: " + errorText); 816 * } 817 * 818 * var deviceInfo = new DeviceInfo(); 819 * 820 * var options = { 821 * method : "PIN" 822 * }; 823 * 824 * deviceInfo.startWps(successCb, failureCb, options); 825 * } 826 * @since 1.3 827 * @see 828 * <a href="DeviceInfo%23stopWps.html">DeviceInfo.stopWps()</a><br> 829 */ 830 DeviceInfo.prototype.startWps = function (successCallback, errorCallback, options) { 831 832 log("startWps: "); 833 834 service.Request('luna://com.webos.service.commercial.signage.storageservice/network/', { 835 method: 'startWps', 836 parameters: options, 837 onSuccess: function(result) { 838 log("startWps: onSuccess"); 839 delete result.returnValue; 840 if (typeof successCallback === 'function') { 841 successCallback(result); 842 } 843 }, 844 onFailure: function(error) { 845 log("startWps: onFailure"); 846 delete error.returnValue; 847 if (typeof errorCallback === 'function') { 848 errorCallback(error); 849 } 850 } 851 }); 852 853 log("DeviceInfo.startWps Done"); 854 }; 855 856 /** 857 * Stops WPS (Wifi Protected Setup) operation. 858 * @class DeviceInfo 859 * @param {Function} successCallback success callback function. 860 * @param {Function} errorCallback failure callback function. 861 * 862 * @example 863 * // Javascript code 864 * function stopWps () { 865 * function successCb() { 866 * console.log("successCb"); 867 * } 868 * 869 * function failureCb(cbObject) { 870 * var errorCode = cbObject.errorCode; 871 * var errorText = cbObject.errorText; 872 * console.log ("Error Code [" + errorCode + "]: " + errorText); 873 * } 874 * 875 * var deviceInfo = new DeviceInfo(); 876 * 877 * deviceInfo.stopWps(successCb, failureCb); 878 * } 879 * @since 1.3 880 * @see 881 * <a href="DeviceInfo%23startWps.html">DeviceInfo.startWps()</a><br> 882 */ 883 DeviceInfo.prototype.stopWps = function (successCallback, errorCallback) { 884 885 log("stopWps: "); 886 887 service.Request('luna://com.webos.service.commercial.signage.storageservice/network/', { 888 method: 'stopWps', 889 parameters: {}, 890 onSuccess: function(result) { 891 log("stopWps: onSuccess"); 892 if (typeof successCallback === 'function') { 893 successCallback(); 894 } 895 }, 896 onFailure: function(error) { 897 log("stopWPS: onFailure"); 898 delete error.returnValue; 899 if (typeof errorCallback === 'function') { 900 errorCallback(error); 901 } 902 } 903 }); 904 905 log("DeviceInfo.stopWps Done"); 906 }; 907 908 /** 909 * Gets network MAC information. 910 * @class DeviceInfo 911 * @param {Function} successCallback success callback function. 912 * @param {Function} errorCallback failure callback function. 913 * @return {Object} 914 * <div align=left> 915 * <table class="hcap_spec" width=400> 916 * <thead><tr><th>Property</th><th>Type</th><th>Description</th></tr></thead> 917 * <tbody> 918 * <tr><th>wiredInfo</th><th>Object</th><th>An object that has MAC address of the wired network interface. </th></tr> 919 * <tr class="odd"><th>wiredInfo.macAddress</th><th>String</th><th>MAC address of the wired network interface. </th></tr> 920 * <tr><th>wifiInfo</th><th>Object</th><th>An object that has MAC address of the wireless network interface. </th></tr> 921 * <tr class="odd"><th>wifiInfo.macAddress</th><th>String</th><th>MAC address of the wireless network interface. </th></tr> 922 * </tbody> 923 * </table> 924 * </div> 925 * 926 * @example 927 * // Javascript code 928 * function getNetworkMacInformation () { 929 * function successCb(cbObject) { 930 * console.log("cbObject : " + JSON.stringify(cbObject)); 931 * console.log("wiredInfo.macAddress : " + cbObject.wiredInfo.macAddress); 932 * console.log("wifiInfo.macAddress : " + cbObject.wifiInfo.macAddress); 933 * 934 * // Do something 935 * ... 936 * } 937 * 938 * function failureCb(cbObject) { 939 * var errorCode = cbObject.errorCode; 940 * var errorText = cbObject.errorText; 941 * console.log ("Error Code [" + errorCode + "]: " + errorText); 942 * } 943 * 944 * var deviceInfo = new DeviceInfo(); 945 * deviceInfo.getNetworkMacInfo(successCb, failureCb); 946 * } 947 * @since 1.0 948 * @see 949 * <a href="DeviceInfo%23getNetworkInfo.html">DeviceInfo.getNetworkInfo()</a><br> 950 */ 951 DeviceInfo.prototype.getNetworkMacInfo = function (successCallback, errorCallback) { 952 953 log("getNetworkMacInfo: "); 954 955 service.Request('luna://com.webos.service.tv.signage', { 956 method: 'getinfo', 957 parameters: {}, 958 onSuccess: function(result) { 959 log("getNetworkMacInfo: onSuccess"); 960 delete result.returnValue; 961 if (typeof successCallback === 'function') { 962 successCallback(result); 963 } 964 }, 965 onFailure: function(error) { 966 log("getNetworkMacInfo: onFailure"); 967 delete error.returnValue; 968 if (typeof errorCallback === 'function') { 969 errorCallback(error); 970 } 971 } 972 }); 973 974 log("DeviceInfo.getNetworkMacInfo Done"); 975 }; 976 977 /** 978 * Gets device platform information. Platform information includes manufacturer, model name, software version, hardware version and product serial number. 979 * @class DeviceInfo 980 * @param {Function} successCallback success callback function. 981 * @param {Function} errorCallback failure callback function. 982 * @return {Object} 983 * <div align=left> 984 * <table class="hcap_spec" width=400> 985 * <thead><tr><th>Property</th><th>Type</th><th>Description</th></tr></thead> 986 * <tbody> 987 * <tr><th>hardwareVersion</th><th>String</th><th>hardware version of signage monitor. </th></tr> 988 * <tr class="odd"><th>manufacturer</th><th>String</th><th>manufacturer of signage monitor. </th></tr> 989 * <tr><th>modelName</th><th>String</th><th>signage monitor model name. </th></tr> 990 * <tr class="odd"><th>sdkVersion</th><th>String</th><th>SDK version of signage monitor. </th></tr> 991 * <tr><th>serialNumber</th><th>String</th><th>signage monitor serial number. </th></tr> 992 * <tr class="odd"><th>firmwareVersion</th><th>String</th><th>firmware version of signage monitor. </th></tr> 993 * </tbody> 994 * </table> 995 * </div> 996 * 997 * @example 998 * // Javascript code 999 * function getPlatformInfo () { 1000 * function successCb(cbObject) { 1001 * console.log("cbObject : " + JSON.stringify(cbObject)); 1002 * console.log("hardwareVersion : " + cbObject.hardwareVersion); 1003 * console.log("modelName : " + cbObject.modelName); 1004 * console.log("sdkVersion : " + cbObject.sdkVersion); 1005 * console.log("serialNumber : " + cbObject.serialNumber); 1006 * console.log("firmwareVersion : " + cbObject.firmwareVersion); 1007 * 1008 * // Do something 1009 * ... 1010 * } 1011 * 1012 * function failureCb(cbObject) { 1013 * var errorCode = cbObject.errorCode; 1014 * var errorText = cbObject.errorText; 1015 * console.log ("Error Code [" + errorCode + "]: " + errorText); 1016 * } 1017 * 1018 * var deviceInfo = new DeviceInfo(); 1019 * deviceInfo.getPlatformInfo(successCb, failureCb); 1020 * } 1021 * @since 1.0 1022 * @see 1023 * <a href="DeviceInfo%23getNetworkMacInfo.html">DeviceInfo.getNetworkMacInfo()</a><br> 1024 */ 1025 DeviceInfo.prototype.getPlatformInfo = function (successCallback, errorCallback) { 1026 1027 log("getPlatformInfo: "); 1028 1029 service.Request('luna://com.webos.service.tv.systemproperty', { 1030 method: 'getSystemInfo', 1031 parameters: { 1032 keys: ["modelName", "serialNumber", "firmwareVersion", "hardwareVersion", "sdkVersion"] 1033 }, 1034 onSuccess: function(result) { 1035 log("getPlatformInfo: onSuccess"); 1036 result.manufacturer = "LGE"; 1037 result.sdkVersion = "1.5.0"; 1038 delete result.returnValue; 1039 if (typeof successCallback === 'function') { 1040 successCallback(result); 1041 } 1042 }, 1043 onFailure: function(error) { 1044 log("getPlatformInfo: onFailure"); 1045 delete error.returnValue; 1046 if (typeof errorCallback === 'function') { 1047 errorCallback(error); 1048 } 1049 } 1050 }); 1051 1052 log("DeviceInfo.getPlatformInfo Done"); 1053 }; 1054 1055 /** 1056 * Gets device usage information. Usage information includes cpu and memory status. 1057 * @class DeviceInfo 1058 * @param {Function} successCallback success callback function. 1059 * @param {Function} errorCallback failure callback function. 1060 * @param {Object} options 1061 * <div align=left> 1062 * <table class="hcap_spec" width=400> 1063 * <thead><tr><th>Property</th><th>Type</th><th>Description</th><th>Required</th></tr></thead> 1064 * <tbody> 1065 * <tr><th>cpus</th><th>Boolean</th><th>true to get CPU information, false otherwise.</th><th>optional</th></tr> 1066 * <tr class="odd"><th>memory</th><th>Boolean</th><th>true to get memory information, false otherwise.</th><th>optional</th></tr> 1067 * </tbody> 1068 * </table> 1069 * </div> 1070 * @return {Object} 1071 * <div align=left> 1072 * <table class="hcap_spec" width=400> 1073 * <thead><tr><th>Property</th><th>Type</th><th>Description</th><th>Available</th></tr></thead> 1074 * <tbody> 1075 * <tr><th>cpus</th><th>Array</th><th>Array of objects containing information about each CPU/core installed: model, and times <br>(an object containing the number of milliseconds the CPU/core spent in: user, nice, sys, idle, and irq).</th><th>optional</th></tr> 1076 * <tr class="odd"><tr><th>memory</th><th>Object</th><th>Object containing total and free member fields. <br>'total' is total amount of system memory in bytes and 'free' is amount of free memory in bytes.</th><th>optional</th></tr> 1077 * </tbody> 1078 * </table> 1079 * </div> 1080 * 1081 * @example 1082 * // Javascript code 1083 * function getSystemUsageInfo() { 1084 * function successCb(cbObject) { 1085 * console.log("cbObject : " + JSON.stringify(cbObject)); 1086 * console.log("memory.total : " + cbObject.memory.total); 1087 * console.log("memory.free : " + cbObject.memory.free); 1088 * 1089 * for (var i in cbObject.cpus) { 1090 * console.log("cpu.model " + cbObject.cpus[i].model); 1091 * console.log("cpu.times.user " + cbObject.cpus[i].times.user); 1092 * console.log("cpu.times.nice " + cbObject.cpus[i].times.nice); 1093 * console.log("cpu.times.sys " + cbObject.cpus[i].times.sys); 1094 * console.log("cpu.times.idle " + cbObject.cpus[i].times.idle); 1095 * console.log("cpu.times.irq " + cbObject.cpus[i].times.irq); 1096 * } 1097 * // Do something 1098 * } 1099 * 1100 * function failureCb(cbObject) { 1101 * var errorCode = cbObject.errorCode; 1102 * var errorText = cbObject.errorText; 1103 * console.log ("Error Code [" + errorCode + "]: " + errorText); 1104 * } 1105 * 1106 * var deviceInfo = new DeviceInfo(); 1107 * var options = {cpus : true, memory : true}; 1108 * deviceInfo.getSystemUsageInfo(successCb, failureCb, options); 1109 * } 1110 * @since 1.2 1111 * @see 1112 * <a href="DeviceInfo%23getPlatformInfo.html">DeviceInfo.getPlatformInfo()</a><br> 1113 */ 1114 DeviceInfo.prototype.getSystemUsageInfo = function (successCallback, errorCallback, options) { 1115 1116 log("getSystemUsageInfo: "); 1117 1118 service.Request("luna://com.webos.service.commercial.signage.storageservice", { 1119 method : "getSystemUsageInfo", 1120 parameters : { 1121 cpus : options.cpus, 1122 memory : options.memory 1123 }, 1124 onSuccess : function(result) { 1125 if (result.returnValue === true) { 1126 var ret = {}; 1127 if (typeof result.memory !== 'undefined' ) { 1128 ret.memory = result.memory; 1129 } 1130 if (typeof result.cpus !== 'undefined' ) { 1131 ret.cpus = result.cpus; 1132 } 1133 if (typeof successCallback === 'function') { 1134 successCallback(ret); 1135 } 1136 } else { 1137 if (typeof errorCallback === 'function') { 1138 errorCallback({ 1139 errorCode:result.errorCode, 1140 errorText:result.errorText 1141 }); 1142 } 1143 } 1144 }, 1145 onFailure : function (result) { 1146 if (typeof errorCallback === 'function') { 1147 errorCallback({ 1148 errorCode:result.errorCode, 1149 errorText:result.errorText 1150 }); 1151 } 1152 } 1153 }); 1154 1155 log("DeviceInfo.getSystemUsageInfo Done"); 1156 }; 1157 1158 /** 1159 * Sets Proxy Info 1160 * @class DeviceInfo 1161 * @param {Function} successCallback success callback function. 1162 * @param {Function} errorCallback failure callback function. 1163 * @param {Object} options 1164 * <div align=left> 1165 * <table class="hcap_spec" width=400> 1166 * <thead><tr><th>Property</th><th>Type</th><th>Description</th><th>Required</th></tr></thead> 1167 * <tbody> 1168 * <tr><th>enabled</th><th>Boolean</th><th>proxy is enabled true : enabled, false : disabled</th><th>required</th></tr> 1169 * <tr class="odd"><th>ipAddress</th><th>String</th><th>proxy server ip (when 'enabled' is true, it is required)</th><th>optional</th></tr> 1170 * <tr><th>port</th><th>Number</th><th>proxy server port (0 ~ 65535) (when 'enabled' is true, it is required)</th><th>optional</th></tr> 1171 * <tr class="odd"><th>userName</th><th>String</th><th>proxy server username (when 'enabled' is true and authentication is used by proxy server, it is required)</th><th>optional</th></tr> 1172 * <tr><th>password</th><th>String</th><th>proxy server password (when 'enabled' is true and authentication is used by proxy server, it is required)</th><th>optional</th></tr> 1173 * </tbody> 1174 * </table> 1175 * </div> 1176 * @return <p>If the method is successfully executed, success callback function is called without a parameter.</br> 1177 * If an error occurs, failure callback function is called with a failure callback object as a parameter.</p> 1178 * 1179 * @example 1180 * // Javascript code 1181 * function setProxyInfo () { 1182 * var options = { 1183 * enabled : true, 1184 * ipAddress : "163.231.22.43", 1185 * port : 5000, 1186 * userName : "example", 1187 * password : "35792234", 1188 * }; 1189 * function successCb() { 1190 * console.log("sucess"); 1191 * // Do something 1192 * } 1193 * function failureCb(cbObject) { 1194 * var errorCode = cbObject.errorCode; 1195 * var errorText = cbObject.errorText; 1196 * console.log ("Error Code [" + errorCode + "]: " + errorText); 1197 * } 1198 * var deviceinfo = new DeviceInfo(); 1199 * deviceinfo.setProxyInfo(successCb, failureCb, options); 1200 * } 1201 * @since 1.4 1202 * @see 1203 * <a href="DeviceInfo%23getProxyInfo.html">DeviceInfo.getProxyInfo()</a><br> 1204 */ 1205 DeviceInfo.prototype.setProxyInfo = function(successCallback, errorCallback, options) { 1206 var proxyInfo = {}; 1207 1208 log("setProxyInfo: " + options.enabled); 1209 1210 if (typeof options.enabled !== 'boolean' && typeof errorCallback === 'function') { 1211 var result = {}; 1212 checkErrorCodeNText(result, "DSPI", "DeviceInfo.setProxyInfo returns failure. enabled is not boolean."); 1213 errorCallback(result); 1214 return; 1215 } else if (typeof options.ipAddress !== 'string' && typeof errorCallback === 'function') { 1216 var result = {}; 1217 checkErrorCodeNText(result, "DSPI", "DeviceInfo.setProxyInfo returns failure. ipAddress is not string."); 1218 errorCallback(result); 1219 return; 1220 } else if (typeof options.port !== 'number' && typeof errorCallback === 'function') { 1221 var result = {}; 1222 checkErrorCodeNText(result, "DSPI", "DeviceInfo.setProxyInfo returns failure. port is not number."); 1223 errorCallback(result); 1224 return; 1225 } 1226 1227 if (options.enabled == false) { 1228 proxyInfo.proxyEnable = "off"; 1229 } else { 1230 proxyInfo.proxyEnable = "on"; 1231 1232 if ((options.ipAddress === null || options.ipAddress === undefined || options.ipAddress === "" || 1233 options.port === null || options.port === undefined || isNaN(options.port)) && typeof errorCallback === 'function') { 1234 var result = {}; 1235 checkErrorCodeNText(result, "DSPI", "DeviceInfo.setProxyInfo returns failure. ipAddress and port are required."); 1236 errorCallback(result); 1237 return; 1238 } else { 1239 proxyInfo.proxySingleAddress = options.ipAddress; 1240 proxyInfo.proxySinglePort = options.port.toString(); 1241 } 1242 } 1243 1244 if (typeof options.userName === 'string' && options.userName !== undefined && options.userName !== null && 1245 typeof options.password === 'string' && options.password !== undefined && options.password !== null) { 1246 proxyInfo.proxySingleUsername = options.userName; 1247 proxyInfo.proxySinglePassword = options.password; 1248 } 1249 1250 log("proxyInfo : " + JSON.stringify(proxyInfo)); 1251 1252 service.Request("luna://com.webos.service.commercial.signage.storageservice/settings/", { 1253 method: "set", 1254 parameters: { 1255 category: "commercial", 1256 settings: proxyInfo 1257 }, 1258 onSuccess: function(result) { 1259 log("setProxyInfo: On Success"); 1260 1261 if (result.returnValue === true) { 1262 if (typeof successCallback === 'function') { 1263 successCallback(); 1264 } 1265 } 1266 }, 1267 onFailure: function(result) { 1268 log("setSoundOut: On Failure"); 1269 delete result.returnValue; 1270 if (typeof errorCallback === 'function') { 1271 checkErrorCodeNText(result, "DSPI", "DeviceInfo.setProxyInfo returns failure."); 1272 errorCallback(result); 1273 } 1274 } 1275 }); 1276 1277 log("DeviceInfo.setProxyInfo Done"); 1278 }; 1279 1280 /** 1281 * Gets Proxy Info 1282 * @class DeviceInfo 1283 * @param {Function} successCallback success callback function. 1284 * @param {Function} errorCallback failure callback function. 1285 * @return {Object} options 1286 * <div align=left> 1287 * <table class="hcap_spec" width=400> 1288 * <thead><tr><th>Property</th><th>Type</th><th>Description</th></tr></thead> 1289 * <tbody> 1290 * <tr><th>enabled</th><th>Boolean</th><th>proxy is enabled true : enabled, false : disabled</th></tr> 1291 * <tr class="odd"><th>ipAddress</th><th>String</th><th>proxy server ip (when 'enabled' is true, it is required)</th></tr> 1292 * <tr><th>port</th><th>Number</th><th>proxy server port (0 ~ 65535) (when 'enabled' is true, it is required)</th></tr> 1293 * </tbody> 1294 * </table> 1295 * </div> 1296 * 1297 * @example 1298 * // Javascript code 1299 * function getProxyInfo () { 1300 * function successCb(cbObject) { 1301 * console.log("cbObject : " + JSON.stringify(cbObject)); 1302 * console.log("enabled : " + cbObject.enabled); 1303 * console.log("ipAddress : " + cbObject.ipAddress); 1304 * console.log("port : " + cbObject.port); 1305 * } 1306 * function failureCb(cbObject) { 1307 * var errorCode = cbObject.errorCode; 1308 * var errorText = cbObject.errorText; 1309 * console.log ("Error Code [" + errorCode + "]: " + errorText); 1310 * } 1311 * var deviceinfo = new DeviceInfo(); 1312 * deviceinfo.getProxyInfo(successCb, failureCb); 1313 * } 1314 * @since 1.4 1315 * @see 1316 * <a href="DeviceInfo%23setProxyInfo.html">DeviceInfo.setProxyInfo()</a><br> 1317 */ 1318 DeviceInfo.prototype.getProxyInfo = function (successCallback, errorCallback) { 1319 1320 log("getProxyInfo: "); 1321 1322 service.Request("luna://com.webos.service.commercial.signage.storageservice/settings/", { 1323 method: "get", 1324 parameters: { 1325 category: "commercial", 1326 keys: ["proxyEnable", "proxySingleAddress", "proxySinglePort"] 1327 }, 1328 onSuccess: function(result) { 1329 log("getProxyInfo: On Success"); 1330 1331 if (result.returnValue === true) { 1332 var cbObj = {}; 1333 cbObj.enabled = (result.settings.proxyEnable === "on") ? true : false; 1334 cbObj.ipAddress = result.settings.proxySingleAddress; 1335 cbObj.port = parseInt(result.settings.proxySinglePort); 1336 1337 if (typeof successCallback === 'function') { 1338 successCallback(cbObj); 1339 } 1340 } 1341 }, 1342 onFailure: function(result) { 1343 log("getProxyInfo: On Failure"); 1344 delete result.returnValue; 1345 if (typeof errorCallback === 'function') { 1346 checkErrorCodeNText(result, "DGPI", "DeviceInfo.getProxyInfo returns failure."); 1347 errorCallback(result); 1348 } 1349 } 1350 }); 1351 1352 log("DeviceInfo.getProxyInfo Done"); 1353 }; 1354 1355 /** 1356 * Sets iBeacon Info 1357 * @class DeviceInfo 1358 * @param {Function} successCallback success callback function. 1359 * @param {Function} errorCallback failure callback function. 1360 * @param {Object} options 1361 * <div align=left> 1362 * <table class="hcap_spec" width=400> 1363 * <thead><tr><th>Property</th><th>Type</th><th>Description</th><th>Required</th></tr></thead> 1364 * <tbody> 1365 * <tr><th>enabled</th><th>Boolean</th><th>iBeacon is enabled true : enabled, false : disabled</th><th>required</th></tr> 1366 * <tr class="odd"><th>uuid</th><th>String</th><th>UUID of iBeacon, 32 hexadecimal digits. (when 'enabled' is true, it is required)</th><th>optional</th></tr> 1367 * <tr><th>major</th><th>Number</th><th>major (0 ~ 65535) (when 'enabled' is true, it is required)</th><th>optional</th></tr> 1368 * <tr class="odd"><th>minor</th><th>Number</th><th>minor (0 ~ 65535) (when 'enabled' is true, it is required)</th><th>optional</th></tr> 1369 * </tbody> 1370 * </table> 1371 * </div> 1372 * @return <p>If the method is successfully executed, success callback function is called without a parameter.</br> 1373 * If an error occurs, failure callback function is called with a failure callback object as a parameter.</p> 1374 * 1375 * @example 1376 * // Javascript code 1377 * function setiBeaconInfo () { 1378 * var options = { 1379 * enabled : true, 1380 * uuid : "f7826da64fa24e988024bc5b71e0893e", 1381 * major : 5000, 1382 * minor : 3000 1383 * }; 1384 * function successCb(cbObject) { 1385 * console.log("sucess"); 1386 * // Do something 1387 * } 1388 * function failureCb(cbObject) { 1389 * var errorCode = cbObject.errorCode; 1390 * var errorText = cbObject.errorText; 1391 * console.log ("Error Code [" + errorCode + "]: " + errorText); 1392 * } 1393 * var deviceinfo = new DeviceInfo(); 1394 * deviceinfo.setiBeaconInfo(successCb, failureCb, options); 1395 * } 1396 * @since 1.4 1397 * @see 1398 * <a href="DeviceInfo%23getiBeaconInfo.html">DeviceInfo.getiBeaconInfo()</a><br> 1399 */ 1400 DeviceInfo.prototype.setiBeaconInfo = function(successCallback, errorCallback, options) { 1401 var regex = function(uuid) { 1402 if (typeof uuid === "undefined" || uuid === null || uuid.length != 32) { 1403 return false; 1404 } 1405 1406 var reg = new RegExp(/^[a-fA-F0-9]*$/g); 1407 return reg.exec(uuid) !== null ? true : false; 1408 }; 1409 1410 var iBeaconInfo = {}; 1411 1412 if ((options.enabled === null || options.enabled === undefined || typeof options.enabled !== 'boolean') && typeof errorCallback === 'function') { 1413 var result = {}; 1414 checkErrorCodeNText(result, "DSIB", "DeviceInfo.setiBeaconInfo returns failure. enabled is required."); 1415 errorCallback(result); 1416 log("DeviceInfo.setiBeaconInfo invalid "); 1417 return; 1418 } 1419 1420 if (options.enabled == false) { 1421 iBeaconInfo.beaconMode = "off"; 1422 } else { 1423 if ((options.uuid === null || options.uuid === undefined || regex(options.uuid) === false) && typeof errorCallback === 'function') { 1424 var result = {}; 1425 checkErrorCodeNText(result, "DSIB", "DeviceInfo.setiBeaconInfo returns failure. uuid is not valid."); 1426 errorCallback(result); 1427 log("DeviceInfo.setiBeaconInfo invalid "); 1428 return; 1429 } 1430 1431 if ((options.major === null || options.major === undefined || isNaN(options.major) || options.major < 0 || options.major > 65535 || 1432 options.minor === null || options.minor === undefined || isNaN(options.minor) || options.minor < 0 || options.minor > 65535) && 1433 typeof errorCallback === 'function') { 1434 var result = {}; 1435 checkErrorCodeNText(result, "DSIB", "DeviceInfo.setiBeaconInfo returns failure. major and minor are not valid."); 1436 errorCallback(result); 1437 log("DeviceInfo.setiBeaconInfo invalid "); 1438 return; 1439 } 1440 1441 iBeaconInfo.beaconMode = "on"; 1442 iBeaconInfo.beaconType = "iBeacon"; 1443 iBeaconInfo.iBeaconUuid = options.uuid; 1444 iBeaconInfo.iBeaconMajor = options.major.toString(); 1445 iBeaconInfo.iBeaconMinor = options.minor.toString(); 1446 } 1447 1448 log("iBeaconInfo: " + JSON.stringify(iBeaconInfo)); 1449 1450 service.Request("luna://com.webos.service.commercial.signage.storageservice/settings/", { 1451 method: "set", 1452 parameters: { 1453 category: "commercial", 1454 settings: iBeaconInfo 1455 }, 1456 onSuccess: function(result) { 1457 log("setiBeaconInfo: On Success"); 1458 1459 if (result.returnValue === true) { 1460 service.Request('luna://com.webos.service.commercial.signage.storageservice/network/', { 1461 method: 'notifyUpdatingBeaconInfo', 1462 parameters: {}, 1463 onSuccess: function(result) { 1464 log("notifyUpdatingBeaconInfo: onSuccess"); 1465 delete result.returnValue; 1466 if (typeof successCallback === 'function') { 1467 successCallback(result); 1468 } 1469 }, 1470 onFailure: function(error) { 1471 log("notifyUpdatingBeaconInfo: onFailure"); 1472 delete error.returnValue; 1473 if (typeof errorCallback === 'function') { 1474 errorCallback(error); 1475 } 1476 } 1477 }); 1478 } 1479 }, 1480 onFailure: function(result) { 1481 log("setiBeaconInfo: On Failure"); 1482 delete result.returnValue; 1483 if (typeof errorCallback === 'function') { 1484 checkErrorCodeNText(result, "DSIB", "DeviceInfo.setiBeaconInfo returns failure."); 1485 errorCallback(result); 1486 } 1487 } 1488 }); 1489 1490 log("DeviceInfo.setiBeaconInfo Done"); 1491 }; 1492 1493 /** 1494 * Gets iBeacon Info 1495 * @class DeviceInfo 1496 * @param {Function} successCallback success callback function. 1497 * @param {Function} errorCallback failure callback function. 1498 * @return {Object} options 1499 * <div align=left> 1500 * <table class="hcap_spec" width=400> 1501 * <thead><tr><th>Property</th><th>Type</th><th>Description</th></tr></thead> 1502 * <tbody> 1503 * <tr><th>enabled</th><th>Boolean</th><th>iBeacon is enabled true : enabled, false : disabled</th></tr> 1504 * <tr class="odd"><th>uuid</th><th>String</th><th>UUID of iBeacon, 32 hexadecimal digits. (when 'enabled' is true, it is required)</th></tr> 1505 * <tr><th>major</th><th>Number</th><th>major (0 ~ 65535) (when 'enabled' is true, it is required)</th></tr> 1506 * <tr class="odd"><th>minor</th><th>Number</th><th>minor (0 ~ 65535) (when 'enabled' is true, it is required)</th></tr> 1507 * </tbody> 1508 * </table> 1509 * </div> 1510 * 1511 * @example 1512 * // Javascript code 1513 * function getiBeaconInfo () { 1514 * function successCb(cbObject) { 1515 * console.log("cbObject : " + JSON.stringify(cbObject)); 1516 * console.log("enabled : " + cbObject.enabled); 1517 * console.log("uuid : " + cbObject.uuid); 1518 * console.log("major : " + cbObject.major); 1519 * console.log("minor : " + cbObject.minor); 1520 * // Do something 1521 * } 1522 * function failureCb(cbObject) { 1523 * var errorCode = cbObject.errorCode; 1524 * var errorText = cbObject.errorText; 1525 * console.log ("Error Code [" + errorCode + "]: " + errorText); 1526 * } 1527 * var deviceinfo = new DeviceInfo(); 1528 * deviceinfo.getiBeaconInfo(successCb, failureCb); 1529 * } 1530 * @since 1.4 1531 * @see 1532 * <a href="DeviceInfo%23setiBeaconInfo.html">DeviceInfo.setiBeaconInfo()</a><br> 1533 */ 1534 DeviceInfo.prototype.getiBeaconInfo = function (successCallback, errorCallback) { 1535 1536 log("getiBeaconInfo: "); 1537 1538 service.Request("luna://com.webos.service.commercial.signage.storageservice/settings/", { 1539 method: "get", 1540 parameters: { 1541 category: "commercial", 1542 keys: ["beaconMode", "iBeaconUuid", "iBeaconMajor", "iBeaconMinor"] 1543 }, 1544 onSuccess: function(result) { 1545 log("getiBeaconInfo: On Success"); 1546 1547 if (result.returnValue === true) { 1548 var cbObj = {}; 1549 cbObj.enabled = (result.settings.beaconMode === "on") ? true : false; 1550 cbObj.uuid = result.settings.iBeaconUuid; 1551 cbObj.major = parseInt(result.settings.iBeaconMajor); 1552 cbObj.minor = parseInt(result.settings.iBeaconMinor); 1553 1554 if (typeof successCallback === 'function') { 1555 successCallback(cbObj); 1556 } 1557 } 1558 }, 1559 onFailure: function(result) { 1560 log("getiBeaconInfo: On Failure"); 1561 delete result.returnValue; 1562 if (typeof errorCallback === 'function') { 1563 checkErrorCodeNText(result, "DGIB", "DeviceInfo.getiBeaconInfo returns failure."); 1564 errorCallback(result); 1565 } 1566 } 1567 }); 1568 1569 log("DeviceInfo.getiBeaconInfo Done"); 1570 }; 1571 1572 /** 1573 * Sets Eddystone Info, Each <a href="DeviceInfo.EddystoneFrame.html#constructor">EddystoneFrame</a> has a set of predefined frame properties. 1574 * @class DeviceInfo 1575 * @param {Function} successCallback success callback function. 1576 * @param {Function} errorCallback failure callback function. 1577 * @param {Object} options 1578 * <div align=left> 1579 * <table class="hcap_spec" width=400> 1580 * <thead><tr><th>Property</th><th>Type</th><th>Description</th><th>Required</th></tr></thead> 1581 * <tbody> 1582 * <tr><th>enabled</th><th>Boolean</th><th>Eddystone is enabled true : enabled, false : disabled</th><th>required</th></tr> 1583 * <tr class="odd"><th>frame</th><th>String</th><th><a href="DeviceInfo.EddystoneFrame.html#constructor">EddystoneFrame</a></th><th>optional</th></tr> 1584 * <tr><th>frameData</th><th>String</th><th>UUID of beacon, 32 hexadecimal digits. Only valid when 'enabled' is true and 'frame' is DeviceInfo.EddystoneFrame.UUID<br> 1585 * URL of beacon. Only valid when 'enabled' is true and 'frame' is DeviceInfo.EddystoneFrame.URL<br> 1586 * (when 'enabled' is true, it is required)</th><th>optional</th></tr> 1587 * </tbody> 1588 * </table> 1589 * </div> 1590 * @return <p>If the method is successfully executed, success callback function is called without a parameter.</br> 1591 * If an error occurs, failure callback function is called with a failure callback object as a parameter.</p> 1592 * 1593 * @example 1594 * // Javascript code 1595 * function setEddystoneInfo () { 1596 * var options = { 1597 * enabled : true, 1598 * frame : DeviceInfo.EddystoneFrame.URL, 1599 * frameData : "https://www.lge.com" 1600 * }; 1601 * function successCb(cbObject) { 1602 * console.log("sucess"); 1603 * // Do something 1604 * } 1605 * function failureCb(cbObject) { 1606 * var errorCode = cbObject.errorCode; 1607 * var errorText = cbObject.errorText; 1608 * console.log ("Error Code [" + errorCode + "]: " + errorText); 1609 * } 1610 * var deviceinfo = new DeviceInfo(); 1611 * deviceinfo.setEddystoneInfo(successCb, failureCb, options); 1612 * } 1613 * @since 1.4 1614 * @see 1615 * <a href="DeviceInfo%23getEddystoneInfo.html">DeviceInfo.getEddystoneInfo()</a><br> 1616 */ 1617 DeviceInfo.prototype.setEddystoneInfo = function(successCallback, errorCallback, options) { 1618 var chkuuid = function(uuid) { 1619 if (typeof uuid === "undefined" || uuid === null || uuid.length != 32) { 1620 return false; 1621 } 1622 1623 var reg = new RegExp(/^[a-fA-F0-9]*$/g); 1624 return reg.exec(uuid) !== null ? true : false; 1625 }; 1626 1627 var eddystoneInfo = {}; 1628 1629 log("setEddystoneInfo: " + options.enabled); 1630 1631 if ((options.enabled === null || options.enabled === undefined || typeof options.enabled !== 'boolean') && typeof errorCallback === 'function') 1632 { 1633 var result = {}; 1634 checkErrorCodeNText(result, "DSEI", "DeviceInfo.setEddystoneInfo returns failure. enabled is required."); 1635 errorCallback(result); 1636 log("DeviceInfo.setEddystoneInfo invalid "); 1637 return; 1638 } 1639 1640 if (options.enabled === false) 1641 { 1642 eddystoneInfo.beaconMode = "off"; 1643 } 1644 else 1645 { 1646 eddystoneInfo.beaconMode = "on"; 1647 eddystoneInfo.beaconType = "eddystone"; 1648 1649 if (options.frame === DeviceInfo.EddystoneFrame.UUID) 1650 { 1651 if (chkuuid(options.frameData) === false && typeof errorCallback === 'function') { 1652 var result = {}; 1653 checkErrorCodeNText(result, "DSEI", "DeviceInfo.setEddystoneInfo returns failure. frameData is not valid."); 1654 errorCallback(result); 1655 log("DeviceInfo.setEddystoneInfo invalid "); 1656 return; 1657 } 1658 1659 eddystoneInfo.eddyStoneFrame = options.frame; 1660 eddystoneInfo.eddyStoneUuid = options.frameData; 1661 1662 } 1663 else if (options.frame === DeviceInfo.EddystoneFrame.URL) 1664 { 1665 if ((options.frameData === null || options.frameData === undefined || typeof options.frameData !== 'string' || 1666 options.frameData.search("://") < 0 || options.frameData.substring(0, 4).toUpperCase() !== "HTTP") && typeof errorCallback === 'function') 1667 { 1668 var result = {}; 1669 checkErrorCodeNText(result, "DSEI", "DeviceInfo.setEddystoneInfo returns failure. frameData is not valid."); 1670 errorCallback(result); 1671 log("DeviceInfo.setEddystoneInfo invalid "); 1672 return; 1673 } 1674 1675 eddystoneInfo.eddyStoneFrame = options.frame; 1676 eddystoneInfo.eddyStoneUrlPrefix = options.frameData.substring(0, options.frameData.search("://")); 1677 if (options.frameData.substring(options.frameData.search("://") + 3, 3).toUpperCase() === "WWW") { 1678 eddystoneInfo.eddyStoneUrlPrefix = eddystoneInfo.eddyStoneUrlPrefix + "Ex"; 1679 } 1680 1681 var lengthPrefix = 0; 1682 if(eddystoneInfo.eddyStoneUrlPrefix.toUpperCase() === "HTTP"){ 1683 lengthPrefix = 7;//http:// 1684 } else if(eddystoneInfo.eddyStoneUrlPrefix.toUpperCase() === "HTTPEX"){ 1685 lengthPrefix = 11;//http://www. 1686 } else if(eddystoneInfo.eddyStoneUrlPrefix.toUpperCase() === "HTTPS"){ 1687 lengthPrefix = 8;//https:// 1688 } else if(eddystoneInfo.eddyStoneUrlPrefix.toUpperCase() === "HTTPSEX"){ 1689 lengthPrefix = 12;//https://www. 1690 } 1691 1692 if (options.frameData.length - lengthPrefix > 17) 1693 { 1694 var result = {}; 1695 checkErrorCodeNText(result, "DSEI", "DeviceInfo.setEddystoneInfo returns failure. url size is over."); 1696 errorCallback(result); 1697 log("DeviceInfo.setEddystoneInfo invalid "); 1698 return; 1699 } 1700 1701 eddystoneInfo.eddyStoneUrl = options.frameData.substring(lengthPrefix, options.frameData.length); 1702 eddystoneInfo.eddyStoneUrlExCode = "noneValue"; 1703 } 1704 else 1705 { 1706 var result = {}; 1707 checkErrorCodeNText(result, "DSEI", "DeviceInfo.setEddystoneInfo returns failure. frame is not valid."); 1708 errorCallback(result); 1709 log("DeviceInfo.setEddystoneInfo invalid "); 1710 return; 1711 } 1712 } 1713 1714 log("eddystoneInfo : " + JSON.stringify(eddystoneInfo)); 1715 1716 service.Request("luna://com.webos.service.commercial.signage.storageservice/settings/", { 1717 method: "set", 1718 parameters: { 1719 category: "commercial", 1720 settings: eddystoneInfo 1721 }, 1722 onSuccess: function(result) { 1723 log("setEddystoneInfo: On Success"); 1724 1725 if (result.returnValue === true) { 1726 service.Request('luna://com.webos.service.commercial.signage.storageservice/network/', { 1727 method: 'notifyUpdatingBeaconInfo', 1728 parameters: {}, 1729 onSuccess: function(result) { 1730 log("notifyUpdatingBeaconInfo: onSuccess"); 1731 delete result.returnValue; 1732 if (typeof successCallback === 'function') { 1733 successCallback(result); 1734 } 1735 }, 1736 onFailure: function(error) { 1737 log("notifyUpdatingBeaconInfo: onFailure"); 1738 delete error.returnValue; 1739 if (typeof errorCallback === 'function') { 1740 errorCallback(error); 1741 } 1742 } 1743 }); 1744 } 1745 }, 1746 onFailure: function(result) { 1747 log("setEddystoneInfo: On Failure"); 1748 delete result.returnValue; 1749 if (typeof errorCallback === 'function') { 1750 checkErrorCodeNText(result, "DSEI", "DeviceInfo.setEddystoneInfo returns failure."); 1751 errorCallback(result); 1752 } 1753 } 1754 }); 1755 }; 1756 1757 /** 1758 * Gets Eddystone Info, Each <a href="DeviceInfo.EddystoneFrame.html#constructor">EddystoneFrame</a> has a set of predefined frame properties. 1759 * @class DeviceInfo 1760 * @param {Function} successCallback success callback function. 1761 * @param {Function} errorCallback failure callback function. 1762 * @return {Object} options 1763 * <div align=left> 1764 * <table class="hcap_spec" width=400> 1765 * <thead><tr><th>Property</th><th>Type</th><th>Description</th></tr></thead> 1766 * <tbody> 1767 * <tr><th>enabled</th><th>Boolean</th><th>Eddystone is enabled true : enabled, false : disabled</th></tr> 1768 * <tr class="odd"><th>frame</th><th>String</th><th><a href="DeviceInfo.EddystoneFrame.html#constructor">EddystoneFrame</a></th></tr> 1769 * <tr><th>frameData</th><th>String</th><th>UUID of beacon, 32 hexadecimal digits. Only valid when 'enabled' is true and 'frame' is DeviceInfo.EddystoneFrame.UUID<br> 1770 * URL of beacon. Only valid when 'enabled' is true and 'frame' is DeviceInfo.EddystoneFrame.URL<br> 1771 * (when 'enabled' is true, it is required)</th></tr> 1772 * </tbody> 1773 * </table> 1774 * </div> 1775 * 1776 * @example 1777 * // Javascript code 1778 * function getEddystoneInfo () { 1779 * function successCb(cbObject) { 1780 * console.log("cbObject : " + JSON.stringify(cbObject)); 1781 * console.log("enabled : " + cbObject.enabled); 1782 * console.log("frame : " + cbObject.uuid); 1783 * console.log("frameData : " + cbObject.major); 1784 * // Do something 1785 * } 1786 * function failureCb(cbObject) { 1787 * var errorCode = cbObject.errorCode; 1788 * var errorText = cbObject.errorText; 1789 * console.log ("Error Code [" + errorCode + "]: " + errorText); 1790 * } 1791 * var deviceinfo = new DeviceInfo(); 1792 * deviceinfo.getEddystoneInfo(successCb, failureCb); 1793 * } 1794 * @since 1.4 1795 * @see 1796 * <a href="DeviceInfo%23setEddystoneInfo.html">DeviceInfo.setEddystoneInfo()</a><br> 1797 */ 1798 DeviceInfo.prototype.getEddystoneInfo = function (successCallback, errorCallback) { 1799 1800 log("getEddystoneInfo: "); 1801 1802 service.Request("luna://com.webos.service.commercial.signage.storageservice/settings/", { 1803 method: "get", 1804 parameters: { 1805 category: "commercial", 1806 keys: ["beaconMode", "eddyStoneFrame", "eddyStoneUuid", "eddyStoneUrlPrefix", "eddyStoneUrl", "eddyStoneUrlExCode"] 1807 }, 1808 onSuccess: function(result) { 1809 log("getEddystoneInfo: On Success"); 1810 1811 if (result.returnValue === true) { 1812 var cbObj = {}; 1813 cbObj.enabled = (result.settings.beaconMode === "on") ? true : false; 1814 cbObj.frame = result.settings.eddyStoneFrame; 1815 1816 if (result.settings.eddyStoneFrame === DeviceInfo.EddystoneFrame.UUID) { 1817 cbObj.frameData = result.settings.eddyStoneUuid; 1818 } else { 1819 if(result.settings.eddyStoneUrlPrefix === "http") { 1820 cbObj.frameData = "http://" + result.settings.eddyStoneUrl; 1821 } else if (result.settings.eddyStoneUrlPrefix === "httpEx") { 1822 cbObj.frameData = "http://www." + result.settings.eddyStoneUrl; 1823 } else if (result.settings.eddyStoneUrlPrefix === "https") { 1824 cbObj.frameData = "https://" + result.settings.eddyStoneUrl; 1825 } else { 1826 cbObj.frameData = "https://www." + result.settings.eddyStoneUrl; 1827 } 1828 } 1829 1830 if (typeof successCallback === 'function') { 1831 successCallback(cbObj); 1832 } 1833 } 1834 }, 1835 onFailure: function(result) { 1836 log("getEddystoneInfo: On Failure"); 1837 delete result.returnValue; 1838 if (typeof errorCallback === 'function') { 1839 checkErrorCodeNText(result, "DGEI", "DeviceInfo.getEddystoneInfo returns failure."); 1840 errorCallback(result); 1841 } 1842 } 1843 }); 1844 1845 log("DeviceInfo.getEddystoneInfo Done"); 1846 }; 1847 1848 /** 1849 * Gets external input information. external input information includes inputPort, signalDetection, count and currentInputPort. (This API does not support detecting analog inputs.) 1850 * @class DeviceInfo 1851 * @param {Function} successCallback success callback function. 1852 * @param {Function} errorCallback failure callback function. 1853 * @return {Object} 1854 * <div align=left> 1855 * <table class="hcap_spec" width=400> 1856 * <thead><tr><th>Property</th><th>Type</th><th>Description</th></tr></thead> 1857 * <tbody> 1858 * <tr><th>inputSourceList[]</th><th>Array</th><th>External input information.</th></tr> 1859 * <tr class="odd"><th>inputSourceList[].inputPort</th><th>String</th><th>Input label (ext://hdmi:1, ext://hdmi:2, ext://dp:1, ext://dvi:1 etc)</th></tr> 1860 * <tr><th>inputSourceList[].signalDetection</th><th>Boolean</th><th>true: detected, false: non-detected</th></tr> 1861 * <tr class="odd"><th>subscribed</th><th>Boolean</th><th>true to indicate subscribed</th></tr> 1862 * <tr><th>count</th><th>Number</th><th>Number of all inputs (now include only digital inputs)</th></tr> 1863 * <tr class="odd"><th>currentInputPort</th><th>Boolean</th><th>Input label of the input that is currently selected.</th></tr> 1864 * </tbody> 1865 * </table> 1866 * </div> 1867 * 1868 * @example 1869 * // Javascript code 1870 * function getExternalInputList () { 1871 * function successCb(cbObject) { 1872 * console.log("cbObject : " + JSON.stringify(cbObject)); 1873 * for (var i = 0; i < cbObject.inputSourceList.length; i++) { 1874 * console.log("inputSourceList [" + i + "].inputPort : " + cbObject.inputSourceList[i].inputPort); 1875 * console.log("inputSourceList [" + i + "].signalDetection : " + cbObject.inputSourceList[i].signalDetection); 1876 * } 1877 * console.log("subscribed : " + cbObject.subscribed); 1878 * console.log("count : " + cbObject.count); 1879 * console.log("currentInputPort : " + cbObject.currentInputPort); 1880 * } 1881 * 1882 * function failureCb(cbObject) { 1883 * var errorCode = cbObject.errorCode; 1884 * var errorText = cbObject.errorText; 1885 * console.log ("Error Code [" + errorCode + "]: " + errorText); 1886 * } 1887 * 1888 * var options = { subscribe : true }; 1889 * var deviceInfo = new DeviceInfo(); 1890 * deviceInfo.getExternalInputList(successCb, failureCb, options); 1891 * } 1892 * @since 1.5 1893 * @see 1894 */ 1895 DeviceInfo.prototype.getExternalInputList = function (successCallback, errorCallback, options) { 1896 1897 log("getExternalInputList: "); 1898 service.Request('luna://com.webos.service.commercial.signage.storageservice/', { 1899 method: 'getExternalInputList', 1900 parameters: options, 1901 onSuccess: function (result) { 1902 if (typeof successCallback === 'function') { 1903 delete result.returnValue; 1904 successCallback(result); 1905 } 1906 }, 1907 onFailure: function (error) { 1908 log("getExternalInputList: onFailure"); 1909 delete error.returnValue; 1910 if (typeof errorCallback === 'function') { 1911 errorCallback(error); 1912 } 1913 } 1914 }); 1915 log("DeviceInfo.getExternalInputList Done"); 1916 }; 1917 1918 module.exports = DeviceInfo; 1919 }); 1920 1921 DeviceInfo = cordova.require('cordova/plugin/deviceInfo'); // jshint ignore:line 1922 1923