]> cloudbase.mooo.com Git - z180-stamp.git/commitdiff
Add command saveenv
authorLeo C <erbl259-lmu@yahoo.de>
Sat, 16 Aug 2014 11:57:10 +0000 (13:57 +0200)
committerLeo C <erbl259-lmu@yahoo.de>
Sat, 16 Aug 2014 11:57:10 +0000 (13:57 +0200)
Add debug commands for EEPROM display and copy

avr/command.c
avr/command_tbl.c
avr/config.h
avr/env.c
avr/env.h
avr/main.c

index 9af1c32073dc2f456cea28b95a630694033a1566..89e88695c2289a5684cfc23f2faae05b3a3a80bb 100644 (file)
@@ -129,7 +129,7 @@ cmd_tbl_t *find_cmd_tbl (const char *cmd, cmd_tbl_t *table, int table_len)
 {
        cmd_tbl_t *cmdtp;
        cmd_tbl_t *cmdtp_temp = table;  /*Init value */
-       int len;
+       size_t len;
        uint_fast8_t n_found = 0;
 
        if (!cmd)
index 2717a370e04b1de5762d12745427fc4d3792eee0..31566b4c1253d9d22498f85da9cb6b1411893ff6 100644 (file)
@@ -9,13 +9,28 @@ extern int do_help(cmd_tbl_t *, int, int, char * const []);
 extern int do_echo(cmd_tbl_t *, int, int, char * const []);
 extern int do_env_print(cmd_tbl_t *, int, int, char * const []);
 extern int do_env_set(cmd_tbl_t *, int, int, char * const []);
+extern int do_env_save(cmd_tbl_t *, int, int, char * const []);
 extern int do_loadf(cmd_tbl_t *, int, int, char * const []);
 extern int do_go(cmd_tbl_t *, int, int, char * const []);
 extern int do_restart(cmd_tbl_t *, int, int, char * const []);
+extern int do_dump_eep(cmd_tbl_t *, int, int, char * const []);
+extern int do_eep_cp(cmd_tbl_t *, int, int, char * const []);
 
 
 cmd_tbl_t cmd_tbl[] = {
 
+#ifdef DEBUG
+CMD_TBL_ITEM(
+       !emd,   3,      0,      do_dump_eep,
+       "EEPROM dump",
+       "address [count]"
+),
+CMD_TBL_ITEM(
+       !ecp,   4,      1,      do_eep_cp,
+       "EEPROM copy",
+       "source target count"
+),
+#endif
 CMD_TBL_ITEM(
        echo,   CONFIG_SYS_MAXARGS,     1,      do_echo,
        "echo args to console",
@@ -47,14 +62,19 @@ CMD_TBL_ITEM_COMPLETE(
        "    - delete environment variable 'name'",
        var_complete
 ),
+CMD_TBL_ITEM(
+       saveenv,        1,      0,      do_env_save,
+       "save environment variables to persistent storage",
+       ""
+),
 
 CMD_TBL_ITEM(
-       loadf, 1,       0,      do_loadf,
+       loadf,  1,      0,      do_loadf,
        "load srec_cat prepared image from controller flash",
        ""
 ),
 CMD_TBL_ITEM(
-       go, 2,          0,      do_go,
+       go,     2,      0,      do_go,
        "start application at address 'addr'",
        "addr\n"
        "    - start application at address 'addr'"
@@ -62,7 +82,7 @@ CMD_TBL_ITEM(
 //     "      passing 'arg' as arguments"
 ),
 CMD_TBL_ITEM(
-       reset, 1,       0,      do_reset,
+       reset,  1,      0,      do_reset,
        "Keep CPU in RESET state",
        ""
 ),
index 2c6210b121fbb1d1bc73231afb80ae34d3252f32..13de63bc80dc35f7ef07d400082c71c5cae22e4c 100644 (file)
@@ -1,7 +1,7 @@
 #ifndef CONFIG_H               
 #define CONFIG_H
 
-#define CONFIG_ENV_SIZE                2000
+#define CONFIG_ENV_SIZE                1600
 #define CONFIG_ENV_OFFSET      0
 #define CONFIG_ENVVAR_MAX      20
 
index 48413f3c5064f74ec6a8eda419eabaa57109d12f..9063a17f8a259a0de93a6b3838a2db6bb5186bfb 100644 (file)
--- a/avr/env.c
+++ b/avr/env.c
 #include "env.h"
 
 
+#define ENV_SIZE       (CONFIG_ENV_SIZE - sizeof(uint16_t) -1)
+#define ACTIVE_FLAG    1
+#define OBSOLETE_FLAG  0
+
 
 #define DELIM          "\0"
 
@@ -32,6 +36,8 @@ const FLASH char default_env[] = {
 };
 
 
+#ifdef DEBUG
+
 /*
  * Debugging
  *
@@ -86,9 +92,9 @@ void dump_heap(void)
 }
 
 /* TODO: combine with dump_ram() */
-void dump_eep(const uint8_t *addr, int len)
+void dump_eep(const uint8_t *addr, unsigned int len)
 {
-       int i;
+       uint_fast8_t i;
        uint8_t buf[16];
        
        printf_P(PSTR("eeprom dump:"));
@@ -108,9 +114,97 @@ void dump_eep(const uint8_t *addr, int len)
        putchar('\n');
 }
 
-#define ENV_SIZE       CONFIG_ENV_SIZE-2
+/* 
+ * EEPROM Display
+ *     md addr {len}
+ */
+int do_dump_eep(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
+{
+       const uint8_t *addr;
+       uint16_t length;
+       
+       (void) cmdtp;
+
+
+       /* We use the last specified parameters, unless new ones are
+        * entered.
+        */
+       addr = 0;
+       length = 128;
+
+       if (argc < 2)
+               return CMD_RET_USAGE;
+
+       if ((flag & CMD_FLAG_REPEAT) == 0) {
+               /* Address is specified since argc > 1 */
+               addr = (const uint8_t *) (size_t) strtoul(argv[1], NULL, 16);
+
+               /* If another parameter, it is the length to display. */
+               if (argc > 2)
+                       length = (uint16_t) strtoul(argv[2], NULL, 16);
+       }
+
+       /* Print the lines. */
+       dump_eep(addr, length);
+
+       return 0;
+}
+
+int do_eep_cp(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
+{
+       uint16_t src, dest, count;
+       int_fast8_t step;
+       
+       (void) cmdtp;
+       (void) flag;
+
+       if (argc != 4)
+               return CMD_RET_USAGE;
+
+       src = (size_t) strtoul(argv[1], NULL, 16);
+       dest = (size_t) strtoul(argv[2], NULL, 16);
+       count = (size_t) strtoul(argv[3], NULL, 16);
+
+       if (src > E2END) {
+               debug("src > EEPROM size: 0x%04x\n", src);
+               return 1;
+       }
+       if (dest > E2END) {
+               debug("dest > EEPROM size: 0x%04x\n", dest);
+               return 1;
+       }
+       if (count > E2END+1) {
+               debug("count > EEPROM size: 0x%04x\n", count);
+               return 1;
+       }
+       if (count == 0) {
+               debug("Zero length ???\n");
+               return 1;
+       }
+       
+       if (dest > src) {
+               src += count - 1;
+               dest += count - 1;
+               step = -1;
+       } else
+               step = 1;
+
+       while (count-- > 0) {
+               uint8_t data;
+               data = eeprom_read_byte((uint8_t *) src);
+               eeprom_write_byte((uint8_t *) dest, data);
+               src += step;
+               dest += step;
+
+       }
+       return 0;
+}
+#endif /* DEBUG */
+
+
 typedef struct environment_s {
        uint16_t        crc;            /* CRC16 over data bytes        */
+       uint8_t         flags;          /* active/obsolete flags        */
        char            data[ENV_SIZE]; /* Environment data             */
 } env_t;
 
@@ -131,7 +225,7 @@ typedef struct env_item_s {
        } val;
 } env_item_t;
 
-
+static uint8_t env_valid;
 static env_item_t env_list[CONFIG_ENVVAR_MAX];
 static int entrycount;
 
@@ -140,6 +234,9 @@ static char env_get_char(uint16_t index)
 {
        unsigned int off = CONFIG_ENV_OFFSET;
 
+       if (env_valid == 2)
+               off = CONFIG_ENV_OFFSET + CONFIG_ENV_SIZE;
+
        return (char) eeprom_read_byte((const uint8_t *)off + index + 
                                offsetof(env_t, data));
 }
@@ -304,6 +401,150 @@ int env_item_print(env_item_t *ep)
 }      
 
 
+int env_item_save(env_item_t *ep, uint16_t offset, int space_left)
+{
+       char buf[CONFIG_SYS_ENV_NAMELEN+1];
+       int len;
+       env_item_t e = *ep;
+
+debug("-- env_item_save(%04x, %04x, %d)\n",
+               ep, offset, space_left);
+       
+       len = ee_name_get(buf, ep);
+       if (len == 0)
+               return 0;
+       buf[len++] = '=';
+       space_left -= len;
+
+if ((unsigned) len < sizeof(buf))
+       buf[len] = '\0'; /* terminate for debugging */
+debug("   len: %d, buf: '%s', space_left: %d\n", len, buf, space_left);
+       
+       if (space_left <= 0)
+               return 0;
+       
+       eeprom_update_block(buf, (uint8_t *) offset, len);
+       offset += len;
+       
+       if (e.val.ram != NULL) {
+               char c;
+               do {
+                       if (e.flags & EF_V_EEP) 
+                               c = env_get_char(e.val.eep++);
+                       else
+                               c = *e.val.ram++;
+                       
+                       eeprom_update_byte((uint8_t *) offset, c);
+                       offset++;
+                       space_left--;
+                       len++;
+               } while ((c != '\0') && space_left );
+       }
+       return len;
+}      
+
+
+/*
+ * Update
+ *
+ */
+int env_item_update(env_item_t *ep)
+{
+       char buf[CONFIG_SYS_ENV_NAMELEN+1];
+       uint_fast8_t len;
+       char c;
+       unsigned pos = 0;
+                       
+       /* get name from old loc. (eeprom or ram */
+       len = ee_name_get(buf, ep);
+       buf[len++] = '=';
+       
+debug("-- env_item_update(%04x)\n", ep);
+if (len < sizeof(buf))
+       buf[len] = '\0'; /* terminate for debugging */
+debug("   len: %d, buf: '%s'\n", len, buf);
+
+       /* search this name in new eeprom env */
+        /* TODO: eliminate this ugly hack */
+               uint8_t save_env_valid = env_valid;
+               env_valid = (env_valid == 2) ? 1 : 2;
+               
+debug("   len: %d, buf: '%s', env_valid: %d\n", len, buf, env_valid);
+
+       while ((c = env_get_char(pos)) != '\0' && pos < (ENV_SIZE - len)) {
+               uint_fast8_t i = 0;
+
+debug("     while: c: %02x, pos: %d\n       ", c, pos);
+
+               while (c == buf[i] &&  i <= len) {
+
+debug("%02x ", c);
+
+                       ++i;
+                       c = env_get_char(pos + i);
+               }
+
+debug("\n     c: %02x, i: %d, pos: %d\n", c, i, pos);
+
+               if (i == len) {
+                       if ((ep->flags & EF_N_EEP) == 0)
+                               free(ep->name.ram);
+                       ep->name.eep = pos;
+                       if ((ep->flags & EF_V_EEP) == 0)
+                               free(ep->val.ram);
+                       ep->val.eep = pos + i;
+                       ep->flags &= ~EF_DIRTY;
+                       ep->flags |= EF_N_EEP | EF_V_EEP;
+                       
+                       /* TODO: */
+                       env_valid = save_env_valid;
+                       return 0;
+               }
+               pos += i + 1;
+               while (((c = env_get_char(pos++)) != '\0') && pos < (ENV_SIZE - len))
+                       ;
+
+debug("\n     c: %02x, i: %d, pos: %d\n", c, i, pos);
+
+       }
+       /* TODO: */
+       env_valid = save_env_valid;
+       
+       /* name not found */
+       return -1;
+}      
+
+
+int envlist_import(void)
+{
+       char name[CONFIG_SYS_ENV_NAMELEN+1];
+       uint16_t idx = 0;
+       int nlen;
+       env_item_t e;
+       
+       e.flags = EF_N_EEP | EF_V_EEP;
+       e.name.eep = idx;
+       while ((nlen = ee_name_get(name, &e)) != 0 && idx < ENV_SIZE) {
+       
+               if (entrycount <= CONFIG_ENVVAR_MAX) {
+                       e.val.eep = idx + nlen + 1;
+       
+                       env_list[entrycount++] = e;
+
+                       idx += nlen + 1;
+                       while (env_get_char(idx++) != 0 && idx < ENV_SIZE)
+                               ;
+                       e.name.eep = idx;
+               } else {
+                       debug("** Too many environment variables!\n");
+                       break;
+               }
+       }
+       qsort(env_list, entrycount, sizeof(env_item_t), comp_env_items);
+
+       return 0;
+}
+
 static env_item_t *envlist_search(const char *name)
 {
        return bsearch(name, env_list, entrycount, 
@@ -383,6 +624,8 @@ static env_item_t *envlist_get(const char *name, uint_fast8_t flag)
                if (ep->flags & EF_V_EEP) {
                        char *vp;
                        uint_fast8_t len;
+                       /* TODO: function that gets len of val, 
+                          to get rid of xrealloc */ 
                        vp = xmalloc(CONFIG_SYS_CBSIZE);
                        len = ee_val_get(vp, ep->val.eep, CONFIG_SYS_CBSIZE);
                        ep->val.ram = xrealloc(vp, len + 1);
@@ -393,26 +636,30 @@ static env_item_t *envlist_get(const char *name, uint_fast8_t flag)
        return ep;
 }
 
+int env_item_delete(env_item_t *ep)
+{
+       if (entrycount == 0)
+               return -1;
+       if ((ep->flags & EF_V_EEP) == 0) 
+               free(ep->val.ram);
+       if ((ep->flags & EF_N_EEP) == 0) 
+               free(ep->name.ram); 
+
+       entrycount--;
+       size_t size = sizeof(env_item_t);
+       memmove(ep, ep + 1, (env_list - ep)*size + entrycount*size);
+
+       return 0;               
+}
 
 static int envlist_delete(const char *name)
 {
-       size_t size = sizeof(env_item_t);
        env_item_t *ep = bsearch(name, env_list, entrycount, 
                                sizeof(env_item_t), comp_env_key_item);
-       int rc = 0;
 
-       if (ep != NULL) {
-       
-               if ((ep->flags & EF_V_EEP) == 0) 
-                       free(ep->val.ram);
-               if ((ep->flags & EF_N_EEP) == 0) 
-                       free(ep->name.ram); 
+       if (ep != NULL)
+               return env_item_delete(ep);
 
-               entrycount--;
-               memmove(ep, ep + 1, (env_list - ep)*size + entrycount*size);
-               
-               rc = 1;
-       }
 #if 0
        dump_ram((uint8_t *) &env_list[0], entrycount * sizeof(env_item_t),
                        "=== env_list:");
@@ -424,7 +671,7 @@ static int envlist_delete(const char *name)
        }
 #endif
 
-       return rc;
+       return 1;
 }
                        
 char *getenv(const char *name)
@@ -450,28 +697,75 @@ char *getenv(const char *name)
        return ret;
 }
 
-/* TODO: implement saveenv() */
+uint16_t env_crc(uint16_t data_offset)
+{
+       uint16_t crc; 
+       uint16_t i;
+       char c, c0;
+
+       crc = 0xffff;
+       c = 0xff;
+       for (i = 0; !(c == 0 && c0 == 0) && i < ENV_SIZE; i++)
+       {
+               c0 = c; 
+               c = eeprom_read_byte((const uint8_t *) data_offset + i);
+               crc = crc16(crc, c);
+       }
+       return crc ;
+}
+
 int saveenv(void)
 {
-       int     rc = 0;
+       unsigned int off     = CONFIG_ENV_OFFSET + CONFIG_ENV_SIZE;
+       unsigned int off_red = CONFIG_ENV_OFFSET;
+       unsigned int pos;
+       int len, left;
+       uint16_t crc;
+       int rc = 0;
 
-//     rc = env_export(&env_new);
-       if (rc)
-               return rc;
+       if (env_valid == 2) {
+               off     = CONFIG_ENV_OFFSET;
+               off_red = CONFIG_ENV_OFFSET + CONFIG_ENV_SIZE;
+       }
+
+       eeprom_update_byte((uint8_t *) off + offsetof(env_t, flags), 0xff); 
 
-//     rc = eeprom_bus_write(CONFIG_SYS_DEF_EEPROM_ADDR,
-//                           off, (uchar *)&env_new, CONFIG_ENV_SIZE);
+       pos = off + offsetof(env_t, data);
+       left = ENV_SIZE - 1;
+       for (int i = 0 ; i < entrycount; i++) {
+               len = env_item_save(&env_list[i], pos, left);
+               if (len == 0) {
+                       return 1;
+               }
+               pos += len;
+               left -= len;
+       }
+       /* terminate list */
+       eeprom_update_byte((uint8_t *) pos, 0);
+       crc = env_crc(off + offsetof(env_t, data));
+       eeprom_update_word((uint16_t *) off + offsetof(env_t, crc), crc);
+       eeprom_update_byte((uint8_t *) off + offsetof(env_t, flags), 
+                                       ACTIVE_FLAG);
+
+       if (rc == 0) {
+               while (entrycount != 0) {
+                       env_item_delete(&env_list[entrycount-1]);
+               }
+               eeprom_update_byte((uint8_t *) off_red + offsetof(env_t, flags), 
+                                       OBSOLETE_FLAG);
+               env_valid = (env_valid == 2) ? 1 : 2;
+
+               envlist_import();
+       }
+       
        return rc;
 }
 
-
 /*-----------------------------------------------------------------------------*/
 
-
 int set_default_env(void)
 {
        char buf[64];
-       uint16_t crc = 0xffff;
        uint16_t eep = CONFIG_ENV_OFFSET + offsetof(env_t, data);
        unsigned int len = ENV_SIZE;
        unsigned int i, src = 0;
@@ -479,18 +773,17 @@ int set_default_env(void)
 #if 0
 printf_P(PSTR("\n\n** set_default_env()\n"));
 #endif
+       if (env_valid == 1) {
+               eep = CONFIG_ENV_OFFSET + offsetof(env_t, data) + CONFIG_ENV_SIZE;
+       }
+
        while (len)  {
-       
                memcpy_P(buf, default_env+src, sizeof(buf));
-               
                for (i=0; i < (len < sizeof(buf) ? len : sizeof(buf)) &&
-                    !(c == 0 && c0 == 0);
-                   i++)
-               {
+                               !(c == 0 && c0 == 0);
+                               i++) {
                        c0 = c; c = buf[i];
-                       crc = crc16(crc, c);
                }
-               
                eeprom_update_block(buf, (char *) eep, i);
 #if 0
                printf_P(PSTR("eeprom_update_block: eep: 0x%.4x, i:%d\n"), 
@@ -506,9 +799,6 @@ printf_P(PSTR("\n\n** set_default_env()\n"));
                eep += sizeof(buf);
        }
 
-       eeprom_update_word(
-               (uint16_t *) CONFIG_ENV_OFFSET + offsetof(env_t, crc), 
-               crc);
 #if 0
        dump_eep(0, 128);
 #endif
@@ -516,65 +806,87 @@ printf_P(PSTR("\n\n** set_default_env()\n"));
 }
 
 
-int env_check(void)
+int env_check(uint16_t offset)
 {
        uint16_t crc, stored_crc; 
-       uint16_t i;
-       char c, c0;
-
-       debug("\n\n** env_check()\n");
-       
 
        /* read old CRC */
-       stored_crc = eeprom_read_word((const uint16_t *) CONFIG_ENV_OFFSET + 
-                                       offsetof(env_t, crc));
-       crc = 0xffff;
-       c = 0xff;
-       for (i = offsetof(env_t, data); 
-               !(c == 0 && c0 == 0) && i < ENV_SIZE;
-               i++)
-       {
-               c0 = c; 
-               c = eeprom_read_byte((const uint8_t *) CONFIG_ENV_OFFSET + i);
-               crc = crc16(crc, c);
-       }
+       stored_crc = eeprom_read_word(
+               (const uint16_t *) offset + offsetof(env_t, crc));
+       crc = env_crc(offset + offsetof(env_t, data));
+
        debug_cond((crc != stored_crc),
                "** crc eep: 0x%.4x, crc new: 0x%.4x\n", stored_crc, crc);
        
        return crc == stored_crc;
 }
 
-int env_init(void)
+int _env_init(void)
 {
-       char name[CONFIG_SYS_ENV_NAMELEN+1];
-       uint16_t idx = 0;
-       int nlen;
-       env_item_t e;
-       
-       e.flags = EF_N_EEP | EF_V_EEP;
-       e.name.eep = idx;
-       while ((nlen = ee_name_get(name, &e)) != 0 && idx < ENV_SIZE) {
-       
-               if (entrycount <= CONFIG_ENVVAR_MAX) {
-                       e.val.eep = idx + nlen + 1;
-       
-                       env_list[entrycount++] = e;
+       unsigned int off_env[2];
+       uint8_t flags[2], crc_ok[2];
+
+       off_env[0] = CONFIG_ENV_OFFSET;
+       off_env[1] = CONFIG_ENV_OFFSET + CONFIG_ENV_SIZE;
+
+       for (uint_fast8_t i = 0; i < 2; i++) {
+               /* read FLAGS */
+               flags[i] = eeprom_read_byte ((uint8_t *) off_env[i] + 
+                                       offsetof(env_t, flags));
+
+               /* check CRC */
+               crc_ok[i] = (
+                       eeprom_read_word((uint16_t *) off_env[i] + 
+                                       offsetof(env_t, crc))
+                       == env_crc(off_env[i] + offsetof(env_t, data))
+               );
+       }
 
-                       idx += nlen + 1;
-                       while (env_get_char(idx++) != 0 && idx < ENV_SIZE)
-                               ;
-                       e.name.eep = idx;
-               } else {
-                       debug("** Too many environment variables!\n");
-                       break;
-               }
+       if (!crc_ok[0] && !crc_ok[1]) {
+               env_valid = 0;
+debug("crc1: %02x, crc2: %02x, flag1 %02x, flag2 %02x, env_valid: %d\n",
+       crc_ok[0], crc_ok[1], flags[0], flags[1], env_valid);
+               return 0;
+
+       } else if (crc_ok[0] && !crc_ok[1]) {
+               env_valid = 1;
+       } else if (!crc_ok[0] && crc_ok[1]) {
+               env_valid = 2;
+       } else {
+               /* both ok - check serial */
+               if (flags[0] == ACTIVE_FLAG && flags[1] == OBSOLETE_FLAG)
+                       env_valid = 1;
+               else if (flags[0] == OBSOLETE_FLAG && flags[1] == ACTIVE_FLAG)
+                       env_valid = 2;
+               else if (flags[0] == 0xFF && flags[1] == 0)
+                       env_valid = 2;
+               else if (flags[1] == 0xFF && flags[0] == 0)
+                       env_valid = 1;
+               else /* flags are equal - almost impossible */
+                       env_valid = 1;
        }
-       qsort(env_list, entrycount, sizeof(env_item_t), comp_env_items);
+       
+debug("crc1: %02x, crc2: %02x, flag1 %02x, flag2 %02x, env_valid: %d\n",
+       crc_ok[0], crc_ok[1], flags[0], flags[1], env_valid);
 
        return 0;
 }
 
 
+int env_init(void)
+{
+       _env_init();
+       if (env_valid == 0) {
+               printf_P(PSTR("*** Warning - bad CRC, "
+                               "using default environment\n\n"));
+               set_default_env();
+       }
+       entrycount = 0;
+       envlist_import();
+       return 0; 
+}      
+
+
 /*
  * Command interface: print one or all environment variables
  *
@@ -696,7 +1008,7 @@ static int _do_env_set(int flag, int argc, char * const argv[])
        /* Delete only ? */
        if (argc < 3 || argv[2] == NULL) {
                int rc = envlist_delete(name);
-               return !rc;
+               return rc != 0;
        }
 
        /*
@@ -817,6 +1129,15 @@ int do_env_set(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 }
 
 
+int do_env_save(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
+{
+       (void) cmdtp; (void) flag; (void) argc; (void) argv;
+
+       printf_P(PSTR("Saving Environment ...\n"));
+
+       return saveenv() ? 1 : 0;
+}
+
 #if defined(CONFIG_AUTO_COMPLETE) 
 int env_complete(char *var, int maxv, char *cmdv[], int bufsz, char *buf)
 {
@@ -848,4 +1169,3 @@ int env_complete(char *var, int maxv, char *cmdv[], int bufsz, char *buf)
        return found;
 }
 #endif
-
index ac6684611e54fd2e8ce3646561b6664a368695ce..12cd7b38a5193049a25667088ceff0615b873cb8 100644 (file)
--- a/avr/env.h
+++ b/avr/env.h
@@ -2,7 +2,6 @@
 #define ENV_H
 
 int set_default_env(void);
-int env_check(void);
 int env_init(void);
 
 char *getenv(const char *name);
index 6dbcdefa841a584a74eee75f32716c6d46d26e2a..79ca3e02e16ed7cedce8fa9d664fb3cdf10fa818 100644 (file)
@@ -164,9 +164,9 @@ int main(void)
        
        serial_setup();
        sei();
-       
-       if (env_check() == 0)
-               set_default_env();
+
+       debug("\n=========================<  (RE)START DEBUG  >=========================\n");
+               
        env_init();
 
        printf_P(PSTR("\n(ATMEGA1281+HD64180)_stamp Tester\n"));