[tuxdroid-svn] r848 - api/python/trunk daemon/trunk/libs
Status: Beta
Brought to you by:
ks156
From: Paul_R <c2m...@c2...> - 2008-01-14 10:06:45
|
Author: Paul_R Date: 2008-01-14 11:06:38 +0100 (Mon, 14 Jan 2008) New Revision: 848 Modified: api/python/trunk/tuxapi_class.py api/python/trunk/tuxapi_const.py daemon/trunk/libs/USBDaemon_command_tux.c daemon/trunk/libs/USBDaemon_status_table.c daemon/trunk/libs/USBDaemon_status_table.h Log: * Added the wings position status : - request : tux.status.wings_position() - events : on_wings_down on_wings_up Modified: api/python/trunk/tuxapi_class.py =================================================================== --- api/python/trunk/tuxapi_class.py 2008-01-11 16:02:54 UTC (rev 847) +++ api/python/trunk/tuxapi_class.py 2008-01-14 10:06:38 UTC (rev 848) @@ -532,6 +532,15 @@ if ord(data[5])==0: if self.event.on_wings_stop!=None: self.event.on_wings_stop() + + #wings down + if ord(data[4])==DATAS_STATUS_WINGS_POSITION: + if ord(data[5])==0: + if self.event.on_wings_down!=None: + self.event.on_wings_down() + if ord(data[5])==1: + if self.event.on_wings_up!=None: + self.event.on_wings_up() #spin stop if ord(data[4])==DATAS_STATUS_SPIN_POSITION_COUNTER: if ord(data[5])==0: @@ -1214,6 +1223,8 @@ "on_mouth_stop" as pof : On mouth stop event "on_eyes_stop" as pof : On eyes stop event "on_wings_stop" as pof : On wings stop event + "on_wings_down" as pof : On wings down event + "on_wings_up" as pof : On wings up event "on_spin_stop" as pof : On spin stop event (pof = pointer of function) @@ -1321,6 +1332,8 @@ self.on_mouth_stop=None self.on_eyes_stop=None self.on_wings_stop=None + self.on_wings_down=None + self.on_wings_up=None self.on_spin_stop=None #-------------------------------------------------------------------------- @@ -1364,6 +1377,8 @@ event_storage.append(self.on_mouth_stop) event_storage.append(self.on_eyes_stop) event_storage.append(self.on_wings_stop) + event_storage.append(self.on_wings_down) + event.storage.append(self.on_wings_up) event_storage.append(self.on_spin_stop) event_storage.append(self.parent.tts.on_sound_on) event_storage.append(self.parent.tts.on_sound_off) @@ -1411,6 +1426,8 @@ self.on_mouth_stop=event_storage.pop(0) self.on_eyes_stop=event_storage.pop(0) self.on_wings_stop=event_storage.pop(0) + self.on_wings_down=event_storage.pop(0) + self.on_wings_up=event_storage.pop(0) self.on_spin_stop=event_storage.pop(0) self.parent.tts.on_sound_on=event_storage.pop(0) self.parent.tts.on_sound_off=event_storage.pop(0) @@ -2975,6 +2992,7 @@ tux.status.wings_counter tux.status.wings_motor tux.status.wings_forward + tux.status.wings_position tux.status.wings_bt tux.status.get_wings_position_switch tux.status.to_string @@ -3372,6 +3390,17 @@ """ return self.get_one_status(DATAS_STATUS_MOTOR_FOR_WINGS) + def wings_position(self): + """ + Get the wings position. + + Return 1 if the wings are up, 0 if they're down. + + Example: + >>> wings_position = tux.status.wings_position() + """ + return self.get_one_status(DATAS_STATUS_WINGS_POSITION) + #-------------------------------------------------------------------------- # Get the last state of left blue led status #-------------------------------------------------------------------------- Modified: api/python/trunk/tuxapi_const.py =================================================================== --- api/python/trunk/tuxapi_const.py 2008-01-11 16:02:54 UTC (rev 847) +++ api/python/trunk/tuxapi_const.py 2008-01-14 10:06:38 UTC (rev 848) @@ -162,6 +162,7 @@ DATAS_STATUS_AVAILABLE_RECORD_TIME = 0x28 DATAS_STATUS_SOUND_FLASH = 0x29 DATAS_STATUS_PROGRAMMING_AUDIO = 0x2A +DATAS_STATUS_WINGS_POSITION = 0x2B STATUS_WINGS_MOTOR_BACKWARD = 0x01 STATUS_SPIN_MOTOR_BACKWARD = 0x02 Modified: daemon/trunk/libs/USBDaemon_command_tux.c =================================================================== --- daemon/trunk/libs/USBDaemon_command_tux.c 2008-01-11 16:02:54 UTC (rev 847) +++ daemon/trunk/libs/USBDaemon_command_tux.c 2008-01-14 10:06:38 UTC (rev 848) @@ -640,6 +640,9 @@ result[0] = DATA_STATUS_WINGS_MOTOR_FORWARD; result[1] = portd.bits.PB4; break; + case DATA_STATUS_WINGS_POSITION: + result[1] = tux_status.io.wings_low; + break; case DATA_STATUS_IR_LED: result[1] = portd.bits.PB5; break; Modified: daemon/trunk/libs/USBDaemon_status_table.c =================================================================== --- daemon/trunk/libs/USBDaemon_status_table.c 2008-01-11 16:02:54 UTC (rev 847) +++ daemon/trunk/libs/USBDaemon_status_table.c 2008-01-14 10:06:38 UTC (rev 848) @@ -256,6 +256,25 @@ set_led_mask(*led_status & 0x10 ? true : false); } +static void wings_position_changed(uint8_t position) +{ + tcp_frame_t tcp_frame; + + tcp_frame_zero(&tcp_frame); + + tcp_frame[0] = SOURCE_TUX; + tcp_frame[1] = SS_DEFAULT; + tcp_frame[2] = DATA_TP_RSP; + tcp_frame[3] = SUBDATA_TP_STATUS; + + tcp_frame[4] = DATA_STATUS_WINGS_POSITION; + + tux_status.io.wings_low = (bool)position; + + tcp_frame[5] = position; + tcp_server_send_raw(tcp_frame); +} + /* TODO Add functions to get the average battery voltage and status */ static void battery_changed(unsigned int const level, unsigned int const loaded) @@ -691,7 +710,8 @@ case STATUS_POSITION2_CMD: if (position2.Byte != new_status[1]) position2_changed(new_status[1]); - tux_status.io.wings_low = (bool)new_status[2]; + if (tux_status.io.wings_low != (bool)new_status[2]) + wings_position_changed(new_status[2]); break; case STATUS_LED_CMD: Modified: daemon/trunk/libs/USBDaemon_status_table.h =================================================================== --- daemon/trunk/libs/USBDaemon_status_table.h 2008-01-11 16:02:54 UTC (rev 847) +++ daemon/trunk/libs/USBDaemon_status_table.h 2008-01-14 10:06:38 UTC (rev 848) @@ -188,6 +188,7 @@ #define DATA_STATUS_AUDIO 0x26 #define DATA_STATUS_SOUND_FLASH 0x29 #define DATA_PROGRAMMING_AUDIO 0x2A +#define DATA_STATUS_WINGS_POSITION 0x2B /* tux connection commands available on the usb dongle */ typedef enum |