[FL-936] CLI commands for vibro, led and display backlight support (#367)
* api-hal: add api-hal-vibro * cli: add vibro cli command * cli: add cli commands for led and disp backlight
This commit is contained in:
		
							parent
							
								
									651c5b35ca
								
							
						
					
					
						commit
						73e5379520
					
				| @ -74,6 +74,56 @@ void cli_command_log(string_t args, void* context) { | |||||||
|     furi_stdglue_set_global_stdout_callback(NULL); |     furi_stdglue_set_global_stdout_callback(NULL); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | void cli_command_vibro(string_t args, void* context) { | ||||||
|  |     if(!string_cmp(args, "0")) { | ||||||
|  |         api_hal_vibro_on(false); | ||||||
|  |     } else if(!string_cmp(args, "1")) { | ||||||
|  |         api_hal_vibro_on(true); | ||||||
|  |     } else { | ||||||
|  |         printf("Wrong input"); | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | void cli_command_led(string_t args, void* context) { | ||||||
|  |     // Get first word as light name
 | ||||||
|  |     Light light; | ||||||
|  |     string_t light_name; | ||||||
|  |     string_init(light_name); | ||||||
|  |     size_t ws = string_search_char(args, ' '); | ||||||
|  |     if(ws == STRING_FAILURE) { | ||||||
|  |         printf("Wrong input"); | ||||||
|  |         string_clear(light_name); | ||||||
|  |         return; | ||||||
|  |     } else { | ||||||
|  |         string_set_n(light_name, args, 0, ws); | ||||||
|  |         string_right(args, ws); | ||||||
|  |         string_strim(args); | ||||||
|  |     } | ||||||
|  |     // Check light name
 | ||||||
|  |     if(!string_cmp(light_name, "r")) { | ||||||
|  |         light = LightRed; | ||||||
|  |     } else if(!string_cmp(light_name, "g")) { | ||||||
|  |         light = LightGreen; | ||||||
|  |     } else if(!string_cmp(light_name, "b")) { | ||||||
|  |         light = LightBlue; | ||||||
|  |     } else if(!string_cmp(light_name, "bl")) { | ||||||
|  |         light = LightBacklight; | ||||||
|  |     } else { | ||||||
|  |         printf("Wrong argument"); | ||||||
|  |         string_clear(light_name); | ||||||
|  |         return; | ||||||
|  |     } | ||||||
|  |     string_clear(light_name); | ||||||
|  |     // Read light value from the rest of the string
 | ||||||
|  |     char* end_ptr; | ||||||
|  |     uint32_t value = strtoul(string_get_cstr(args), &end_ptr, 0); | ||||||
|  |     if(!(value < 256 && *end_ptr == '\0')) { | ||||||
|  |         printf("Wrong argument"); | ||||||
|  |         return; | ||||||
|  |     } | ||||||
|  |     api_hal_light_set(light, value); | ||||||
|  | } | ||||||
|  | 
 | ||||||
| void cli_commands_init(Cli* cli) { | void cli_commands_init(Cli* cli) { | ||||||
|     cli_add_command(cli, "help", cli_command_help, cli); |     cli_add_command(cli, "help", cli_command_help, cli); | ||||||
|     cli_add_command(cli, "?", cli_command_help, cli); |     cli_add_command(cli, "?", cli_command_help, cli); | ||||||
| @ -82,4 +132,6 @@ void cli_commands_init(Cli* cli) { | |||||||
|     cli_add_command(cli, "uid", cli_command_uuid, cli); |     cli_add_command(cli, "uid", cli_command_uuid, cli); | ||||||
|     cli_add_command(cli, "date", cli_command_date, cli); |     cli_add_command(cli, "date", cli_command_date, cli); | ||||||
|     cli_add_command(cli, "log", cli_command_log, 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); | ||||||
| } | } | ||||||
|  | |||||||
							
								
								
									
										19
									
								
								firmware/targets/api-hal-include/api-hal-vibro.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								firmware/targets/api-hal-include/api-hal-vibro.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,19 @@ | |||||||
|  | #pragma once | ||||||
|  | 
 | ||||||
|  | #include <stdbool.h> | ||||||
|  | #include <stdint.h> | ||||||
|  | #include <api-hal-resources.h> | ||||||
|  | 
 | ||||||
|  | #ifdef __cplusplus | ||||||
|  | extern "C" { | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | /* Initialize vibro */ | ||||||
|  | void api_hal_vibro_init(); | ||||||
|  | 
 | ||||||
|  | /* Turn on/off vibro */ | ||||||
|  | void api_hal_vibro_on(bool value); | ||||||
|  | 
 | ||||||
|  | #ifdef __cplusplus | ||||||
|  | } | ||||||
|  | #endif | ||||||
| @ -22,5 +22,6 @@ template <unsigned int N> struct STOP_EXTERNING_ME {}; | |||||||
| #include "api-hal-spi.h" | #include "api-hal-spi.h" | ||||||
| #include "api-hal-flash.h" | #include "api-hal-flash.h" | ||||||
| #include "api-hal-subghz.h" | #include "api-hal-subghz.h" | ||||||
|  | #include "api-hal-vibro.h" | ||||||
| 
 | 
 | ||||||
| void api_hal_init(); | void api_hal_init(); | ||||||
|  | |||||||
							
								
								
									
										11
									
								
								firmware/targets/f5/api-hal/api-hal-vibro.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								firmware/targets/f5/api-hal/api-hal-vibro.c
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,11 @@ | |||||||
|  | #include <api-hal-vibro.h> | ||||||
|  | #include <api-hal-gpio.h> | ||||||
|  | 
 | ||||||
|  | void api_hal_vibro_init() { | ||||||
|  |     hal_gpio_init(&vibro_gpio, GpioModeOutputPushPull, GpioPullNo, GpioSpeedLow); | ||||||
|  |     hal_gpio_write(&vibro_gpio, false); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | void api_hal_vibro_on(bool value) { | ||||||
|  |     hal_gpio_write(&vibro_gpio, value); | ||||||
|  | } | ||||||
| @ -7,4 +7,5 @@ void api_hal_init() { | |||||||
|     api_hal_i2c_init(); |     api_hal_i2c_init(); | ||||||
|     api_hal_power_init(); |     api_hal_power_init(); | ||||||
|     api_hal_light_init(); |     api_hal_light_init(); | ||||||
|  |     api_hal_vibro_init(); | ||||||
| } | } | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 gornekich
						gornekich