#include "main.h"
#include "cmdline.h"
#include "beep.h"
+#include "../fpv-common/i2c_commands.h"
+#include "i2c_protocol.h"
#include "eeprom_config.h"
/* commands_gen.c */
else
flags &= ~RC_PROTO_FLAGS_TX_POW_PROBE;
}
+ else if (!strcmp_P(res->cmd, PSTR("compute_best_pow"))) {
+ if (on == 1)
+ flags |= RC_PROTO_FLAGS_COMPUTE_BEST_POW;
+ else
+ flags &= ~RC_PROTO_FLAGS_COMPUTE_BEST_POW;
+ }
else if (!strcmp_P(res->cmd, PSTR("tx"))) {
flags &= ~RC_PROTO_FLAGS_TX_MASK;
if (!strcmp_P(res->val, PSTR("bypass")))
(flags & RC_PROTO_FLAGS_TX_STATS) ? "on" : "off");
printf_P(PSTR("rc_proto_mode tx_power_probe %s\n"),
(flags & RC_PROTO_FLAGS_TX_POW_PROBE) ? "on" : "off");
+ printf_P(PSTR("rc_proto_mode compute_best_pow %s\n"),
+ (flags & RC_PROTO_FLAGS_COMPUTE_BEST_POW) ? "on" : "off");
}
const char PROGMEM str_rc_proto_mode_arg0[] = "rc_proto_mode";
str_rc_proto_mode_arg0);
const char PROGMEM str_rc_proto_mode_cmd[] =
- "rx_copy_spi#rx_autobypass#tx_stats#tx_power_probe";
+ "rx_copy_spi#rx_autobypass#tx_stats#tx_power_probe#compute_best_pow";
const parse_token_string_t PROGMEM cmd_rc_proto_mode_cmd =
TOKEN_STRING_INITIALIZER(struct cmd_rc_proto_mode_result, cmd,
str_rc_proto_mode_cmd);
};
+/* ************* */
+
+struct cmd_dump_i2c_result {
+ fixed_string_t cmd;
+};
+
+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;
+
+ 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\n"));
+ i2c_protocol_debug();
+ wait_ms(100);
+ }
+}
+
+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_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_dump_i2c,
+ .tokens = { /* token list, NULL terminated */
+ (PGM_P)&cmd_dump_i2c_cmd,
+ NULL,
+ },
+};
+
+
/* ************* */
/* in progmem */
&cmd_eeprom_add,
&cmd_eeprom_add2,
&cmd_eeprom_list,
+ &cmd_dump_i2c,
NULL,
};