1
+ #include "../mag_i.h"
2
+
3
+ #define TAG "MagSceneEmulateConfig"
4
+
5
+ #define GPIO_COUNT 8
6
+ static const char * gpio [GPIO_COUNT ] = {
7
+ [MagSettingPinA7 ] = "2 (A7)" ,
8
+ [MagSettingPinA6 ] = "3 (A6)" ,
9
+ [MagSettingPinA4 ] = "4 (A4)" ,
10
+ [MagSettingPinB3 ] = "5 (B3)" ,
11
+ [MagSettingPinB2 ] = "6 (B2)" ,
12
+ [MagSettingPinC3 ] = "7 (C3)" ,
13
+ [MagSettingPinC1 ] = "15 (C1)" ,
14
+ [MagSettingPinC0 ] = "16 (C0)" ,
15
+ };
16
+
17
+ static void mag_scene_settings_set_gpio (VariableItem * item , MagSettingPin * pin_to_set ) {
18
+ MagSettingPin pin = variable_item_get_current_value_index (item );
19
+ variable_item_set_current_value_text (item , gpio [pin ]);
20
+ * pin_to_set = pin ;
21
+ }
22
+
23
+ static void mag_scene_settings_set_gpio_input (VariableItem * item ) {
24
+ Mag * mag = variable_item_get_context (item );
25
+ mag_scene_settings_set_gpio (item , & mag -> setting -> pin_input );
26
+ };
27
+
28
+ static void mag_scene_settings_set_gpio_output (VariableItem * item ) {
29
+ Mag * mag = variable_item_get_context (item );
30
+ mag_scene_settings_set_gpio (item , & mag -> setting -> pin_output );
31
+ };
32
+
33
+ static void mag_scene_settings_set_gpio_enable (VariableItem * item ) {
34
+ Mag * mag = variable_item_get_context (item );
35
+ mag_scene_settings_set_gpio (item , & mag -> setting -> pin_enable );
36
+ };
37
+
38
+ static void mag_pin_variable_item_list_add (
39
+ Mag * mag ,
40
+ const char * label ,
41
+ MagSettingPin pin ,
42
+ VariableItemChangeCallback change_callback ) {
43
+ VariableItem * item =
44
+ variable_item_list_add (mag -> variable_item_list , label , GPIO_COUNT , change_callback , mag );
45
+ variable_item_set_current_value_index (item , pin );
46
+ variable_item_set_current_value_text (item , gpio [pin ]);
47
+ }
48
+ // static const char* uart_pins[] = {[DapUartTypeUSART1] = "13,14", [DapUartTypeLPUART1] = "15,16"};
49
+ // static const char* uart_swap[] = {[DapUartTXRXNormal] = "No", [DapUartTXRXSwap] = "Yes"};
50
+
51
+ void mag_scene_settings_on_enter (void * context ) {
52
+ Mag * mag = context ;
53
+
54
+ mag_pin_variable_item_list_add (
55
+ mag , "Input pin:" , mag -> setting -> pin_input , mag_scene_settings_set_gpio_input );
56
+ mag_pin_variable_item_list_add (
57
+ mag , "Output pin:" , mag -> setting -> pin_output , mag_scene_settings_set_gpio_output );
58
+ mag_pin_variable_item_list_add (
59
+ mag , "Enable pin:" , mag -> setting -> pin_enable , mag_scene_settings_set_gpio_enable );
60
+
61
+ view_dispatcher_switch_to_view (mag -> view_dispatcher , MagViewVariableItemList );
62
+ }
63
+
64
+ bool mag_scene_settings_on_event (void * context , SceneManagerEvent event ) {
65
+ Mag * mag = context ;
66
+ SceneManager * scene_manager = mag -> scene_manager ;
67
+ bool consumed = false;
68
+
69
+ UNUSED (mag );
70
+ UNUSED (scene_manager );
71
+ UNUSED (event );
72
+
73
+ return consumed ;
74
+ }
75
+
76
+ void mag_scene_settings_on_exit (void * context ) {
77
+ Mag * mag = context ;
78
+ variable_item_list_set_selected_item (mag -> variable_item_list , 0 );
79
+ variable_item_list_reset (mag -> variable_item_list );
80
+ }
0 commit comments