CDC Badge OS
Firmware for the CDC Badge v1.0 hardware security key
Loading...
Searching...
No Matches
cdc::serial Namespace Reference

Classes

class  Console
struct  SubCommand
struct  Command
class  ICommandRegistry
class  SerialCmd
class  CommandRegistry
struct  SlotParseResult
 Slot parsing helpers for secure-element commands. More...

Typedefs

using CommandHandler = void (*)(const char* args)
using TextChangeCallback = void (*)(const char* field, const char* value)
using TimeChangeCallback = void (*)()

Enumerations

enum class  EscState : uint8_t { NONE , ESC , BRACKET }
 Escape-sequence parser state for ANSI key handling. More...

Functions

ICommandRegistrygetCommandRegistry ()
 Returns singleton command-registry interface.
void parseSubCommand (const char *args, const char *&name, size_t &name_len, const char *&rest)
 Splits args into "<sub-command> <rest>".
bool subCommandEquals (const char *token, size_t token_len, const char *word)
 Case-insensitive compare of an unterminated token against a word.
void printSubCommandHelp (const char *parent, const SubCommand *table)
 Prints a sub-command summary block.
void dispatchSubCommand (const char *parent, const char *args, const SubCommand *table)
 Routes a sub-command line to its handler.
static void historyAdd (const char *cmd)
 General-purpose helper functions.
static const char * historyGet (size_t idx)
 Returns a history entry by reverse index (0 = newest).
static void redrawLine (const char *newContent, size_t &bufferPos)
 Clears the current console line and redraws it with new content.
static SlotParseResult parseSlotArg (const char *args, uint16_t maxSlot, const char *slotTypeName)
 Parses a slot number from a string argument.
static hal::ISecureElementgetSecureElementWithCheck ()
 Secure-element access helpers.
static void printHexDump (const uint8_t *data, size_t len, size_t maxBytes)
 NVS utility helpers used by command handlers.
static const char * getNvsTypeName (nvs_type_t type)
 Returns a human-readable name for an NVS type value.
static nvs_type_t findNvsKeyType (const char *ns, const char *key)
 Finds the stored NVS type of a key by namespace iteration.
static void printNvsValue (nvs_handle_t nvs, const char *key, nvs_type_t type)
 Prints an NVS value according to its stored type.
static bool getCurrentTime (struct timeval &tv, struct tm &tm)
 Date/time parsing and validation helpers.
static bool setSystemTime (struct tm *tm)
 Sets system time from a populated local tm structure.
static void cmdHelp (const char *args)
 System command handlers.
static void cmdPing (const char *args)
 Replies with a liveness check response.
static void cmdStatus (const char *args)
 Prints runtime status information for the device.
static void cmdCpu (const char *args)
static void printHeapRegion (const char *label, uint32_t caps)
 Prints heap and PSRAM usage statistics.
static void cmdMemInfo (const char *args)
static void cmdMem (const char *args)
static void cmdReboot (const char *args)
 Reboots the device after flushing serial output.
static void cmdBootloader (const char *args)
 Reboots the device into USB download (bootloader) mode.
static void cmdShipMode (const char *args)
 Enters ship mode (disconnects the battery via BATFET).
static void cmdPaste (const char *args)
static void cmdErrorLog (const char *args)
 Displays the error log or clears it when CLEAR is passed.
static void cmdNvsClear (const char *args)
 NVS command handlers.
static void cmdNvsList (const char *args)
 Lists NVS entries, optionally filtered by namespace.
static void cmdNvsRead (const char *args)
 Reads and prints a single NVS key value.
static void cmdNvsDel (const char *args)
 Deletes an NVS key or an entire namespace.
static void cmdGetTime (const char *args)
 Date/time command handlers.
static void cmdGetDate (const char *args)
 Prints the current local date.
static void cmdSetTime (const char *args)
 Updates the system clock time component.
static void cmdSetDate (const char *args)
 Updates the system clock date component.
static void cmdSetName (const char *args)
 Display text command handlers.
static void cmdSetInfo (const char *args)
 Sets the first info line through the text callback.
static void cmdSetInfo2 (const char *args)
 Sets the second info line through the text callback.
static void cmdPinReset (const char *args)
 Authentication command handlers for secure serial mode.
static void cmdPinStatus (const char *args)
 Prints the current badge PIN status snapshot.
static void cmdPinChange (const char *args)
 Changes the badge PIN after verifying the current one.
static void cmdPinDuress (const char *args)
 Arms the duress / self-destruct PIN.
static void cmdPinDuressClear (const char *args)
 Disarms the duress / self-destruct PIN.
static void cmdTr01Status (const char *args)
 TROPIC01 secure-element maintenance and diagnostic handlers.
static void cmdTr01Info (const char *args)
 Prints secure-element chip and firmware information.
static void cmdTr01Session (const char *args)
 Starts a secure-element session, restarting it if already active.
static void cmdTr01Slots (const char *args)
 Prints usage information for ECC and R-Memory slots.
static void cmdTr01RmemRead (const char *args)
 Reads and dumps one secure-element R-Memory slot.
static void cmdTr01EccDel (const char *args)
 Deletes one ECC key slot.
static void cmdTr01RmemDel (const char *args)
 Erases one R-Memory slot.
static void cmdTr01Resync (const char *args)
 Restarts the secure-element session to resynchronize state.
static void cmdTr01CacheRebuild (const char *args)
 Rebuilds the Tropic slot cache and prints per-slot diagnostics.
static void cmdTr01Cleanup (const char *args)
 Cleans up slot metadata inconsistencies and rebuilds cache state.
static void cmdTr01Wipe (const char *args)
 Performs a destructive secure-element factory wipe after confirmation.
static const char * wifiSecurityName (hal::WifiSecurity sec)
static const char * wifiStateName (hal::WifiState st)
static const char * wifiModeName (hal::WifiMode m)
static uint8_t wifiDedupAndSort (hal::WifiScanResult *results, uint8_t count)
 Deduplicates scan results by SSID (keeping strongest RSSI) and sorts the survivors descending by RSSI in place.
static void cmdWifiScan (const char *args)
 WIFI_SCAN - scan and print networks (deduplicated, sorted by RSSI).
static void cmdWifiStatus (const char *args)
 WIFI_STATUS - show runtime state and saved configuration.
static void cmdWifiOn (const char *args)
 WIFI_ON [sta|ap|sta_ap] - enable WiFi radio.
static void cmdWifiOff (const char *args)
 WIFI_OFF - disconnect and disable WiFi radio.
static void cmdWifiConnect (const char *args)
 WIFI_CONNECT <ssid> <password> - connect and persist credentials.
static void cmdWifiTimeout (const char *args)
 WIFI_TIMEOUT [ms] - get or set the connect timeout.
static void cmdWifiForget (const char *args)
 WIFI_FORGET - disable WiFi and erase the saved configuration.
static int findModuleIndex (const char *name)
 Module management serial command handlers.
static void cmdModuleList (const char *args)
 MODULE LIST - list registered modules with state and errors.
static void cmdModuleEnable (const char *args)
 MODULE ENABLE <name> - enable a module by name (persistent).
static void cmdModuleDisable (const char *args)
 MODULE DISABLE <name> - disable a module by name (persistent).
static void cmdNvs (const char *args)
static void cmdPin (const char *args)
static void cmdTr01 (const char *args)
static void cmdWifi (const char *args)
static void cmdModule (const char *args)

Variables

constexpr size_t kSubCommandHeadBufSize = 80
 Buffer size for the "<name> <args>" column built during HELP rendering.
static constexpr size_t MAX_COMMANDS = 64
 Maximum number of commands that can be registered.
static bool s_initialized = false
static constexpr size_t HISTORY_MAX = 10
 Internal constants used by serial command processing.
static constexpr size_t HEX_DUMP_WIDTH = 16
static constexpr size_t NVS_KEY_MAX_LEN = 15
static constexpr size_t NVS_NAMESPACE_MAX_LEN = 15
static constexpr int YEAR_MIN = 2020
static constexpr int YEAR_MAX = 2100
static constexpr uint32_t WIPE_PROGRESS_INTERVAL = 64
static char s_cmdBuffer [SerialCmd::CMD_BUFFER_SIZE] = {}
 Global static state for line editing and command dispatch.
static size_t s_cmdBufferPos = 0
static bool s_initialized = false
static char s_historyBuffer [HISTORY_MAX][SerialCmd::CMD_BUFFER_SIZE]
 Command history ring buffer allocated in PSRAM.
static size_t s_historyCount = 0
static size_t s_historyHead = 0
static size_t s_historyPos = 0
static EscState s_escState = EscState::NONE
static TextChangeCallback s_textCallback = nullptr
 Optional callbacks injected by higher-level modules.
static TimeChangeCallback s_timeCallback = nullptr
static bool s_authenticated = false
 Session authentication flags and timeout baseline.
static uint64_t s_authTimestamp = 0
static constexpr uint32_t WIFI_SCAN_POLL_MS = 100
 WiFi serial command handlers.
static constexpr uint8_t WIFI_MAX_SCAN_RESULTS = hal::IWifiController::MAX_SCAN_RESULTS
static const SubCommand kNvsSubs []
 Sub-command tables and dispatchers for grouped commands.
static const SubCommand kPinSubs []
static const SubCommand kTr01Subs []
static const SubCommand kWifiSubs []
static const SubCommand kModuleSubs []

Detailed Description

Console I/O Implementation Wraps cdc_log console functions

Typedef Documentation

◆ CommandHandler

using cdc::serial::CommandHandler = void (*)(const char* args)

Command handler function type

Parameters
argsArguments after command name (trimmed, null-terminated)

Definition at line 12 of file ICommandRegistry.h.

◆ TextChangeCallback

using cdc::serial::TextChangeCallback = void (*)(const char* field, const char* value)

Callbacks for external notifications

Definition at line 11 of file SerialCmd.h.

◆ TimeChangeCallback

using cdc::serial::TimeChangeCallback = void (*)()

Definition at line 12 of file SerialCmd.h.

Enumeration Type Documentation

◆ EscState

enum class cdc::serial::EscState : uint8_t
strong

Escape-sequence parser state for ANSI key handling.

Enumerator
NONE 
ESC 
BRACKET 

Definition at line 75 of file SerialCmd.cpp.

Function Documentation

◆ cmdBootloader()

void cdc::serial::cmdBootloader ( const char * args)
static

Reboots the device into USB download (bootloader) mode.

Parameters
argsUnused command arguments.

Definition at line 601 of file SerialCmd.cpp.

References cdc::serial::Console::flush(), cdc::serial::Console::printf(), and cdc::ui::rebootIntoBootloader().

Referenced by cdc::serial::SerialCmd::registerBuiltinCommands().

◆ cmdCpu()

void cdc::serial::cmdCpu ( const char * args)
static

◆ cmdErrorLog()

void cdc::serial::cmdErrorLog ( const char * args)
static

Displays the error log or clears it when CLEAR is passed.

Parameters
argsOptional action argument.

Definition at line 644 of file SerialCmd.cpp.

References error_log_clear(), error_log_dump(), and cdc::serial::Console::printf().

Referenced by cdc::serial::SerialCmd::registerBuiltinCommands().

◆ cmdGetDate()

void cdc::serial::cmdGetDate ( const char * args)
static

Prints the current local date.

Parameters
argsUnused command arguments.

Definition at line 842 of file SerialCmd.cpp.

References getCurrentTime(), and cdc::serial::Console::printf().

Referenced by cdc::serial::SerialCmd::registerBuiltinCommands().

◆ cmdGetTime()

void cdc::serial::cmdGetTime ( const char * args)
static

Date/time command handlers.

Prints the current local time.

Parameters
argsUnused command arguments.

Definition at line 827 of file SerialCmd.cpp.

References getCurrentTime(), and cdc::serial::Console::printf().

Referenced by cdc::serial::SerialCmd::registerBuiltinCommands().

◆ cmdHelp()

void cdc::serial::cmdHelp ( const char * args)
static

System command handlers.

Prints the registered command overview.

Parameters
argsUnused command arguments.

Definition at line 425 of file SerialCmd.cpp.

References getCommandRegistry(), and cdc::serial::ICommandRegistry::showHelp().

Referenced by cdc::serial::SerialCmd::registerBuiltinCommands().

◆ cmdMem()

void cdc::serial::cmdMem ( const char * args)
static

◆ cmdMemInfo()

void cdc::serial::cmdMemInfo ( const char * args)
static

◆ cmdModule()

void cdc::serial::cmdModule ( const char * args)
static

Definition at line 2424 of file SerialCmd.cpp.

References dispatchSubCommand(), and kModuleSubs.

Referenced by cdc::serial::SerialCmd::registerBuiltinCommands().

◆ cmdModuleDisable()

void cdc::serial::cmdModuleDisable ( const char * args)
static

MODULE DISABLE <name> - disable a module by name (persistent).

Parameters
argsModule name.

Definition at line 2332 of file SerialCmd.cpp.

References findModuleIndex(), cdc::core::IService::getState(), cdc::core::ModuleRegistry::instance(), cdc::core::UsbManager::instance(), cdc::core::UsbManager::needsReplug(), cdc::serial::Console::printf(), and cdc::core::STARTED.

◆ cmdModuleEnable()

void cdc::serial::cmdModuleEnable ( const char * args)
static

◆ cmdModuleList()

void cdc::serial::cmdModuleList ( const char * args)
static

MODULE LIST - list registered modules with state and errors.

Parameters
argsUnused command arguments.

Definition at line 2259 of file SerialCmd.cpp.

References cdc::core::IService::getName(), cdc::core::ModuleRegistry::instance(), and cdc::serial::Console::printf().

◆ cmdNvs()

void cdc::serial::cmdNvs ( const char * args)
static

Definition at line 2378 of file SerialCmd.cpp.

References dispatchSubCommand(), and kNvsSubs.

Referenced by cdc::serial::SerialCmd::registerBuiltinCommands().

◆ cmdNvsClear()

void cdc::serial::cmdNvsClear ( const char * args)
static

NVS command handlers.

Erases all NVS data after explicit confirmation.

Parameters
argsConfirmation argument (YES required).

Definition at line 661 of file SerialCmd.cpp.

References cdc::serial::Console::printf(), and cdc::core::wipeNvs().

◆ cmdNvsDel()

void cdc::serial::cmdNvsDel ( const char * args)
static

Deletes an NVS key or an entire namespace.

Parameters
argsArguments in the form <namespace> [key].

Definition at line 773 of file SerialCmd.cpp.

References NVS_KEY_MAX_LEN, NVS_NAMESPACE_MAX_LEN, and cdc::serial::Console::printf().

◆ cmdNvsList()

void cdc::serial::cmdNvsList ( const char * args)
static

Lists NVS entries, optionally filtered by namespace.

Parameters
argsOptional namespace filter.

Definition at line 685 of file SerialCmd.cpp.

References getNvsTypeName(), NVS_NAMESPACE_MAX_LEN, and cdc::serial::Console::printf().

◆ cmdNvsRead()

void cdc::serial::cmdNvsRead ( const char * args)
static

Reads and prints a single NVS key value.

Parameters
argsArguments in the form <namespace> <key>.

Definition at line 737 of file SerialCmd.cpp.

References findNvsKeyType(), NVS_KEY_MAX_LEN, NVS_NAMESPACE_MAX_LEN, cdc::serial::Console::printf(), and printNvsValue().

◆ cmdPaste()

◆ cmdPin()

void cdc::serial::cmdPin ( const char * args)
static

Definition at line 2388 of file SerialCmd.cpp.

References dispatchSubCommand(), and kPinSubs.

Referenced by cdc::serial::SerialCmd::registerBuiltinCommands().

◆ cmdPinChange()

void cdc::serial::cmdPinChange ( const char * args)
static

Changes the badge PIN after verifying the current one.

Parameters
args"<currentPin> <newPin>" - both must be 4..8 digits.

Definition at line 1096 of file SerialCmd.cpp.

References cdc::core::PinManager::BADGE_PIN_MAX, cdc::core::PinManager::BADGE_PIN_MIN, cdc::core::PinManager::instance(), and cdc::serial::Console::printf().

◆ cmdPinDuress()

void cdc::serial::cmdPinDuress ( const char * args)
static

Arms the duress / self-destruct PIN.

Entering the duress PIN at the lock screen wipes all data and reboots. The duress PIN must be 4-8 digits and differ from the badge PIN.

Parameters
args"<duressPin>".

Definition at line 1164 of file SerialCmd.cpp.

References cdc::core::PinManager::BADGE_PIN_MAX, cdc::core::PinManager::BADGE_PIN_MIN, cdc::core::PinManager::instance(), and cdc::serial::Console::printf().

◆ cmdPinDuressClear()

void cdc::serial::cmdPinDuressClear ( const char * args)
static

Disarms the duress / self-destruct PIN.

Parameters
argsUnused command arguments.

Definition at line 1193 of file SerialCmd.cpp.

References cdc::core::PinManager::clearDuressPin(), cdc::core::PinManager::instance(), and cdc::serial::Console::printf().

◆ cmdPing()

void cdc::serial::cmdPing ( const char * args)
static

Replies with a liveness check response.

Parameters
argsUnused command arguments.

Definition at line 434 of file SerialCmd.cpp.

References cdc::serial::Console::printf().

Referenced by cdc::serial::SerialCmd::registerBuiltinCommands().

◆ cmdPinReset()

void cdc::serial::cmdPinReset ( const char * args)
static

Authentication command handlers for secure serial mode.

PIN state inspection and maintenance handlers.

Resets badge PIN retry counters for debugging.

Parameters
argsUnused command arguments.

Definition at line 1072 of file SerialCmd.cpp.

References cdc::core::PinManager::instance(), cdc::serial::Console::printf(), and cdc::core::PinManager::resetBadgeRetries().

◆ cmdPinStatus()

void cdc::serial::cmdPinStatus ( const char * args)
static

Prints the current badge PIN status snapshot.

Parameters
argsUnused command arguments.

Definition at line 1083 of file SerialCmd.cpp.

References cdc::core::PinManager::instance(), and cdc::serial::Console::printf().

◆ cmdReboot()

void cdc::serial::cmdReboot ( const char * args)
static

Reboots the device after flushing serial output.

Parameters
argsUnused command arguments.

Definition at line 589 of file SerialCmd.cpp.

References cdc::serial::Console::flush(), and cdc::serial::Console::printf().

Referenced by cdc::serial::SerialCmd::registerBuiltinCommands().

◆ cmdSetDate()

void cdc::serial::cmdSetDate ( const char * args)
static

Updates the system clock date component.

Parameters
argsDate string in format DD.MM.YYYY.

Definition at line 895 of file SerialCmd.cpp.

References getCurrentTime(), cdc::serial::Console::printf(), s_timeCallback, setSystemTime(), YEAR_MAX, and YEAR_MIN.

Referenced by cdc::serial::SerialCmd::registerBuiltinCommands().

◆ cmdSetInfo()

void cdc::serial::cmdSetInfo ( const char * args)
static

Sets the first info line through the text callback.

Parameters
argsNew info text.

Definition at line 977 of file SerialCmd.cpp.

References cdc::serial::Console::printf(), and s_textCallback.

Referenced by cdc::serial::SerialCmd::registerBuiltinCommands().

◆ cmdSetInfo2()

void cdc::serial::cmdSetInfo2 ( const char * args)
static

Sets the second info line through the text callback.

Parameters
argsNew secondary info text.

Definition at line 989 of file SerialCmd.cpp.

References cdc::serial::Console::printf(), and s_textCallback.

Referenced by cdc::serial::SerialCmd::registerBuiltinCommands().

◆ cmdSetName()

void cdc::serial::cmdSetName ( const char * args)
static

Display text command handlers.

Sets the lock-screen name text through the text callback.

Parameters
argsNew name string.

Definition at line 965 of file SerialCmd.cpp.

References cdc::serial::Console::printf(), and s_textCallback.

Referenced by cdc::serial::SerialCmd::registerBuiltinCommands().

◆ cmdSetTime()

void cdc::serial::cmdSetTime ( const char * args)
static

Updates the system clock time component.

Parameters
argsTime string in format HH:MM:SS.

Definition at line 857 of file SerialCmd.cpp.

References getCurrentTime(), cdc::serial::Console::printf(), s_timeCallback, and setSystemTime().

Referenced by cdc::serial::SerialCmd::registerBuiltinCommands().

◆ cmdShipMode()

void cdc::serial::cmdShipMode ( const char * args)
static

Enters ship mode (disconnects the battery via BATFET).

Parameters
argsUnused command arguments.

Definition at line 612 of file SerialCmd.cpp.

References cdc::serial::Console::flush(), cdc::hal::getPowerManagerInstance(), and cdc::serial::Console::printf().

Referenced by cdc::serial::SerialCmd::registerBuiltinCommands().

◆ cmdStatus()

void cdc::serial::cmdStatus ( const char * args)
static

Prints runtime status information for the device.

Parameters
argsUnused command arguments.

Definition at line 443 of file SerialCmd.cpp.

References cdc::serial::Console::flush(), and cdc::serial::Console::printf().

Referenced by cdc::serial::SerialCmd::registerBuiltinCommands().

◆ cmdTr01()

void cdc::serial::cmdTr01 ( const char * args)
static

Definition at line 2404 of file SerialCmd.cpp.

References dispatchSubCommand(), and kTr01Subs.

Referenced by cdc::serial::SerialCmd::registerBuiltinCommands().

◆ cmdTr01CacheRebuild()

void cdc::serial::cmdTr01CacheRebuild ( const char * args)
static

Rebuilds the Tropic slot cache and prints per-slot diagnostics.

Parameters
argsUnused command arguments.

Definition at line 1404 of file SerialCmd.cpp.

References cdc::core::TropicStorage::instance(), and cdc::serial::Console::printf().

◆ cmdTr01Cleanup()

void cdc::serial::cmdTr01Cleanup ( const char * args)
static

Cleans up slot metadata inconsistencies and rebuilds cache state.

Parameters
argsUnused command arguments.

Definition at line 1434 of file SerialCmd.cpp.

References cdc::core::TropicStorage::instance(), and cdc::serial::Console::printf().

◆ cmdTr01EccDel()

void cdc::serial::cmdTr01EccDel ( const char * args)
static

Deletes one ECC key slot.

Parameters
argsECC slot number argument.

Definition at line 1336 of file SerialCmd.cpp.

References cdc::hal::ISecureElement::ECC_SLOT_COUNT, getSecureElementWithCheck(), cdc::hal::OK, parseSlotArg(), and cdc::serial::Console::printf().

◆ cmdTr01Info()

void cdc::serial::cmdTr01Info ( const char * args)
static

Prints secure-element chip and firmware information.

Parameters
argsUnused command arguments.

Definition at line 1220 of file SerialCmd.cpp.

References getSecureElementWithCheck(), and cdc::serial::Console::printf().

◆ cmdTr01Resync()

void cdc::serial::cmdTr01Resync ( const char * args)
static

Restarts the secure-element session to resynchronize state.

Parameters
argsUnused command arguments.

Definition at line 1382 of file SerialCmd.cpp.

References getSecureElementWithCheck(), and cdc::serial::Console::printf().

◆ cmdTr01RmemDel()

void cdc::serial::cmdTr01RmemDel ( const char * args)
static

Erases one R-Memory slot.

Parameters
argsR-Memory slot number argument.

Definition at line 1359 of file SerialCmd.cpp.

References getSecureElementWithCheck(), cdc::hal::OK, parseSlotArg(), cdc::serial::Console::printf(), and cdc::hal::ISecureElement::RMEM_SLOT_COUNT.

◆ cmdTr01RmemRead()

void cdc::serial::cmdTr01RmemRead ( const char * args)
static

Reads and dumps one secure-element R-Memory slot.

Parameters
argsSlot number argument.

Definition at line 1308 of file SerialCmd.cpp.

References getSecureElementWithCheck(), cdc::hal::OK, parseSlotArg(), cdc::serial::Console::printf(), printHexDump(), and cdc::hal::ISecureElement::RMEM_SLOT_COUNT.

◆ cmdTr01Session()

void cdc::serial::cmdTr01Session ( const char * args)
static

Starts a secure-element session, restarting it if already active.

Parameters
argsUnused command arguments.

Definition at line 1255 of file SerialCmd.cpp.

References getSecureElementWithCheck(), and cdc::serial::Console::printf().

◆ cmdTr01Slots()

◆ cmdTr01Status()

void cdc::serial::cmdTr01Status ( const char * args)
static

TROPIC01 secure-element maintenance and diagnostic handlers.

Prints secure-element session status.

Parameters
argsUnused command arguments.

Definition at line 1207 of file SerialCmd.cpp.

References getSecureElementWithCheck(), and cdc::serial::Console::printf().

◆ cmdTr01Wipe()

void cdc::serial::cmdTr01Wipe ( const char * args)
static

Performs a destructive secure-element factory wipe after confirmation.

Parameters
argsConfirmation argument (CONFIRM required).

Definition at line 1449 of file SerialCmd.cpp.

References cdc::serial::Console::flush(), getSecureElementWithCheck(), cdc::serial::Console::printf(), WIPE_PROGRESS_INTERVAL, and cdc::core::wipeTropic().

◆ cmdWifi()

void cdc::serial::cmdWifi ( const char * args)
static

Definition at line 2416 of file SerialCmd.cpp.

References dispatchSubCommand(), and kWifiSubs.

Referenced by cdc::serial::SerialCmd::registerBuiltinCommands().

◆ cmdWifiConnect()

void cdc::serial::cmdWifiConnect ( const char * args)
static

WIFI_CONNECT <ssid> <password> - connect and persist credentials.

Definition at line 2141 of file SerialCmd.cpp.

References cdc::hal::getWifiControllerInstance(), cdc::ui::WifiHandlers::instance(), and cdc::serial::Console::printf().

◆ cmdWifiForget()

void cdc::serial::cmdWifiForget ( const char * args)
static

WIFI_FORGET - disable WiFi and erase the saved configuration.

Definition at line 2223 of file SerialCmd.cpp.

References cdc::ui::WifiHandlers::instance(), and cdc::serial::Console::printf().

◆ cmdWifiOff()

void cdc::serial::cmdWifiOff ( const char * args)
static

◆ cmdWifiOn()

void cdc::serial::cmdWifiOn ( const char * args)
static

WIFI_ON [sta|ap|sta_ap] - enable WiFi radio.

In STA modes, auto-reconnects via WifiHandlers when saved credentials exist.

Definition at line 2073 of file SerialCmd.cpp.

References cdc::hal::AP, cdc::hal::getWifiControllerInstance(), cdc::ui::WifiHandlers::instance(), cdc::serial::Console::printf(), cdc::hal::STA, cdc::hal::STA_AP, and wifiModeName().

◆ cmdWifiScan()

void cdc::serial::cmdWifiScan ( const char * args)
static

◆ cmdWifiStatus()

void cdc::serial::cmdWifiStatus ( const char * args)
static

WIFI_STATUS - show runtime state and saved configuration.

Definition at line 2020 of file SerialCmd.cpp.

References cdc::hal::getWifiControllerInstance(), cdc::ui::WifiHandlers::instance(), cdc::serial::Console::printf(), wifiModeName(), wifiSecurityName(), and wifiStateName().

◆ cmdWifiTimeout()

void cdc::serial::cmdWifiTimeout ( const char * args)
static

WIFI_TIMEOUT [ms] - get or set the connect timeout.

Definition at line 2194 of file SerialCmd.cpp.

References cdc::ui::WifiHandlers::instance(), cdc::serial::Console::printf(), cdc::ui::WIFI_CONNECT_TIMEOUT_MAX_MS, and cdc::ui::WIFI_CONNECT_TIMEOUT_MIN_MS.

◆ dispatchSubCommand()

void cdc::serial::dispatchSubCommand ( const char * parent,
const char * args,
const SubCommand * table )
inline

Routes a sub-command line to its handler.

Empty args or the keyword "HELP" trigger the auto-generated help screen. Unknown keywords print an error followed by the same help screen.

Parameters
parentParent command name, only used for help/error output.
argsArguments received by the top-level handler.
tableNull-terminated SubCommand array.

Definition at line 73 of file SubCommand.h.

References cdc::serial::SubCommand::name, parseSubCommand(), cdc::serial::Console::printf(), printSubCommandHelp(), and subCommandEquals().

Referenced by cdc::mod_gpg::cmd_gpg(), cdc::mod_password::cmd_password(), cdc::mod_2fa::cmd_totp(), cmdModule(), cmdNvs(), cmdPin(), cmdTr01(), cdc::mod_vcard::cmdVcard(), and cmdWifi().

◆ findModuleIndex()

int cdc::serial::findModuleIndex ( const char * name)
static

Module management serial command handlers.

Finds a registered module index by name (case-insensitive).

Parameters
nameModule name to look up.
Returns
Module index, or -1 if not found.

Definition at line 2242 of file SerialCmd.cpp.

References cdc::core::IService::getName(), cdc::core::ModuleRegistry::instance(), and name.

Referenced by cmdModuleDisable(), and cmdModuleEnable().

◆ findNvsKeyType()

nvs_type_t cdc::serial::findNvsKeyType ( const char * ns,
const char * key )
static

Finds the stored NVS type of a key by namespace iteration.

Parameters
nsNVS namespace name.
keyKey name to inspect.
Returns
Resolved NVS type, or NVS_TYPE_ANY if unknown.

Definition at line 267 of file SerialCmd.cpp.

Referenced by cmdNvsRead().

◆ getCommandRegistry()

◆ getCurrentTime()

bool cdc::serial::getCurrentTime ( struct timeval & tv,
struct tm & tm )
static

Date/time parsing and validation helpers.

Retrieves the current time as timeval and local tm.

Parameters
tvOutput timeval.
tmCaller-owned output tm populated via localtime_r.
Returns
true if time conversion succeeded, otherwise false.

Definition at line 400 of file SerialCmd.cpp.

Referenced by cmdGetDate(), cmdGetTime(), cmdSetDate(), and cmdSetTime().

◆ getNvsTypeName()

const char * cdc::serial::getNvsTypeName ( nvs_type_t type)
static

Returns a human-readable name for an NVS type value.

Parameters
typeNVS value type.
Returns
Static type-name string.

Definition at line 245 of file SerialCmd.cpp.

Referenced by cmdNvsList().

◆ getSecureElementWithCheck()

hal::ISecureElement * cdc::serial::getSecureElementWithCheck ( )
static

Secure-element access helpers.

Returns the secure element instance after availability validation.

Returns
Pointer to the secure element instance, or nullptr if unavailable.

Definition at line 208 of file SerialCmd.cpp.

References cdc::hal::getSecureElementInstance(), and cdc::serial::Console::printf().

Referenced by cmdTr01EccDel(), cmdTr01Info(), cmdTr01Resync(), cmdTr01RmemDel(), cmdTr01RmemRead(), cmdTr01Session(), cmdTr01Slots(), cmdTr01Status(), and cmdTr01Wipe().

◆ historyAdd()

void cdc::serial::historyAdd ( const char * cmd)
static

General-purpose helper functions.

Adds a command line to the history ring buffer.

Parameters
Plugin command channelCommand string to store.
Returns
void

Definition at line 111 of file SerialCmd.cpp.

References cdc::serial::SerialCmd::CMD_BUFFER_SIZE, HISTORY_MAX, s_historyBuffer, s_historyCount, and s_historyHead.

◆ historyGet()

const char * cdc::serial::historyGet ( size_t idx)
static

Returns a history entry by reverse index (0 = newest).

Parameters
idxReverse history index.
Returns
Pointer to the command string, or nullptr if out of range.

Definition at line 128 of file SerialCmd.cpp.

References HISTORY_MAX, s_historyBuffer, s_historyCount, and s_historyHead.

◆ parseSlotArg()

SlotParseResult cdc::serial::parseSlotArg ( const char * args,
uint16_t maxSlot,
const char * slotTypeName )
static

Parses a slot number from a string argument.

Parameters
argsInput string containing the slot number.
maxSlotMaximum valid slot value (exclusive).
slotTypeNameName for error messages (for example, "ECC slot" or "R-Memory slot").
Returns
Parse result with validity flag and parsed value.

Definition at line 174 of file SerialCmd.cpp.

References cdc::serial::Console::printf(), cdc::serial::SlotParseResult::valid, and cdc::serial::SlotParseResult::value.

Referenced by cmdTr01EccDel(), cmdTr01RmemDel(), and cmdTr01RmemRead().

◆ parseSubCommand()

void cdc::serial::parseSubCommand ( const char * args,
const char *& name,
size_t & name_len,
const char *& rest )
inline

Splits args into "<sub-command> <rest>".

Parameters
argsRaw argument string passed to the dispatcher.
nameOutput: pointer to first character of the sub-command keyword.
name_lenOutput: length of the keyword (0 if none present).
restOutput: pointer to the remaining args (whitespace skipped).

Definition at line 20 of file SubCommand.h.

References name.

Referenced by dispatchSubCommand().

◆ printHeapRegion()

void cdc::serial::printHeapRegion ( const char * label,
uint32_t caps )
static

Prints heap and PSRAM usage statistics.

Parameters
argsUnused command arguments.

Prints detailed per-task stack watermarks plus heap fragmentation. Heavier than cmdMem; only relevant for diagnostics.

Definition at line 469 of file SerialCmd.cpp.

References cdc::serial::Console::printf().

Referenced by cmdMemInfo().

◆ printHexDump()

void cdc::serial::printHexDump ( const uint8_t * data,
size_t len,
size_t maxBytes )
static

NVS utility helpers used by command handlers.

Prints a bounded hex dump of binary data.

Parameters
dataInput binary buffer.
lenTotal data length.
maxBytesMaximum number of bytes to print.
Returns
void

Definition at line 227 of file SerialCmd.cpp.

References HEX_DUMP_WIDTH, and cdc::serial::Console::printf().

Referenced by cmdTr01RmemRead(), and printNvsValue().

◆ printNvsValue()

void cdc::serial::printNvsValue ( nvs_handle_t nvs,
const char * key,
nvs_type_t type )
static

Prints an NVS value according to its stored type.

Parameters
NVS (plugin-namespaced)Open NVS handle.
keyKey name.
typeValue type of the key.
Returns
void

Definition at line 293 of file SerialCmd.cpp.

References LOG_E, cdc::serial::Console::printf(), printHexDump(), and TAG.

Referenced by cmdNvsRead().

◆ printSubCommandHelp()

void cdc::serial::printSubCommandHelp ( const char * parent,
const SubCommand * table )
inline

Prints a sub-command summary block.

Parameters
parentTop-level command name (e.g. "NVS").
tableNull-terminated SubCommand array.

Definition at line 47 of file SubCommand.h.

References kSubCommandHeadBufSize, cdc::serial::SubCommand::name, and cdc::serial::Console::printf().

Referenced by dispatchSubCommand().

◆ redrawLine()

void cdc::serial::redrawLine ( const char * newContent,
size_t & bufferPos )
static

Clears the current console line and redraws it with new content.

Parameters
newContentReplacement line content.
bufferPosIn/out cursor position updated to new content length.
Returns
void

Definition at line 140 of file SerialCmd.cpp.

References cdc::serial::SerialCmd::CMD_BUFFER_SIZE, cdc::serial::Console::print(), and s_cmdBuffer.

◆ setSystemTime()

bool cdc::serial::setSystemTime ( struct tm * tm)
static

Sets system time from a populated local tm structure.

Parameters
tmInput date/time structure.
Returns
true on success, otherwise false.

Definition at line 410 of file SerialCmd.cpp.

Referenced by cmdSetDate(), and cmdSetTime().

◆ subCommandEquals()

bool cdc::serial::subCommandEquals ( const char * token,
size_t token_len,
const char * word )
inline

Case-insensitive compare of an unterminated token against a word.

Definition at line 36 of file SubCommand.h.

Referenced by dispatchSubCommand().

◆ wifiDedupAndSort()

uint8_t cdc::serial::wifiDedupAndSort ( hal::WifiScanResult * results,
uint8_t count )
static

Deduplicates scan results by SSID (keeping strongest RSSI) and sorts the survivors descending by RSSI in place.

Definition at line 1928 of file SerialCmd.cpp.

Referenced by cmdWifiScan().

◆ wifiModeName()

const char * cdc::serial::wifiModeName ( hal::WifiMode m)
static

Definition at line 1914 of file SerialCmd.cpp.

References cdc::hal::AP, cdc::hal::OFF, cdc::hal::STA, and cdc::hal::STA_AP.

Referenced by cmdWifiOn(), and cmdWifiStatus().

◆ wifiSecurityName()

const char * cdc::serial::wifiSecurityName ( hal::WifiSecurity sec)
static

◆ wifiStateName()

const char * cdc::serial::wifiStateName ( hal::WifiState st)
static

Variable Documentation

◆ HEX_DUMP_WIDTH

size_t cdc::serial::HEX_DUMP_WIDTH = 16
staticconstexpr

Definition at line 49 of file SerialCmd.cpp.

Referenced by printHexDump().

◆ HISTORY_MAX

size_t cdc::serial::HISTORY_MAX = 10
staticconstexpr

Internal constants used by serial command processing.

Definition at line 48 of file SerialCmd.cpp.

Referenced by historyAdd(), and historyGet().

◆ kModuleSubs

const SubCommand cdc::serial::kModuleSubs[]
static
Initial value:
= {
{"LIST", "", "List modules with state and errors", cmdModuleList},
{"ENABLE", "<name>", "Enable a module (persistent)", cmdModuleEnable},
{"DISABLE", "<name>", "Disable a module (persistent)", cmdModuleDisable},
{nullptr, nullptr, nullptr, nullptr},
}
static void cmdModuleList(const char *args)
MODULE LIST - list registered modules with state and errors.
static void cmdModuleDisable(const char *args)
MODULE DISABLE <name> - disable a module by name (persistent).
static void cmdModuleEnable(const char *args)
MODULE ENABLE <name> - enable a module by name (persistent).

Definition at line 2418 of file SerialCmd.cpp.

Referenced by cmdModule(), and cdc::serial::SerialCmd::registerBuiltinCommands().

◆ kNvsSubs

const SubCommand cdc::serial::kNvsSubs[]
static
Initial value:
= {
{"LIST", "[namespace]", "List entries (optional namespace filter)", cmdNvsList},
{"READ", "<ns> <key>", "Read key value", cmdNvsRead},
{"DEL", "<ns> [key]", "Delete key, or entire namespace if omitted",cmdNvsDel},
{"CLEAR", "YES", "Erase entire NVS (confirmation required)", cmdNvsClear},
{nullptr, nullptr, nullptr, nullptr},
}
static void cmdNvsRead(const char *args)
Reads and prints a single NVS key value.
static void cmdNvsClear(const char *args)
NVS command handlers.
static void cmdNvsList(const char *args)
Lists NVS entries, optionally filtered by namespace.
static void cmdNvsDel(const char *args)
Deletes an NVS key or an entire namespace.

Sub-command tables and dispatchers for grouped commands.

Definition at line 2371 of file SerialCmd.cpp.

Referenced by cmdNvs(), and cdc::serial::SerialCmd::registerBuiltinCommands().

◆ kPinSubs

const SubCommand cdc::serial::kPinSubs[]
static
Initial value:
= {
{"STATUS", "", "Show PIN retries / lockout state", cmdPinStatus},
{"RESET", "", "Reset PIN retries (debug)", cmdPinReset},
{"CHANGE", "<currentPin> <newPin>", "Change badge PIN (4-8 digits)", cmdPinChange},
{"DURESS", "<pin>", "Arm self-destruct PIN (wipes on entry)", cmdPinDuress},
{"DURESS_CLEAR", "", "Disarm the self-destruct PIN", cmdPinDuressClear},
{nullptr, nullptr, nullptr, nullptr},
}
static void cmdPinStatus(const char *args)
Prints the current badge PIN status snapshot.
static void cmdPinDuress(const char *args)
Arms the duress / self-destruct PIN.
static void cmdPinReset(const char *args)
Authentication command handlers for secure serial mode.
static void cmdPinChange(const char *args)
Changes the badge PIN after verifying the current one.
static void cmdPinDuressClear(const char *args)
Disarms the duress / self-destruct PIN.

Definition at line 2380 of file SerialCmd.cpp.

Referenced by cmdPin(), and cdc::serial::SerialCmd::registerBuiltinCommands().

◆ kSubCommandHeadBufSize

size_t cdc::serial::kSubCommandHeadBufSize = 80
constexpr

Buffer size for the "<name> <args>" column built during HELP rendering.

Definition at line 29 of file ICommandRegistry.h.

Referenced by printSubCommandHelp(), and cdc::serial::CommandRegistry::showHelp().

◆ kTr01Subs

const SubCommand cdc::serial::kTr01Subs[]
static
Initial value:
= {
{"STATUS", "", "Show TR01 connection status", cmdTr01Status},
{"INFO", "", "Show TR01 chip info (ID, firmware)", cmdTr01Info},
{"SESSION", "", "Start/restart TR01 session", cmdTr01Session},
{"SLOTS", "", "Show TR01 slot usage summary", cmdTr01Slots},
{"RMEM_READ", "<slot>", "Read and dump R-Memory slot", cmdTr01RmemRead},
{"ECC_DEL", "<slot>", "Delete ECC key slot", cmdTr01EccDel},
{"RMEM_DEL", "<slot>", "Delete R-Memory slot", cmdTr01RmemDel},
{"RESYNC", "", "Resync TR01 session and cache", cmdTr01Resync},
{"CACHE_REBUILD", "", "Rebuild TR01 cache from chip", cmdTr01CacheRebuild},
{"CLEANUP", "", "Cleanup mismatched slots and rebuild cache", cmdTr01Cleanup},
{"WIPE", "CONFIRM", "Factory reset all TR01 data", cmdTr01Wipe},
{nullptr, nullptr, nullptr, nullptr},
}
static void cmdTr01Session(const char *args)
Starts a secure-element session, restarting it if already active.
static void cmdTr01Cleanup(const char *args)
Cleans up slot metadata inconsistencies and rebuilds cache state.
static void cmdTr01Slots(const char *args)
Prints usage information for ECC and R-Memory slots.
static void cmdTr01Status(const char *args)
TROPIC01 secure-element maintenance and diagnostic handlers.
static void cmdTr01Resync(const char *args)
Restarts the secure-element session to resynchronize state.
static void cmdTr01Info(const char *args)
Prints secure-element chip and firmware information.
static void cmdTr01RmemRead(const char *args)
Reads and dumps one secure-element R-Memory slot.
static void cmdTr01CacheRebuild(const char *args)
Rebuilds the Tropic slot cache and prints per-slot diagnostics.
static void cmdTr01EccDel(const char *args)
Deletes one ECC key slot.
static void cmdTr01Wipe(const char *args)
Performs a destructive secure-element factory wipe after confirmation.
static void cmdTr01RmemDel(const char *args)
Erases one R-Memory slot.

Definition at line 2390 of file SerialCmd.cpp.

Referenced by cmdTr01(), and cdc::serial::SerialCmd::registerBuiltinCommands().

◆ kWifiSubs

const SubCommand cdc::serial::kWifiSubs[]
static
Initial value:
= {
{"SCAN", "", "Scan for available networks", cmdWifiScan},
{"STATUS", "", "Show WiFi state and saved configuration", cmdWifiStatus},
{"ON", "[sta|ap|sta_ap]", "Enable WiFi radio (default STA, auto-reconnect)", cmdWifiOn},
{"OFF", "", "Disable WiFi radio", cmdWifiOff},
{"CONNECT", "<ssid> <password>", "Connect to network and persist credentials", cmdWifiConnect},
{"TIMEOUT", "[ms]", "Get or set connect timeout (3000-60000 ms)", cmdWifiTimeout},
{"FORGET", "", "Clear saved WiFi configuration", cmdWifiForget},
{nullptr, nullptr, nullptr, nullptr},
}
static void cmdWifiOn(const char *args)
WIFI_ON [sta|ap|sta_ap] - enable WiFi radio.
static void cmdWifiOff(const char *args)
WIFI_OFF - disconnect and disable WiFi radio.
static void cmdWifiStatus(const char *args)
WIFI_STATUS - show runtime state and saved configuration.
static void cmdWifiForget(const char *args)
WIFI_FORGET - disable WiFi and erase the saved configuration.
static void cmdWifiConnect(const char *args)
WIFI_CONNECT <ssid> <password> - connect and persist credentials.
static void cmdWifiTimeout(const char *args)
WIFI_TIMEOUT [ms] - get or set the connect timeout.
static void cmdWifiScan(const char *args)
WIFI_SCAN - scan and print networks (deduplicated, sorted by RSSI).

Definition at line 2406 of file SerialCmd.cpp.

Referenced by cmdWifi(), and cdc::serial::SerialCmd::registerBuiltinCommands().

◆ MAX_COMMANDS

size_t cdc::serial::MAX_COMMANDS = 64
staticconstexpr

Maximum number of commands that can be registered.

Definition at line 22 of file CommandRegistry.cpp.

Referenced by cdc::serial::CommandRegistry::registerCommand().

◆ NVS_KEY_MAX_LEN

size_t cdc::serial::NVS_KEY_MAX_LEN = 15
staticconstexpr

Definition at line 50 of file SerialCmd.cpp.

Referenced by cmdNvsDel(), and cmdNvsRead().

◆ NVS_NAMESPACE_MAX_LEN

size_t cdc::serial::NVS_NAMESPACE_MAX_LEN = 15
staticconstexpr

Definition at line 51 of file SerialCmd.cpp.

Referenced by cmdNvsDel(), cmdNvsList(), and cmdNvsRead().

◆ s_authenticated

bool cdc::serial::s_authenticated = false
static

◆ s_authTimestamp

◆ s_cmdBuffer

char cdc::serial::s_cmdBuffer[SerialCmd::CMD_BUFFER_SIZE] = {}
static

Global static state for line editing and command dispatch.

Definition at line 60 of file SerialCmd.cpp.

Referenced by redrawLine().

◆ s_cmdBufferPos

size_t cdc::serial::s_cmdBufferPos = 0
static

Definition at line 61 of file SerialCmd.cpp.

◆ s_escState

EscState cdc::serial::s_escState = EscState::NONE
static

Definition at line 76 of file SerialCmd.cpp.

◆ s_historyBuffer

char cdc::serial::s_historyBuffer[HISTORY_MAX][SerialCmd::CMD_BUFFER_SIZE]
static

Command history ring buffer allocated in PSRAM.

Definition at line 67 of file SerialCmd.cpp.

Referenced by historyAdd(), and historyGet().

◆ s_historyCount

size_t cdc::serial::s_historyCount = 0
static

Definition at line 68 of file SerialCmd.cpp.

Referenced by historyAdd(), and historyGet().

◆ s_historyHead

size_t cdc::serial::s_historyHead = 0
static

Definition at line 69 of file SerialCmd.cpp.

Referenced by historyAdd(), and historyGet().

◆ s_historyPos

size_t cdc::serial::s_historyPos = 0
static

Definition at line 70 of file SerialCmd.cpp.

◆ s_initialized [1/2]

bool cdc::serial::s_initialized = false
static

Definition at line 13 of file Console.cpp.

Referenced by cdc::serial::Console::init(), and cdc::serial::SerialCmd::init().

◆ s_initialized [2/2]

bool cdc::serial::s_initialized = false
static

Definition at line 62 of file SerialCmd.cpp.

◆ s_textCallback

TextChangeCallback cdc::serial::s_textCallback = nullptr
static

Optional callbacks injected by higher-level modules.

Definition at line 81 of file SerialCmd.cpp.

Referenced by cmdSetInfo(), cmdSetInfo2(), cmdSetName(), and cdc::serial::SerialCmd::setTextCallback().

◆ s_timeCallback

TimeChangeCallback cdc::serial::s_timeCallback = nullptr
static

Definition at line 82 of file SerialCmd.cpp.

Referenced by cmdSetDate(), cmdSetTime(), and cdc::serial::SerialCmd::setTimeCallback().

◆ WIFI_MAX_SCAN_RESULTS

uint8_t cdc::serial::WIFI_MAX_SCAN_RESULTS = hal::IWifiController::MAX_SCAN_RESULTS
staticconstexpr

Definition at line 1889 of file SerialCmd.cpp.

Referenced by cmdWifiScan().

◆ WIFI_SCAN_POLL_MS

uint32_t cdc::serial::WIFI_SCAN_POLL_MS = 100
staticconstexpr

WiFi serial command handlers.

Thin wrappers around cdc::ui::WifiHandlers for credential storage and connection lifecycle, plus cdc::hal::IWifiController for runtime state (scan, mode, IP/MAC/RSSI).

Definition at line 1888 of file SerialCmd.cpp.

Referenced by cmdWifiScan().

◆ WIPE_PROGRESS_INTERVAL

uint32_t cdc::serial::WIPE_PROGRESS_INTERVAL = 64
staticconstexpr

Definition at line 54 of file SerialCmd.cpp.

Referenced by cmdTr01Wipe().

◆ YEAR_MAX

int cdc::serial::YEAR_MAX = 2100
staticconstexpr

Definition at line 53 of file SerialCmd.cpp.

Referenced by cmdSetDate().

◆ YEAR_MIN

int cdc::serial::YEAR_MIN = 2020
staticconstexpr

Definition at line 52 of file SerialCmd.cpp.

Referenced by cmdSetDate().