|
@@ -12,6 +12,8 @@
|
|
|
#define CLI_DATE_FORMAT "%.4d-%.2d-%.2d %.2d:%.2d:%.2d %d"
|
|
#define CLI_DATE_FORMAT "%.4d-%.2d-%.2d %.2d:%.2d:%.2d %d"
|
|
|
|
|
|
|
|
void cli_command_device_info_callback(const char* key, const char* value, bool last, void* context) {
|
|
void cli_command_device_info_callback(const char* key, const char* value, bool last, void* context) {
|
|
|
|
|
+ UNUSED(context);
|
|
|
|
|
+ UNUSED(last);
|
|
|
printf("%-24s: %s\r\n", key, value);
|
|
printf("%-24s: %s\r\n", key, value);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -20,11 +22,14 @@ void cli_command_device_info_callback(const char* key, const char* value, bool l
|
|
|
* This command is intended to be used by humans
|
|
* This command is intended to be used by humans
|
|
|
*/
|
|
*/
|
|
|
void cli_command_device_info(Cli* cli, string_t args, void* context) {
|
|
void cli_command_device_info(Cli* cli, string_t args, void* context) {
|
|
|
|
|
+ UNUSED(cli);
|
|
|
|
|
+ UNUSED(args);
|
|
|
furi_hal_info_get(cli_command_device_info_callback, context);
|
|
furi_hal_info_get(cli_command_device_info_callback, context);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
void cli_command_help(Cli* cli, string_t args, void* context) {
|
|
void cli_command_help(Cli* cli, string_t args, void* context) {
|
|
|
- (void)args;
|
|
|
|
|
|
|
+ UNUSED(args);
|
|
|
|
|
+ UNUSED(context);
|
|
|
printf("Commands we have:");
|
|
printf("Commands we have:");
|
|
|
|
|
|
|
|
// Command count
|
|
// Command count
|
|
@@ -62,6 +67,9 @@ void cli_command_help(Cli* cli, string_t args, void* context) {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
void cli_command_date(Cli* cli, string_t args, void* context) {
|
|
void cli_command_date(Cli* cli, string_t args, void* context) {
|
|
|
|
|
+ UNUSED(cli);
|
|
|
|
|
+ UNUSED(context);
|
|
|
|
|
+
|
|
|
FuriHalRtcDateTime datetime = {0};
|
|
FuriHalRtcDateTime datetime = {0};
|
|
|
|
|
|
|
|
if(string_size(args) > 0) {
|
|
if(string_size(args) > 0) {
|
|
@@ -135,6 +143,8 @@ void cli_command_log_tx_callback(const uint8_t* buffer, size_t size, void* conte
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
void cli_command_log(Cli* cli, string_t args, void* context) {
|
|
void cli_command_log(Cli* cli, string_t args, void* context) {
|
|
|
|
|
+ UNUSED(args);
|
|
|
|
|
+ UNUSED(context);
|
|
|
StreamBufferHandle_t ring = xStreamBufferCreate(CLI_COMMAND_LOG_RING_SIZE, 1);
|
|
StreamBufferHandle_t ring = xStreamBufferCreate(CLI_COMMAND_LOG_RING_SIZE, 1);
|
|
|
uint8_t buffer[CLI_COMMAND_LOG_BUFFER_SIZE];
|
|
uint8_t buffer[CLI_COMMAND_LOG_BUFFER_SIZE];
|
|
|
|
|
|
|
@@ -152,6 +162,8 @@ void cli_command_log(Cli* cli, string_t args, void* context) {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
void cli_command_vibro(Cli* cli, string_t args, void* context) {
|
|
void cli_command_vibro(Cli* cli, string_t args, void* context) {
|
|
|
|
|
+ UNUSED(cli);
|
|
|
|
|
+ UNUSED(context);
|
|
|
if(!string_cmp(args, "0")) {
|
|
if(!string_cmp(args, "0")) {
|
|
|
NotificationApp* notification = furi_record_open("notification");
|
|
NotificationApp* notification = furi_record_open("notification");
|
|
|
notification_message_block(notification, &sequence_reset_vibro);
|
|
notification_message_block(notification, &sequence_reset_vibro);
|
|
@@ -166,6 +178,8 @@ void cli_command_vibro(Cli* cli, string_t args, void* context) {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
void cli_command_debug(Cli* cli, string_t args, void* context) {
|
|
void cli_command_debug(Cli* cli, string_t args, void* context) {
|
|
|
|
|
+ UNUSED(cli);
|
|
|
|
|
+ UNUSED(context);
|
|
|
if(!string_cmp(args, "0")) {
|
|
if(!string_cmp(args, "0")) {
|
|
|
furi_hal_rtc_reset_flag(FuriHalRtcFlagDebug);
|
|
furi_hal_rtc_reset_flag(FuriHalRtcFlagDebug);
|
|
|
loader_update_menu();
|
|
loader_update_menu();
|
|
@@ -180,6 +194,8 @@ void cli_command_debug(Cli* cli, string_t args, void* context) {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
void cli_command_led(Cli* cli, string_t args, void* context) {
|
|
void cli_command_led(Cli* cli, string_t args, void* context) {
|
|
|
|
|
+ UNUSED(cli);
|
|
|
|
|
+ UNUSED(context);
|
|
|
// Get first word as light name
|
|
// Get first word as light name
|
|
|
NotificationMessage notification_led_message;
|
|
NotificationMessage notification_led_message;
|
|
|
string_t light_name;
|
|
string_t light_name;
|
|
@@ -233,6 +249,7 @@ void cli_command_led(Cli* cli, string_t args, void* context) {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
void cli_command_gpio_set(Cli* cli, string_t args, void* context) {
|
|
void cli_command_gpio_set(Cli* cli, string_t args, void* context) {
|
|
|
|
|
+ UNUSED(context);
|
|
|
char pin_names[][4] = {
|
|
char pin_names[][4] = {
|
|
|
"PC0",
|
|
"PC0",
|
|
|
"PC1",
|
|
"PC1",
|
|
@@ -313,6 +330,8 @@ void cli_command_gpio_set(Cli* cli, string_t args, void* context) {
|
|
|
return;
|
|
return;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
+#else
|
|
|
|
|
+ UNUSED(cli);
|
|
|
#endif
|
|
#endif
|
|
|
|
|
|
|
|
LL_GPIO_SetPinMode(gpio[num].port, gpio[num].pin, LL_GPIO_MODE_OUTPUT);
|
|
LL_GPIO_SetPinMode(gpio[num].port, gpio[num].pin, LL_GPIO_MODE_OUTPUT);
|
|
@@ -325,6 +344,10 @@ void cli_command_gpio_set(Cli* cli, string_t args, void* context) {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
void cli_command_ps(Cli* cli, string_t args, void* context) {
|
|
void cli_command_ps(Cli* cli, string_t args, void* context) {
|
|
|
|
|
+ UNUSED(cli);
|
|
|
|
|
+ UNUSED(args);
|
|
|
|
|
+ UNUSED(context);
|
|
|
|
|
+
|
|
|
const uint8_t threads_num_max = 32;
|
|
const uint8_t threads_num_max = 32;
|
|
|
osThreadId_t threads_id[threads_num_max];
|
|
osThreadId_t threads_id[threads_num_max];
|
|
|
uint8_t thread_num = osThreadEnumerate(threads_id, threads_num_max);
|
|
uint8_t thread_num = osThreadEnumerate(threads_id, threads_num_max);
|
|
@@ -344,6 +367,10 @@ void cli_command_ps(Cli* cli, string_t args, void* context) {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
void cli_command_free(Cli* cli, string_t args, void* context) {
|
|
void cli_command_free(Cli* cli, string_t args, void* context) {
|
|
|
|
|
+ UNUSED(cli);
|
|
|
|
|
+ UNUSED(args);
|
|
|
|
|
+ UNUSED(context);
|
|
|
|
|
+
|
|
|
printf("Free heap size: %d\r\n", memmgr_get_free_heap());
|
|
printf("Free heap size: %d\r\n", memmgr_get_free_heap());
|
|
|
printf("Total heap size: %d\r\n", memmgr_get_total_heap());
|
|
printf("Total heap size: %d\r\n", memmgr_get_total_heap());
|
|
|
printf("Minimum heap size: %d\r\n", memmgr_get_minimum_free_heap());
|
|
printf("Minimum heap size: %d\r\n", memmgr_get_minimum_free_heap());
|
|
@@ -351,10 +378,18 @@ void cli_command_free(Cli* cli, string_t args, void* context) {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
void cli_command_free_blocks(Cli* cli, string_t args, void* context) {
|
|
void cli_command_free_blocks(Cli* cli, string_t args, void* context) {
|
|
|
|
|
+ UNUSED(cli);
|
|
|
|
|
+ UNUSED(args);
|
|
|
|
|
+ UNUSED(context);
|
|
|
|
|
+
|
|
|
memmgr_heap_printf_free_blocks();
|
|
memmgr_heap_printf_free_blocks();
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
void cli_command_i2c(Cli* cli, string_t args, void* context) {
|
|
void cli_command_i2c(Cli* cli, string_t args, void* context) {
|
|
|
|
|
+ UNUSED(cli);
|
|
|
|
|
+ UNUSED(args);
|
|
|
|
|
+ UNUSED(context);
|
|
|
|
|
+
|
|
|
furi_hal_i2c_acquire(&furi_hal_i2c_handle_external);
|
|
furi_hal_i2c_acquire(&furi_hal_i2c_handle_external);
|
|
|
printf("Scanning external i2c on PC0(SCL)/PC1(SDA)\r\n"
|
|
printf("Scanning external i2c on PC0(SCL)/PC1(SDA)\r\n"
|
|
|
"Clock: 100khz, 7bit address\r\n"
|
|
"Clock: 100khz, 7bit address\r\n"
|
|
@@ -391,4 +426,4 @@ void cli_commands_init(Cli* cli) {
|
|
|
cli_add_command(cli, "led", CliCommandFlagDefault, cli_command_led, NULL);
|
|
cli_add_command(cli, "led", CliCommandFlagDefault, cli_command_led, NULL);
|
|
|
cli_add_command(cli, "gpio_set", CliCommandFlagDefault, cli_command_gpio_set, NULL);
|
|
cli_add_command(cli, "gpio_set", CliCommandFlagDefault, cli_command_gpio_set, NULL);
|
|
|
cli_add_command(cli, "i2c", CliCommandFlagDefault, cli_command_i2c, NULL);
|
|
cli_add_command(cli, "i2c", CliCommandFlagDefault, cli_command_i2c, NULL);
|
|
|
-}
|
|
|
|
|
|
|
+}
|