[tuxdroid-svn] r136 - api/python/trunk
Status: Beta
Brought to you by:
ks156
From: remi <c2m...@c2...> - 2007-03-06 14:46:08
|
Author: remi Date: 2007-03-06 15:45:42 +0100 (Tue, 06 Mar 2007) New Revision: 136 Modified: api/python/trunk/tuxapi_class.py Log: UPD : - Loop in connecting daemon function has been removed - Connecting on ttsdaemon update - On_connected and on_disconnected from daemons event has been updated - Some updates Modified: api/python/trunk/tuxapi_class.py =================================================================== --- api/python/trunk/tuxapi_class.py 2007-03-06 13:12:20 UTC (rev 135) +++ api/python/trunk/tuxapi_class.py 2007-03-06 14:45:42 UTC (rev 136) @@ -76,20 +76,13 @@ try: self.socket.connect((self.Server_address, self.Server_port)) except error: - #self.sys.shell("open tuxdaemon") - while(True): - try: - server_exists=True - self.socket.connect((self.Server_address, self.Server_port)) - except error: - server_exists=False - print "WARNING : Tux Daemon not present" - time.sleep(1) - if server_exists==True: - break + print "WARNING : Tux droid daemon not found" + return self.connected=True thread.start_new_thread(self.recv_msg_Thread,()) thread.start_new_thread(self.data_pooling,()) + if self.event.on_connected!=None: + self.event.on_connected() time.sleep(1) #-------------------------------------------------------------------------- @@ -103,6 +96,8 @@ while ((self.data_pooling_run) and (self.recv_msg_Thread_run)): self.sys.wait(0.01) self.socket.close() + if self.event.on_disconnected!=None: + self.event.on_disconnected() self.tts.disconnect_from_daemon() #-------------------------------------------------------------------------- @@ -354,6 +349,8 @@ self.on_status=None self.on_remote=None self.on_light_level=None + self.on_connected=None + self.on_disconnected=None #-------------------------------------------------------------------------- ## store all events @@ -371,6 +368,8 @@ self.s_on_status=self.on_status self.s_on_remote=self.on_remote self.s_on_light_level=self.on_light_level + self.s_on_connected=self.on_connected + self.s_on_disconnected=self.on_disconnected #-------------------------------------------------------------------------- ## restore all events @@ -388,6 +387,8 @@ self.on_status=self.s_on_status self.on_remote=self.s_on_remote self.on_light_level=self.s_on_light_level + self.on_connected=self.s_on_connected + self.on_disconnected=self.s_on_disconnected #-------------------------------------------------------------------------- ## wait until status event arrival @@ -889,6 +890,8 @@ ## raw of status is in self.parent.last_datas ## @param DATA_STATUS : Desired status def get(self,DATA_STATUS): + if not self.parent.connected: + return 0 data=(DEST_TUX,SD_DEFAULT,DATA_TP_REQ,SUBDATA_TP_STATUS,DATA_STATUS,0,0,0,0,0,0,0,0,0,0,0) self.parent.socket.send("".join( [chr(x) for x in data] )) return self.rsp_status(DATA_STATUS) @@ -1104,7 +1107,7 @@ ## @param param2 : cmd parameter 2 ## @param param3 : cmd parameter 3 def cmd(self,cmd,param1,param2,param3): - cmd_no_ack(cmd,param1,param2,param3) + self.cmd_no_ack(cmd,param1,param2,param3) return self.cmd_ack() ## send a command to sub daemon @@ -1234,6 +1237,8 @@ self.Server_address=ipAddress self.connected=False self.last_datas=("a","a","a","a","a","a") + self.data_pooling_run=False + self.recv_msg_Thread_run=False self.datas_threated=True self.last_datas_for_event=("a","a","a","a","a","a") self.bloc_datas_flag=False @@ -1241,6 +1246,8 @@ self.print_status=False self.on_sound_on=None self.on_sound_off=None + self.on_connected=None + self.on_disconnected=None self.sound_on=False self.my_pitch=100 self.my_voice=SPK_US_MALE @@ -1257,19 +1264,29 @@ self.connected=True thread.start_new_thread(self.recv_msg_Thread,()) thread.start_new_thread(self.data_pooling,()) + if self.on_connected!=None: + self.on_connected() self.get_sound_state() ## Disconnect object from BabTTSDaemon def disconnect_from_daemon(self): if self.connected: + self.send_disconnect() + self.connected=False + self.parent.sys.wait(0.5) + while ((self.data_pooling_run) and (self.recv_msg_Thread_run)): + self.parent.sys.wait(0.01) + if self.on_disconnected!=None: + self.on_disconnected() self.socket.close() - self.connected=False ## Messages receiver (Thread) ## SYSTEM function def recv_msg_Thread(self): + self.recv_msg_Thread_run=True while self.connected: while self.bloc_datas_flag: + if not self.connected: break time.sleep(0.001) self.bloc_datas_flag=True try: @@ -1286,17 +1303,22 @@ print " ".join(struct_data) self.bloc_datas_flag=False time.sleep(0.01) + self.recv_msg_Thread_run=False ## Pooling on data arrival from tcp server ## SYSTEM function def data_pooling(self): + self.data_pooling_run=True while self.connected: while self.datas_threated: + if not self.connected: break time.sleep(0.003) while self.bloc_datas_flag: + if not self.connected: break time.sleep(0.001) self.dispatch_data_from_tcp_server() self.datas_threated=True + self.data_pooling_run=False ## Dispatch data from tcp server ## SYSTEM function @@ -1313,14 +1335,12 @@ if ord(self.last_datas_for_event[1])==CMD_INFO_SOUND_STATE: # SOUND on if ord(self.last_datas_for_event[2])==TTS_SOUND_ON: - #print "TTS_SOUND_ON" self.sound_on=True self.parent.cmd.audio_channel_tts() if self.on_sound_on!=None: self.on_sound_on() # SOUND off if ord(self.last_datas_for_event[2])==TTS_SOUND_OFF: - #print "TTS_SOUND_OFF" self.sound_on=False self.parent.cmd.audio_channel_general() if self.on_sound_off!=None: @@ -1428,12 +1448,10 @@ u=unicode(text,"utf-8") text_to_send=u.encode('latin-1','replace') self.socket.send(text_to_send) - print "wait sound on" counter=0 while ((self.sound_on==False) and (counter<10)): counter=counter+1 self.wait_time(0.1) - print "wait sound off" while self.sound_on==True: self.wait_time(0.1) self.wait_time(0.5) |