void cmd_voltage(void) { uint16_t voltage; voltage = battery_get_voltage(); strcpy_P( cmd_line, PSTR("Battery voltage: ")); cmd_print_unsigned_float(voltage); strcat_P( cmd_line, PSTR("V")); }
static void interpret_command(const char* cmd) { if (!strcmp(cmd, "HELO")) { uart_putstring_P(PSTR("O HAI," FIRMWARE_REVISION_STR ",42\n")); } else if (!strcmp(cmd, "STATUS")) { uart_print_number(battery_get_voltage()); uart_putchar(','); uart_print_number(get_uptime_seconds()); uart_putchar(','); struct LogInfo info; logging_get_info(LOG_EEPROM, &info); uart_print_number(info.id); uart_putchar(','); uart_print_number(info.length); uart_putchar(','); uart_print_number(info.res); uart_putchar(','); logging_get_info(LOG_SRAM, &info); uart_print_number(info.id); uart_putchar(','); uart_print_number(info.length); print_newline(); } else if (!strcmp(cmd, "CLOG")) { logging_reset_all(); uart_putstring_P(PSTR("OK\n")); } else if (!strcmp(cmd, "SILENT")) { silent = 1; uart_putstring_P(PSTR("OK\n")); } else if (!strcmp(cmd, "NOISY")) { silent = 0; uart_putstring_P(PSTR("OK\n")); } else if (!strcmp(cmd, "RSLOG") || !strcmp(cmd, "REELOG")) { LogEntry e = (cmd[1] == 'E') ? LOG_EEPROM : LOG_SRAM; logging_fetch_log(e, print_number_uint16, print_newline); } else if (!strcmp(cmd, "GETID")) { uart_print_number(nv_read_word(ADDR_device_id)); print_newline(); } else if (!strncmp(cmd, "SID ", 4)) { uint16_t value = 0; for (uint8_t i = 4; cmd[i]; i++) value = value * 10 + (cmd[i] - '0'); nv_update_word(ADDR_device_id, value); uart_putstring_P(PSTR("OK\n")); } else { uart_putstring_P(PSTR("Unknown command!\n")); } }
/* * Callback function when the battery status timeout expires */ static void battery_status_timeout_handler(void *p_context) { char msg[256]; gfx_fillRect(0, 8, 128, 56, SSD1306_BLACK); gfx_setCursor(0, 12); gfx_setTextBackgroundColor(SSD1306_WHITE, SSD1306_BLACK); snprintf(msg, sizeof(msg), "Battery status:\n" " Voltage: %04d mV\n" " Charging: %s\n" " USB plugged: %s\n", battery_get_voltage(), battery_is_charging() ? "Yes" : "No", battery_is_usb_plugged() ? "Yes" : "No"); gfx_puts(msg); gfx_update(); }