[FL-835] Factory reset. Cli refactoring. (#466)

* ApiHal: add boot flags. Internal storage: add factory reset.
* Bootloader: correct doxygen comment format.
* Cli: change cli callback signature. Applications: update API usage. Add factory_reset cli command.
This commit is contained in:
あく
2021-05-18 16:57:39 +03:00
committed by GitHub
parent a02aa42095
commit 6d648da003
21 changed files with 127 additions and 69 deletions

View File

@@ -130,7 +130,7 @@ void cli_enter(Cli* cli) {
furi_check(osMutexRelease(cli->mutex) == osOK);
if(cli_command) {
cli_nl();
cli_command->callback(cli->line, cli_command->context);
cli_command->callback(cli, cli->line, cli_command->context);
cli_prompt();
} else {
cli_nl();

View File

@@ -16,7 +16,7 @@ typedef struct Cli Cli;
* @param args - string with what was passed after command
* @param context - pointer to whatever you gave us on cli_add_command
*/
typedef void (*CliCallback)(string_t args, void* context);
typedef void (*CliCallback)(Cli* cli, string_t args, void* context);
/* Add cli command
* Registers you command callback

View File

@@ -4,9 +4,8 @@
#include <rtc.h>
#include <task-control-block.h>
void cli_command_help(string_t args, void* context) {
void cli_command_help(Cli* cli, string_t args, void* context) {
(void)args;
Cli* cli = context;
printf("Commands we have:");
furi_check(osMutexAcquire(cli->mutex, osWaitForever) == osOK);
@@ -38,7 +37,7 @@ void cli_command_help(string_t args, void* context) {
}
}
void cli_command_version(string_t args, void* context) {
void cli_command_version(Cli* cli, string_t args, void* context) {
(void)args;
(void)context;
printf("Bootloader\r\n");
@@ -48,7 +47,7 @@ void cli_command_version(string_t args, void* context) {
cli_print_version(api_hal_version_get_fw_version());
}
void cli_command_uuid(string_t args, void* context) {
void cli_command_uuid(Cli* cli, string_t args, void* context) {
(void)args;
(void)context;
size_t uid_size = api_hal_uid_size();
@@ -64,7 +63,7 @@ void cli_command_uuid(string_t args, void* context) {
printf(string_get_cstr(byte_str));
}
void cli_command_date(string_t args, void* context) {
void cli_command_date(Cli* cli, string_t args, void* context) {
RTC_DateTypeDef date;
RTC_TimeTypeDef time;
@@ -84,15 +83,14 @@ void cli_command_date(string_t args, void* context) {
string_clear(datetime_str);
}
void cli_command_log(string_t args, void* context) {
Cli* cli = context;
void cli_command_log(Cli* cli, string_t args, void* context) {
furi_stdglue_set_global_stdout_callback(cli_stdout_callback);
printf("Press any key to stop...\r\n");
cli_getc(cli);
furi_stdglue_set_global_stdout_callback(NULL);
}
void cli_command_vibro(string_t args, void* context) {
void cli_command_vibro(Cli* cli, string_t args, void* context) {
if(!string_cmp(args, "0")) {
api_hal_vibro_on(false);
} else if(!string_cmp(args, "1")) {
@@ -102,7 +100,7 @@ void cli_command_vibro(string_t args, void* context) {
}
}
void cli_command_led(string_t args, void* context) {
void cli_command_led(Cli* cli, string_t args, void* context) {
// Get first word as light name
Light light;
string_t light_name;
@@ -142,7 +140,7 @@ void cli_command_led(string_t args, void* context) {
api_hal_light_set(light, value);
}
void cli_command_gpio_set(string_t args, void* context) {
void cli_command_gpio_set(Cli* cli, string_t args, void* context) {
char pin_names[][4] = {"PC0", "PC1", "PC3", "PB2", "PB3", "PA4", "PA6", "PA7"};
GpioPin gpio[] = {
{.port = GPIOC, .pin = LL_GPIO_PIN_0},
@@ -200,7 +198,7 @@ void cli_command_gpio_set(string_t args, void* context) {
return;
}
void cli_command_os_info(string_t args, void* context) {
void cli_command_os_info(Cli* cli, string_t args, void* context) {
const uint8_t threads_num_max = 32;
osThreadId_t threads_id[threads_num_max];
uint8_t thread_num = osThreadEnumerate(threads_id, threads_num_max);
@@ -222,15 +220,15 @@ void cli_command_os_info(string_t args, void* context) {
}
void cli_commands_init(Cli* cli) {
cli_add_command(cli, "help", cli_command_help, cli);
cli_add_command(cli, "?", cli_command_help, cli);
cli_add_command(cli, "version", cli_command_version, cli);
cli_add_command(cli, "!", cli_command_version, cli);
cli_add_command(cli, "uid", cli_command_uuid, cli);
cli_add_command(cli, "date", cli_command_date, cli);
cli_add_command(cli, "log", cli_command_log, cli);
cli_add_command(cli, "vibro", cli_command_vibro, cli);
cli_add_command(cli, "led", cli_command_led, cli);
cli_add_command(cli, "gpio_set", cli_command_gpio_set, cli);
cli_add_command(cli, "os_info", cli_command_os_info, cli);
cli_add_command(cli, "help", cli_command_help, NULL);
cli_add_command(cli, "?", cli_command_help, NULL);
cli_add_command(cli, "version", cli_command_version, NULL);
cli_add_command(cli, "!", cli_command_version, NULL);
cli_add_command(cli, "uid", cli_command_uuid, NULL);
cli_add_command(cli, "date", cli_command_date, NULL);
cli_add_command(cli, "log", cli_command_log, NULL);
cli_add_command(cli, "vibro", cli_command_vibro, NULL);
cli_add_command(cli, "led", cli_command_led, NULL);
cli_add_command(cli, "gpio_set", cli_command_gpio_set, NULL);
cli_add_command(cli, "os_info", cli_command_os_info, NULL);
}