Make ao_cmd_decimal produce both 32 and 16 bit values.
authorKeith Packard <keithp@keithp.com>
Sat, 5 Dec 2009 07:36:54 +0000 (23:36 -0800)
committerKeith Packard <keithp@keithp.com>
Sat, 5 Dec 2009 07:41:19 +0000 (23:41 -0800)
ao_cmd_lex_u32 is produced in addition to ao_cmd_lex_i so that
functions can easily read 32-bit values from the command line.

Signed-off-by: Keith Packard <keithp@keithp.com>
src/ao.h
src/ao_cmd.c

index b72cac5c4aac6ddbe524cff75d41b7d2f8344a2a..287c912d17e492f6a139197db5e9aa060ad06174 100644 (file)
--- a/src/ao.h
+++ b/src/ao.h
@@ -330,6 +330,7 @@ enum ao_cmd_status {
 };
 
 extern __xdata uint16_t ao_cmd_lex_i;
+extern __xdata uint32_t ao_cmd_lex_u32;
 extern __xdata char    ao_cmd_lex_c;
 extern __xdata enum ao_cmd_status ao_cmd_status;
 
index 58039f3a20df24860438ca0815cebfb5f160197c..b6d2b886e766be90fd2cf4054a51b1c158208bb0 100644 (file)
@@ -18,6 +18,7 @@
 #include "ao.h"
 
 __xdata uint16_t ao_cmd_lex_i;
+__xdata uint32_t ao_cmd_lex_u32;
 __xdata char   ao_cmd_lex_c;
 __xdata enum ao_cmd_status ao_cmd_status;
 static __xdata uint8_t lex_echo;
@@ -157,11 +158,11 @@ ao_cmd_decimal(void)
 {
        __xdata uint8_t r = ao_cmd_lex_error;
 
-       ao_cmd_lex_i = 0;
+       ao_cmd_lex_u32 = 0;
        ao_cmd_white();
        for(;;) {
                if ('0' <= ao_cmd_lex_c && ao_cmd_lex_c <= '9')
-                       ao_cmd_lex_i = (ao_cmd_lex_i * 10) + (ao_cmd_lex_c - '0');
+                       ao_cmd_lex_u32 = (ao_cmd_lex_u32 * 10) + (ao_cmd_lex_c - '0');
                else
                        break;
                r = ao_cmd_success;
@@ -169,6 +170,7 @@ ao_cmd_decimal(void)
        }
        if (r != ao_cmd_success)
                ao_cmd_status = r;
+       ao_cmd_lex_i = (uint16_t) ao_cmd_lex_u32;
 }
 
 uint8_t