diff options
author | SG <who.just.the.doctor@gmail.com> | 2021-08-26 21:15:43 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-08-26 21:15:43 +0300 |
commit | 941b7330464811271faf458cd8dc81368cb0ee02 (patch) | |
tree | 5db1754bb46b4e0b63fb48616ce764ef4ae18ded /applications/ibutton | |
parent | 08f7a290a4188a770f53bae1b9f4e8a87d1fdaeb (diff) |
[FL-1744] CLI: rename tm to ikey, add onewire search command (#672)
* CLI: rename tm to ikey, add onewire search command
* Cli onewire: removed delimiters in addresses
Co-authored-by: あく <alleteam@gmail.com>
Diffstat (limited to 'applications/ibutton')
-rw-r--r-- | applications/ibutton/ibutton-cli.cpp | 56 |
1 files changed, 53 insertions, 3 deletions
diff --git a/applications/ibutton/ibutton-cli.cpp b/applications/ibutton/ibutton-cli.cpp index f865a26e..1fbccdab 100644 --- a/applications/ibutton/ibutton-cli.cpp +++ b/applications/ibutton/ibutton-cli.cpp @@ -10,18 +10,20 @@ #include <memory> void ibutton_cli(Cli* cli, string_t args, void* context); +void onewire_cli(Cli* cli, string_t args, void* context); // app cli function extern "C" void ibutton_cli_init() { Cli* cli = static_cast<Cli*>(furi_record_open("cli")); - cli_add_command(cli, "tm", CliCommandFlagDefault, ibutton_cli, cli); + cli_add_command(cli, "ikey", CliCommandFlagDefault, ibutton_cli, cli); + cli_add_command(cli, "onewire", CliCommandFlagDefault, onewire_cli, cli); furi_record_close("cli"); } void ibutton_cli_print_usage() { printf("Usage:\r\n"); - printf("tm read\r\n"); - printf("tm <write | emulate> <key_type> <key_data>\r\n"); + printf("ikey read\r\n"); + printf("ikey <write | emulate> <key_type> <key_data>\r\n"); printf("\t<key_type> choose from:\r\n"); printf("\tDallas (8 bytes key_data)\r\n"); printf("\tCyfral (2 bytes key_data)\r\n"); @@ -231,4 +233,52 @@ void ibutton_cli(Cli* cli, string_t args, void* context) { } string_clear(cmd); +} + +void onewire_cli_print_usage() { + printf("Usage:\r\n"); + printf("onewire search\r\n"); +}; + +void onewire_cli_search(Cli* cli) { + OneWireMaster onewire(&ibutton_gpio); + uint8_t address[8]; + bool done = false; + + printf("Search started\r\n"); + + onewire.start(); + while(!done) { + if(onewire.search(address, true) != 1) { + printf("Search finished\r\n"); + onewire.reset_search(); + done = true; + return; + } else { + printf("Found: "); + for(uint8_t i = 0; i < 8; i++) { + printf("%02X", address[i]); + } + printf("\r\n"); + } + delay(100); + } + onewire.stop(); +} + +void onewire_cli(Cli* cli, string_t args, void* context) { + string_t cmd; + string_init(cmd); + + if(!args_read_string_and_trim(args, cmd)) { + string_clear(cmd); + onewire_cli_print_usage(); + return; + } + + if(string_cmp_str(cmd, "search") == 0) { + onewire_cli_search(cli); + } + + string_clear(cmd); }
\ No newline at end of file |