Author: vingtetun
Date: 2009-02-03 21:34:05 +0100 (Tue, 03 Feb 2009)
New Revision: 3554
Modified:
software_suite_v2/tuxware/tuxhttpserver/trunk/src/data/js/TuxAPI.js
Log:
* Added a bunch of const from TuxAPIConst.py and change the way the event are
handle to conform to the python source code
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-03 11:31:40 UTC (rev 3553)
+++ software_suite_v2/tuxware/tuxhttpserver/trunk/src/data/js/TuxAPI.js
2009-02-03 20:34:05 UTC (rev 3554)
@@ -4,9 +4,7 @@
* trying to be as closed as possible from the python one.
*
* TODO
- * Do we really need the hashTable ? a simple object should do the job!
- * _retrieve event should be private
- * Rename the CommandRequest en TuxHTTPRequest
+ * Rename the CommandRequest en TuxHTTPRequest to be consistent
*
*/
@@ -16,53 +14,84 @@
/*****************************************************************************
* Base TuxAPI Class
* **************************************************************************/
+/**
+ * Main module class to control Tuxdroid.
+ */
function TuxAPI( aHost, aPort ){
if( aHost == undefined ) aHost = '127.0.0.1';
if( aPort == undefined ) aPort = 270;
- var versionName = "tuxisalive";
- var versionNumber = "0.2.1";
- this.server = new TuxAPI_server(this, aHost, aPort);
- this.event = new TuxAPI_event(this);
- this.status = new TuxAPI_status(this);
- this.access = new TuxAPI_access(this);
- this.mouth = new TuxAPI_MouthEyes(this, 'mouth');
- this.eyes = new TuxAPI_MouthEyes(this, 'eyes');
- this.flippers = new TuxAPI_flippers(this);
- this.leds = new TuxAPI_leds(this);
- this.spinning = new TuxAPI_spinning(this);
- this.radio = new TuxAPI_DongleRadio(this, 'radio');
- this.dongle = new TuxAPI_DongleRadio(this, 'dongle');
- this.ir = new TuxAPI_ir(this);
- this.attitune = new TuxAPI_attitune(this);
- this.tts = new TuxAPI_TTS(this);
- this.soundFlash = new TuxAPI_soundFlash(this);
- this.button = new TuxAPI_Button(this);
- this.wav = new TuxAPI_WAV(this);
- this.raw = new TuxAPI_RAW(this);
+ var versionName = "tuxisalive";
+ var versionNumber = "0.2.1";
+ var _eventHandlers = new TuxAPI_eventHandlers(self);
+
+ /*
+ * Get the version string of the api.
+ * @return: the version string.
+ */
this.getVersion = function(){
return versionName + '-' + versionNumber;
};
+ /*
+ * Get the version string of all components from Tuxware.
+ * @return: a dictionary of string:string.
+ */
this.getVersions = function(){
- //TuxAPI.py:166
- return TUXAPI_NOT_IMPLEMENTED;
+ var verDict = {};
+ var rv = null;
+ 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");
+ rv = this.status.requestOne(ST_NAME_OSL_SYMB_VER)
+ verDict["libtuxosl"] = rv.get("data0").get("value");
+ rv = this.status.requestOne(ST_NAME_TUXCORE_SYMB_VER)
+ verDict["tuxcore"] = rv.get("data0").get("value");
+ rv = this.status.requestOne(ST_NAME_TUXAUDIO_SYMB_VER)
+ verDict["tuxaudio"] = rv.get("data0").get("value");
+ rv = this.status.requestOne(ST_NAME_FUXUSB_SYMB_VER)
+ verDict["fuxusb"] = rv.get("data0").get("value");
+ rv = this.status.requestOne(ST_NAME_FUXRF_SYMB_VER)
+ verDict["fuxrf"] = rv.get("data0").get("value");
+ rv = this.status.requestOne(ST_NAME_TUXRF_SYMB_VER)
+ verDict["tuxrf"] = rv.get("data0").get("value");
+
+ return verDict;
};
+ /*
+ * Get the event handlers of the API.
+ * @return a TUXAPIEventHandlers
+ */
this.getEventHandlers = function(){
- //TuxAPI.py:203
- return TUXAPI_NOT_IMPLEMENTED;
+ return _eventHandlers;
};
// We don't have any wait/pause/Thread.sleep function in javascript
// so we she do.... ugly...things...
// XXX Move this to event ? (have to look in the python source code )
- this._wait = function(){
+ this.wait = function(){
//Nothing actually but an awful do...while soon :'(
};
+ var _fillEventHandlers = function(self){
+ for( var i = 0 ; i < SW_NAME_DRIVER.length ; i++ ){
+ _eventHandlers.insert( SW_NAME_DRIVER[i] );
+ }
+ for( var i = 0 ; i < SW_NAME_OSL.length ; i++ ){
+ _eventHandlers.insert( SW_NAME_OSL[i] );
+ }
+ for( var i = 0 ; i < SW_NAME_API.length ; i++ ){
+ _eventHandlers.insert( SW_NAME_API[i] );
+ }
+ for( var i = 0 ; i < SW_NAME_EXTERNAL.length ; i++ ){
+ _eventHandlers.insert( SW_NAME_EXTERNAL[i] );
+ }
+ };
+
var _onConnect = function(self){
self.event.start();
};
@@ -71,17 +100,413 @@
self.event.stop();
}
+ this.server = new TuxAPI_server(this, aHost, aPort);
+ this.event = new TuxAPI_event(this);
+ this.status = new TuxAPI_status(this);
+ this.access = new TuxAPI_access(this);
+ this.mouth = new TuxAPI_MouthEyes(this, 'mouth');
+ this.eyes = new TuxAPI_MouthEyes(this, 'eyes');
+ this.flippers = new TuxAPI_flippers(this);
+ this.leds = new TuxAPI_leds(this);
+ this.spinning = new TuxAPI_spinning(this);
+ this.radio = new TuxAPI_DongleRadio(this, 'radio');
+ this.dongle = new TuxAPI_DongleRadio(this, 'dongle');
+ this.ir = new TuxAPI_ir(this);
+ this.attitune = new TuxAPI_attitune(this);
+ this.tts = new TuxAPI_TTS(this);
+ this.soundFlash = new TuxAPI_soundFlash(this);
+ this.button = new TuxAPI_Button(this);
+ this.wav = new TuxAPI_WAV(this);
+ this.raw = new TuxAPI_RAW(this);
//Constructor
function TuxAPI(self){
+ _fillEventHandlers(self);
self.server.registerEventOnConnected( _onConnect );
self.server.registerEventOnDisconnected( _onDisconnect );
}
TuxAPI(this);
};
-TuxAPI.CLIENT_LEVEL_ANONYME = 0;
+/*
+* Client levels
+*/
+var CLIENT_LEVEL_ANONYME = -1;
+var CLIENT_LEVEL_FREE = 0;
+var CLIENT_LEVEL_RESTRICTED = 1;
+var CLIENT_LEVEL_ROOT = 2;
+var CLIENT_LEVELS = [
+ CLIENT_LEVEL_ANONYME,
+ CLIENT_LEVEL_FREE,
+ CLIENT_LEVEL_RESTRICTED,
+ CLIENT_LEVEL_ROOT
+];
+
+var CLIENT_LEVELS_NAME = [
+ "CLIENT_LEVEL_ANONYME",
+ "CLIENT_LEVEL_FREE",
+ "CLIENT_LEVEL_RESTRICTED",
+ "CLIENT_LEVEL_ROOT",
+];
+
+/*
+* Access priority levels
+*/
+var ACCESS_PRIORITY_LOW = 0;
+var ACCESS_PRIORITY_NORMAL = 1;
+var ACCESS_PRIORITY_HIGH = 2;
+var ACCESS_PRIORITY_CRITICAL = 3;
+var ACCESS_PRIORITIES = [
+ ACCESS_PRIORITY_LOW,
+ ACCESS_PRIORITY_NORMAL,
+ ACCESS_PRIORITY_HIGH,
+ ACCESS_PRIORITY_CRITICAL
+];
+
+//From libtuxdriver
+var ST_NAME_HEAD_BUTTON = 'head_button';
+var ST_NAME_LEFT_BUTTON = 'left_wing_button';
+var ST_NAME_RIGHT_BUTTON = 'right_wing_button';
+var ST_NAME_REMOTE_BUTTON = 'remote_button';
+var ST_NAME_MOUTH_POSITION = 'mouth_position';
+var ST_NAME_MOUTH_RM = 'mouth_remaining_movements';
+var ST_NAME_EYES_POSITION = 'eyes_position';
+var ST_NAME_EYES_RM = 'eyes_remaining_movements';
+var ST_NAME_FLIPPERS_POSITION = 'flippers_position';
+var ST_NAME_FLIPPERS_RM = 'flippers_remaining_movements';
+var ST_NAME_SPINNING_DIRECTION = 'spinning_direction';
+var ST_NAME_SPINNING_RM = 'spinning_remaining_movements';
+var ST_NAME_DONGLE_PLUG = 'dongle_plug';
+var ST_NAME_RADIO_STATE = 'radio_state';
+var ST_NAME_LEFT_LED = 'left_led_state';
+var ST_NAME_RIGHT_LED = 'right_led_state';
+var ST_NAME_AUDIO_FLASH_PLAY = 'audio_flash_play';
+var ST_NAME_SOUND_REFLASH_END = 'sound_reflash_end';
+var ST_NAME_EYES_MOTOR_ON = 'eyes_motor_on';
+var ST_NAME_MOUTH_MOTOR_ON = 'mouth_motor_on';
+var ST_NAME_FLIPPERS_MOTOR_ON = 'flippers_motor_on';
+var ST_NAME_SPIN_LEFT_MOTOR_ON = 'spin_left_motor_on';
+var ST_NAME_SPIN_RIGHT_MOTOR_ON = 'spin_right_motor_on';
+var ST_NAME_DRIVER_SYMB_VER = 'driver_symbolic_version';
+var ST_NAME_TUXCORE_SYMB_VER = 'tuxcore_symbolic_version';
+var ST_NAME_TUXAUDIO_SYMB_VER = 'tuxaudio_symbolic_version';
+var ST_NAME_FUXUSB_SYMB_VER = 'fuxusb_symbolic_version';
+var ST_NAME_FUXRF_SYMB_VER = 'fuxrf_symbolic_version';
+var ST_NAME_TUXRF_SYMB_VER = 'tuxrf_symbolic_version';
+var ST_NAME_FLASH_SOUND_COUNT = 'sound_flash_count';
+var SW_NAME_DRIVER = [
+ ST_NAME_FLIPPERS_POSITION,
+ ST_NAME_FLIPPERS_RM,
+ ST_NAME_SPINNING_DIRECTION,
+ ST_NAME_SPINNING_RM,
+ ST_NAME_LEFT_BUTTON,
+ ST_NAME_RIGHT_BUTTON,
+ ST_NAME_HEAD_BUTTON,
+ ST_NAME_REMOTE_BUTTON,
+ ST_NAME_MOUTH_POSITION,
+ ST_NAME_MOUTH_RM,
+ ST_NAME_EYES_POSITION,
+ ST_NAME_EYES_RM,
+ "descriptor_complete",
+ ST_NAME_RADIO_STATE,
+ ST_NAME_DONGLE_PLUG,
+ "charger_state",
+ "battery_level",
+ "battery_state",
+ "light_level",
+ ST_NAME_LEFT_LED,
+ ST_NAME_RIGHT_LED,
+ "connection_quality",
+ ST_NAME_AUDIO_FLASH_PLAY,
+ "audio_general_play",
+ "flash_programming_current_track",
+ "flash_programming_last_track_size",
+ ST_NAME_TUXCORE_SYMB_VER,
+ ST_NAME_TUXAUDIO_SYMB_VER,
+ ST_NAME_FUXUSB_SYMB_VER,
+ ST_NAME_FUXRF_SYMB_VER,
+ ST_NAME_TUXRF_SYMB_VER,
+ ST_NAME_DRIVER_SYMB_VER,
+ "sound_reflash_begin",
+ ST_NAME_SOUND_REFLASH_END,
+ ST_NAME_EYES_MOTOR_ON,
+ ST_NAME_MOUTH_MOTOR_ON,
+ ST_NAME_FLIPPERS_MOTOR_ON,
+ ST_NAME_SPIN_LEFT_MOTOR_ON,
+ ST_NAME_SPIN_RIGHT_MOTOR_ON,
+ ST_NAME_FLASH_SOUND_COUNT
+];
+
+// fromm libtuxosl
+var ST_NAME_SPEAK_STATUS = 'tts_0_speak_status';
+var ST_NAME_TTS_SOUND_STATE = 'tts_0_sound_state';
+var ST_NAME_VOICE_LIST = 'tts_0_voice_list';
+var ST_NAME_WAV_CHANNEL_START = 'tts_wav_channel_start';
+var ST_NAME_WAV_0_SOUND_STATE = 'wav_0_sound_state';
+var ST_NAME_WAV_1_SOUND_STATE = 'wav_1_sound_state';
+var ST_NAME_WAV_2_SOUND_STATE = 'wav_2_sound_state';
+var ST_NAME_WAV_3_SOUND_STATE = 'wav_3_sound_state';
+var ST_NAME_OSL_SYMB_VER = 'osl_symbolic_version';
+var SW_NAME_OSL = [
+ ST_NAME_OSL_SYMB_VER,
+ "general_sound_state",
+ "wav_volume",
+ "tts_volume",
+ "tts_pitch",
+ "tts_locutor",
+ ST_NAME_WAV_0_SOUND_STATE,
+ "wav_0_pause_state",
+ "wav_0_stop",
+ ST_NAME_WAV_1_SOUND_STATE,
+ "wav_1_pause_state",
+ "wav_1_stop",
+ ST_NAME_WAV_2_SOUND_STATE,
+ "wav_2_pause_state",
+ "wav_2_stop",
+ ST_NAME_WAV_3_SOUND_STATE,
+ "wav_3_pause_state",
+ "wav_3_stop",
+ ST_NAME_TTS_SOUND_STATE,
+ "tts_0_pause_state",
+ "tts_0_stop",
+ "tts_0_voice_loaded",
+ ST_NAME_SPEAK_STATUS,
+ ST_NAME_VOICE_LIST,
+ ST_NAME_WAV_CHANNEL_START
+];
+
+// From TuxAPI
+var ST_NAME_API_CONNECT = 'api_connect';
+var SW_NAME_API = [
+ ST_NAME_API_CONNECT
+];
+
+// From external source
+var SW_NAME_EXTERNAL_STATUS = "external_status";
+var SW_NAME_EXTERNAL = [
+ SW_NAME_EXTERNAL_STATUS,
+];
+
+/*
+ * Possible string values of statuses
+*/
+var SSV_NDEF = "NDEF";
+var SSV_OPEN = "OPEN";
+var SSV_CLOSE = "CLOSE";
+var SSV_UP = "UP";
+var SSV_DOWN = "DOWN";
+var SSV_LEFT = "LEFT";
+var SSV_RIGHT = "RIGHT";
+var SSV_ON = "ON";
+var SSV_OFF = "OFF";
+var SSV_CHANGING = "CHANGING";
+
+// Mouth and eyes positions
+var SSV_MOUTHEYES_POSITIONS = [
+ SSV_NDEF,
+ SSV_OPEN,
+ SSV_CLOSE,
+];
+
+// Flippers positions
+var SSV_FLIPPERS_POSITIONS = [
+ SSV_NDEF,
+ SSV_UP,
+ SSV_DOWN
+];
+
+// Spinning directions
+var SSV_SPINNING_DIRECTIONS = [
+ SSV_NDEF,
+ SSV_LEFT,
+ SSV_RIGHT
+];
+
+// Led states
+var SSV_LED_STATES = [
+ SSV_ON,
+ SSV_OFF,
+ SSV_CHANGING
+];
+
+/*
+* Speed values
+*/
+var SPV_VERYSLOW = 1;
+var SPV_SLOW = 2;
+var SPV_NORMAL = 3;
+var SPV_FAST = 4;
+var SPV_VERYFAST = 5;
+var SPV_SPEED_VALUES = [
+ SPV_VERYSLOW,
+ SPV_SLOW,
+ SPV_NORMAL,
+ SPV_FAST,
+ SPV_VERYFAST
+];
+
+/*
+* Led effects
+*/
+
+// Simples
+var LFX_NONE = 0;
+var LFX_FADE = 1;
+var LFX_STEP = 2;
+var LED_EFFECT_TYPE = [
+ LFX_NONE,
+ LFX_FADE,
+ LFX_STEP
+];
+
+// Extended
+var LFXEX_UNAFFECTED = "UNAFFECTED";
+var LFXEX_LAST = "LAST";
+var LFXEX_NONE = "NONE";
+var LFXEX_DEFAULT = "DEFAULT";
+var LFXEX_FADE_DURATION = "FADE_DURATION";
+var LFXEX_FADE_RATE = "FADE_RATE";
+var LFXEX_GRADIENT_NBR = "GRADIENT_NBR";
+var LFXEX_GRADIENT_DELTA = "GRADIENT_DELTA";
+var LED_EFFECT_TYPE_EX_NAMES = [
+ LFXEX_UNAFFECTED,
+ LFXEX_LAST,
+ LFXEX_NONE,
+ LFXEX_DEFAULT,
+ LFXEX_FADE_DURATION,
+ LFXEX_FADE_RATE,
+ LFXEX_GRADIENT_NBR,
+ LFXEX_GRADIENT_DELTA
+];
+
+/*
+* Led names
+*/
+var LED_NAME_BOTH = "LED_BOTH";
+var LED_NAME_RIGHT = "LED_RIGHT";
+var LED_NAME_LEFT = "LED_LEFT";
+
+/*
+* Sound reflash errors
+*/
+var SOUND_REFLASH_NO_ERROR = "NO_ERROR";
+var SOUND_REFLASH_ERROR_RF_OFFLINE = "ERROR_RF_OFFLINE";
+var SOUND_REFLASH_ERROR_WAV = "ERROR_WAV";
+var SOUND_REFLASH_ERROR_USB = "ERROR_USB";
+var SOUND_REFLASH_ERROR_PARAMETERS = "ERROR_PARAMETERS";
+var SOUND_REFLASH_ERROR_BUSY = "ERROR_BUSY";
+var SOUND_REFLASH_ERROR_BADWAVFILE = "ERROR_BADWAVFILE";
+var SOUND_REFLASH_ERROR_WAVSIZEEXCEDED = "ERROR_WAVSIZEEXCEDED";
+
+/*
+* Wav channels
+*/
+var WAV_CHANNELS_NAME_LIST = [
+ ST_NAME_WAV_0_SOUND_STATE,
+ ST_NAME_WAV_1_SOUND_STATE,
+ ST_NAME_WAV_2_SOUND_STATE,
+ ST_NAME_WAV_3_SOUND_STATE
+];
+
+/*
+* Remote keys
+*/
+var K_0 = "K_0";
+var K_1 = "K_1";
+var K_2 = "K_2";
+var K_3 = "K_3";
+var K_4 = "K_4";
+var K_5 = "K_5";
+var K_6 = "K_6";
+var K_7 = "K_7";
+var K_8 = "K_8";
+var K_9 = "K_9";
+var K_STANDBY = "K_STANDBY";
+var K_MUTE = "K_MUTE";
+var K_VOLUMEPLUS = "K_VOLUMEPLUS";
+var K_VOLUMEMINUS = "K_VOLUMEMINUS";
+var K_ESCAPE = "K_ESCAPE";
+var K_YES = "K_YES";
+var K_NO = "K_NO";
+var K_BACKSPACE = "K_BACKSPACE";
+var K_STARTVOIP = "K_STARTVOIP";
+var K_RECEIVECALL = "K_RECEIVECALL";
+var K_HANGUP = "K_HANGUP";
+var K_STAR = "K_STAR";
+var K_SHARP = "K_SHARP";
+var K_RED = "K_RED";
+var K_GREEN = "K_GREEN";
+var K_BLUE = "K_BLUE";
+var K_YELLOW = "K_YELLOW";
+var K_CHANNELPLUS = "K_CHANNELPLUS";
+var K_CHANNELMINUS = "K_CHANNELMINUS";
+var K_UP = "K_UP";
+var K_DOWN = "K_DOWN";
+var K_LEFT = "K_LEFT";
+var K_RIGHT = "K_RIGHT";
+var K_OK = "K_OK";
+var K_FASTREWIND = "K_FASTREWIND";
+var K_FASTFORWARD = "K_FASTFORWARD";
+var K_PLAYPAUSE = "K_PLAYPAUSE";
+var K_STOP = "K_STOP";
+var K_RECORDING = "K_RECORDING";
+var K_PREVIOUS = "K_PREVIOUS";
+var K_NEXT = "K_NEXT";
+var K_MENU = "K_MENU";
+var K_MOUSE = "K_MOUSE";
+var K_ALT = "K_ALT";
+var K_RELEASED = "RELEASED";
+
+var REMOTE_KEY_LIST = [
+ K_0,
+ K_1,
+ K_2,
+ K_3,
+ K_4,
+ K_5,
+ K_6,
+ K_7,
+ K_8,
+ K_9,
+ K_STANDBY,
+ K_MUTE,
+ K_VOLUMEPLUS,
+ K_VOLUMEMINUS,
+ K_ESCAPE,
+ K_YES,
+ K_NO,
+ K_BACKSPACE,
+ K_STARTVOIP,
+ K_RECEIVECALL,
+ K_HANGUP,
+ K_STAR,
+ K_SHARP,
+ K_RED,
+ K_GREEN,
+ K_BLUE,
+ K_YELLOW,
+ K_CHANNELPLUS,
+ K_CHANNELMINUS,
+ K_UP,
+ K_DOWN,
+ K_LEFT,
+ K_RIGHT,
+ K_OK,
+ K_FASTREWIND,
+ K_FASTFORWARD,
+ K_PLAYPAUSE,
+ K_STOP,
+ K_RECORDING,
+ K_PREVIOUS,
+ K_NEXT,
+ K_MENU,
+ K_MOUSE,
+ K_ALT,
+ K_RELEASED
+];
+
+
/*****************************************************************************
* Button Namespace
* **************************************************************************/
@@ -241,7 +666,7 @@
this.play = function( aTrack, aVolume ){
if( !this.playAsync( aTrack, aVolume ) ) return false;
- if( self.server.getClientLevel() == TuxAPI.CLIENT_LEVEL_ANONYME ) return
true;
+ if( self.server.getClientLevel() == CLIENT_LEVEL_ANONYME ) return true;
self.wait();
return true;
},
@@ -260,8 +685,16 @@
* WAV Namespace
* **************************************************************************/
var TuxAPI_RAW = function( self ){
- this.send = function(){
- return TUXAPI_NOT_IMPLEMENTED;
+ this.send = function( b0, b1, b2, b3, b4 ){
+ var rawCommand = '0.0:RAW_CMD';
+ rawCommand += ':0x' + b0;
+ rawCommand += ':0x' + b1;
+ 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;
}
};
@@ -280,7 +713,7 @@
this.play = function( aBegin, aEnd, aPath ){
if( !this.playAsync( aBegin, aEnd, aPath ) ) return false;
- if( self.server.getClientLevel() == TuxAPI.CLIENT_LEVEL_ANONYME ) return
true;
+ if( self.server.getClientLevel() == CLIENT_LEVEL_ANONYME ) return true;
self.wait();
return true;
},
@@ -387,6 +820,8 @@
/*****************************************************************************
* Server Namespace
+ * TODO
+ * Should check if ST_NAME_API_CONNECT works
* **************************************************************************/
var TuxAPI_server = function( self, aHost, aPort ){
this.autoConnect = function( aLevel, aName, aPasswd ){
@@ -504,6 +939,8 @@
* Event Namespace
* **************************************************************************/
var TuxAPI_event = function(self){
+ this.handler = self.getEventHandlers();
+
this.setDelay = function( aValue ){
this._delay = aValue;
this.stop();
@@ -513,7 +950,7 @@
this.start = function(){
if( this._timeout != null ) return;
this._timeout = setInterval( function(){
- self.event.handler._retrieveEvents();
+ self.event._retrieveEvents();
}, this._delay);
},
@@ -522,15 +959,38 @@
this._delay = null;
},
-
- this.handler = new TuxAPI_eventHandler(self),
this._delay = 100,
- this._timeout = null
-};
+ this._timeout = null,
+ this._retrieveEvents = function (){
+ if ( !self.server.getConnected() ) return;
+ var events_struct = self.status.events();
+ if (events_struct.get("server_run") == "Failed"){
+ self.server.disconnect();
+ }
+ if (events_struct.get("result") != "Success"){
+ return; // No event was found
+ }
+
+ var event_count = events_struct.get("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");
+ cbk = this.handler.getEventHandler(event_name);
+ if (cbk){
+ cbk(event_struct.get("value"), event_struct.get("delay"));
+ }
+ }
+ };
+};
+
+
/*****************************************************************************
* Event Handler Namespace
* **************************************************************************/
@@ -551,15 +1011,6 @@
}
return false;
},
-
- this.insert = function(){
- return TUXAPI_NOT_IMPLEMENTED;
- },
-
- this.getEventHandler = function(){
- return TUXAPI_NOT_IMPLEMENTED;
- },
-
this.storeContext = function(){
return TUXAPI_NOT_IMPLEMENTED;
},
@@ -568,7 +1019,7 @@
return TUXAPI_NOT_IMPLEMENTED;
},
- this.clearContext = function(){
+ this.restoreContext = function(){
return TUXAPI_NOT_IMPLEMENTED;
},
@@ -586,78 +1037,75 @@
this.clearPending = function(){
return TUXAPI_NOT_IMPLEMENTED;
- },
+ }
+};
- this._callback_dict = new Hashtable(),
- this.__fillCallbackDict = function(){
- this._callback_dict.clear();
- this._callback_dict.put("flippers_position", false);
- this._callback_dict.put("flippers_remaining_movements", false);
- this._callback_dict.put("spinning_direction", false);
- this._callback_dict.put("spinning_remaining_movements", false);
- this._callback_dict.put("left_wing_button", false);
- this._callback_dict.put("right_wing_button", false);
- this._callback_dict.put("head_button", false);
- this._callback_dict.put("remote_button", false);
- this._callback_dict.put("mouth_position", false);
- this._callback_dict.put("mouth_remaining_movements", false);
- this._callback_dict.put("eyes_position", false);
- this._callback_dict.put("eyes_remaining_movements", false);
- this._callback_dict.put("descriptor_complete", false);
- this._callback_dict.put("radio_state", false);
- this._callback_dict.put("dongle_plug", false);
- this._callback_dict.put("charger_state", false);
- this._callback_dict.put("battery_level", false);
- this._callback_dict.put("battery_state", false);
- this._callback_dict.put("light_level", false);
- this._callback_dict.put("left_led_state", false);
- this._callback_dict.put("right_led_state", false);
- this._callback_dict.put("connection_quality", false);
- this._callback_dict.put("audio_flash_play", false);
- this._callback_dict.put("audio_general_play", false);
- this._callback_dict.put("general_sound_state", false);
- this._callback_dict.put("tts_pitch", false);
- this._callback_dict.put("tts_locutor", false);
- this._callback_dict.put("wav_0_sound_state", false);
- this._callback_dict.put("wav_0_pause_state", false);
- this._callback_dict.put("wav_0_stop", false);
- this._callback_dict.put("tts_0_sound_state", false);
- this._callback_dict.put("tts_0_pause_state", false);
- this._callback_dict.put("tts_0_stop", false);
- this._callback_dict.put("tts_0_voice_list", false);
- },
- this._retrieveEvents = function (){
- if ( !self.server.getConnected() ) return;
- var events_struct = self.status.events();
+/*****************************************************************************
+ * Event Handlers Namespace
+ * **************************************************************************/
+var TuxAPI_eventHandlers = function(self){
+ var _callback_dict = new Hashtable();
- if (events_struct.get("server_run") == "Failed"){
- this.server.disconnect();
+ this.register = function( anEventName, aFunc ){
+ if (_callback_dict.containsKey( anEventName )){
+ _callback_dict.put(anEventName, aFunc);
+ return true;
}
+ return false;
+ },
- if (events_struct.get("result") != "Success"){
- return; // No event was found
+ this.unregister = function( anEventName ){
+ if (_callback_dict.containsKey( anEventName )){
+ if ( _callback_dict.get( anEventName ) != null ){
+ _callback_dict.remove(anEventName);
+ }
}
+ return false;
+ },
- var event_count = events_struct.get("data_count");
- var cbk, event_name, data_node, event_struct;
+ this.insert = function( anEventName ){
+ if (!_callback_dict.containsKey( anEventName )) return false,
+ _callback_dict.put( anEventName, false);
+ return true;
+ },
- 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");
- if (this._callback_dict.containsKey(event_name)){
- cbk = this._callback_dict.get(event_name);
- if (cbk != false){
- cbk(event_struct.get("value"), event_struct.get("delay"));
- }
- }
- }
+ this.getEventHandler = function( anEventName ){
+ if (!_callback_dict.containsKey( anEventName )) return null;
+ return _callback_dict.get( anEventName );
+ },
+
+ this.storeContext = function(){
+ return TUXAPI_NOT_IMPLEMENTED;
+ },
+
+ this.restoreContext = function(){
+ return TUXAPI_NOT_IMPLEMENTED;
+ },
+
+ this.clearContext = function(){
+ return TUXAPI_NOT_IMPLEMENTED;
+ },
+
+ this.emit = function(){
+ return TUXAPI_NOT_IMPLEMENTED;
+ },
+
+ this.notify = function(){
+ return TUXAPI_NOT_IMPLEMENTED;
+ },
+
+ this.waitCondition = function(){
+ return TUXAPI_NOT_IMPLEMENTED;
+ },
+
+ this.clearPending = function(){
+ return TUXAPI_NOT_IMPLEMENTED;
}
- // Constructor
- this.__fillCallbackDict();
+ //Constructor
+ this.insert( 'all' );
};
@@ -669,14 +1117,14 @@
var TuxAPI_spinning = function(self){
this.leftOn = function( aCount ){
if (!this.leftOnAsync( aCount ) ) return false;
- if (self.server.getClientLevel() == TuxAPI.CLIENT_LEVEL_ANONYME) return
true;
+ if (self.server.getClientLevel() == CLIENT_LEVEL_ANONYME) return true;
self.wait();
return true;
},
this.leftOnDuring = function( aDuration){
if (!this.leftOnDuringAsync( aCount ) ) return false;
- if (self.__parent.server.getClientLevel() == TuxAPI.CLIENT_LEVEL_ANONYME)
return true;
+ if (self.__parent.server.getClientLevel() == CLIENT_LEVEL_ANONYME) return
true;
self.wait();
return true;
},
@@ -695,14 +1143,14 @@
this.rightOn = function( aCount ){
if (!this.rightOnAsync( aCount ) ) return false;
- if (self.server.getClientLevel() == TuxAPI.CLIENT_LEVEL_ANONYME) return
true;
+ if (self.server.getClientLevel() == CLIENT_LEVEL_ANONYME) return true;
self.wait();
return true;
},
this.rightOnDuring = function( aDuration ){
if (!this.rightOnDuringAsync( aCount ) ) return false;
- if (self.__parent.server.getClientLevel() == TuxAPI.CLIENT_LEVEL_ANONYME)
return true;
+ if (self.__parent.server.getClientLevel() == CLIENT_LEVEL_ANONYME) return
true;
self.wait();
return true;
},
@@ -844,7 +1292,7 @@
var TuxAPI_flippers = function(self){
this.on = function( aCount, aFinalState ){
if (!this.onAsync( aCount, aFinalState ) ) return false;
- if (self.__parent.server.getClientLevel() == TuxAPI.CLIENT_LEVEL_ANONYME)
return true;
+ if (self.__parent.server.getClientLevel() == CLIENT_LEVEL_ANONYME) return
true;
self.wait();
return true;
},
@@ -857,7 +1305,7 @@
this.onDuring = function( aDuration, aFinalState ){
if (!this.onDuringAsync( aDuration, aFinalState ) ) return false;
- if (self.__parent.server.getClientLevel() == TuxAPI.CLIENT_LEVEL_ANONYME)
return true;
+ if (self.__parent.server.getClientLevel() == CLIENT_LEVEL_ANONYME) return
true;
self.wait();
return true;
},
@@ -936,28 +1384,31 @@
* **************************************************************************/
var TuxAPI_MouthEyes = function( self, aName ){
this.on = function( aCount, aFinalState){
+ if (!this.onAsync( aCount, aFinalState ) ) return false;
+ if (self.__parent.server.getClientLevel() == CLIENT_LEVEL_ANONYME) return
true;
+ self.wait();
+ return true;
+ },
+
+ this.onAsync = function(){
var rv = self.server.request( aName, 'on' , { 'count':aCount,
'final_state':aFinalState } );
if (rv.get("result") == "Success") return true;
return false;
},
- this.onAsync = function(){
- //count, finalState = SSV_NDEF):
- //TuxAPIMouthEyes.py:73
- return TUXAPI_NOT_IMPLEMENTED;
+ this.onDuring = function( aDuration, aFinalState){
+ if (!this.onDuringAsync( aCount, aFinalState ) ) return false;
+ if (self.__parent.server.getClientLevel() == CLIENT_LEVEL_ANONYME) return
true;
+ self.wait();
+ return true;
},
- this.onDuring = function( aDuration, aFinalState){
+ 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;
},
- this.onDuringAsync = function(){
- //TuxAPIMouthEyes.py:114
- return TUXAPI_NOT_IMPLEMENTED;
- },
-
this.off = function(){
var rv = self.server.request( aName, 'off' , {} );
if (rv.get("result") == "Success") return true;
------------------------------------------------------------------------------
Create and Deploy Rich Internet Apps outside the browser with Adobe(R)AIR(TM)
software. With Adobe AIR, Ajax developers can use existing skills and code to
build responsive, highly engaging applications that combine the power of local
resources and data with the reach of the web. Download the Adobe AIR SDK and
Ajax docs to start building applications today-http://p.sf.net/sfu/adobe-com
_______________________________________________
Tux-droid-svn mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/tux-droid-svn