cli_i.h 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. #pragma once
  2. #include "cli.h"
  3. #include <furi.h>
  4. #include <api-hal.h>
  5. #include <m-dict.h>
  6. #include <m-bptree.h>
  7. #define CLI_LINE_SIZE_MAX
  8. #define CLI_COMMANDS_TREE_RANK 4
  9. typedef struct {
  10. CliCallback callback;
  11. void* context;
  12. } CliCommand;
  13. BPTREE_DEF2(
  14. CliCommandTree,
  15. CLI_COMMANDS_TREE_RANK,
  16. string_t,
  17. STRING_OPLIST,
  18. CliCommand,
  19. M_POD_OPLIST)
  20. typedef enum {
  21. CliSymbolAsciiSOH = 0x01,
  22. CliSymbolAsciiETX = 0x03,
  23. CliSymbolAsciiEOT = 0x04,
  24. CliSymbolAsciiBell = 0x07,
  25. CliSymbolAsciiBackspace = 0x08,
  26. CliSymbolAsciiTab = 0x09,
  27. CliSymbolAsciiCR = 0x0D,
  28. CliSymbolAsciiEsc = 0x1B,
  29. CliSymbolAsciiUS = 0x1F,
  30. CliSymbolAsciiSpace = 0x20,
  31. CliSymbolAsciiDel = 0x7F,
  32. } CliSymbols;
  33. struct Cli {
  34. CliCommandTree_t commands;
  35. osMutexId_t mutex;
  36. string_t line;
  37. };
  38. Cli* cli_alloc();
  39. void cli_free(Cli* cli);
  40. void cli_reset_state(Cli* cli);
  41. void cli_print_version(const Version* version);
  42. void cli_putc(char c);
  43. void cli_stdout_callback(void* _cookie, const char* data, size_t size);