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+
3339uint8_t toAnalogPin (NinaPin pin)
3440{
3541 if (pin == A4) return 6 ; /* ADC1 - CH6 */
@@ -41,20 +47,20 @@ uint8_t toAnalogPin(NinaPin pin)
4147
4248void 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
4753PinStatus digitalRead (NinaPin pin)
4854{
49- return WiFiDrv::digitalRead (static_cast < uint8_t > (pin));
55+ return WiFiDrv::digitalRead (VAL (pin));
5056}
5157
5258void 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
6066int 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
7080void 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