Skip to content

Commit 4d012a8

Browse files
committed
RP2040: adapt NinaPins to be used as class
1 parent 5d63d7d commit 4d012a8

File tree

1 file changed

+15
-5
lines changed

1 file changed

+15
-5
lines changed

src/utility/nano_rp2040_support.cpp

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,12 @@
3030
* FUNCTION DEFINITION
3131
******************************************************************************/
3232

33+
#ifdef NINA_PINS_AS_CLASS
34+
#define VAL(x) x.get()
35+
#else
36+
#define VAL(x) static_cast<uint8_t>(x)
37+
#endif
38+
3339
uint8_t toAnalogPin(NinaPin pin)
3440
{
3541
if (pin == A4) return 6; /* ADC1 - CH6 */
@@ -41,20 +47,20 @@ uint8_t toAnalogPin(NinaPin pin)
4147

4248
void pinMode(NinaPin pin, PinMode mode)
4349
{
44-
WiFiDrv::pinMode(static_cast<uint8_t>(pin), static_cast<uint8_t>(mode));
50+
WiFiDrv::pinMode(VAL(pin), static_cast<uint8_t>(mode));
4551
}
4652

4753
PinStatus digitalRead(NinaPin pin)
4854
{
49-
return WiFiDrv::digitalRead(static_cast<uint8_t>(pin));
55+
return WiFiDrv::digitalRead(VAL(pin));
5056
}
5157

5258
void digitalWrite(NinaPin pin, PinStatus value)
5359
{
5460
if (value == LOW)
55-
WiFiDrv::digitalWrite(static_cast<uint8_t>(pin), 1);
61+
WiFiDrv::digitalWrite(VAL(pin), 1);
5662
else
57-
WiFiDrv::digitalWrite(static_cast<uint8_t>(pin), 0);
63+
WiFiDrv::digitalWrite(VAL(pin), 0);
5864
}
5965

6066
int analogRead(NinaPin pin)
@@ -64,12 +70,16 @@ int analogRead(NinaPin pin)
6470
if (adc_channel == 0xFF)
6571
return 0;
6672
else
73+
#ifdef NINA_PINS_AS_CLASS
74+
return WiFiDrv::analogRead(adc_channel) >> (12 - pin.analogReadResolution());
75+
#else
6776
return WiFiDrv::analogRead(adc_channel);
77+
#endif
6878
}
6979

7080
void analogWrite(NinaPin pin, int value)
7181
{
72-
WiFiDrv::analogWrite(static_cast<uint8_t>(pin), static_cast<uint8_t>(value));
82+
WiFiDrv::analogWrite(VAL(pin), static_cast<uint8_t>(value));
7383
}
7484

7585
#endif /* ARDUINO_NANO_RP2040_CONNECT */

0 commit comments

Comments
 (0)