[tuxdroid-svn] r1138 - in software_suite_v2/middleware/tuxdriver/trunk: src test
Status: Beta
Brought to you by:
ks156
From: eFfeM <c2m...@c2...> - 2008-05-08 16:41:40
|
Author: eFfeM Date: 2008-05-08 18:40:57 +0200 (Thu, 08 May 2008) New Revision: 1138 Modified: software_suite_v2/middleware/tuxdriver/trunk/src/tux_cmd_parser.c software_suite_v2/middleware/tuxdriver/trunk/src/tux_cmd_parser.h software_suite_v2/middleware/tuxdriver/trunk/src/tux_driver.c software_suite_v2/middleware/tuxdriver/trunk/src/tux_eyes.c software_suite_v2/middleware/tuxdriver/trunk/src/tux_mouth.c software_suite_v2/middleware/tuxdriver/trunk/src/tux_spinning.c software_suite_v2/middleware/tuxdriver/trunk/src/tux_types.h software_suite_v2/middleware/tuxdriver/trunk/src/tux_wings.c software_suite_v2/middleware/tuxdriver/trunk/test/descriptor.txt software_suite_v2/middleware/tuxdriver/trunk/test/test_macro.txt Log: fixed bug in state enum split parsing and inserting removed all character commands from eyes/mouth/spinnng/wings this concludes the cmd_parsing changes (apart from bugfixng) Modified: software_suite_v2/middleware/tuxdriver/trunk/src/tux_cmd_parser.c =================================================================== --- software_suite_v2/middleware/tuxdriver/trunk/src/tux_cmd_parser.c 2008-05-08 09:55:10 UTC (rev 1137) +++ software_suite_v2/middleware/tuxdriver/trunk/src/tux_cmd_parser.c 2008-05-08 16:40:57 UTC (rev 1138) @@ -133,41 +133,41 @@ * */ static bool -str_to_state_t(const char *conststr, state_t *state) +str_to_state_t(const char *conststr, move_final_state_t *state) { if (!strcmp(conststr, "NDEF")) { - *state = UNDEFINED; + *state = FINAL_ST_UNDEFINED; return true; } if (!strcmp(conststr, "UNDEFINED")) { - *state = UNDEFINED; + *state = FINAL_ST_UNDEFINED; return true; } if (!strcmp(conststr, "OPEN")) { - *state = OPENED; + *state = FINAL_ST_OPEN_UP; return true; } if (!strcmp(conststr, "UP")) { - return 1; - *state = OPENED; + *state = FINAL_ST_OPEN_UP; + return true; } if (!strcmp(conststr, "CLOSE")) { - *state = CLOSED; + *state = FINAL_ST_CLOSE_DOWN; return true; } if (!strcmp(conststr, "DOWN")) { - *state = CLOSED; + *state = FINAL_ST_CLOSE_DOWN; return true; } if (!strcmp(conststr, "STOP")) { - *state = STOP; + *state = FINAL_ST_STOP; return true; } return false; @@ -566,6 +566,7 @@ if (str_to_float(tokens[3], &cmd->wings_parameters.duration) && str_to_state_t(tokens[4], &cmd->wings_parameters.state)) { + fprintf(stderr, "parse duration = %f\n", cmd->wings_parameters.duration); ret = E_TUXDRV_NOERROR; } cmd->sub_command = ON_DURING; @@ -919,6 +920,7 @@ cmd->wings_parameters.state); break; case ON_DURING: + fprintf(stderr, "duration = %f\n", cmd->wings_parameters.duration); tux_wings_cmd_on_during( cmd->wings_parameters.duration, cmd->wings_parameters.state); @@ -993,11 +995,12 @@ } cmd->command_group = NO_CMD; } + /** * */ static TuxDrvError -insert_cmd(float delay, const char *cmd_str, cmd_stack_t *stack) +insert_command(float delay, delay_cmd_t *cmd, cmd_stack_t *stack) { TuxDrvError ret = E_TUXDRV_STACKOVERFLOW; int i; @@ -1007,16 +1010,9 @@ { if (stack->cmd_list[i].command_group == NO_CMD) { - ret = parse_command(cmd_str, &(stack->cmd_list[i])); - if (ret == E_TUXDRV_NOERROR) - { - stack->cmd_list[i].timeout = delay + curtime; - } - else - { - /* might be overwritten */ - stack->cmd_list[i].command_group = NO_CMD; - } + stack->cmd_list[i] = *cmd; + stack->cmd_list[i].timeout = delay + curtime; + ret = E_TUXDRV_NOERROR; break; } } @@ -1027,23 +1023,39 @@ * */ LIBLOCAL TuxDrvError -tux_cmd_parser_insert_delay_command(float delay, const char *cmd_str, - bool sys_cmd) +tux_cmd_parser_insert_sys_command(float delay, delay_cmd_t *cmd) { - TuxDrvError ret = E_TUXDRV_STACKOVERFLOW; + TuxDrvError ret; #ifdef USE_MUTEX mutex_lock(__stack_mutex); #endif - if (sys_cmd) + ret = insert_command(delay, cmd, &sys_cmd_stack); + +#ifdef USE_MUTEX + mutex_unlock(__stack_mutex); +#endif + return ret; +} + +/** + * + */ +LIBLOCAL TuxDrvError +tux_cmd_parser_insert_user_command(float delay, const char *cmd_str) +{ + TuxDrvError ret; + delay_cmd_t cmd; + +#ifdef USE_MUTEX + mutex_lock(__stack_mutex); +#endif + ret = parse_command(cmd_str, &cmd); + if (ret == E_TUXDRV_NOERROR) { - ret = insert_cmd(delay, cmd_str, &sys_cmd_stack); + ret = insert_command(delay, &cmd, &user_cmd_stack); } - else - { - ret = insert_cmd(delay, cmd_str, &user_cmd_stack); - } #ifdef USE_MUTEX mutex_unlock(__stack_mutex); @@ -1108,6 +1120,7 @@ { if (curtime >= user_cmd_stack.cmd_list[i].timeout) { + fprintf(stderr, "executing user command %d\n", i); execute_command(&user_cmd_stack.cmd_list[i]); /* next two commands are faster than a memset writing a null byte to the first char of cmd is sufficient @@ -1121,6 +1134,7 @@ { if (curtime >= sys_cmd_stack.cmd_list[i].timeout) { + fprintf(stderr, "executing system command %d\n", i); execute_command(&sys_cmd_stack.cmd_list[i]); sys_cmd_stack.cmd_list[i].timeout = 0; sys_cmd_stack.cmd_list[i].command_group = NO_CMD; @@ -1147,7 +1161,7 @@ if (i == 2) { - return tux_cmd_parser_insert_delay_command(delay, cmd_str, false); + return tux_cmd_parser_insert_user_command(delay, cmd_str); } return E_TUXDRV_NOERROR; Modified: software_suite_v2/middleware/tuxdriver/trunk/src/tux_cmd_parser.h =================================================================== --- software_suite_v2/middleware/tuxdriver/trunk/src/tux_cmd_parser.h 2008-05-08 09:55:10 UTC (rev 1137) +++ software_suite_v2/middleware/tuxdriver/trunk/src/tux_cmd_parser.h 2008-05-08 16:40:57 UTC (rev 1138) @@ -24,6 +24,7 @@ #include <stdbool.h> #include "tux_error.h" +#include "tux_types.h" #define TOKENSIZE 1024 #define MAXNRTOKENS 256 @@ -37,8 +38,10 @@ int max_tokens, const char *delimiters); extern TuxDrvError tux_cmd_parser_parse_command(const char *cmd_str); extern bool tux_cmd_parser_clear_delay_commands(void); -extern TuxDrvError tux_cmd_parser_insert_delay_command(float delay, - const char *cmd_str, bool sys_cmd); +extern TuxDrvError tux_cmd_parser_insert_sys_command(float delay, + delay_cmd_t *cmd); +extern TuxDrvError tux_cmd_parser_insert_user_command(float delay, + const char *cmd_str); extern void tux_cmd_parser_delay_stack_perform(void); extern TuxDrvError tux_cmd_parser_parse_macro(const char *macro_str); extern TuxDrvError tux_cmd_parser_parse_file(const char *file_path); Modified: software_suite_v2/middleware/tuxdriver/trunk/src/tux_driver.c =================================================================== --- software_suite_v2/middleware/tuxdriver/trunk/src/tux_driver.c 2008-05-08 09:55:10 UTC (rev 1137) +++ software_suite_v2/middleware/tuxdriver/trunk/src/tux_driver.c 2008-05-08 16:40:57 UTC (rev 1138) @@ -285,7 +285,7 @@ else { log_debug("Perform a delayed command : [%s], %f", cmd_str, delay); - return tux_cmd_parser_insert_delay_command(delay, cmd_str, false); + return tux_cmd_parser_insert_user_command(delay, cmd_str); } } Modified: software_suite_v2/middleware/tuxdriver/trunk/src/tux_eyes.c =================================================================== --- software_suite_v2/middleware/tuxdriver/trunk/src/tux_eyes.c 2008-05-08 09:55:10 UTC (rev 1137) +++ software_suite_v2/middleware/tuxdriver/trunk/src/tux_eyes.c 2008-05-08 16:40:57 UTC (rev 1138) @@ -99,6 +99,7 @@ { bool ret; data_frame frame = {EYES_BLINK_CMD, 0, 0, 0}; + delay_cmd_t cmd = { 0.0, TUX_CMD, EYES }; /* Short movements */ if (timeout < 0.3) @@ -116,22 +117,19 @@ switch (final_state) { case FINAL_ST_UNDEFINED: - ret = tux_cmd_parser_insert_delay_command(timeout, - "TUX_CMD:EYES:OFF", true); + cmd.sub_command = OFF; break; case FINAL_ST_OPEN_UP: - ret = tux_cmd_parser_insert_delay_command(timeout, - "TUX_CMD:EYES:OPEN", true); + cmd.sub_command = OPEN; break; case FINAL_ST_CLOSE_DOWN: - ret = tux_cmd_parser_insert_delay_command(timeout, - "TUX_CMD:EYES:CLOSE", true); + cmd.sub_command = CLOSE; break; case FINAL_ST_STOP: - ret = tux_cmd_parser_insert_delay_command(timeout, - "TUX_CMD:EYES:OFF", true); + cmd.sub_command = OFF; break; } + ret = tux_cmd_parser_insert_sys_command(timeout, &cmd); return ret; } Modified: software_suite_v2/middleware/tuxdriver/trunk/src/tux_mouth.c =================================================================== --- software_suite_v2/middleware/tuxdriver/trunk/src/tux_mouth.c 2008-05-08 09:55:10 UTC (rev 1137) +++ software_suite_v2/middleware/tuxdriver/trunk/src/tux_mouth.c 2008-05-08 16:40:57 UTC (rev 1138) @@ -91,6 +91,7 @@ return tux_movement_cmd_on(MOVE_MOUTH, counter, final_state); } +#include <stdio.h> /** * */ @@ -99,6 +100,7 @@ { bool ret; data_frame frame = {MOUTH_MOVE_CMD, 0, 0, 0}; + delay_cmd_t cmd = { 0.0, TUX_CMD, MOUTH }; /* Short movements */ if (timeout < 0.3) @@ -116,22 +118,23 @@ switch (final_state) { case FINAL_ST_UNDEFINED: - ret = tux_cmd_parser_insert_delay_command(timeout, - "TUX_CMD:MOUTH:OFF", true); + fprintf(stderr, "1"); + cmd.sub_command = OFF; break; case FINAL_ST_OPEN_UP: - ret = tux_cmd_parser_insert_delay_command(timeout, - "TUX_CMD:MOUTH:OPEN", true); + fprintf(stderr, "2"); + cmd.sub_command = OPEN; break; case FINAL_ST_CLOSE_DOWN: - ret = tux_cmd_parser_insert_delay_command(timeout, - "TUX_CMD:MOUTH:CLOSE", true); + fprintf(stderr, "3"); + cmd.sub_command = CLOSE; break; case FINAL_ST_STOP: - ret = tux_cmd_parser_insert_delay_command(timeout, - "TUX_CMD:MOUTH:OFF", true); + fprintf(stderr, "4"); + cmd.sub_command = OFF; break; } + ret = tux_cmd_parser_insert_sys_command(timeout, &cmd); return ret; } Modified: software_suite_v2/middleware/tuxdriver/trunk/src/tux_spinning.c =================================================================== --- software_suite_v2/middleware/tuxdriver/trunk/src/tux_spinning.c 2008-05-08 09:55:10 UTC (rev 1137) +++ software_suite_v2/middleware/tuxdriver/trunk/src/tux_spinning.c 2008-05-08 16:40:57 UTC (rev 1138) @@ -125,11 +125,12 @@ * */ static bool -tux_spinning_cmd_on_during(float timeout, unsigned char cmd, +tux_spinning_cmd_on_during(float timeout, unsigned char command, move_body_part_t movement) { bool ret; - data_frame frame = {cmd, 0, 5, 0}; + data_frame frame = { command, 0, 5, 0}; + delay_cmd_t cmd = { 0.0, TUX_CMD, SPINNING, OFF }; /* Short movements */ if (timeout < 0.3) @@ -145,8 +146,7 @@ return false; } - ret = tux_cmd_parser_insert_delay_command(timeout, - "TUX_CMD:SPINNING:OFF", true); + ret = tux_cmd_parser_insert_sys_command(timeout, &cmd); return ret; } Modified: software_suite_v2/middleware/tuxdriver/trunk/src/tux_types.h =================================================================== --- software_suite_v2/middleware/tuxdriver/trunk/src/tux_types.h 2008-05-08 09:55:10 UTC (rev 1137) +++ software_suite_v2/middleware/tuxdriver/trunk/src/tux_types.h 2008-05-08 16:40:57 UTC (rev 1138) @@ -22,6 +22,7 @@ #define _TUX_TYPES_H_ #include "tux_leds.h" +#include "tux_movements.h" typedef unsigned char data_frame[4]; typedef unsigned char raw_frame[5]; @@ -68,20 +69,13 @@ UP } tux_sub_command_t; -typedef enum { - UNDEFINED, - CLOSED, - OPENED, - STOP -} state_t; - typedef struct { bool muteflag; } audio_parameters_t; typedef struct { unsigned char nr_movements; - state_t state; + move_final_state_t state; float duration; } eyes_parameters_t; @@ -106,7 +100,7 @@ typedef struct { unsigned char nr_movements; - state_t state; + move_final_state_t state; float duration; } mouth_parameters_t; @@ -123,7 +117,7 @@ typedef struct { unsigned char nr_movements; - state_t state; + move_final_state_t state; float duration; unsigned char speed; } wings_parameters_t; Modified: software_suite_v2/middleware/tuxdriver/trunk/src/tux_wings.c =================================================================== --- software_suite_v2/middleware/tuxdriver/trunk/src/tux_wings.c 2008-05-08 09:55:10 UTC (rev 1137) +++ software_suite_v2/middleware/tuxdriver/trunk/src/tux_wings.c 2008-05-08 16:40:57 UTC (rev 1138) @@ -101,6 +101,7 @@ { bool ret; data_frame frame = {WINGS_WAVE_CMD, 0, 5, 0}; + delay_cmd_t cmd = { 0.0, TUX_CMD, WINGS }; /* Short movements */ if (timeout < 0.3) @@ -118,22 +119,19 @@ switch (final_state) { case FINAL_ST_UNDEFINED: - ret = tux_cmd_parser_insert_delay_command(timeout, - "TUX_CMD:WINGS:OFF", true); + cmd.sub_command = OFF; break; case FINAL_ST_OPEN_UP: - ret = tux_cmd_parser_insert_delay_command(timeout, - "TUX_CMD:WINGS:UP", true); + cmd.sub_command = UP; break; case FINAL_ST_CLOSE_DOWN: - ret = tux_cmd_parser_insert_delay_command(timeout, - "TUX_CMD:WINGS:DOWN", true); + cmd.sub_command = DOWN; break; case FINAL_ST_STOP: - ret = tux_cmd_parser_insert_delay_command(timeout, - "TUX_CMD:WINGS:OFF", true); + cmd.sub_command = OFF; break; } + ret = tux_cmd_parser_insert_sys_command(timeout, &cmd); return ret; } Modified: software_suite_v2/middleware/tuxdriver/trunk/test/descriptor.txt =================================================================== --- software_suite_v2/middleware/tuxdriver/trunk/test/descriptor.txt 2008-05-08 09:55:10 UTC (rev 1137) +++ software_suite_v2/middleware/tuxdriver/trunk/test/descriptor.txt 2008-05-08 16:40:57 UTC (rev 1138) @@ -69,9 +69,9 @@ Variation : 0 Symbolic version : [FuxUSB_0.4.1] - Sound flash - Number of sounds : 10 - Last used block : 9 - Available record time (sec) : 59 + Number of sounds : 17 + Last used block : 52 + Available record time (sec) : 38 - ID connection - number : [0] Modified: software_suite_v2/middleware/tuxdriver/trunk/test/test_macro.txt =================================================================== --- software_suite_v2/middleware/tuxdriver/trunk/test/test_macro.txt 2008-05-08 09:55:10 UTC (rev 1137) +++ software_suite_v2/middleware/tuxdriver/trunk/test/test_macro.txt 2008-05-08 16:40:57 UTC (rev 1138) @@ -3,5 +3,7 @@ 2.0:TUX_CMD:LED:SET:LED_BOTH,1.0,GRADIENT_DELTA,3.0,30 1.0:TUX_CMD:SOUND_FLASH:PLAY:1:100 1.0:TUX_CMD:WINGS:ON_DURING:2.0,DOWN -3.0:TUX_CMD:SPINNING:LEFT_ON:1 -7.0:TUX_CMD:SPINNING:RIGHT_ON:5 +4.0:TUX_CMD:EYES:ON_DURING:2.0,OPEN +7.0:TUX_CMD:MOUTH:ON_DURING:2.0,CLOSE +10.0:TUX_CMD:SPINNING:LEFT_ON:1 +12.0:TUX_CMD:SPINNING:RIGHT_ON:5 |