Commit from zer0 on branch b_zer0 (2007-10-14 12:17 CEST) =================================
start to use progmem aversive modules/ihm/parse/parse_num.c 1.1.2.4 aversive modules/ihm/parse/test/.config 1.1.2.3 aversive modules/ihm/parse/test/commands.c 1.1.2.2 aversive modules/ihm/parse/test/main.c 1.1.2.5 aversive modules/ihm/rdline/rdline.c 1.1.2.4 ====================================== aversive/modules/ihm/parse/parse_num.c (1.1.2.3 -> 1.1.2.4) ====================================== @@ -338,7 +338,7 @@ *(int8_t *)res = (int8_t) res1; return (buf-srcbuf); } - else if ( type == INT16 && res1 <= S16_MAX + 1 ) { + else if ( type == INT16 && res1 <= (uint16_t)S16_MAX + 1 ) { if (res) *(int16_t *)res = (int16_t) res1; return (buf-srcbuf); ======================================= aversive/modules/ihm/parse/test/.config (1.1.2.2 -> 1.1.2.3) ======================================= @@ -1,5 +1,5 @@ # -# Automatically generated make config: don't edit +# Automatically generated by make menuconfig: don't edit # # @@ -53,11 +53,11 @@ # # Generation options # -CONFIG_OPTM_0=y +# CONFIG_OPTM_0 is not set # CONFIG_OPTM_1 is not set # CONFIG_OPTM_2 is not set # CONFIG_OPTM_3 is not set -# CONFIG_OPTM_S is not set +CONFIG_OPTM_S=y CONFIG_MATH_LIB=y # CONFIG_FDEVOPEN_COMPAT is not set # CONFIG_MINIMAL_PRINTF is not set @@ -70,10 +70,6 @@ # # Base modules # - -# -# Enable math library in generation options to see all modules -# CONFIG_MODULE_CIRBUF=y # CONFIG_MODULE_CIRBUF_LARGE is not set # CONFIG_MODULE_FIXED_POINT is not set @@ -87,10 +83,6 @@ # # Communication modules # - -# -# uart needs circular buffer, mf2 client may need scheduler -# CONFIG_MODULE_UART=y CONFIG_MODULE_UART_CREATE_CONFIG=y # CONFIG_MODULE_I2C is not set @@ -159,10 +151,6 @@ # Control system modules # # CONFIG_MODULE_CONTROL_SYSTEM_MANAGER is not set - -# -# Filters -# # CONFIG_MODULE_PID is not set # CONFIG_MODULE_RAMP is not set # CONFIG_MODULE_QUADRAMP is not set @@ -172,10 +160,6 @@ # # Crypto modules # - -# -# Crypto modules depend on utils module -# # CONFIG_MODULE_AES is not set # CONFIG_MODULE_AES_CTR is not set # CONFIG_MODULE_MD5 is not set @@ -185,20 +169,12 @@ # # Encodings modules # - -# -# Encoding modules depend on utils module -# # CONFIG_MODULE_BASE64 is not set # CONFIG_MODULE_HAMMING is not set # # Debug modules # - -# -# Debug modules depend on utils module -# # CONFIG_MODULE_DIAGNOSTIC is not set # CONFIG_MODULE_DIAGNOSTIC_CREATE_CONFIG is not set CONFIG_MODULE_ERROR=y @@ -207,8 +183,8 @@ # # Programmer options # -CONFIG_AVRDUDE=y -# CONFIG_AVARICE is not set +# CONFIG_AVRDUDE is not set +CONFIG_AVARICE=y # # Avrdude ========================================== aversive/modules/ihm/parse/test/commands.c (1.1.2.1 -> 1.1.2.2) ========================================== @@ -20,7 +20,7 @@ void cmd1_parsed(void * parsed_result, void * data) { struct cmd1_result * res = parsed_result; - printf("MATCH %s %s %d %s\n", res->arg0, res->arg1, res->arg2, res->arg3); + printf("MATCH %s %s %d %s\n", res->arg0, res->arg1, (int)res->arg2, res->arg3); } struct token_string cmd1_arg0 = TOKEN_STRING_INITIALIZER(struct cmd1_result, arg0, "cmd1"); @@ -75,7 +75,7 @@ { struct cmd3_result * res = parsed_result; - printf("MATCH %s %f\n", res->arg0, res->arg1); + printf("MATCH %s %f\n", res->arg0, (double)res->arg1); } struct token_string cmd3_arg0 = TOKEN_STRING_INITIALIZER(struct cmd3_result, arg0, "toto#titi"); ====================================== aversive/modules/ihm/parse/test/main.c (1.1.2.4 -> 1.1.2.5) ====================================== @@ -16,7 +16,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - * Revision : $Id: main.c,v 1.1.2.4 2007-10-03 20:43:16 zer0 Exp $ + * Revision : $Id: main.c,v 1.1.2.5 2007-10-14 10:17:02 zer0 Exp $ * * */ @@ -113,10 +113,10 @@ { #ifdef HOST_VERSION struct termios oldterm, term; - char buf[127]; int n, i; int8_t ret; #endif + char buf[127]; int err; int16_t state=0; @@ -151,15 +151,15 @@ printf("\n"); err = parse_num(&tok_num, "123", &result_num); if (err >= 0) - printf("Match : <%d> (consumed %d)\n", result_num.arg0, err); + printf("Match : <%d> (consumed %d)\n", (int)result_num.arg0, err); err = parse_num(&tok_num, "0x55", &result_num); if (err >= 0) - printf("Match : <%d> (consumed %d)\n", result_num.arg0, err); + printf("Match : <%d> (consumed %d)\n", (int)result_num.arg0, err); err = parse_num(&tok_num, "121321003115165 ", &result_num); if (err >= 0) - printf("Match : <%d> (consumed %d)\n", result_num.arg0, err); + printf("Match : <%d> (consumed %d)\n", (int)result_num.arg0, err); if (parse(&main_ctx, "toto 3.3\n")) printf("does not match... :'(\n"); ==================================== aversive/modules/ihm/rdline/rdline.c (1.1.2.3 -> 1.1.2.4) ==================================== @@ -16,7 +16,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - * Revision : $Id: rdline.c,v 1.1.2.3 2007-10-03 20:43:16 zer0 Exp $ + * Revision : $Id: rdline.c,v 1.1.2.4 2007-10-14 10:17:02 zer0 Exp $ * * */ @@ -27,80 +27,79 @@ #include <stdarg.h> #include <ctype.h> +#include <aversive/pgmspace.h> + #include <cirbuf.h> #include "rdline.h" +static const prog_char cmd0[] = vt100_up_arr; +static const prog_char cmd1[] = vt100_down_arr; +static const prog_char cmd2[] = vt100_right_arr; +static const prog_char cmd3[] = vt100_left_arr; +static const prog_char cmd4[] = "\177"; +static const prog_char cmd5[] = "\n"; +static const prog_char cmd6[] = "\001"; +static const prog_char cmd7[] = "\005"; +static const prog_char cmd8[] = "\013"; +static const prog_char cmd9[] = "\031"; +static const prog_char cmd10[] = "\003"; +static const prog_char cmd11[] = "\006"; +static const prog_char cmd12[] = "\002"; +static const prog_char cmd13[] = vt100_suppr; +static const prog_char cmd14[] = vt100_tab; +static const prog_char cmd15[] = "\004"; +static const prog_char cmd16[] = "\014"; +static const prog_char cmd17[] = "\r"; +static const prog_char cmd18[] = "\033\177"; +static const prog_char cmd19[] = vt100_word_left; +static const prog_char cmd20[] = vt100_word_right; +static const prog_char cmd21[] = "?"; - -static const char * rdline_commands[] = { - vt100_up_arr, +static const prog_char * rdline_commands[] PROGMEM = { + cmd0, #define KEY_UP_ARR 0 - - vt100_down_arr, + cmd1, #define KEY_DOWN_ARR 1 - - vt100_right_arr, + cmd2, #define KEY_RIGHT_ARR 2 - - vt100_left_arr, + cmd3, #define KEY_LEFT_ARR 3 - - "\177", + cmd4, #define KEY_BKSPACE 4 - - "\n", + cmd5, #define KEY_RETURN 5 - - "\001", + cmd6, #define KEY_CTRL_A 6 - - "\005", + cmd7, #define KEY_CTRL_E 7 - - "\013", + cmd8, #define KEY_CTRL_K 8 - - "\031", + cmd9, #define KEY_CTRL_Y 9 - - "\003", + cmd10, #define KEY_CTRL_C 10 - - "\006", + cmd11, #define KEY_CTRL_F 11 - - "\002", + cmd12, #define KEY_CTRL_B 12 - - vt100_suppr, + cmd13, #define KEY_SUPPR 13 - - vt100_tab, + cmd14, #define KEY_TAB 14 - - "\004", + cmd15, #define KEY_CTRL_D 15 - - "\014", + cmd16, #define KEY_CTRL_L 16 - - "\r", + cmd17, #define KEY_RETURN2 17 - - "\033\177", + cmd18, #define KEY_META_BKSPACE 18 - - vt100_word_left, + cmd19, #define KEY_WLEFT 19 - - vt100_word_right, + cmd20, #define KEY_WRIGHT 20 - - "?", + cmd21, #define KEY_HELP 21 - - - NULL, }; @@ -216,7 +215,9 @@ uint8_t n, i; int8_t cmd; char tmp; +#ifdef CONFIG_MODULE_RDLINE_HISTORY char * buf; +#endif if (rdl->status != RDLINE_RUNNING) return -1; @@ -370,8 +371,6 @@ case KEY_TAB: case KEY_HELP: cirbuf_align_left(&rdl->left); - // rdl->left_buf[CIRBUF_GET_LEN(&rdl->left)] = '?'; /* XXX ? */ - //rdl->left_buf[CIRBUF_GET_LEN(&rdl->left)+1] = '\0'; rdl->left_buf[CIRBUF_GET_LEN(&rdl->left)] = '\0'; if (rdl->complete) { char tmp_buf[127]; /* XXX */ @@ -687,17 +686,17 @@ static int8_t match_command(char * buf, uint8_t size) { - const char ** cmd = rdline_commands; + const prog_char * cmd; uint8_t i = 0; - while(*cmd) { - if (size == strlen(*cmd) && - ! memcmp(buf, *cmd, size)) { + for (i=0 ; i<sizeof(rdline_commands)/sizeof(const prog_char *) ; i++) { + cmd = (const prog_char *) pgm_read_word (rdline_commands + i); + if (size == strlen_P(cmd) && + ! memcmp_P(buf, cmd, size)) { return i; } - cmd ++; - i++; } + return -1; } _______________________________________________ Avr-list mailing list Avr-list@droids-corp.org CVSWEB : http://cvsweb.droids-corp.org/cgi-bin/viewcvs.cgi/aversive WIKI : http://wiki.droids-corp.org/index.php/Aversive DOXYGEN : http://zer0.droids-corp.org/doxygen_aversive/html/ BUGZILLA : http://bugzilla.droids-corp.org COMMIT LOGS : http://zer0.droids-corp.org/aversive_commitlog