move xbee user code in a separate file
[protos/xbee-avr.git] / cmdline.c
index 5745b9c..736fa52 100644 (file)
--- a/cmdline.c
+++ b/cmdline.c
@@ -30,7 +30,6 @@
 #include <parse.h>
 #include <rdline.h>
 #include <uart.h>
-#include <clock_time.h>
 
 #include "callout.h"
 #include "main.h"
@@ -79,8 +78,7 @@ int xbee_dev_recv(FILE* f)
        return c;
 }
 
-static void
-valid_buffer(const char *buf, uint8_t size)
+void cmdline_valid_buffer(const char *buf, uint8_t size)
 {
        int8_t ret;
        PGM_P ctx = (PGM_P)main_ctx;
@@ -104,7 +102,7 @@ complete_buffer(const char *buf, char *dstbuf, uint8_t dstsize,
 }
 
 
-static void write_char(char c)
+void cmdline_write_char(char c)
 {
        cmdline_dev_send(c, NULL);
 }
@@ -112,7 +110,7 @@ static void write_char(char c)
 
 void cmdline_init(void)
 {
-       rdline_init(&xbeeboard.rdl, write_char, valid_buffer, complete_buffer);
+       rdline_init(&xbeeboard.rdl, cmdline_write_char, cmdline_valid_buffer, complete_buffer);
        snprintf_P(xbeeboard.prompt, sizeof(xbeeboard.prompt), PSTR("mainboard > "));
 }
 
@@ -138,12 +136,12 @@ void emergency(char c)
  * it dynamically */
 void mylog(struct error * e, ...)
 {
-       va_list ap;
 #ifndef HOST_VERSION
        u16 stream_flags = stdout->flags;
 #endif
-       uint8_t i;
-       time_h tv;
+       va_list ap;
+       uint8_t i, flags;
+       uint32_t ms;
 
        if (e->severity > ERROR_SEVERITY_ERROR) {
                if (xbeeboard.log_level < e->severity)
@@ -157,8 +155,11 @@ void mylog(struct error * e, ...)
        }
 
        va_start(ap, e);
-       tv = time_get_time();
-       printf_P(PSTR("%d.%.3d: "), (int)tv.s, (int)(tv.us/1000UL));
+       IRQ_LOCK(flags);
+       ms = global_ms;
+       IRQ_UNLOCK(flags);
+
+       printf_P(PSTR("%d.%.3d: "), (int)(ms/1000UL), (int)(ms%1000UL));
 
        vfprintf_P(stdout, e->text, ap);
        printf_P(PSTR("\r\n"));