1
+ #include <stdint.h>
2
+
1
3
#ifdef __cplusplus
2
4
extern "C" {
3
5
#endif
4
6
5
7
void yield (void );
6
8
7
9
typedef enum {
8
- LOW = 0x0 ,
9
- HIGH = 0x1 ,
10
- } _pinStatus ;
10
+ LOW = 0x0 ,
11
+ HIGH = 0x1 ,
12
+ } PinStatus ;
11
13
12
14
typedef enum {
13
- INPUT = 0x0 ,
14
- OUTPUT = 0x1 ,
15
- INPUT_PULLUP = 0x2 ,
16
- INPUT_PULLDOWN = 0x3 ,
17
- } _pinMode ;
15
+ IRQ_LOW = 0 ,
16
+ IRQ_HIGH = 1 ,
17
+ CHANGE = 2 ,
18
+ FALLING = 3 ,
19
+ RISING = 4 ,
20
+ } InterruptMode ;
18
21
19
- #define PI 3.1415926535897932384626433832795
20
- #define HALF_PI 1.5707963267948966192313216916398
21
- #define TWO_PI 6.283185307179586476925286766559
22
- #define DEG_TO_RAD 0.017453292519943295769236907684886
23
- #define RAD_TO_DEG 57.295779513082320876798154814105
24
- #define EULER 2.718281828459045235360287471352
22
+ typedef enum {
23
+ INPUT = 0x0 ,
24
+ OUTPUT = 0x1 ,
25
+ INPUT_PULLUP = 0x2 ,
26
+ INPUT_PULLDOWN = 0x3 ,
27
+ } PinMode ;
25
28
26
- #define SERIAL 0x0
27
- #define DISPLAY 0x1
29
+ #define PI 3.1415926535897932384626433832795
30
+ #define HALF_PI 1.5707963267948966192313216916398
31
+ #define TWO_PI 6.283185307179586476925286766559
32
+ #define DEG_TO_RAD 0.017453292519943295769236907684886
33
+ #define RAD_TO_DEG 57.295779513082320876798154814105
34
+ #define EULER 2.718281828459045235360287471352
28
35
29
- typedef enum {
30
- CHANGE = 1 ,
31
- FALLING = 2 ,
32
- RISING = 3 ,
33
- } _interruptMode ;
36
+ #define SERIAL 0x0
37
+ #define DISPLAY 0x1
34
38
35
39
typedef enum {
36
40
LSBFIRST = 0 ,
37
41
MSBFIRST = 1 ,
38
- } _spi_bitFirst_mode ;
42
+ } BitMode ;
39
43
40
44
#ifndef min
41
45
#define min (a ,b ) \
@@ -67,6 +71,8 @@ typedef enum {
67
71
#define sq (x ) ((x)*(x))
68
72
#endif
69
73
74
+ typedef void (* voidFuncPtr )(void );
75
+
70
76
// interrupts() / noInterrupts() must be defined by the core
71
77
72
78
#define lowByte (w ) ((uint8_t) ((w) & 0xff))
@@ -77,40 +83,47 @@ typedef enum {
77
83
#define bitClear (value , bit ) ((value) &= ~(1UL << (bit)))
78
84
#define bitWrite (value , bit , bitvalue ) (bitvalue ? bitSet(value, bit) : bitClear(value, bit))
79
85
80
- typedef unsigned int word ;
81
-
82
86
#ifndef bit
83
87
#define bit (b ) (1UL << (b))
84
88
#endif
85
89
86
- typedef bool boolean ;
87
- typedef uint8_t byte ;
90
+ /* TODO: request for removal */
91
+ typedef bool boolean ;
92
+ typedef uint8_t byte ;
93
+ typedef uint16_t word ;
88
94
89
95
void init (void );
90
96
void initVariant (void );
91
97
92
98
int atexit (void (* func )()) __attribute__((weak ));
93
99
int main () __attribute__((weak ));
94
100
95
- void pinMode (uint8_t pinNumber , _pinMode pinMode );
96
- void digitalWrite (uint8_t pinNumber , _pinStatus status );
97
- _pinStatus digitalRead (uint8_t pinNumber );
98
- int analogRead (uint8_t pinNumber );
101
+ #ifdef EXTENDED_PIN_MODE
102
+ // Platforms who wnat to declare more than 256 pins need to define EXTENDED_PIN_MODE globally
103
+ typedef uint32_t pin_size_t ;
104
+ #else
105
+ typedef uint8_t pin_size_t ;
106
+ #endif
107
+
108
+ void pinMode (pin_size_t pinNumber , PinMode pinMode );
109
+ void digitalWrite (pin_size_t pinNumber , PinStatus status );
110
+ PinStatus digitalRead (pin_size_t pinNumber );
111
+ int analogRead (pin_size_t pinNumber );
99
112
void analogReference (uint8_t mode );
100
- void analogWrite (uint8_t pinNumber , int value );
113
+ void analogWrite (pin_size_t pinNumber , int value );
101
114
102
115
unsigned long millis (void );
103
116
unsigned long micros (void );
104
117
void delay (unsigned long );
105
118
void delayMicroseconds (unsigned int us );
106
- unsigned long pulseIn (uint8_t pin , uint8_t state , unsigned long timeout );
107
- unsigned long pulseInLong (uint8_t pin , uint8_t state , unsigned long timeout );
119
+ unsigned long pulseIn (pin_size_t pin , uint8_t state , unsigned long timeout );
120
+ unsigned long pulseInLong (pin_size_t pin , uint8_t state , unsigned long timeout );
108
121
109
- void shiftOut (uint8_t dataPin , uint8_t clockPin , uint8_t bitOrder , uint8_t val );
110
- uint8_t shiftIn (uint8_t dataPin , uint8_t clockPin , uint8_t bitOrder );
122
+ void shiftOut (pin_size_t dataPin , pin_size_t clockPin , uint8_t bitOrder , uint8_t val );
123
+ pin_size_t shiftIn (pin_size_t dataPin , pin_size_t clockPin , uint8_t bitOrder );
111
124
112
- void attachInterrupt (uint8_t interruptNumber , void ( * callback )( void ), _interruptMode mode );
113
- void detachInterrupt (uint8_t interruptNumber );
125
+ void attachInterrupt (pin_size_t interruptNumber , voidFuncPtr callback , InterruptMode mode );
126
+ void detachInterrupt (pin_size_t interruptNumber );
114
127
115
128
void setup (void );
116
129
void loop (void );
0 commit comments