[FL-1419] new iButton cli (#521)

* iButton, helpers: add destructor
* iButton app: new approach to cli commands, cli read
* iButton app: cli write
* iButton app: cli emulate
* iButton app: remove old cli commands
* iButton app: use unique_ptr for worker
* iButton app: remove obsolete cli help
* iButton app: fix help and key type parsing
This commit is contained in:
SG
2021-06-17 21:13:37 +10:00
committed by GitHub
parent 9943c93189
commit 89dd1ff925
14 changed files with 247 additions and 500 deletions

View File

@@ -6,19 +6,16 @@
#include "scene/ibutton-scene-generic.h"
#include "scene/ibutton-scene-start.h"
#include "scene/ibutton-scene-read.h"
#include "scene/ibutton-scene-cli-read.h"
#include "scene/ibutton-scene-read-crc-error.h"
#include "scene/ibutton-scene-read-not-key-error.h"
#include "scene/ibutton-scene-read-success.h"
#include "scene/ibutton-scene-readed-key-menu.h"
#include "scene/ibutton-scene-write.h"
#include "scene/ibutton-scene-cli-write.h"
#include "scene/ibutton-scene-write-success.h"
#include "scene/ibutton-scene-saved-key-menu.h"
#include "scene/ibutton-scene-delete-confirm.h"
#include "scene/ibutton-scene-delete-success.h"
#include "scene/ibutton-scene-emulate.h"
#include "scene/ibutton-scene-cli-emulate.h"
#include "scene/ibutton-scene-save-name.h"
#include "scene/ibutton-scene-save-success.h"
#include "scene/ibutton-scene-info.h"
@@ -49,16 +46,13 @@ public:
SceneExit,
SceneStart,
SceneRead,
SceneCliRead,
SceneReadNotKeyError,
SceneReadCRCError,
SceneReadSuccess,
SceneReadedKeyMenu,
SceneWrite,
SceneCliWrite,
SceneWriteSuccess,
SceneEmulate,
SceneCliEmulate,
SceneSavedKeyMenu,
SceneDeleteConfirm,
SceneDeleteSuccess,
@@ -70,16 +64,6 @@ public:
SceneAddValue,
};
enum class CliEvent : uint8_t {
CliReadSuccess,
CliReadCRCError,
CliReadNotKeyError,
CliWriteSuccess,
CliWriteFail,
CliTimeout,
CliInterrupt,
};
iButtonAppViewManager* get_view_manager();
void switch_to_next_scene(Scene index);
void search_and_switch_to_previous_scene(std::initializer_list<Scene> scenes_list);
@@ -110,9 +94,6 @@ public:
char* get_file_name();
uint8_t get_file_name_size();
void cli_cmd_callback(Cli* cli, string_t args, void* context);
void cli_send_event(CliEvent scene);
void generate_random_name(char* name, uint8_t max_name_size);
bool save_key(const char* key_name);
@@ -123,21 +104,17 @@ private:
std::list<Scene> previous_scenes_list = {Scene::SceneExit};
Scene current_scene = Scene::SceneStart;
iButtonAppViewManager view;
osMessageQueueId_t cli_event_result;
std::map<Scene, iButtonScene*> scenes = {
{Scene::SceneStart, new iButtonSceneStart()},
{Scene::SceneRead, new iButtonSceneRead()},
{Scene::SceneCliRead, new iButtonSceneCliRead()},
{Scene::SceneReadCRCError, new iButtonSceneReadCRCError()},
{Scene::SceneReadNotKeyError, new iButtonSceneReadNotKeyError()},
{Scene::SceneReadSuccess, new iButtonSceneReadSuccess()},
{Scene::SceneReadedKeyMenu, new iButtonSceneReadedKeyMenu()},
{Scene::SceneWrite, new iButtonSceneWrite()},
{Scene::SceneCliWrite, new iButtonSceneCliWrite()},
{Scene::SceneWriteSuccess, new iButtonSceneWriteSuccess()},
{Scene::SceneEmulate, new iButtonSceneEmulate()},
{Scene::SceneCliEmulate, new iButtonSceneCliEmulate()},
{Scene::SceneSavedKeyMenu, new iButtonSceneSavedKeyMenu()},
{Scene::SceneDeleteConfirm, new iButtonSceneDeleteConfirm()},
{Scene::SceneDeleteSuccess, new iButtonSceneDeleteSuccess()},
@@ -164,9 +141,6 @@ private:
NotificationApp* notification;
bool read_hex_byte(string_t arg, uint8_t* byte);
void print_key_data(void);
static const char* app_folder;
static const char* app_extension;