[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:
@@ -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();
|
||||
|
@@ -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
|
||||
|
@@ -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);
|
||||
}
|
||||
|
Reference in New Issue
Block a user