@@ -26,18 +26,98 @@ SOFTWARE.
26
26
#include " core-api/api/Common.h"
27
27
#undef PinMode
28
28
29
+ #include " bridge/pins.h"
30
+
29
31
#define standInFunc () printf(" %s [file: %s, line: %d]\n " , __FUNCTION__, __FILE__, __LINE__)
30
32
31
- void pinMode (pin_size_t pinNumber , Arduino_PinMode pinMode){
33
+ void indexMode (pin_size_t index , Arduino_PinMode pinMode){
32
34
standInFunc ();
35
+ printf (" \t index: %d\n " , index);
36
+ DigitalInOut* gpio = pinGPIOByIndex (index);
37
+ if ( gpio == NULL ){
38
+ gpio = new DigitalInOut (pinNameByIndex (index));
39
+ printf (" \t creating a new DigitalInOut object! 0x%08X\n " , (uint32_t )gpio);
40
+ }
41
+ printf (" \t gpio = 0x%08X\n " , (uint32_t )gpio);
42
+ pinGPIOByIndex (index) = gpio;
33
43
34
- switch ( pinMode ){
35
- case INPUT: printf (" \t INPUT\n " ); break ;
36
- case OUTPUT: printf (" \t OUTPUT\n " ); break ;
37
- case INPUT_PULLUP: printf (" \t INPUT_PULLUP\n " ); break ;
38
- case INPUT_PULLDOWN: printf (" \t INPUT_PULLDOWN\n " ); break ;
44
+ switch (pinMode) {
45
+ case INPUT:
46
+ gpio->input ();
47
+ gpio->mode (PullNone);
48
+ break ;
49
+ case OUTPUT:
50
+ gpio->output ();
51
+ break ;
52
+ case INPUT_PULLUP:
53
+ gpio->input ();
54
+ gpio->mode (PullUp);
55
+ break ;
56
+ case INPUT_PULLDOWN:
39
57
default :
40
- printf (" \t unknown pinMode given\n " );
58
+ gpio->input ();
59
+ gpio->mode (PullDown);
41
60
break ;
42
61
}
43
62
}
63
+
64
+ void pinMode (pin_size_t pinNumber, Arduino_PinMode pinMode){
65
+ pin_size_t index = pinIndexByNumber (pinNumber);
66
+ printf (" via PinNumber\n " );
67
+ if ( index == variantPinCount ){ return ; }
68
+ indexMode (index, pinMode);
69
+ }
70
+
71
+ void pinMode (PinName pinName, Arduino_PinMode pinMode){
72
+ pin_size_t index = pinIndexByName (pinName);
73
+ printf (" via PinName\n " );
74
+ if ( index == variantPinCount ){ return ; }
75
+ indexMode (index, pinMode);
76
+ }
77
+
78
+ void indexDigitalWrite (pin_size_t index, PinStatus val){
79
+ mbed::DigitalInOut* gpio = pinGPIOByIndex (index);
80
+ if (gpio == NULL ) {
81
+ gpio = new mbed::DigitalInOut (pinNameByIndex (index), PIN_OUTPUT, PullNone, val);
82
+ pinGPIOByIndex (index) = gpio;
83
+ }
84
+ gpio->write (val);
85
+ }
86
+
87
+ void digitalWrite (pin_size_t pinNumber, PinStatus val){
88
+ pin_size_t index = pinIndexByNumber (pinNumber);
89
+ printf (" via PinNumber\n " );
90
+ if ( index == variantPinCount ){ return ; }
91
+ indexDigitalWrite (index, val);
92
+ }
93
+
94
+ void digitalWrite (PinName pinName, PinStatus val){
95
+ pin_size_t index = pinIndexByName (pinName);
96
+ printf (" via PinName\n " );
97
+ if ( index == variantPinCount ){ return ; }
98
+ indexDigitalWrite (index, val);
99
+ }
100
+
101
+ PinStatus indexDigitalRead (pin_size_t index){
102
+ mbed::DigitalInOut* gpio = pinGPIOByIndex (index);
103
+ if (gpio == NULL ) {
104
+ gpio = new mbed::DigitalInOut (pinNameByIndex (index), PIN_INPUT, PullNone, 0 );
105
+ pinGPIOByIndex (index) = gpio;
106
+ }
107
+ return (PinStatus) gpio->read ();
108
+ }
109
+
110
+ PinStatus digitalRead (pin_size_t pinNumber){
111
+ pin_size_t index = pinIndexByNumber (pinNumber);
112
+ printf (" via PinNumber\n " );
113
+ if ( index == variantPinCount ){ return LOW; }
114
+ return indexDigitalRead (index);
115
+ }
116
+
117
+ PinStatus digitalRead (PinName pinName){
118
+ pin_size_t index = pinIndexByName (pinName);
119
+ printf (" via PinName\n " );
120
+ if ( index == variantPinCount ){ return LOW; }
121
+ return indexDigitalRead (index);
122
+ }
123
+
0 commit comments