 224d0aefe4
			
		
	
	
		224d0aefe4
		
			
		
	
	
	
	
		
			
			* First part of multitarget porting * Delete firmware/targets/f7/Inc directory * Delete firmware/targets/f7/Src directory * gpio: cli fixes; about: using version from HAL * sdk: path fixes * gui: include fixes * applications: more include fixes * gpio: ported to new apis * hal: introduced furi_hal_target_hw.h; libs: added one_wire * hal: f18 target * github: also build f18 by default * typo fix * fbt: removed extra checks on app list * api: explicitly bundling select mlib headers with sdk * hal: f18: changed INPUT_DEBOUNCE_TICKS to match f7 * cleaned up commented out code * docs: added info on hw targets * docs: targets: formatting fixes * f18: fixed link error * f18: fixed API version to match f7 * docs: hardware: minor wording fixes * faploader: added fw target check * docs: typo fixes * github: not building komi target by default * fbt: support for `targets` field for built-in apps * github: reworked build flow to exclude app_set; fbt: removed komi-specific appset; added additional target buildset check * github: fixed build; nfc: fixed pvs warnings * attempt to fix target id * f7, f18: removed certain HAL function from public API * apps: debug: enabled bt_debug_app for f18 * Targets: backport input pins configuration routine from F7 to F18 Co-authored-by: Aleksandr Kutuzov <alleteam@gmail.com>
		
			
				
	
	
		
			70 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			70 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| #include "gpio_items.h"
 | |
| 
 | |
| #include <furi_hal_resources.h>
 | |
| 
 | |
| struct GPIOItems {
 | |
|     GpioPinRecord* pins;
 | |
|     size_t count;
 | |
| };
 | |
| 
 | |
| GPIOItems* gpio_items_alloc() {
 | |
|     GPIOItems* items = malloc(sizeof(GPIOItems));
 | |
| 
 | |
|     items->count = 0;
 | |
|     for(size_t i = 0; i < gpio_pins_count; i++) {
 | |
|         if(!gpio_pins[i].debug) {
 | |
|             items->count++;
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     items->pins = malloc(sizeof(GpioPinRecord) * items->count);
 | |
|     for(size_t i = 0; i < items->count; i++) {
 | |
|         if(!gpio_pins[i].debug) {
 | |
|             items->pins[i].pin = gpio_pins[i].pin;
 | |
|             items->pins[i].name = gpio_pins[i].name;
 | |
|         }
 | |
|     }
 | |
|     return items;
 | |
| }
 | |
| 
 | |
| void gpio_items_free(GPIOItems* items) {
 | |
|     free(items->pins);
 | |
|     free(items);
 | |
| }
 | |
| 
 | |
| uint8_t gpio_items_get_count(GPIOItems* items) {
 | |
|     return items->count;
 | |
| }
 | |
| 
 | |
| void gpio_items_configure_pin(GPIOItems* items, uint8_t index, GpioMode mode) {
 | |
|     furi_assert(index < items->count);
 | |
|     furi_hal_gpio_write(items->pins[index].pin, false);
 | |
|     furi_hal_gpio_init(items->pins[index].pin, mode, GpioPullNo, GpioSpeedVeryHigh);
 | |
| }
 | |
| 
 | |
| void gpio_items_configure_all_pins(GPIOItems* items, GpioMode mode) {
 | |
|     for(uint8_t i = 0; i < items->count; i++) {
 | |
|         gpio_items_configure_pin(items, i, mode);
 | |
|     }
 | |
| }
 | |
| 
 | |
| void gpio_items_set_pin(GPIOItems* items, uint8_t index, bool level) {
 | |
|     furi_assert(index < items->count);
 | |
|     furi_hal_gpio_write(items->pins[index].pin, level);
 | |
| }
 | |
| 
 | |
| void gpio_items_set_all_pins(GPIOItems* items, bool level) {
 | |
|     for(uint8_t i = 0; i < items->count; i++) {
 | |
|         gpio_items_set_pin(items, i, level);
 | |
|     }
 | |
| }
 | |
| 
 | |
| const char* gpio_items_get_pin_name(GPIOItems* items, uint8_t index) {
 | |
|     furi_assert(index < items->count + 1);
 | |
|     if(index == items->count) {
 | |
|         return "ALL";
 | |
|     } else {
 | |
|         return items->pins[index].name;
 | |
|     }
 | |
| }
 |