Commit from zer0 on branch b_zer0 (2007-11-21 22:54 CET)
=================================
enhance rdline and parse.
Use progmem in simple cases.
aversive include/aversive/pgmspace.h 1.1.2.4
aversive modules/base/math/fixed_point/test/.config 1.7.4.7
aversive modules/ihm/parse/parse.c 1.1.2.6
aversive modules/ihm/parse/parse.h 1.1.2.6
aversive modules/ihm/parse/parse_string.h 1.1.2.5
aversive modules/ihm/rdline/rdline.c 1.1.2.6
aversive modules/ihm/rdline/rdline.h 1.1.2.3
aversive modules/ihm/rdline/test/.config 1.1.2.3
====================================
aversive/include/aversive/pgmspace.h (1.1.2.3 -> 1.1.2.4)
====================================
@@ -15,7 +15,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: pgmspace.h,v 1.1.2.3 2007-11-15 11:15:46 zer0 Exp $
+ * Revision : $Id: pgmspace.h,v 1.1.2.4 2007-11-21 21:54:38 zer0 Exp $
*
*/
@@ -31,12 +31,14 @@
#include <avr/pgmspace.h>
+
#else
#include <stdint.h>
#define printf_P printf
#define memcmp_P memcmp
+#define strcat_P strcat
#define strcmp_P strcmp
#define strncmp_P strncmp
#define strlen_P strlen
@@ -45,8 +47,11 @@
#define PGM_P const char *
#define PSTR(x) x
#define PROGMEM
-#define pgm_read_word(x) (*(x))
-#define pgm_read_byte(x) (*(x))
+
+/* XXX don't define it, it's dangerous because it can be used to read
+ * an address that have not the same size */
+/* #define pgm_read_word(x) (*(x)) */
+/* #define pgm_read_byte(x) (*(x)) */
typedef void prog_void;
typedef char prog_char;
===================================================
aversive/modules/base/math/fixed_point/test/.config (1.7.4.6 -> 1.7.4.7)
===================================================
@@ -75,6 +75,7 @@
# 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=y
# CONFIG_MODULE_VECT2 is not set
# CONFIG_MODULE_SCHEDULER is not set
@@ -117,6 +118,11 @@
# IHM modules
#
# CONFIG_MODULE_MENU is not set
+# CONFIG_MODULE_RDLINE is not set
+# CONFIG_MODULE_RDLINE_CREATE_CONFIG is not set
+# CONFIG_MODULE_RDLINE_KILL_BUF is not set
+# CONFIG_MODULE_RDLINE_HISTORY is not set
+# CONFIG_MODULE_PARSE is not set
#
# External devices modules
==================================
aversive/modules/ihm/parse/parse.c (1.1.2.5 -> 1.1.2.6)
==================================
@@ -1,8 +1,33 @@
+/*
+ * Copyright Droids Corporation (2007)
+ * Olivier MATZ <[EMAIL PROTECTED]>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * 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: parse.c,v 1.1.2.6 2007-11-21 21:54:39 zer0 Exp $
+ *
+ *
+ */
+
#include <stdio.h>
#include <string.h>
#include <inttypes.h>
#include <ctype.h>
+#include <aversive/pgmspace.h>
+
#include "parse.h"
/* XXX */
@@ -242,8 +267,7 @@
char tmpbuf[64], completion_buf[64];
uint8_t incomplete_token_len;
int8_t completion_len = -1;
- int8_t nb_token = -1;
- uint8_t buf_len = strlen(buf);
+ int8_t nb_token = 0;
uint8_t i, n;
int8_t l;
uint8_t nb_completable;
@@ -252,28 +276,12 @@
debug_printf("%s called\n", __FUNCTION__);
/* count the number of complete token to parse */
- for (i=0 ; i<buf_len ; i++) {
- if (nb_token == -1) {
- if (!isblank(buf[i])) {
- nb_token = 0;
- }
- incomplete_token = buf+i;
- }
- else {
- if (isblank(buf[i])) {
- incomplete_token = buf+i+1;
- if (!isblank(buf[i-1])) {
- nb_token++;
- }
- }
- }
+ for (i=0 ; buf[i] ; i++) {
+ if (!isblank(buf[i]) && isblank(buf[i+1]))
+ nb_token++;
+ if (isblank(buf[i]) && !isblank(buf[i+1]))
+ incomplete_token = buf+i+1;
}
-
- if (nb_token == -1) {
- nb_token = 0;
- incomplete_token++;
- }
-
incomplete_token_len = strlen(incomplete_token);
/* first call -> do a first pass */
@@ -306,7 +314,7 @@
for (i=0 ; i<n ; i++) {
if (token->ops->complete_get_elt(token, i,
tmpbuf, sizeof(tmpbuf)-1) < 0)
continue;
- strcat(tmpbuf, " "); /* we have at least room
for one char */
+ strcat_P(tmpbuf, PSTR(" ")); /* we have at
least room for one char */
debug_printf(" choice <%s>\n", tmpbuf);
/* does the completion match the beginning of
the word ? */
if (!strncmp(incomplete_token, tmpbuf,
incomplete_token_len)) {
@@ -374,10 +382,13 @@
(*state)++;
if (token && token->ops->get_help) {
token->ops->get_help(token, tmpbuf,
sizeof(tmpbuf));
- snprintf(dst, size, "[%s]: %s", tmpbuf,
inst->help_str?:"No help");
+ if (inst->help_str)
+ snprintf_P(dst, size, PSTR("[%s]: %s"),
tmpbuf, inst->help_str);
+ else
+ snprintf_P(dst, size, PSTR("[%s]: No
help"), tmpbuf);
}
else {
- snprintf(dst, size, "[RETURN]");
+ snprintf_P(dst, size, PSTR("[RETURN]"));
}
return 1;
}
@@ -385,7 +396,7 @@
for (i=0 ; i<n ; i++) {
if (token->ops->complete_get_elt(token, i, tmpbuf,
sizeof(tmpbuf)-1) < 0)
continue;
- strcat(tmpbuf, " "); /* we have at least room for one
char */
+ strcat_P(tmpbuf, PSTR(" ")); /* we have at least room
for one char */
debug_printf(" choice <%s>\n", tmpbuf);
/* does the completion match the beginning of the word
? */
if (!strncmp(incomplete_token, tmpbuf,
incomplete_token_len)) {
==================================
aversive/modules/ihm/parse/parse.h (1.1.2.5 -> 1.1.2.6)
==================================
@@ -1,3 +1,26 @@
+/*
+ * Copyright Droids Corporation (2007)
+ * Olivier MATZ <[EMAIL PROTECTED]>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * 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: parse.h,v 1.1.2.6 2007-11-21 21:54:39 zer0 Exp $
+ *
+ *
+ */
+
#ifndef _PARSE_H_
#define _PARSE_H_
@@ -7,6 +30,7 @@
#define offsetof(type, field) ((size_t) &( ((type *)0)->field) )
#endif
+#define PARSE_SUCCESS 0
#define PARSE_AMBIGUOUS -1
#define PARSE_NOMATCH -2
#define PARSE_BAD_ARGS -3
@@ -20,10 +44,15 @@
* parsed chars on success and a negative value on error.
*
* complete_get_nb() returns the number of possible values for this
- * token if completion is possible.
+ * token if completion is possible. If it is NULL or if it returns 0,
+ * no completion is possible.
+ *
+ * complete_get_elt() copy in dstbuf (the size is specified in the
+ * parameter) the i-th possible completion for this token. returns 0
+ * on success or and a negative value on error.
*
- * complete_get_elt() XXX
- * get_help() XXX
+ * get_help() fills the dstbuf with the help for the token. It returns
+ * -1 on error and 0 on success.
*/
struct token_ops {
/** parse(token ptr, buf, res pts) */
@@ -46,7 +75,9 @@
};
/**
- * XXX
+ * Store a instruction, which is a pointer to a callback function and
+ * its parameter that is called when the instruction is parsed, a help
+ * string, and a list of token composing this instruction.
*/
struct inst {
/* f(parsed_struct, data) */
@@ -56,15 +87,44 @@
void * tokens[];
};
+/**
+ * A context is identified by its name, and contains a list of
+ * instruction
+ */
struct ctx {
char * name;
- void * insts[];
+ struct inst * insts[];
};
-
+/**
+ * Try to parse a buffer according to the specified context. The
+ * argument buf must ends with "\n\0". The function returns
+ * PARSE_AMBIGUOUS, PARSE_NOMATCH or PARSE_BAD_ARGS on error. Else it
+ * calls the associated function (defined in the context) and returns
+ * 0 (PARSE_SUCCESS).
+ */
int8_t parse(struct ctx * ctx, const char * buf);
+
+/**
+ * complete() must be called with *state==0.
+ * It returns < 0 on error.
+ *
+ * Else it returns:
+ * 2 on completion (one possible choice). In this case, the chars
+ * are appended in dst buffer.
+ * 1 if there is several possible choices. In this case, you must
+ * call the function again, keeping the value of state intact.
+ * 0 when the iteration is finished. The dst is not valid for this
+ * last call.
+ *
+ * The returned dst buf ends with \0.
+ *
+ */
int8_t complete(struct ctx * ctx, const char *buf, int16_t *state,
char *dst, uint8_t size);
+
+
+/* true if(!c || iscomment(c) || isblank(c) || isendofline(c)) */
int isendoftoken(char c);
#endif /* _PARSE_H_ */
=========================================
aversive/modules/ihm/parse/parse_string.h (1.1.2.4 -> 1.1.2.5)
=========================================
@@ -3,6 +3,7 @@
#include "parse.h"
+/* size of a parsed string */
#define STR_TOKEN_SIZE 32
typedef char fixed_string_t[STR_TOKEN_SIZE];
====================================
aversive/modules/ihm/rdline/rdline.c (1.1.2.5 -> 1.1.2.6)
====================================
@@ -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.5 2007-11-15 11:15:46 zer0 Exp $
+ * Revision : $Id: rdline.c,v 1.1.2.6 2007-11-21 21:54:39 zer0 Exp $
*
*
*/
@@ -105,7 +105,9 @@
static uint8_t vt100_parser(struct rdline *rdl, char c);
static int8_t match_command(char * buf, uint8_t size);
-static void rdline_printf(struct rdline * rdl, const char * fmt, ...);
+static void rdline_puts_P(struct rdline * rdl, const prog_char * buf);
+static void rdline_miniprintf_P(struct rdline * rdl,
+ const prog_char * buf, uint8_t val);
#ifdef CONFIG_MODULE_RDLINE_HISTORY
static void rdline_remove_old_history_item(struct rdline * rdl);
@@ -116,7 +118,7 @@
void rdline_init(struct rdline * rdl, void (*write_char)(char),
void (*validate)(const char *, uint8_t size),
- int8_t (*complete)(const char *, uint8_t size, char * dstbuf,
+ int8_t (*complete)(const char *, char * dstbuf,
uint8_t dstsize, int16_t * state))
{
memset(rdl, 0, sizeof(*rdl));
@@ -185,13 +187,13 @@
uint8_t i;
char tmp;
- rdline_printf(rdl, vt100_clear_right);
+ rdline_puts_P(rdl, PSTR(vt100_clear_right));
if (!CIRBUF_IS_EMPTY(&rdl->right)) {
CIRBUF_FOREACH(&rdl->right, i, tmp) {
rdl->write_char(tmp);
}
- rdline_printf(rdl, vt100_multi_left,
- CIRBUF_GET_LEN(&rdl->right));
+ rdline_miniprintf_P(rdl, PSTR(vt100_multi_left),
+ CIRBUF_GET_LEN(&rdl->right));
}
}
@@ -200,7 +202,7 @@
uint8_t i;
char tmp;
- rdline_printf(rdl, vt100_home);
+ rdline_puts_P(rdl, PSTR(vt100_home));
for (i=0 ; i<rdl->prompt_size ; i++)
rdl->write_char(rdl->prompt[i]);
CIRBUF_FOREACH(&rdl->left, i, tmp) {
@@ -236,7 +238,7 @@
tmp = cirbuf_get_tail(&rdl->left);
cirbuf_del_tail(&rdl->left);
cirbuf_add_head(&rdl->right, tmp);
- rdline_printf(rdl, vt100_left_arr);
+ rdline_puts_P(rdl, PSTR(vt100_left_arr));
break;
case KEY_CTRL_F:
@@ -246,21 +248,21 @@
tmp = cirbuf_get_head(&rdl->right);
cirbuf_del_head(&rdl->right);
cirbuf_add_tail(&rdl->left, tmp);
- rdline_printf(rdl, vt100_right_arr);
+ rdline_puts_P(rdl, PSTR(vt100_right_arr));
break;
case KEY_WLEFT:
while (! CIRBUF_IS_EMPTY(&rdl->left) &&
(tmp = cirbuf_get_tail(&rdl->left)) &&
isblank(tmp)) {
- rdline_printf(rdl, vt100_left_arr);
+ rdline_puts_P(rdl, PSTR(vt100_left_arr));
cirbuf_del_tail(&rdl->left);
cirbuf_add_head(&rdl->right, tmp);
}
while (! CIRBUF_IS_EMPTY(&rdl->left) &&
(tmp = cirbuf_get_tail(&rdl->left)) &&
!isblank(tmp)) {
- rdline_printf(rdl, vt100_left_arr);
+ rdline_puts_P(rdl, PSTR(vt100_left_arr));
cirbuf_del_tail(&rdl->left);
cirbuf_add_head(&rdl->right, tmp);
}
@@ -270,14 +272,14 @@
while (! CIRBUF_IS_EMPTY(&rdl->right) &&
(tmp = cirbuf_get_head(&rdl->right)) &&
isblank(tmp)) {
- rdline_printf(rdl, vt100_right_arr);
+ rdline_puts_P(rdl, PSTR(vt100_right_arr));
cirbuf_del_head(&rdl->right);
cirbuf_add_tail(&rdl->left, tmp);
}
while (! CIRBUF_IS_EMPTY(&rdl->right) &&
(tmp = cirbuf_get_head(&rdl->right)) &&
!isblank(tmp)) {
- rdline_printf(rdl, vt100_right_arr);
+ rdline_puts_P(rdl, PSTR(vt100_right_arr));
cirbuf_del_head(&rdl->right);
cirbuf_add_tail(&rdl->left, tmp);
}
@@ -285,18 +287,18 @@
case KEY_BKSPACE:
if(!cirbuf_del_tail_safe(&rdl->left)) {
- rdline_printf(rdl, vt100_bs);
+ rdline_puts_P(rdl, PSTR(vt100_bs));
display_right_buffer(rdl);
}
break;
case KEY_META_BKSPACE:
while (! CIRBUF_IS_EMPTY(&rdl->left) &&
isblank(cirbuf_get_tail(&rdl->left))) {
- rdline_printf(rdl, vt100_bs);
+ rdline_puts_P(rdl, PSTR(vt100_bs));
cirbuf_del_tail(&rdl->left);
}
while (! CIRBUF_IS_EMPTY(&rdl->left) &&
!isblank(cirbuf_get_tail(&rdl->left))) {
- rdline_printf(rdl, vt100_bs);
+ rdline_puts_P(rdl, PSTR(vt100_bs));
cirbuf_del_tail(&rdl->left);
}
display_right_buffer(rdl);
@@ -317,8 +319,8 @@
case KEY_CTRL_A:
if (CIRBUF_IS_EMPTY(&rdl->left))
break;
- rdline_printf(rdl, vt100_multi_left,
- CIRBUF_GET_LEN(&rdl->left));
+ rdline_miniprintf_P(rdl, PSTR(vt100_multi_left),
+ CIRBUF_GET_LEN(&rdl->left));
while (! CIRBUF_IS_EMPTY(&rdl->left)) {
tmp = cirbuf_get_tail(&rdl->left);
cirbuf_del_tail(&rdl->left);
@@ -329,8 +331,8 @@
case KEY_CTRL_E:
if (CIRBUF_IS_EMPTY(&rdl->right))
break;
- rdline_printf(rdl, vt100_multi_right,
- CIRBUF_GET_LEN(&rdl->right));
+ rdline_miniprintf_P(rdl, PSTR(vt100_multi_right),
+ CIRBUF_GET_LEN(&rdl->right));
while (! CIRBUF_IS_EMPTY(&rdl->right)) {
tmp = cirbuf_get_head(&rdl->right);
cirbuf_del_head(&rdl->right);
@@ -343,7 +345,7 @@
cirbuf_get_buf_head(&rdl->right, rdl->kill_buf,
RDLINE_BUF_SIZE);
rdl->kill_size = CIRBUF_GET_LEN(&rdl->right);
cirbuf_del_buf_head(&rdl->right, rdl->kill_size);
- rdline_printf(rdl, vt100_clear_right);
+ rdline_puts_P(rdl, PSTR(vt100_clear_right));
break;
case KEY_CTRL_Y:
@@ -360,7 +362,7 @@
#endif /* CONFIG_MODULE_RDLINE_KILL_BUF */
case KEY_CTRL_C:
- rdline_printf(rdl, "\r\n");
+ rdline_puts_P(rdl, PSTR("\r\n"));
rdline_newline(rdl, rdl->prompt);
break;
@@ -393,12 +395,11 @@
* le buffer se termine par 0
*/
- ret = rdl->complete(rdl->left_buf,
CIRBUF_GET_LEN(&rdl->left)+2,
- tmp_buf, sizeof(tmp_buf),
+ ret = rdl->complete(rdl->left_buf, tmp_buf,
sizeof(tmp_buf),
&complete_state);
/* no completion or error */
if (ret <= 0) {
- return 2; /* XXX ? why 2 ? I don't
remember */
+ return 2;
}
@@ -424,9 +425,8 @@
for (i=0 ; tmp_buf[i] ; i++)
rdl->write_char(tmp_buf[i]);
rdl->write_char('\n');
- ret = rdl->complete(rdl->left_buf,
CIRBUF_GET_LEN(&rdl->left)+2,
- tmp_buf,
sizeof(tmp_buf),
- &complete_state);
+ ret = rdl->complete(rdl->left_buf,
tmp_buf,
+ sizeof(tmp_buf),
&complete_state);
}
rdline_redisplay(rdl);
@@ -437,7 +437,7 @@
case KEY_RETURN2:
rdline_get_buffer(rdl);
rdl->status = RDLINE_INIT;
- rdline_printf(rdl, "\r\n");
+ rdline_puts_P(rdl, PSTR("\r\n"));
#ifdef CONFIG_MODULE_RDLINE_HISTORY
if (rdl->history_cur_line != -1)
rdline_remove_first_history_item(rdl);
@@ -470,7 +470,6 @@
break;
case KEY_DOWN_ARR:
-
if (rdl->history_cur_line - 1 < 0)
break;
@@ -490,7 +489,7 @@
default:
break;
- }
+ }
return 0;
}
@@ -690,7 +689,12 @@
uint8_t i = 0;
for (i=0 ; i<sizeof(rdline_commands)/sizeof(const prog_char *) ; i++) {
+#ifdef HOST_VERSION
+ cmd = *(rdline_commands + i);
+#else
cmd = (const prog_char *) pgm_read_word (rdline_commands + i);
+#endif
+
if (size == strlen_P(cmd) &&
!strncmp_P(buf, cmd, strlen_P(cmd))) {
return i;
@@ -701,15 +705,56 @@
}
static void
-rdline_printf(struct rdline * rdl, const char * fmt, ...)
+rdline_puts_P(struct rdline * rdl, const prog_char * buf)
{
- va_list ap;
- char buf[16];
- uint8_t n,i;
-
- va_start(ap, fmt);
- n=vsnprintf(buf, 16, fmt, ap);
- for (i=0 ; i<n ; i++)
- rdl->write_char(buf[i]);
- va_end(ap);
+ char c;
+#ifdef HOST_VERSION
+ while ( (c = *(buf++)) != '\0' ) {
+ rdl->write_char(c);
+ }
+#else
+ while ( (c=pgm_read_byte(buf++)) != '\0' ) {
+ rdl->write_char(c);
+ }
+#endif
}
+
+/* a very very basic printf with one arg and one format 'u' */
+static void
+rdline_miniprintf_P(struct rdline * rdl, const prog_char * buf, uint8_t val)
+{
+ char c, started=0, div=100;
+
+#ifdef HOST_VERSION
+ while ( (c=*(buf++)) ) {
+#else
+ while ( (c=pgm_read_byte(buf++)) ) {
+#endif
+ if (c=='%') {
+#ifdef HOST_VERSION
+ c = *(buf++);
+#else
+ c = pgm_read_byte(buf++);
+#endif
+ if (c=='u') { /* val is never more than 255 */
+ while (div) {
+ c = val / div;
+ if (c || started) {
+ rdl->write_char(c+'0');
+ started = 1;
+ }
+ val %= div;
+ div /= 10;
+ }
+ }
+ else {
+ rdl->write_char('%');
+ rdl->write_char(c);
+ }
+ }
+ else {
+ rdl->write_char(c);
+ }
+ }
+}
+
====================================
aversive/modules/ihm/rdline/rdline.h (1.1.2.2 -> 1.1.2.3)
====================================
@@ -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.h,v 1.1.2.2 2007-10-03 20:43:16 zer0 Exp $
+ * Revision : $Id: rdline.h,v 1.1.2.3 2007-11-21 21:54:39 zer0 Exp $
*
*
*/
@@ -47,8 +47,6 @@
/*
* TODO :
- * - history
- * - make it configurable (kill buff, history, line length)
* - uint8_t -> int ?
* - use cirbuf_for_each ? optimze ?
*/
@@ -107,18 +105,22 @@
char prompt[RDLINE_PROMPT_SIZE];
uint8_t prompt_size;
+#ifdef CONFIG_MODULE_RDLINE_KILL_BUF
char kill_buf[RDLINE_BUF_SIZE];
uint8_t kill_size;
+#endif
+#ifdef CONFIG_MODULE_RDLINE_HISTORY
/* history */
struct cirbuf history;
char history_buf[RDLINE_HISTORY_BUF_SIZE];
int8_t history_cur_line;
+#endif
/* callbacks and func pointers */
void (*write_char)(char);
void (*validate)(const char *, uint8_t size);
- int8_t (*complete)(const char *, uint8_t size, char * dstbuf,
+ int8_t (*complete)(const char *, char * dstbuf,
uint8_t dstsize, int16_t * state);
/* vt100 parser */
@@ -139,7 +141,7 @@
*/
void rdline_init(struct rdline * rdl, void (*write_char)(char),
void (*validate)(const char *, uint8_t size),
- int8_t (*complete)(const char *, uint8_t size, char * dstbuf,
+ int8_t (*complete)(const char *, char * dstbuf,
uint8_t dstsize, int16_t * state));
@@ -172,7 +174,7 @@
/**
* append a char to the readline buffer.
* Return 1 when the line has been validated.
- * Return 2 when the line has been completed.
+ * Return 2 when the asked to complete the buffer.
* Return -1 if it is not running.
* Return -2 if EOF (ctrl-d on an empty line).
* Else return 0.
@@ -205,7 +207,7 @@
void rdline_clear_history(struct rdline * rdl);
/**
- *
+ * Get the i-th history item
*/
char * rdline_get_history_item(struct rdline * rdl, uint8_t i);
========================================
aversive/modules/ihm/rdline/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 is not set
+CONFIG_OPTM_0=y
# CONFIG_OPTM_1 is not set
# CONFIG_OPTM_2 is not set
# CONFIG_OPTM_3 is not set
-CONFIG_OPTM_S=y
+# CONFIG_OPTM_S is not set
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
@@ -122,6 +114,7 @@
CONFIG_MODULE_RDLINE_CREATE_CONFIG=y
CONFIG_MODULE_RDLINE_KILL_BUF=y
CONFIG_MODULE_RDLINE_HISTORY=y
+# CONFIG_MODULE_PARSE is not set
#
# External devices modules
@@ -158,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
@@ -171,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
@@ -184,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
Commit from zer0 (2007-11-21 22:54 CET)
================
enhance rdline and parse.
Use progmem in simple cases.
aversive_projects microb2008/main/.config 1.7
=========================================
aversive_projects/microb2008/main/.config (1.6 -> 1.7)
=========================================
@@ -1,5 +1,5 @@
#
-# Automatically generated by make menuconfig: don't edit
+# Automatically generated make config: don't edit
#
#
@@ -70,6 +70,10 @@
#
# 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=y
@@ -83,6 +87,10 @@
#
# Communication modules
#
+
+#
+# uart needs circular buffer, mf2 client may need scheduler
+#
CONFIG_MODULE_UART=y
CONFIG_MODULE_UART_CREATE_CONFIG=y
CONFIG_MODULE_I2C=y
@@ -151,6 +159,10 @@
# Control system modules
#
CONFIG_MODULE_CONTROL_SYSTEM_MANAGER=y
+
+#
+# Filters
+#
CONFIG_MODULE_PID=y
# CONFIG_MODULE_RAMP is not set
CONFIG_MODULE_QUADRAMP=y
@@ -160,6 +172,10 @@
#
# 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
@@ -169,12 +185,20 @@
#
# 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
_______________________________________________
Avr-list mailing list
[email protected]
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