Author: vingtetun
Date: 2009-02-16 00:22:42 +0100 (Mon, 16 Feb 2009)
New Revision: 3645

Modified:
   software_suite_v2/tuxware/tuxhttpserver/trunk/src/data/js/TuxAPI.js
Log:
* Add some leds methods implementation

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-15 19:34:36 UTC (rev 3644)
+++ software_suite_v2/tuxware/tuxhttpserver/trunk/src/data/js/TuxAPI.js 
2009-02-15 23:22:42 UTC (rev 3645)
@@ -72,7 +72,6 @@
     return _eventHandlers;
   };
 
-
   var _fillEventHandlers = function(self){
     for( var i = 0 ; i < SW_NAME_DRIVER.length ; i++ ){
       _eventHandlers.insert( SW_NAME_DRIVER[i] );
@@ -94,7 +93,7 @@
 
   var _onDisconnect = function(){
     self.event.stop();
-  }
+  };
 
   this.server         = new TuxAPI_server(this, aHost, aPort);
   this.event          = new TuxAPI_event(this);
@@ -504,6 +503,8 @@
 ];
 
 
+
+
 /*****************************************************************************
  * Button Namespace
  * **************************************************************************/
@@ -515,6 +516,8 @@
 };
 
 
+
+
 /*****************************************************************************
  * Button Switch Namespace
  * **************************************************************************/
@@ -568,6 +571,8 @@
 };
 
 
+
+
 /*****************************************************************************
  * Button Remote Namespace
  * **************************************************************************/
@@ -622,6 +627,7 @@
 
 
 
+
 /*****************************************************************************
  * Access Namespace
  * **************************************************************************/
@@ -635,9 +641,9 @@
   },
 
   this.waitAcquire = function( aTimeout, aPriorityLevel ){
-    var start = date.getTime();
+    var start = (new Date()).getTime();
     while (!this.acquire(priorityLevel)){
-      if( start + aTimeout > date.getTime() ) return false;
+      if( start + (aTimeout*1000) > (new Date()).getTime() ) return false;
     }
     return True
   },
@@ -795,34 +801,39 @@
 
 
 
+
 /*****************************************************************************
  * TTS Namespace
  * **************************************************************************/
 var TuxAPI_TTS = function( self ){
   var _eventHandlers = self.getEventHandlers();
+  var _pitch    = 100;
+  var _locutor  = 'Ryan'; 
+  var _encoding = 'latin-1';
 
   this.isConsole = function(){
     return false;
   },
 
-  this.setEncoding = function(){
-    return TUXAPI_NOT_IMPLEMENTED;
+  this.setEncoding = function( anEncoding ){
+    _encoding = anEncoding;
   },
 
   this.getPitch = function(){
-    return TUXAPI_NOT_IMPLEMENTED;
+    return _pitch;
   },
 
-  this.setPitch = function(){
-    return TUXAPI_NOT_IMPLEMENTED;
+  this.setPitch = function( aPitch ){
+    if( aPitch >= 50 && aPitch <= 200 )
+      _pitch = aPitch;
   },
 
   this.getLocutor = function(){
-    return TUXAPI_NOT_IMPLEMENTED;
+    return _locutor;
   },
 
-  this.setLocutor = function(){
-    return TUXAPI_NOT_IMPLEMENTED;
+  this.setLocutor = function( aLocutor ){
+    _locutor = aLocutor;
   },
 
   this.speakAsync = function(){
@@ -834,7 +845,9 @@
   },
 
   this.speakFlush = function(){
-    return TUXAPI_NOT_IMPLEMENTED;
+    var rv = this.request( 'tts', 'flush', {} );
+    if (rv.get("result") == "Success") return true;
+    return false;
   },
 
   this.speak = function(){
@@ -842,41 +855,53 @@
   },
 
   this.stop = function(){
-    return TUXAPI_NOT_IMPLEMENTED;
+    var rv = this.request( 'tts', 'stop', {} );
+    if (rv.get("result") == "Success") return true;
+    return false;
   },
 
-  this.setPause = function(){
-    return TUXAPI_NOT_IMPLEMENTED;
+  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;
   },
 
   this.getVoices = function(){
     return TUXAPI_NOT_IMPLEMENTED;
   },
 
-  this.registerEventOnVoiceList = function(){
-    return TUXAPI_NOT_IMPLEMENTED;
+  this.registerEventOnVoiceList = function( aFunc ){
+    if( self.server.getClientLevel() == CLIENT_LEVEL_ANONYME ) return false;
+    return __eventHandlers.register(ST_NAME_VOICE_LIST, aFunc, null );
   },
 
   this.unregisterEventOnVoiceList = function(){
-    return TUXAPI_NOT_IMPLEMENTED;
+    if( self.server.getClientLevel() == CLIENT_LEVEL_ANONYME ) return false;
+    return __eventHandlers.unregister(ST_NAME_VOICE_LIST, null );
   },
 
-  this.registerEventOnSoundOn = function(){
-    return TUXAPI_NOT_IMPLEMENTED;
+  this.registerEventOnSoundOn = function( aFunc ){
+    if( self.server.getClientLevel() == CLIENT_LEVEL_ANONYME ) return false;
+    return __eventHandlers.register(ST_NAME_TTS_SOUND_STATE, aFunc, 'ON' );
   },
 
   this.unregisterEventOnSoundOn = function(){
-    return TUXAPI_NOT_IMPLEMENTED;
+    if( self.server.getClientLevel() == CLIENT_LEVEL_ANONYME ) return false;
+    return __eventHandlers.unregister(ST_NAME_TTS_SOUND_STATE, 'ON' );
   },
 
-  this.registerEventOnSoundOff = function(){
-    return TUXAPI_NOT_IMPLEMENTED;
+  this.registerEventOnSoundOff = function( aFunc ){
+    if( self.server.getClientLevel() == CLIENT_LEVEL_ANONYME ) return false;
+    return __eventHandlers.register(ST_NAME_TTS_SOUND_STATE, aFunc, 'OFF' );
   },
 
   this.unregisterEventOnSoundOff = function(){
-    return TUXAPI_NOT_IMPLEMENTED;
+    if( self.server.getClientLevel() == CLIENT_LEVEL_ANONYME ) return false;
+    return __eventHandlers.unregister(ST_NAME_TTS_SOUND_STATE, 'OFF' );
   }
-  
 };
 
 
@@ -884,8 +909,6 @@
 
 /*****************************************************************************
  * Server Namespace
- * TODO
- *  Should use an emit / notify instead of a direct call
  * **************************************************************************/
 var TuxAPI_server = function( self, aHost, aPort ){
   var _eventHandlers = self.getEventHandlers();
@@ -1060,11 +1083,12 @@
 };
 
 
+
+
 /*****************************************************************************
  * Event Handler Namespace
  * **************************************************************************/
 var TuxAPI_eventHandler = function(self){
-  
   var _funcList = [];
   var _context  = [];
 
@@ -1081,8 +1105,8 @@
   };
   
   var _sleep = function( aTime ){
-    var start = date.getTime();
-    while( start + aTime > date.getTime() ) true;
+    var start = (new Date()).getTime();
+    while( start + (aTime*1000) > (new Date()).getTime() ) true;
     return;
   };
 
@@ -1145,7 +1169,7 @@
 
   this.waitCondition = function( aCondition, aTimeout ){
     // We don't have any wait/pause/Thread.sleep function in javascript
-    // so we she do.... ugly...things...
+    // so we do.... ugly...things...
     // I have take a look at stuff name narrativeJS and Co but it is not really
     // an option in our case (or maybe i've made a mistake)
     return TUXAPI_NOT_IMPLEMENTED;
@@ -1159,6 +1183,7 @@
 
 
 
+
 /*****************************************************************************
  * Event Handlers Namespace
  * **************************************************************************/
@@ -1346,7 +1371,6 @@
     }
     return true;
   }
-  
 };
 
 
@@ -1362,14 +1386,23 @@
 };
 
 
+
+
 /*****************************************************************************
  * Resource LedBase
  * **************************************************************************/
 var TuxAPI_LedBase = function( self, aName ){
   var _eventHandlers = self.getEventHandlers();
 
+  var _floatToString = function( aFloat ){
+    var rv = aFloat.toString();
+    if( rv.indexOf( '.' ) == -1 )
+      rv += '.0';
+    
+    return rv;
+  };
+
   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;
@@ -1406,21 +1439,70 @@
   this.blinkDuring = function( aSpeed, aDuration, aFXType ){
     if( aFXType == undefined ) aFXType = LFX_NONE;
     var rv = this.blinkDuringAsync( aSpeed, aDuration , aFXType );
-    var start = date.getTime();
-    while( start + aDuration > date.getTime() ) true;
+    var start = (new Date()).getTime();
+    while( start + (aDuration * 1000) > (new Date()).getTime() ) true;
     return rv;
   },
 
-  this.blinkDuringAsync = function(){
-    return TUXAPI_NOT_IMPLEMENTED;
+  this.blinkDuringAsync = function( aSpeed, aDuration, aFXType ){
+    var perSec = aSpeed;
+    var count = parseInt( aDuration * perSec * 2);
+    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;
+    }
+    else{
+      var fxStep = 0;
+      if (aFXType == LFX_FADE)
+        fxStep = 10;
+      else if ( aFXType == LFX_STEP )
+        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 rv;
   },
 
-  this.blinkAsync = function(){
-    return TUXAPI_NOT_IMPLEMENTED;
+  this.blinkAsync = function( aSpeed, aCount, aFXType ){
+    aCount *= 2;
+    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;
+    }
+    else{
+      var fxStep = 0;
+      if (aFXType == LFX_FADE)
+        fxStep = 10;
+      else if ( aFXType == LFX_STEP )
+        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 rv;
   },
 
-  this.blink = function(){
-    return TUXAPI_NOT_IMPLEMENTED;
+  this.blink = function( aSpeed, aCount, aFXType ){
+    if( aFXType == undefined ) aFXType = LFX_NONE;
+    var rv = this.blinkAsync( aSpeed, aCount, aFXType );
+    if( rv ){
+      var delay = 1.0 / aSpeed;
+      var timeout = delay * aCount * 1000;
+      var start = (new Date()).getTime();
+      while( start + timeout > (new Date()).getTime() ) true;
+    }
+    return rv;
   },
 
   this.getState = function(){
@@ -1435,6 +1517,8 @@
 };
 
 
+
+
 /*****************************************************************************
  * Resource Flippers
  * **************************************************************************/
@@ -1690,33 +1774,42 @@
     var rv = self.status.requestOne( _name + '_state' );
     if (rv.get("result") == "Success"){
       rv = rv.get("data0").get("value");
-      return rv;
+      if( rv == 'True' ) return true;
+      return false;
     }
-    return 'False';
+    return true;
   },
 
-  this.waitConnected = function(){
-    return TUXAPI_NOT_IMPLEMENTED;
+  this.waitConnected = function( aTimeout ){
+    if( self.server.getClientLevel() == CLIENT_LEVEL_ANONYME ) return false;
+    if( this.getConnected() ) return true;
+    return _eventHandlers.waitCondition( _name, true, aTimeout );
   },
 
-  this.waitDisconnected = function(){
-    return TUXAPI_NOT_IMPLEMENTED;
+  this.waitDisconnected = function( aTimeout ){
+    if( self.server.getClientLevel() == CLIENT_LEVEL_ANONYME ) return false;
+    if( !this.getConnected() ) return true;
+    return _eventHandlers.waitCondition( _name, false, aTimeout );
   },
 
   this.registerEventOnConnected = function(){
-    return TUXAPI_NOT_IMPLEMENTED;
+    if( self.server.getClientLevel() == CLIENT_LEVEL_ANONYME ) return;
+    _eventHandlers.register( _name, aFunction, 'True' );
   },
 
   this.registerEventOnDisconnected = function(){
-    return TUXAPI_NOT_IMPLEMENTED;
+    if( self.server.getClientLevel() == CLIENT_LEVEL_ANONYME ) return;
+    _eventHandlers.register( _name, aFunction, 'False' );
   },
 
   this.unregisterEventOnConnected = function(){
-    return TUXAPI_NOT_IMPLEMENTED;
+    if( self.server.getClientLevel() == CLIENT_LEVEL_ANONYME ) return;
+    _eventHandlers.unregister( _name, aFunction, 'True' );
   },
 
   this.unregisterEventOnDisconnected = function(){
-    return TUXAPI_NOT_IMPLEMENTED;
+    if( self.server.getClientLevel() == CLIENT_LEVEL_ANONYME ) return;
+    _eventHandlers.unregister( _name, aFunction, '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