8000 implement more common functions - wip · sparkfun/arduino-mbed-bridge@8c1b33e · GitHub
[go: up one dir, main page]

Skip to content

Commit 8c1b33e

Browse files
committed
implement more common functions - wip
need to change submodule location so I am storing changes in the cloud
1 parent b135276 commit 8c1b33e

File tree

3 files changed

+104
-17
lines changed

3 files changed

+104
-17
lines changed

bridge/pins.h

Lines changed: 21 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -45,12 +45,27 @@ pin_size_t pinNumberByIndex(pin_size_t index);
4545
#define pinDACByIndex(I) variantPinStates[I].dac
4646
#define pinGPIOByIndex(I) variantPinStates[I].gpio
4747

48-
void pinMode(PinName pinName, Arduino_PinMode pinMode);
49-
void digitalWrite(PinName pinName, PinStatus val);
50-
PinStatus digitalRead(PinName pinName);
51-
void analogWriteDAC(PinName pinName, int val);
52-
void analogWriteDAC(pin_size_t pinNumber, int val);
53-
void analogWrite(PinName pinName, int val);
48+
// API extensions
49+
void indexPinMode(pin_size_t index, Arduino_PinMode pinMode);
50+
void pinMode(PinName pinName, Arduino_PinMode pinMode);
51+
void indexDigitalWrite(pin_size_t index, PinStatus val);
52+
void digitalWrite(PinName pinName, PinStatus val);
53+
PinStatus indexDigitalRead(pin_size_t index);
54+
PinStatus digitalRead(PinName pinName);
55+
void indexAnalogWriteDAC(pin_size_t index, int val);
56+
void analogWriteDAC(PinName pinName, int val);
57+
void analogWriteDAC(pin_size_t pinNumber, int val);
58+
void indexAnalogWrite(pin_size_t index, int val);
59+
void analogWrite(PinName pinName, int val);
60+
61+
#ifdef __cplusplus
62+
63+
unsigned long indexPulseIn(pin_size_t index, uint8_t state, unsigned long timeout = 1000000L);
64+
unsigned long pulseIn(PinName pinName, uint8_t state, unsigned long timeout = 1000000L);
65+
unsigned long indexPulseInLong(pin_size_t index, uint8_t state, unsigned long timeout = 1000000L);
66+
unsigned long pulseInLong(PinName pinName, uint8_t state, unsigned long timeout = 1000000L);
67+
68+
#endif // __cplusplus
5469

5570
extern const pin_size_t variantPinCount;
5671
extern PinState variantPinStates[];

core-implement/Common.cpp

Lines changed: 81 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -147,17 +147,17 @@ void analogWriteDAC(pin_size_t pinNumber, int val){
147147
indexAnalogWriteDAC(index, val);
148148
}
149149

150-
void indexAnalogWrite(pin_size_t index, int val){
151-
standInFunc();
152-
// mbed::PwmOut* pwm = pinPWMByIndex(index);
153-
// if (pwm == NULL) {
154-
// pwm = new mbed::PwmOut(pinNameByIndex(index));
155-
// pinPWMByIndex(index) = pwm;
156-
// }
157-
// pwm->period_ms(2);
158-
// float percent = (float)val/(float)(1 << res_analog_w);
159-
// pwm->write(percent);
160-
}
150+
// void indexAnalogWrite(pin_size_t index, int val){
151+
// standInFunc();
152+
// // mbed::PwmOut* pwm = pinPWMByIndex(index);
153+
// // if (pwm == NULL) {
154+
// // pwm = new mbed::PwmOut(pinNameByIndex(index));
155+
// // pinPWMByIndex(index) = pwm;
156+
// // }
157+
// // pwm->period_ms(2);
158+
// // float percent = (float)val/(float)(1 << res_analog_w);
159+
// // pwm->write(percent);
160+
// }
161161

162162
void analogWrite(PinName pinName, int val){
163163
pin_size_t index = pinIndexByName(pinName);
@@ -170,3 +170,73 @@ void analogWrite(pin_size_t pinNumber, int val){
170170
if( index == variantPinCount ){ return; }
171171
indexAnalogWrite(index, val);
172172
}
173+
174+
// #if DEVICE_LPTICKER
175+
// static mbed::LowPowerTimer t;
176+
// #else
177+
static mbed::Timer t;
178+
// #endif
179+
180+
using namespace std::chrono_literals;
181+
using namespace std::chrono;
182+
183+
void initTimer(void){
184+
t.start();
185+
}
186+
187+
unsigned long millis(void){
188+
return duration_cast<milliseconds>(t.elapsed_time()).count();
189+
}
190+
191+
unsigned long micros(void){
192+
return t.elapsed_time().count();
193+
}
194+
195+
void delay(unsigned long ms){
196+
#ifndef NO_RTOS
197+
rtos::ThisThread::sleep_for(ms * 1ms);
198+
#else
199+
wait_us(ms * 1000);
200+
#endif
201+
}
202+
203+
void delayMicroseconds(unsigned int us){
204+
wait_us(us);
205+
}
206+
207+
// unsigned long indexPulseIn(pin_size_t index, uint8_t state, unsigned long timeout){
208+
// standInFunc();
209+
// return 0;
210+
// }
211+
212+
unsigned long pulseIn(PinName pinName, uint8_t state, unsigned long timeout){
213+
pin_size_t index = pinIndexByName(pinName);
214+
if( index == variantPinCount ){ return 0; }
215+
return indexPulseIn(index, state, timeout);
216+
}
217+
218+
unsigned long pulseIn(pin_size_t pinNumber, uint8_t state, unsigned long timeout){
219+
pin_size_t index = pinIndexByNumber(pinNumber);
220+
if( index == variantPinCount ){ return 0; }
221+
return indexPulseIn(index, state, timeout);
222+
}
223+
224+
unsigned long indexPulseInLong(pin_size_t index, uint8_t state, unsigned long timeout){
225+
return indexPulseIn(index, state, timeout); // pulseIn and pulseInLong are identical
226+
}
227+
228+
unsigned long pulseInLong(PinName pinName, uint8_t state, unsigned long timeout){
229+
pin_size_t index = pinIndexByName(pinName);
230+
if( index == variantPinCount ){ return 0; }
231+
return pulseInLong(index, state, timeout);
232+
}
233+
234+
unsigned long pulseInLong(pin_size_t pinNumber, uint8_t state, unsigned long timeout){
235+
pin_size_t index = pinIndexByNumber(pinNumber);
236+
if( index == variantPinCount ){ return 0; }
237+
return pulseInLong(index, state, timeout);
238+
}
239+
240+
void init(void){
241+
initTimer();
242+
}

main.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@ extern void loop(void);
2727

2828
int main(void)
2929
{
30+
init();
31+
initVariant();
3032
setup();
3133
for (;;)
3234
{

0 commit comments

Comments
 (0)
0