File tree Expand file tree Collapse file tree 3 files changed +27
-10
lines changed
hal/targets/hal/TARGET_ARM_SSG/TARGET_BEETLE Expand file tree Collapse file tree 3 files changed +27
-10
lines changed Original file line number Diff line number Diff line change @@ -126,13 +126,14 @@ typedef enum {
126
126
SENSOR_SDA = 506 ,
127
127
SENSOR_SCL = 507 ,
128
128
129
+ // Emulated LEDS
130
+ LED1 = 1001 ,
131
+ LED2 = 1002 ,
132
+ LED3 = 1003 ,
133
+ LED4 = 1004 ,
134
+
129
135
// Not connected
130
136
NC = (int )0xFFFFFFFF ,
131
- // LEDS not connected
132
- LED1 = NC ,
133
- LED2 = NC ,
134
- LED3 = NC ,
135
- LED4 = NC ,
136
137
} PinName ;
137
138
138
139
typedef enum {
Original file line number Diff line number Diff line change @@ -24,6 +24,9 @@ uint32_t gpio_set(PinName pin) {
24
24
pin_value = pin ;
25
25
} else if (pin >= 16 && pin <= 31 ) {
26
26
pin_value = pin - 16 ;
27
+ } else if (pin >= 1001 && pin <= 1004 ) {
28
+ /* Emulated LEDs */
29
+ return (1 );
27
30
}
28
31
29
32
pin_function (pin , 0 );
@@ -44,6 +47,9 @@ void gpio_init(gpio_t *obj, PinName pin) {
44
47
pin_value = pin ;
45
48
} else if (pin >= 16 && pin <= 31 ) {
46
49
pin_value = pin - 16 ;
50
+ } else if (pin >= 1001 && pin <= 1004 ) {
51
+ /* Emulated LEDs */
52
+ return ;
47
53
}
48
54
49
55
obj -> mask = 0x1 << pin_value ;
Original file line number Diff line number Diff line change @@ -37,15 +37,25 @@ typedef struct {
37
37
} gpio_t ;
38
38
39
39
static inline void gpio_write (gpio_t * obj , int value ) {
40
- if (value == 1 ){
41
- * obj -> reg_data |= (obj -> mask );
42
- } else if (value == 0 ){
43
- * obj -> reg_data &= ~(obj -> mask );
40
+ if (obj -> pin < LED1 || obj -> pin > LED4 ) {
41
+ if (value == 1 ) {
42
+ * obj -> reg_data |= (obj -> mask );
43
+ } else if (value == 0 ){
44
+ * obj -> reg_data &= ~(obj -> mask );
45
+ }
46
+ } else {
47
+ /* Emulated LEDs return without taking any action */
48
+ return ;
44
49
}
45
50
}
46
51
47
52
static inline int gpio_read (gpio_t * obj ) {
48
- return ((* obj -> reg_in & obj -> mask ) ? 1 : 0 );
53
+ if (obj -> pin < LED1 || obj -> pin > LED4 ) {
54
+ return ((* obj -> reg_in & obj -> mask ) ? 1 : 0 );
55
+ } else {
56
+ /* Emulated LEDs return OFF always */
57
+ return 0 ;
58
+ }
49
59
}
50
60
51
61
#ifdef __cplusplus
You can’t perform that action at this time.
0 commit comments