michael@0: /* michael@0: * michael@0: * Licensed to the Apache Software Foundation (ASF) under one michael@0: * or more contributor license agreements. See the NOTICE file michael@0: * distributed with this work for additional information michael@0: * regarding copyright ownership. The ASF licenses this file michael@0: * to you under the Apache License, Version 2.0 (the michael@0: * "License"); you may not use this file except in compliance michael@0: * with the License. You may obtain a copy of the License at michael@0: * michael@0: * http://www.apache.org/licenses/LICENSE-2.0 michael@0: * michael@0: * Unless required by applicable law or agreed to in writing, michael@0: * software distributed under the License is distributed on an michael@0: * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY michael@0: * KIND, either express or implied. See the License for the michael@0: * specific language governing permissions and limitations michael@0: * under the License. michael@0: * michael@0: */ michael@0: michael@0: var argscheck = require('cordova/argscheck'), michael@0: channel = require('cordova/channel'), michael@0: utils = require('cordova/utils'), michael@0: exec = require('cordova/exec'), michael@0: cordova = require('cordova'); michael@0: michael@0: channel.createSticky('onCordovaInfoReady'); michael@0: // Tell cordova channel to wait on the CordovaInfoReady event michael@0: channel.waitForInitialization('onCordovaInfoReady'); michael@0: michael@0: /** michael@0: * This represents the mobile device, and provides properties for inspecting the model, version, UUID of the michael@0: * phone, etc. michael@0: * @constructor michael@0: */ michael@0: function Device() { michael@0: this.available = false; michael@0: this.platform = null; michael@0: this.version = null; michael@0: this.uuid = null; michael@0: this.cordova = null; michael@0: this.model = null; michael@0: michael@0: var me = this; michael@0: michael@0: channel.onCordovaReady.subscribe(function() { michael@0: me.getInfo(function(info) { michael@0: //ignoring info.cordova returning from native, we should use value from cordova.version defined in cordova.js michael@0: //TODO: CB-5105 native implementations should not return info.cordova michael@0: var buildLabel = cordova.version; michael@0: me.available = true; michael@0: me.platform = info.platform; michael@0: me.version = info.version; michael@0: me.uuid = info.uuid; michael@0: me.cordova = buildLabel; michael@0: me.model = info.model; michael@0: channel.onCordovaInfoReady.fire(); michael@0: },function(e) { michael@0: me.available = false; michael@0: utils.alert("[ERROR] Error initializing Cordova: " + e); michael@0: }); michael@0: }); michael@0: } michael@0: michael@0: /** michael@0: * Get device info michael@0: * michael@0: * @param {Function} successCallback The function to call when the heading data is available michael@0: * @param {Function} errorCallback The function to call when there is an error getting the heading data. (OPTIONAL) michael@0: */ michael@0: Device.prototype.getInfo = function(successCallback, errorCallback) { michael@0: argscheck.checkArgs('fF', 'Device.getInfo', arguments); michael@0: exec(successCallback, errorCallback, "Device", "getDeviceInfo", []); michael@0: }; michael@0: michael@0: module.exports = new Device();