Author: vingtetun
Date: 2009-02-17 02:25:27 +0100 (Tue, 17 Feb 2009)
New Revision: 3652

Modified:
   software_suite_v2/tuxware/tuxhttpserver/trunk/src/data/js/TuxAPI.js
Log:
* Remove dependancy from HashTable and rewrite a cleaner TuxHTTPRequest, plus 
some minor correction

Modified: software_suite_v2/tuxware/tuxhttpserver/trunk/src/data/js/TuxAPI.js
===================================================================
--- software_suite_v2/tuxware/tuxhttpserver/trunk/src/data/js/TuxAPI.js 
2009-02-16 14:37:48 UTC (rev 3651)
+++ software_suite_v2/tuxware/tuxhttpserver/trunk/src/data/js/TuxAPI.js 
2009-02-17 01:25:27 UTC (rev 3652)
@@ -5,8 +5,9 @@
  * trying to be as closed as possible from the python one. 
  *
  * TODO
- * Rename the CommandRequest en TuxHTTPRequest to be consistent
  * Remove const keyword for other browser than moz
+ * Throw error instead of returning some false result
+ * Check all the default value
  *
  */
 
@@ -47,19 +48,19 @@
     verDict["api"] = this.getVersion();
     verDict["tuxhttpserver"]  = this.server.getVersion();
     rv = this.status.requestOne(ST_NAME_DRIVER_SYMB_VER);
-    verDict["libtuxdriver"] = rv.get("data0").get("value");
+    verDict["libtuxdriver"] = rv["data0"]["value"];
     rv = this.status.requestOne(ST_NAME_OSL_SYMB_VER)
-    verDict["libtuxosl"] = rv.get("data0").get("value");
+    verDict["libtuxosl"] = rv["data0"]["value"];
     rv = this.status.requestOne(ST_NAME_TUXCORE_SYMB_VER)
-    verDict["tuxcore"] = rv.get("data0").get("value");
+    verDict["tuxcore"] = rv["data0"]["value"];
     rv = this.status.requestOne(ST_NAME_TUXAUDIO_SYMB_VER)
-    verDict["tuxaudio"] = rv.get("data0").get("value");
+    verDict["tuxaudio"] = rv["data0"]["value"];
     rv = this.status.requestOne(ST_NAME_FUXUSB_SYMB_VER)
-    verDict["fuxusb"] = rv.get("data0").get("value");
+    verDict["fuxusb"] = rv["data0"]["value"];
     rv = this.status.requestOne(ST_NAME_FUXRF_SYMB_VER)
-    verDict["fuxrf"] = rv.get("data0").get("value");
+    verDict["fuxrf"] = rv["data0"]["value"];
     rv = this.status.requestOne(ST_NAME_TUXRF_SYMB_VER)
-    verDict["tuxrf"] = rv.get("data0").get("value");
+    verDict["tuxrf"] = rv["data0"]["value"];
 
     return verDict;
   };
@@ -526,8 +527,8 @@
 
   this.getState = function(){
     var rv = self.status.requestOne( aSwitchName );
-    if (rv.get("result") == "Success"){
-      if( rv.get("data0").get("value") == 'False') return false;
+    if (rv["result"] == "Success"){
+      if( rv["data0"]["value"] == 'False') return false;
       else return true;
     }
     return null;
@@ -581,8 +582,8 @@
 
   this.getState = function(){
     var rv = self.status.requestOne( ST_NAME_REMOTE_BUTTON );
-    if (rv.get("result") == "Success"){
-      return rv.get("data0").get("value");
+    if (rv["result"] == "Success"){
+      return rv["data0"]["value"];
     }
     return K_RELEASED;
   },
@@ -635,9 +636,7 @@
   this.acquire = function( aPriorityLevel ){
     if( aPriorityLevel == undefined ) aPriorityLevel = ACCESS_PRIORITY_NORMAL;
     if( self.server.getClientLevel() == CLIENT_LEVEL_ANONYME ) return false;
-    var rv = self.server.request( 'access', 'acquire' , { 
'priority_level':aPriorityLevel } );
-    if (rv.get("result") == "Success") return true;
-    return false;
+    return self.server.request( 'access', 'acquire' , { 
'priority_level':aPriorityLevel }, {}, {} );
   },
 
   this.waitAcquire = function( aTimeout, aPriorityLevel ){
@@ -645,42 +644,32 @@
     while (!this.acquire(priorityLevel)){
       if( start + (aTimeout*1000) > (new Date()).getTime() ) return false;
     }
-    return True
+    return true
   },
 
   this.forcingAcquire = function( aClientID ){
     if( self.server.getClientLevel() != CLIENT_LEVEL_ROOT ) return false;
-    var rv = self.server.request( 'access', 'forcing_acquire' , { 
'id_client':aClientID } );
-    if (rv.get("result") == "Success") return true;
-    return false;
+    return self.server.request( 'access', 'forcing_acquire' , { 
'id_client':aClientID }, {}, {});
   },
 
   this.release = function(){
     if( self.server.getClientLevel() == CLIENT_LEVEL_ANONYME ) return false;
-    var rv = self.server.request( 'access', 'release' , {} );
-    if (rv.get("result") == "Success") return true;
-    return false;
+    return self.server.request( 'access', 'release' , {}, {}, {} );
   },
 
   this.forcingRelease = function(){
     if( self.server.getClientLevel() != CLIENT_LEVEL_ROOT ) return false;
-    var rv = self.server.request( 'access', 'forcing_release' , {} );
-    if (rv.get("result") == "Success") return true;
-    return false;
+    return self.server.request( 'access', 'forcing_release' , {}, {}, {} );
   },
 
   this.lock = function(){
     if( self.server.getClientLevel() != CLIENT_LEVEL_ROOT ) return false;
-    var rv = self.server.request( 'access', 'lock' , {} );
-    if (rv.get("result") == "Success") return true;
-    return false;
+    return self.server.request( 'access', 'lock' , {}, {}, {} );
   },
 
   this.unLock = function(){
     if( self.server.getClientLevel() != CLIENT_LEVEL_ROOT ) return false;
-    var rv = self.server.request( 'access', 'unlock' , {} );
-    if (rv.get("result") == "Success") return true;
-    return false;
+    return self.server.request( 'access', 'unlock' , {}, {}, {} );
   }
 };
 
@@ -692,21 +681,15 @@
  * **************************************************************************/
 var TuxAPI_attitune = function( self ){
   this.load = function( aPath ){
-    var rv = self.server.request( 'attitune', 'load' , { 'path':aPath } );
-    if (rv.get("result") == "Success") return true;
-    return false;
+    return self.server.request( 'attitune', 'load' , { 'path':aPath }, {}, {} 
);
   },
 
   this.play = function( aBegin ){
-    var rv = self.server.request( 'attitune', 'play' , { 'begin':aBegin } );
-    if (rv.get("result") == "Success") return true;
-    return false;
+    return self.server.request( 'attitune', 'play' , { 'begin':aBegin }, {}, 
{} );
   },
 
   this.stop = function(){
-    var rv = self.server.request( 'attitune', 'stop' , {} );
-    if (rv.get("result") == "Success") return true;
-    return false;
+    return self.server.request( 'attitune', 'stop' , {}, {}, {} );
   },
 
   this.loadAndPlay = function( aPath ){
@@ -725,9 +708,7 @@
   var _eventHandlers = self.getEventHandlers();
 
   this.playAsync = function(){
-    var rv = self.server.request( 'sound_flash', 'play' , { 'track': aTrack, 
'volume':aVolume } );
-    if (rv.get("result") == "Success") return true;
-    return false;
+    return self.server.request( 'sound_flash', 'play' , { 'track': aTrack, 
'volume':aVolume }, {}, {} );
   },
 
   this.play = function( aTrack, aVolume ){
@@ -738,9 +719,7 @@
   },
 
   this.reflash = function( someTracks ){
-    var rv = self.server.request( 'sound_flash', 'reflash' , { 'tracks': 
someTracks } );
-    if (rv.get("result") == "Success") return true;
-    return false;
+    return self.server.request( 'sound_flash', 'reflash' , { 'tracks': 
someTracks }, {}, {} );
   }
 };
 
@@ -758,9 +737,7 @@
     rawCommand += ':0x' + b2;
     rawCommand += ':0x' + b3;
     rawCommand += ':0x' + b4;
-    var rv = self.server.request( 'macro', 'play' , { 'macro':rawCommand } );
-    if (rv.get("result") == "Success") return true;
-    return false;
+    return self.server.request( 'macro', 'play' , { 'macro':rawCommand }, {}, 
{} );
   }
 };
 
@@ -774,9 +751,7 @@
   var _eventHandlers = self.getEventHandlers();
 
   this.playAsync = function( aBegin, aEnd, aPath ){
-    var rv = self.server.request( 'wav', 'play' , { 'begin':aBegin, 
'end':aEnd, 'path':aPath } );
-    if (rv.get("result") == "Success") return true;
-    return false;
+    return self.server.request( 'wav', 'play' , { 'begin':aBegin, 'end':aEnd, 
'path':aPath }, {}, {} );
   },
 
   this.play = function( aBegin, aEnd, aPath ){
@@ -787,15 +762,11 @@
   },
 
   this.stop = function(){
-    var rv = self.server.request( 'wav', 'stop' , {} );
-    if (rv.get("result") == "Success") return true;
-    return false;
+    return self.server.request( 'wav', 'stop' , {}, {}, {} );
   },
   
   this.setPause = function( aValue ){
-    var rv = self.server.request( 'wav', 'pause' , { 'value': aValue } );
-    if (rv.get("result") == "Success") return true;
-    return false;
+    return self.server.request( 'wav', 'pause' , { 'value': aValue }, {}, {} );
   }
 };
 
@@ -836,41 +807,83 @@
     _locutor = aLocutor;
   },
 
-  this.speakAsync = function(){
-    return TUXAPI_NOT_IMPLEMENTED;
+  this.speakAsync = function( aText, aLocutor, aPitch ){
+    if( aLocutor != undefined ) this.setLocutor( aLocutor );
+    if( !self.server.request( 'tts', 'locutor_name', { 'name':_locutor }, {}, 
{} ) ) return false;
+
+    if( aPitch != undefined )   this.setPitch( aPitch );
+    if( !self.server.request( 'tts', 'pitch', { 'value':_locutor }, {}, {} ) ) 
return false;
+
+    //XXX Do the encoding stuff
+
+    // Remove ending lines
+    aText = aText.replace('\n', '.');
+
+    // Perform the speech
+    var mText = escape( aText );
+    var result = {};
+    if( !self.server.request( 'tts', 'speak', { 'text':mText }, {}, result ) ) 
return false;
+
+    if( self.server.getClientLevel() == CLIENT_LEVEL_ANONYME ) return result;
+
+    // Wait the speak status
+    var rv = __eventHandlers.waitCondition(ST_NAME_SPEAK_STATUS, null, 5.0)
+    if (!rv ) return False
+    
+    // Get the speak status
+    rv = self.status.requestOne(ST_NAME_SPEAK_STATUS)
+    if (rv["value"] == "NoError") return true;
+    return false;
   },
 
-  this.speakPush = function(){
-    return TUXAPI_NOT_IMPLEMENTED;
+  this.speakPush = function( aText ){
+    //XXX Do the encoding stuff
+
+    // Remove ending lines
+    aText = aText.replace('\n', '.');
+
+    // Perform the speech
+    var mText = escape( aText );
+    return self.server.request( 'tts', 'stack_speak', { 'text':mText }, {}, {} 
);
   },
 
   this.speakFlush = function(){
-    var rv = this.request( 'tts', 'flush', {} );
-    if (rv.get("result") == "Success") return true;
-    return false;
+    return self.server.request( 'tts', 'flush', {}, {}, {} );
   },
 
-  this.speak = function(){
-    return TUXAPI_NOT_IMPLEMENTED;
+  this.speak = function( aText, aLocutor, aPitch ){
+    if ( this.speakAsync( aText, aLocutor, aPitch ) ){
+      if( self.server.getClientLevel() == CLIENT_LEVEL_ANONYME ) return true;
+      _eventHandlers.waitCondition(ST_NAME_TTS_SOUND_STATE, "ON", 1.0)
+      var rv = self.status.requestOne(ST_NAME_TTS_SOUND_STATE);
+      if (rv["value"] == "ON")
+        _eventHandlers.waitCondition(ST_NAME_TTS_SOUND_STATE, "OFF", 9.0)
+      return true;
+    }
+    return false;
   },
 
   this.stop = function(){
-    var rv = this.request( 'tts', 'stop', {} );
-    if (rv.get("result") == "Success") return true;
-    return false;
+    return self.server.request( 'tts', 'stop', {}, {}, {} );
   },
 
   this.setPause = function( aValue ){
     if( aValue == undefined ) aValue = true;
     if( aValue ) aValue = 'True';
     else aValue = 'False';
-    var rv = this.request( 'tts', 'pause', { 'value':aValue } );
-    if (rv.get("result") == "Success") return true;
-    return false;
+    return self.server.request( 'tts', 'pause', { 'value':aValue }, {}, {} );
   },
 
   this.getVoices = function(){
-    return TUXAPI_NOT_IMPLEMENTED;
+    var rv = [];
+    var result = {};
+    if( !self.server.request( 'tts', 'voices', {}, {}, result ) ) return [];
+    var dataCount = parseInt(result['data_count']);
+    for( var i = 0 ; i < dataCount ; i++){
+      rv.push( result['data' + i]['locutor'] );
+      rv[i] = rv[i].substring(0, rv[i].length - 2);
+    }
+    return rv;
   },
 
   this.registerEventOnVoiceList = function( aFunc ){
@@ -912,6 +925,7 @@
  * **************************************************************************/
 var TuxAPI_server = function( self, aHost, aPort ){
   var _eventHandlers = self.getEventHandlers();
+  var _sender = new TuxHTTPRequest( aHost, aPort );
 
   this.autoConnect = function( aLevel, aName, aPasswd ){
     _autoConnectTimer = setInterval( function(){
@@ -922,11 +936,12 @@
   this.connect = function tuxConnect( aLevel, aName, aPasswd ){
     if (_connected) return true;
 
-    var rv = this.request( 'client', 'create', {'level':aLevel, 'name':aName, 
'passwd':aPasswd } );
+    var result = {};
+    this.request( 'client', 'create', {'level':aLevel, 'name':aName, 
'passwd':aPasswd } , {}, result, true);
     var id_client = "-1";
 
-    if (rv.get("result") == "Success"){
-      id_client = rv.get("data0").get("client_id");
+    if (result["result"] == "Success"){
+      id_client = result["data0"]["client_id"];
     }
 
     if (id_client != "-1"){
@@ -960,8 +975,7 @@
 
     clearInterval( _autoConnectTimer );
     _connected = false;
-    var rv = this.request( 'client', 'destroy', { 'passwd':this._passwd } );
-    if (rv.get("result") == "Success") {
+    if( this.request( 'client', 'destroy', { 'passwd':this._passwd }, {}, {} ) 
){
       _eventHandlers.emit( ST_NAME_API_CONNECT, ['False',0] );
       return true;
     }
@@ -991,27 +1005,78 @@
   },
 
   this.getVersion = function(){
-    var rv = send_command( _base_url + 'version?' );
+    
+    //XXX to do
+    var result = {};
+    this.request( null, 'version', {}, {}, result );
 
-    if (rv.get("result") == "Success")
-      return rv.get("data0").get("version");
+    if (result["result"] == "Success")
+      return result["data0"]["version"];
 
     return null;
   },
 
-  //request(self, cmd, varStruct = {}, varResult = {}, forceExec = False):
-  this.request = function( aModule, aCommand , someParams ){
-    //if ( !this._connected ) return false;
+  this.request = function( aModule, aCommand , someParams, aStruct, aResult, 
aForceExec ){
+    if( aForceExec == undefined ) aForceExec = false;
+    if( ! aForceExec )
+      if (!this.getConnected() ) return false;
 
-    var cmd = _base_url + aModule + '/' + aCommand + '?';
+    // Build the request
+    if( aModule != null )
+      var cmd = _base_url + aModule + '/' + aCommand + '?';
+    else
+      var cmd = _base_url + aCommand + '?';
+      
     var params = '';
-
     for (param in someParams){ 
       params += param + '=' + someParams[param] + '&';
     } 
     //XXX Check the last char if it is a & and remove it
+
+    var rv = _sender.request( cmd + params );
+    if (rv['server_run'] != "Success") // Server seems to be disconnected
+      return false;
+    if (rv['result'] != "Success") return false;
+
+
+    function getValueFromStructure( aStructure, aValuePath ){
+      var pathList  = aValuePath.split('.');
+      var node      = aStructure;
+      var result    = null;
   
-    return send_command( cmd + params );
+      for( var i = 0 ; i < pathList.length ; i++ ){
+        if( node[pathList[i]] ){
+          if( i == pathList.length - 1){
+            result = node[pathList[i]];
+            return result;
+          }
+          else
+            node = node[pathList[i]];
+        }
+        else
+          return result;
+      }
+
+      return result;
+    }
+  
+
+    // Get values from paths
+    var lenStruct = 0;
+    for (var k in aStruct) lenStruct++;
+    if( lenStruct ){
+      for (var key in aStruct){
+        var valuePath = aStruct[key];
+        var value     = getValueFromStructure( aStruct, valuePath );
+        aResult[key]  = value;
+      }
+    }
+    else{
+      for (var key in rv){
+        aResult[key]  = rv[key];
+      }
+    }
+    return true;
   }
 
   // Private variables
@@ -1030,7 +1095,109 @@
 
 
 
+
 /*****************************************************************************
+ * HTTPRequest Namespace
+ * **************************************************************************/
+var TuxHTTPRequest = function( aHost, aPort ){
+  var _sendCommand = function( aUrl, aMethod ){
+    if (window.XMLHttpRequest){ // Mozilla, Safari,...
+      var xhr = new XMLHttpRequest();
+      if (xhr.overrideMimeType) xhr.overrideMimeType('text/xml');
+    }
+    else{
+      if (window.ActiveXObject){ // IE
+        try{
+          var xhr = new ActiveXObject("Msxml2.XMLHTTP");
+        }
+        catch(e){
+          try{
+            var xhr = new ActiveXObject("Microsoft.XMLHTTP");
+          }
+          catch (e){}
+        }
+      }
+    }
+    
+    if (!xhr){
+      alert('Cannot create XMLHTTP instance');
+      return false;
+    }
+    
+    xhr.open( aMethod, aUrl, false);
+    try{
+      xhr.send(null);
+    }
+    catch (e){
+      return false;
+    }
+    if( xhr.status != 200 )
+      return false;
+
+    return xhr;
+  };
+
+  var _parseXml = function( anXML ){
+    var struct = {
+      'result': 'Failed',
+      'data_count': 0,
+      'server_run': 'Success'
+    }
+
+    var dataCount = 0;
+    var dataNodeName = '';
+    
+    var root = anXML.firstChild;
+    for( var i = 0 ; i < root.childNodes.length ; i++ ){
+      var node = root.childNodes[i];
+      if( node.firstChild.nodeValue ){
+        struct[node.nodeName] = node.firstChild.data;
+      }
+      else{
+        var subStruct = {};
+        for( var j = 0 ; j < node.childNodes.length ; j++ ){
+          var node1 = node.childNodes[j];
+          subStruct[node1.nodeName] = node1.firstChild.data;
+          if( node.nodeName == "data" )
+            var dataNodeName = "data" + dataCount++;
+          else
+            var dataNodeName = node.nodeName
+          struct[dataNodeName] = subStruct;
+        }
+      }
+    }
+    
+    struct['data_count'] = dataCount;
+
+    return struct;
+  };
+
+  this.request = function( aCmd, aMethod ){
+    if( aMethod == undefined ) aMethod = 'GET';
+    var xmlStruct = {
+      'result': 'Failed',
+      'data_count': 0,
+      'server_run': 'Failed',
+    }
+    var xml = _sendCommand( aCmd, aMethod );
+    if( !xml ){
+      return xmlStruct;
+    }
+
+    if(xml.getResponseHeader('Content-Length') == 0 ){
+      xmlStruct['server_run'] = 'Success';
+    }
+    else{
+      xmlStruct = _parseXml( xml.responseXML );
+    }
+
+    return xmlStruct;
+  };
+};
+
+
+
+/*****************************************************************************
  * Event Namespace
  * **************************************************************************/
 var TuxAPI_event = function(self){
@@ -1062,22 +1229,22 @@
 
     var events_struct = self.status.events();
 
-    if (events_struct.get("server_run") == "Failed"){
+    if (events_struct["server_run"] == "Failed"){
       self.server.disconnect();
     }
 
-    if (events_struct.get("result") != "Success"){
+    if (events_struct["result"] != "Success"){
       return; // No event was found
     }
 
-    var event_count = events_struct.get("data_count");
+    var event_count = events_struct["data_count"];
     var cbk, event_name, data_node, event_struct;
 
     for ( var i = 0 ; i < event_count ; i++ ){
       data_node = 'data' + i;
-      event_struct = events_struct.get(data_node);
-      event_name = event_struct.get("name");
-      self.event.handler.emit( event_name, [event_struct.get('value'), 
event_struct.get('delay') ] );
+      event_struct = events_struct[data_node];
+      event_name = event_struct["name"];
+      self.event.handler.emit( event_name, [event_struct['value'], 
event_struct['delay'] ] );
     }
   };
 };
@@ -1280,15 +1447,11 @@
   },
 
   this.leftOnAsync = function( aCount ){
-    var rv = self.server.request( 'spinning', 'left_on' , { 'count':aCount } );
-    if (rv.get("result") == "Success") return true;
-    return false;
+    return self.server.request( 'spinning', 'left_on' , { 'count':aCount }, 
{}, {} );
   },
 
   this.leftOnDuringAsync = function( aCount ){
-    var rv = self.server.request( 'spinning', 'left_on_during' , { 
'duration':aDuration } );
-    if (rv.get("result") == "Success") return true;
-    return false;
+    return self.server.request( 'spinning', 'left_on_during' , { 
'duration':aDuration }, {}, {} );
   },
 
   this.rightOn = function( aCount ){
@@ -1306,27 +1469,19 @@
   },
 
   this.rightOnAsync = function( aCount ){
-    var rv = self.server.request( 'spinning', 'right_on' , { 'count':aCount } 
);
-    if (rv.get("result") == "Success") return true;
-    return false;
+    return self.server.request( 'spinning', 'right_on' , { 'count':aCount }, 
{}, {} );
   },
 
   this.rigthOnDuringAsync = function(){
-    var rv = self.server.request( 'spinning', 'right_on_during' , { 
'duration':aDuration } );
-    if (rv.get("result") == "Success") return true;
-    return false;
+    return self.server.request( 'spinning', 'right_on_during' , { 
'duration':aDuration }, {}, {} );
   },
 
   this.setSpeed = function( aSpeed ){
-    var rv = self.server.request( 'spinning', 'speed' , { 'value':aSpeed } );
-    if (rv.get("result") == "Success") return true;
-    return false;
+    return self.server.request( 'spinning', 'speed' , { 'value':aSpeed }, {}, 
{} );
   },
 
   this.off = function(){
-    var rv = self.server.request( 'spinning', 'off' , {} );
-    if (rv.get("result") == "Success") return true;
-    return false;
+    return self.server.request( 'spinning', 'off' , {}, {}, {} );
   },
 
   this.waitLeftMovingOff = function( aTimeout ){
@@ -1344,8 +1499,8 @@
 
     var rv = self.status.requestOne("spinning_direction");
 
-    if (rv.get("result") == "Success"){
-      return rv.get("data0").get("value");
+    if (rv["result"] == "Success"){
+      return rv["data0"]["value"];
     }
     return null;
   },
@@ -1353,8 +1508,8 @@
   this.getLeftMovingState = function(){
     if ( !self.server.getConnected() ) return false;
     var rv = self.status.requestOne("spin_left_motor_on");
-    if (rv.get("result") == "Success"){
-      if (rv.get("data0").get("value") == "0"){
+    if (rv["result"] == "Success"){
+      if (rv["data0"]["value"] == "0"){
         return false;
       }
     }
@@ -1364,8 +1519,8 @@
   this.getRightMovingState = function(){
     if ( !self.server.getConnected() ) return false;
     var rv = self.status.requestOne("spin_right_motor_on");
-    if (rv.get("result") == "Success"){
-      if (rv.get("data0").get("value") == "0"){
+    if (rv["result"] == "Success"){
+      if (rv["data0"]["value"] == "0"){
         return false;
       }
     }
@@ -1404,21 +1559,18 @@
 
   var _changeIntensity = function( aType, anIntensity ){
     if( aType == LFX_NONE ){
-      var rv = self.server.request( 'leds', 'on' , { 'intensity':anIntensity, 
'leds':aName } );
-      if (rv.get("result") == "Success") return true;
-      return false;
+      return self.server.request( 'leds', 'on' , { 'intensity':anIntensity, 
'leds':aName }, {}, {} );
     }
     else{ //some effect
       var fxStep = 0;
       if( aType == LFX_FADE ) fxStep = 10;
       else if( aType == LFX_STEP ) fxStep = 3;
       var fcxType = LFXEX_GRADIENT_NBR;
-      var rv = self.server.request( 'leds', 'set' , 
-        { 'fx_speed':'0.5', 'fx_step':fxStep, 'fx_type':aType, 
'intensity':anIntensity, 'leds':aName }
-       );
-      if (rv.get("result") == "Success") return true;
-      return false;
+      return self.server.request( 'leds', 'set' , 
+        { 'fx_speed':'0.5', 'fx_step':fxStep, 'fx_type':aType, 
'intensity':anIntensity, 'leds':aName },
+        {}, {} );
     }
+    return false;
   };
 
 
@@ -1450,9 +1602,7 @@
     var delay = parseFloat(1.0 / perSec);
 
     if (aFXType == LFX_NONE) {
-      var rv = self.server.request( 'leds', 'blink' , { 'leds':aName, 
'count':aCount, 'delay':_floatToString(delay) } );
-      if (rv.get("result") == "Success") rv = true; 
-      else rv = false;
+      return self.server.request( 'leds', 'blink' , { 'leds':aName, 
'count':aCount, 'delay':_floatToString(delay) }, {}, {} );
     }
     else{
       var fxStep = 0;
@@ -1462,11 +1612,9 @@
         fxStep = 2;
       var fxCType = LFXEX_GRADIENT_NBR;
       var fxSpeed = _floatToString(parseFloat(delay / 3.0));
-      var rv = self.server.request( 'leds', 'pulse' , { 'count':aCount, 
'fx_speed':fxSpeed, 'fx_step':fxStep, 'fx_type':fxCType, 'leds':aName, 
'max_intensity':'1.0', 'min_intensity':'0.0', 'period':_floatToString(delay) } 
);
-      if (rv.get("result") == "Success") rv = true; 
-      else rv = false;
+      return self.server.request( 'leds', 'pulse' , { 'count':aCount, 
'fx_speed':fxSpeed, 'fx_step':fxStep, 'fx_type':fxCType, 'leds':aName, 
'max_intensity':'1.0', 'min_intensity':'0.0', 'period':_floatToString(delay) }, 
{}, {} );
     }
-    return rv;
+    return false;
   },
 
   this.blinkAsync = function( aSpeed, aCount, aFXType ){
@@ -1474,9 +1622,7 @@
     var delay = parseFloat(1.0 / parseFloat(aSpeed));
 
     if (aFXType == LFX_NONE) {
-      var rv = self.server.request( 'leds', 'blink' , { 'leds':aName, 
'count':aCount, 'delay':_floatToString(delay) } );
-      if (rv.get("result") == "Success") rv = true; 
-      else rv = false;
+      return self.server.request( 'leds', 'blink' , { 'leds':aName, 
'count':aCount, 'delay':_floatToString(delay) }, {}, {} );
     }
     else{
       var fxStep = 0;
@@ -1486,11 +1632,9 @@
         fxStep = 2;
       var fxCType = LFXEX_GRADIENT_NBR;
       var fxSpeed = parseFloat(delay / 3.0);
-      var rv = self.server.request( 'leds', 'pulse' , { 'count':aCount, 
'fx_speed':_floatToString(fxSpeed), 'fx_step':fxStep, 'fx_type':fxCType, 
'leds':aName, 'max_intensity':'1.0', 'min_intensity':'0.0', 
'period':_floatToString(delay) } );
-      if (rv.get("result") == "Success") rv = true; 
-      else rv = false;
+      return self.server.request( 'leds', 'pulse' , { 'count':aCount, 
'fx_speed':_floatToString(fxSpeed), 'fx_step':fxStep, 'fx_type':fxCType, 
'leds':aName, 'max_intensity':'1.0', 'min_intensity':'0.0', 
'period':_floatToString(delay) }, {}, {} );
     }
-    return rv;
+    return false;
   },
 
   this.blink = function( aSpeed, aCount, aFXType ){
@@ -1509,8 +1653,8 @@
     var led = aName.split('_')[1].toLowerCase();
     var rv = self.status.requestOne(led + '_led_state');
 
-    if (rv.get("result") == "Success"){
-      return rv.get("data0").get("value");
+    if (rv["result"] == "Success"){
+      return rv["data0"]["value"];
     }
     return null;
   }
@@ -1531,9 +1675,7 @@
   },
 
   this.onAsync = function( aCount, aFinalState ){
-    var rv = self.server.request( 'flippers', 'on' , { 'count':aCount, 
'final_state':aFinalState } );
-    if (rv.get("result") == "Success") return true;
-    return false;
+    return self.server.request( 'flippers', 'on' , { 'count':aCount, 
'final_state':aFinalState }, {}, {} );
   },
 
   this.onDuring = function( aDuration, aFinalState ){
@@ -1544,33 +1686,23 @@
   },
 
   this.onDuringAsync = function( aDuration, aFinalState ){
-    var rv = self.server.request( 'flippers', 'on_during' , { 
'duration':aDuration, 'final_state':aFinalState } );
-    if (rv.get("result") == "Success") return true;
-    return false;
+    return self.server.request( 'flippers', 'on_during' , { 
'duration':aDuration, 'final_state':aFinalState }, {}, {} );
   },
 
   this.setSpeed = function( aSpeed ){
-    var rv = self.server.request( 'flippers', 'speed' , { 'value':aSpeed } );
-    if (rv.get("result") == "Success") return true;
-    return false;
+    return self.server.request( 'flippers', 'speed' , { 'value':aSpeed }, {}, 
{} );
   },
 
   this.off = function(){
-    var rv = self.server.request( 'flippers', 'off' , {} );
-    if (rv.get("result") == "Success") return true;
-    return false;
+    return self.server.request( 'flippers', 'off' , {}, {}, {} );
   },
 
   this.up = function(){
-    var rv = self.server.request( 'flippers', 'up' , {} );
-    if (rv.get("result") == "Success") return true;
-    return false;
+    return self.server.request( 'flippers', 'up' , {}, {}, {} );
   },
 
   this.down = function(){
-    var rv = self.server.request( 'flippers', 'down' , {} );
-    if (rv.get("result") == "Success") return true;
-    return false;
+    return self.server.request( 'flippers', 'down' , {}, {}, {} );
   },
 
   this.waitMovingOff = function( aTimeout ){
@@ -1589,8 +1721,8 @@
 
     var rv = self.status.requestOne("flippers_position");
 
-    if (rv.get("result") == "Success"){
-      return rv.get("data0").get("value");
+    if (rv["result"] == "Success"){
+      return rv["data0"]["value"];
     }
     return null;
   },
@@ -1600,8 +1732,8 @@
 
     var rv = self.status.requestOne("flippers_remaining_movements");
 
-    if (rv.get("result") == "Success"){
-      if (rv.get("data0").get("value") == "0"){
+    if (rv["result"] == "Success"){
+      if (rv["data0"]["value"] == "0"){
         return false;
       }
     }
@@ -1621,56 +1753,46 @@
 
   this.on = function( aCount, aFinalState){
     if (!this.onAsync( aCount, aFinalState ) ) return false;
-    if (self.__parent.server.getClientLevel() == CLIENT_LEVEL_ANONYME) return 
true;
+    if (self.server.getClientLevel() == CLIENT_LEVEL_ANONYME) return true;
     var timeout = aCount * 5.0;
     return this.waitMovingOff( timeout );
   },
 
   this.onAsync = function(){
-    var rv = self.server.request( aName, 'on' , { 'count':aCount, 
'final_state':aFinalState } );
-    if (rv.get("result") == "Success") return true;
-    return false;
+    return self.server.request( aName, 'on' , { 'count':aCount, 
'final_state':aFinalState }, {}, {} );
   },
 
   this.onDuring = function( aDuration, aFinalState){
     if (!this.onDuringAsync( aCount, aFinalState ) ) return false;
-    if (self.__parent.server.getClientLevel() == CLIENT_LEVEL_ANONYME) return 
true;
+    if (self.server.getClientLevel() == CLIENT_LEVEL_ANONYME) return true;
     return true;
     //_eventHandlers.waitCondition();
     return true;
   },
 
   this.onDuringAsync = function(){
-    var rv = self.server.request( aName, 'on_during' , { 'duration':aDuration, 
'final_state':aFinalState } );
-    if (rv.get("result") == "Success") return true;
-    return false;
+    return self.server.request( aName, 'on_during' , { 'duration':aDuration, 
'final_state':aFinalState }, {}, {} );
   },
 
   this.off = function(){
-    var rv = self.server.request( aName, 'off' , {} );
-    if (rv.get("result") == "Success") return true;
-    return false;
+    return self.server.request( aName, 'off' , {}, {}, {} );
   },
 
   this.open = function(){
-    var rv = self.server.request( aName, 'open' , {} );
-    if (rv.get("result") == "Success") return true;
-    return false;
+    return self.server.request( aName, 'open' , {}, {}, {} );
   },
 
   this.close = function(){
-    var rv = self.server.request( aName, 'close' , {} );
-    if (rv.get("result") == "Success") return true;
-    return false;
+    return self.server.request( aName, 'close' , {}, {}, {} );
   },
 
   this.waitMovingOff = function( aTimeout ){
-    if (self.__parent.server.getClientLevel() == CLIENT_LEVEL_ANONYME) return 
true;
+    if (self.server.getClientLevel() == CLIENT_LEVEL_ANONYME) return true;
     return _eventHandlers.waitCondition( aMVName, false, aTimeout );
   },
 
   this.waitPosition = function( aPosition, aTimeout ){
-    if (self.__parent.server.getClientLevel() == CLIENT_LEVEL_ANONYME) return 
true;
+    if (self.server.getClientLevel() == CLIENT_LEVEL_ANONYME) return true;
     if( this.getPosition() == aPosition ) return true;
     return _eventHandlers.waitCondition( aPositionName, aPosition, aTimeout );
   },
@@ -1680,8 +1802,8 @@
 
     var rv = self.status.requestOne( aPositionName );
 
-    if (rv.get("result") == "Success"){
-      return rv.get("data0").get("value");
+    if (rv["result"] == "Success"){
+      return rv["data0"]["value"];
     }
 
     return null;
@@ -1692,8 +1814,8 @@
 
     var rv = self.status.requestOne( aMVName );
 
-    if (rv.get("result") == "Success"){
-      if (rv.get("data0").get("value") == "0"){
+    if (rv["result"] == "Success"){
+      if (rv["data0"]["value"] == "0"){
         return false;
       }
       else
@@ -1712,21 +1834,15 @@
 * **************************************************************************/
 var TuxAPI_ir = function(self){
   this.on = function(){
-    var rv = self.server.request( 'ir', 'on' , {} );
-    if (rv.get("result") == "Success") return true;
-    return false;
+    return self.server.request( 'ir', 'on' , {}, {}, {} );
   },
 
   this.off = function(){
-    var rv = self.server.request( 'ir', 'off' , {} );
-    if (rv.get("result") == "Success") return true;
-    return false;
+    return self.server.request( 'ir', 'off' , {}, {}, {} );
   },
 
   this.send = function( anAddress, aCommand ){
-    var rv = self.server.request( 'ir', 'send' , { 'address':anAddress, 
'command':aCommand } );
-    if (rv.get("result") == "Success") return true;
-    return false;
+    return self.server.request( 'ir', 'send' , { 'address':anAddress, 
'command':aCommand }, {}, {} );
   }
 };
 
@@ -1740,19 +1856,25 @@
   var _eventHandlers = self.getEventHandlers();
 
   this.events = function(){
-    return self.server.request( 'status', 'events', {} );
+    var result = {};
+    self.server.request( 'status', 'events', {}, {}, result );
+    return result;
   },
 
   this.requestOne = function( aStatusName ){
-    return self.server.request( 'status', 'request_one', { 
'status_name':aStatusName } );
+    var result = {};
+    self.server.request( 'status', 'request_one', { 'status_name':aStatusName 
}, {}, result );
+    return result;
   },
 
   this.requestAll = function(){
-    return self.server.request( 'status', 'request_all', {} );
+    var result = {};
+    self.server.request( 'status', 'request_all', {}, {}, result );
+    return result;
   },
 
   this.send = function( aName, aValue ){
-    return self.server.request( 'status', 'send', { 'name':aName, 
'value':aValue } );
+    return self.server.request( 'status', 'send', { 'name':aName, 
'value':aValue }, {}, {} );
   },
 
   this.wait = function( aStatusName, aCondition, aTimeout ){
@@ -1772,8 +1894,8 @@
 
   this.getConnected = function(){
     var rv = self.status.requestOne( _name + '_state' );
-    if (rv.get("result") == "Success"){
-      rv = rv.get("data0").get("value");
+    if (rv["result"] == "Success"){
+      rv = rv["data0"]["value"];
       if( rv == 'True' ) return true;
       return false;
     }


------------------------------------------------------------------------------
Open Source Business Conference (OSBC), March 24-25, 2009, San Francisco, CA
-OSBC tackles the biggest issue in open source: Open Sourcing the Enterprise
-Strategies to boost innovation and cut costs with open source participation
-Receive a $600 discount off the registration fee with the source code: SFAD
http://p.sf.net/sfu/XcvMzF8H
_______________________________________________
Tux-droid-svn mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/tux-droid-svn

Reply via email to