Skip to content

Commit dcde080

Browse files
committed
RP2040: avoid implicit conversion from NinaPin to int
Some sketches use a pattern like ``` int potpin = A5 ``` Since NinaPin was an enum, the implicit cast was taking place, and any subsequent call to analogRead() would not use the Nina functions. Works in conjunction with arduino-libraries/WiFiNINA#180
1 parent 14eb591 commit dcde080

File tree

3 files changed

+42
-8
lines changed

3 files changed

+42
-8
lines changed

cores/arduino/wiring_analog.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -135,4 +135,9 @@ void analogUpdate()
135135
void analogReadResolution(int bits)
136136
{
137137
read_resolution = bits;
138+
}
139+
140+
int getAnalogReadResolution()
141+
{
142+
return read_resolution;
138143
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
#include "nina_pins.h"
2+
3+
NinaPin LEDR(27);
4+
NinaPin LEDG(25);
5+
NinaPin LEDB(26);
6+
NinaPin A4(34);
7+
NinaPin A5(39);
8+
NinaPin A6(36);
9+
NinaPin A7(35);

variants/NANO_RP2040_CONNECT/nina_pins.h

Lines changed: 28 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -21,16 +21,36 @@
2121
* TYPEDEF
2222
******************************************************************************/
2323

24-
enum NinaPin {
25-
LEDR = 27,
26-
LEDG = 25,
27-
LEDB = 26,
28-
A4 = 34,
29-
A5 = 39,
30-
A6 = 36,
31-
A7 = 35
24+
int getAnalogReadResolution();
25+
26+
class NinaPin {
27+
public:
28+
NinaPin(int _pin) : pin(_pin) {};
29+
int get() {
30+
return pin;
31+
};
32+
int analogReadResolution() {
33+
return getAnalogReadResolution();
34+
};
35+
bool operator== (NinaPin const & other) const {
36+
return pin == other.pin;
37+
}
38+
//operator int() = delete;
39+
__attribute__ ((error("Change me to a #define"))) operator int();
40+
private:
41+
int pin;
3242
};
3343

44+
extern NinaPin LEDR;
45+
extern NinaPin LEDG;
46+
extern NinaPin LEDB;
47+
extern NinaPin A4;
48+
extern NinaPin A5;
49+
extern NinaPin A6;
50+
extern NinaPin A7;
51+
52+
#define NINA_PINS_AS_CLASS
53+
3454
/******************************************************************************
3555
* FUNCTION DECLARATION
3656
******************************************************************************/

0 commit comments

Comments
 (0)