allow to dump GPS info
[protos/xbee-avr.git] / commands.c
index befd1c9..9f7eaf6 100644 (file)
@@ -48,6 +48,7 @@
 #include "main.h"
 #include "cmdline.h"
 #include "beep.h"
+#include "../fpv-common/i2c_commands.h"
 #include "i2c_protocol.h"
 #include "eeprom_config.h"
 
@@ -2247,31 +2248,47 @@ const parse_inst_t PROGMEM cmd_eeprom_list = {
 
 /* ************* */
 
-struct cmd_test_result {
+struct cmd_dump_i2c_result {
        fixed_string_t cmd;
 };
 
-extern uint8_t imuboard; /* XXX test */
-static void cmd_test_parsed(void *parsed_result, void *data)
+static void cmd_dump_i2c_parsed(void *parsed_result, void *data)
 {
+       struct i2c_ans_imuboard_status imu;
+       uint8_t irq_flags;
+
        (void)parsed_result;
        (void)data;
-       printf("%d\n", imuboard);
-       i2c_protocol_debug();
+
+       while (!cmdline_keypressed()) {
+               IRQ_LOCK(irq_flags);
+               memcpy(&imu, &imuboard_status, sizeof(imu));
+               IRQ_UNLOCK(irq_flags);
+
+               if (imu.flags & IMUBOARD_STATUS_GPS_OK) {
+                       printf_P(PSTR("GPS lat=%"PRIi32" long=%"PRIi32
+                                       " alt=%"PRIi32"\n"),
+                               imu.latitude, imu.longitude, imu.altitude);
+               }
+               else
+                       printf_P(PSTR("GPS unavailable"));
+               i2c_protocol_debug();
+               wait_ms(100);
+       }
 }
 
-const char PROGMEM str_test[] = "test";
-const parse_token_string_t PROGMEM cmd_test_cmd =
-       TOKEN_STRING_INITIALIZER(struct cmd_test_result, cmd,
-                                str_test);
+const char PROGMEM str_dump_i2c[] = "dump_i2c";
+const parse_token_string_t PROGMEM cmd_dump_i2c_cmd =
+       TOKEN_STRING_INITIALIZER(struct cmd_dump_i2c_result, cmd,
+                                str_dump_i2c);
 
-const char PROGMEM help_test[] = "test";
-const parse_inst_t PROGMEM cmd_test = {
-       .f = cmd_test_parsed,  /* function to call */
+const char PROGMEM help_dump_i2c[] = "dump_i2c";
+const parse_inst_t PROGMEM cmd_dump_i2c = {
+       .f = cmd_dump_i2c_parsed,  /* function to call */
        .data = NULL,      /* 2nd arg of func */
-       .help_str = help_test,
+       .help_str = help_dump_i2c,
        .tokens = {        /* token list, NULL terminated */
-               (PGM_P)&cmd_test_cmd,
+               (PGM_P)&cmd_dump_i2c_cmd,
                NULL,
        },
 };
@@ -2334,6 +2351,6 @@ const parse_ctx_t PROGMEM main_ctx[] = {
        &cmd_eeprom_add,
        &cmd_eeprom_add2,
        &cmd_eeprom_list,
-       &cmd_test,
+       &cmd_dump_i2c,
        NULL,
 };