[tuxdroid-svn] r1004 - software_suite_v2/middleware/tuxdriver/trunk/src
Status: Beta
Brought to you by:
ks156
From: eFfeM <c2m...@c2...> - 2008-04-22 19:29:30
|
Author: eFfeM Date: 2008-04-22 21:29:29 +0200 (Tue, 22 Apr 2008) New Revision: 1004 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_sound_flash.c software_suite_v2/middleware/tuxdriver/trunk/src/tux_spinning.c Log: - generalised the tokenizer in cmd_parser.c (added delimiter argument) - adopted the code for the additional paramter - applied it in tux_sound_flash.c - fixed small problem in tux_spinning.c Modified: software_suite_v2/middleware/tuxdriver/trunk/src/tux_cmd_parser.c =================================================================== --- software_suite_v2/middleware/tuxdriver/trunk/src/tux_cmd_parser.c 2008-04-22 12:48:24 UTC (rev 1003) +++ software_suite_v2/middleware/tuxdriver/trunk/src/tux_cmd_parser.c 2008-04-22 19:29:29 UTC (rev 1004) @@ -91,11 +91,13 @@ cmd_parser_enable = value; } + /** * */ LIBLOCAL int -tux_cmd_parser_get_tokens(char *src_str, tokens_t *toks, int max_tokens) +tux_cmd_parser_get_tokens(char *src_str, tokens_t *toks, + int max_tokens, char *delimiters) { char *p; char *pnext; @@ -112,13 +114,17 @@ { while (1) { - pnext = strpbrk(p, ":,"); + pnext = strpbrk(p, pattern); if (pnext) { len = pnext - p; strncpy((*toks)[cnt], p,len); ((*toks)[cnt])[len] = 0; cnt++; + if (cnt >= max_tokens) + { + break; + } } else { @@ -184,7 +190,7 @@ } log_debug("Parse command : [%s]", cmd_str); - i = tux_cmd_parser_get_tokens(cmd_str, &tokens, 32); + i = tux_cmd_parser_get_tokens(cmd_str, &tokens, 32, ":,"); /* If no tokens in the command then fail */ if (i <= 0) Modified: software_suite_v2/middleware/tuxdriver/trunk/src/tux_cmd_parser.h =================================================================== --- software_suite_v2/middleware/tuxdriver/trunk/src/tux_cmd_parser.h 2008-04-22 12:48:24 UTC (rev 1003) +++ software_suite_v2/middleware/tuxdriver/trunk/src/tux_cmd_parser.h 2008-04-22 19:29:29 UTC (rev 1004) @@ -34,7 +34,7 @@ extern void tux_cmd_parser_init(void); extern void tux_cmd_parser_set_enable(bool value); extern int tux_cmd_parser_get_tokens(char *src_str, tokens_t *toks, - int max_tokens); + int max_tokens, char *delimiters); extern TuxDrvError tux_cmd_parser_parse_command(char *cmd_str); extern bool tux_cmd_parser_clear_delay_commands(void); extern TuxDrvError tux_cmd_parser_insert_delay_command(float delay, Modified: software_suite_v2/middleware/tuxdriver/trunk/src/tux_driver.c =================================================================== --- software_suite_v2/middleware/tuxdriver/trunk/src/tux_driver.c 2008-04-22 12:48:24 UTC (rev 1003) +++ software_suite_v2/middleware/tuxdriver/trunk/src/tux_driver.c 2008-04-22 19:29:29 UTC (rev 1004) @@ -348,7 +348,7 @@ LIBEXPORT int TuxDrv_TokenizeStatus(char *status, tokens_t *tokens) { - return tux_cmd_parser_get_tokens(status, tokens, 32); + return tux_cmd_parser_get_tokens(status, tokens, 32, ":,"); } /** Modified: software_suite_v2/middleware/tuxdriver/trunk/src/tux_sound_flash.c =================================================================== --- software_suite_v2/middleware/tuxdriver/trunk/src/tux_sound_flash.c 2008-04-22 12:48:24 UTC (rev 1003) +++ software_suite_v2/middleware/tuxdriver/trunk/src/tux_sound_flash.c 2008-04-22 19:29:29 UTC (rev 1004) @@ -462,66 +462,29 @@ static void get_hw_audio_device_name(void) { - DIR* dir; FILE *fp; - struct dirent *dinfo; - int count; int card; - int last_card; - int device; - int last_device; char filename[29]; char line[81]; - char hw_device[7] = ""; unsigned int vid, pid; - dir = opendir("/dev/snd"); - if (dir == NULL) + for (card = 0; card < 255; card++) { - printf("No sound device directory\n"); - } - else - { - dinfo = readdir(dir); - last_card = 255; - last_device = 255; - while (dinfo != NULL) + sprintf(filename, "/proc/asound/card%d/usbid", card); + fp = fopen((const char *)filename, "r"); + if(fp != NULL) { - if (strncmp(dinfo->d_name, "pcm", 3) == 0) + fgets(line, 81, fp); + sscanf( line, "%4x:%4x", &vid, &pid); + fclose(fp); + if((vid == TUX_VID) && (pid == TUX_PID)) { - count = sscanf(dinfo->d_name, "pcmC%dD%d", &card, &device); - if ((count == 2) && ((last_card != card) || - (last_device != device))) - { - last_card = card; - last_device = device; - sprintf(filename, "/proc/asound/card%d/usbbus", card); - fp = fopen((const char *)filename, "r"); - if(fp != NULL) - { - fclose(fp); - sprintf(hw_device, "hw:%d,%d", card, device); - } - sprintf(filename, "/proc/asound/card%d/usbid", card); - fp = fopen((const char *)filename, "r"); - if(fp != NULL) - { - fgets(line, 81, fp); - sscanf( line, "%4x:%4x", &vid, &pid); - fclose(fp); - if((vid == TUX_VID) && (pid == TUX_PID)) - { - /* Todo log this */ - sprintf(hw_audio_name, "%s", hw_device); - return; - } - } - } + /* Todo log this */ + sprintf(hw_audio_name, "hw:%d,0", card); + return; } - dinfo = readdir(dir); } - closedir(dir); - } + } } #endif /* WIN32 || UNIX */ @@ -591,91 +554,10 @@ /** * */ -/* TODO : It has surely a better way to do this. */ static int parse_wavs(char *src_str, tokens_t *toks) { - tokens_t tokens; - char tok[10] = "%[^|]%[|]"; - char reg_ex[2560] = ""; - char ts[8] = ""; - int i; - - for (i = 0; i < 256; i++) - { - strncat(reg_ex, tok, sizeof(tok) - 1); - } - - i = sscanf(src_str, reg_ex, - tokens[0], ts, tokens[1], ts, tokens[2], ts, tokens[3], ts, - tokens[4], ts, tokens[5], ts, tokens[6], ts, tokens[7], ts, - tokens[8], ts, tokens[9], ts, tokens[10], ts, tokens[11], ts, - tokens[12], ts, tokens[13], ts, tokens[14], ts, tokens[15], ts, - tokens[16], ts, tokens[17], ts, tokens[18], ts, tokens[19], ts, - tokens[20], ts, tokens[21], ts, tokens[22], ts, tokens[23], ts, - tokens[24], ts, tokens[25], ts, tokens[26], ts, tokens[27], ts, - tokens[28], ts, tokens[29], ts, tokens[30], ts, tokens[31], ts, - tokens[32], ts, tokens[33], ts, tokens[34], ts, tokens[35], ts, - tokens[36], ts, tokens[37], ts, tokens[38], ts, tokens[39], ts, - tokens[40], ts, tokens[41], ts, tokens[42], ts, tokens[43], ts, - tokens[44], ts, tokens[45], ts, tokens[46], ts, tokens[47], ts, - tokens[48], ts, tokens[49], ts, tokens[50], ts, tokens[51], ts, - tokens[52], ts, tokens[53], ts, tokens[54], ts, tokens[55], ts, - tokens[56], ts, tokens[57], ts, tokens[58], ts, tokens[59], ts, - tokens[60], ts, tokens[61], ts, tokens[62], ts, tokens[63], ts, - tokens[64], ts, tokens[65], ts, tokens[66], ts, tokens[67], ts, - tokens[68], ts, tokens[69], ts, tokens[70], ts, tokens[71], ts, - tokens[72], ts, tokens[73], ts, tokens[74], ts, tokens[75], ts, - tokens[76], ts, tokens[77], ts, tokens[78], ts, tokens[79], ts, - tokens[80], ts, tokens[81], ts, tokens[82], ts, tokens[83], ts, - tokens[84], ts, tokens[85], ts, tokens[86], ts, tokens[87], ts, - tokens[88], ts, tokens[89], ts, tokens[90], ts, tokens[91], ts, - tokens[92], ts, tokens[93], ts, tokens[94], ts, tokens[95], ts, - tokens[96], ts, tokens[97], ts, tokens[98], ts, tokens[99], ts, - tokens[100], ts, tokens[101], ts, tokens[102], ts, tokens[103], ts, - tokens[104], ts, tokens[105], ts, tokens[106], ts, tokens[107], ts, - tokens[108], ts, tokens[109], ts, tokens[110], ts, tokens[111], ts, - tokens[112], ts, tokens[113], ts, tokens[114], ts, tokens[115], ts, - tokens[116], ts, tokens[117], ts, tokens[118], ts, tokens[119], ts, - tokens[120], ts, tokens[121], ts, tokens[122], ts, tokens[123], ts, - tokens[124], ts, tokens[125], ts, tokens[126], ts, tokens[127], ts, - tokens[128], ts, tokens[129], ts, tokens[130], ts, tokens[131], ts, - tokens[132], ts, tokens[133], ts, tokens[134], ts, tokens[135], ts, - tokens[136], ts, tokens[137], ts, tokens[138], ts, tokens[139], ts, - tokens[140], ts, tokens[141], ts, tokens[142], ts, tokens[143], ts, - tokens[144], ts, tokens[145], ts, tokens[146], ts, tokens[147], ts, - tokens[148], ts, tokens[149], ts, tokens[150], ts, tokens[151], ts, - tokens[152], ts, tokens[153], ts, tokens[154], ts, tokens[155], ts, - tokens[156], ts, tokens[157], ts, tokens[158], ts, tokens[159], ts, - tokens[160], ts, tokens[161], ts, tokens[162], ts, tokens[163], ts, - tokens[164], ts, tokens[165], ts, tokens[166], ts, tokens[167], ts, - tokens[168], ts, tokens[169], ts, tokens[170], ts, tokens[171], ts, - tokens[172], ts, tokens[173], ts, tokens[174], ts, tokens[175], ts, - tokens[176], ts, tokens[177], ts, tokens[178], ts, tokens[179], ts, - tokens[180], ts, tokens[181], ts, tokens[182], ts, tokens[183], ts, - tokens[184], ts, tokens[185], ts, tokens[186], ts, tokens[187], ts, - tokens[188], ts, tokens[189], ts, tokens[190], ts, tokens[191], ts, - tokens[192], ts, tokens[193], ts, tokens[194], ts, tokens[195], ts, - tokens[196], ts, tokens[197], ts, tokens[198], ts, tokens[199], ts, - tokens[200], ts, tokens[201], ts, tokens[202], ts, tokens[203], ts, - tokens[204], ts, tokens[205], ts, tokens[206], ts, tokens[207], ts, - tokens[208], ts, tokens[209], ts, tokens[210], ts, tokens[211], ts, - tokens[212], ts, tokens[213], ts, tokens[214], ts, tokens[215], ts, - tokens[216], ts, tokens[217], ts, tokens[218], ts, tokens[219], ts, - tokens[220], ts, tokens[221], ts, tokens[222], ts, tokens[223], ts, - tokens[224], ts, tokens[225], ts, tokens[226], ts, tokens[227], ts, - tokens[228], ts, tokens[229], ts, tokens[230], ts, tokens[231], ts, - tokens[232], ts, tokens[233], ts, tokens[234], ts, tokens[235], ts, - tokens[236], ts, tokens[237], ts, tokens[238], ts, tokens[239], ts, - tokens[240], ts, tokens[241], ts, tokens[242], ts, tokens[243], ts, - tokens[244], ts, tokens[245], ts, tokens[246], ts, tokens[247], ts, - tokens[248], ts, tokens[249], ts, tokens[250], ts, tokens[251], ts, - tokens[252], ts, tokens[253], ts, tokens[254], ts, tokens[255], ts); - - memcpy(toks, &tokens, sizeof(tokens_t)); - - i -= i / 2; - return i; + return tux_cmd_parser_get_tokens(src_str, toks, 256, "|"); } /** Modified: software_suite_v2/middleware/tuxdriver/trunk/src/tux_spinning.c =================================================================== --- software_suite_v2/middleware/tuxdriver/trunk/src/tux_spinning.c 2008-04-22 12:48:24 UTC (rev 1003) +++ software_suite_v2/middleware/tuxdriver/trunk/src/tux_spinning.c 2008-04-22 19:29:29 UTC (rev 1004) @@ -91,7 +91,6 @@ tux_spinning_cmd_speed(char *speed) { unsigned char sp = 0; - unsigned char fs = FINAL_ST_UNDEFINED; bool ret; ret = str_to_uint8(speed, &sp); @@ -101,7 +100,8 @@ return false; } - return tux_movement_perform(MOVE_SPIN_R, 0, 0.0, sp, fs, true); + return tux_movement_perform(MOVE_SPIN_R, 0, 0.0, sp, FINAL_ST_UNDEFINED, + true); } @@ -109,7 +109,6 @@ tux_spinning_cmd_on(move_body_part_t movement, char *counter) { unsigned char cnt; - unsigned char fs; bool ret; ret = str_to_uint8(counter, &cnt); @@ -119,7 +118,8 @@ return false; } - return tux_movement_perform(movement, cnt, 0.0, 5, fs, false); + return tux_movement_perform(movement, cnt, 0.0, 5, FINAL_ST_UNDEFINED, + false); } /** |