1+ #ifdef __cplusplus
2+ extern "C" {
3+ #endif
4+
5+ void yield (void );
6+
7+ typedef enum {
8+ LOW = 0x0 ,
9+ HIGH = 0x1 ,
10+ }_pinStatus ;
11+
12+ typedef enum {
13+ INPUT = 0x0 ,
14+ OUTPUT = 0x1 ,
15+ INPUT_PULLUP = 0x2 ,
16+ INPUT_PULLDOWN = 0x3 ,
17+ }_pinMode ;
18+
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
25+
26+ #define SERIAL 0x0
27+ #define DISPLAY 0x1
28+
29+ typedef enum {
30+ CHANGE = 1 ,
31+ FALLING = 2 ,
32+ RISING = 3 ,
33+ }_interruptMode ;
34+
35+ typedef enum {
36+ LSBFIRST = 0 ,
37+ MSBFIRST = 1 ,
38+ }_spi_bitFirst_mode ;
39+
40+ #ifndef min
41+ #define min (a ,b ) ((a)<(b)?(a):(b))
42+ #endif
43+
44+ #ifndef max
45+ #define max (a ,b ) ((a)>(b)?(a):(b))
46+ #endif
47+
48+ #ifndef abs
49+ #define abs (x ) ((x)>0?(x):-(x))
50+ #endif
51+
52+ #ifndef constrain
53+ #define constrain (amt ,low ,high ) ((amt)<(low)?(low):((amt)>(high)?(high):(amt)))
54+ #endif
55+
56+ #ifndef round
57+ #define round (x ) ((x)>=0?(long)((x)+0.5):(long)((x)-0.5))
58+ #endif
59+
60+ #ifndef radians
61+ #define radians (deg ) ((deg)*DEG_TO_RAD)
62+ #endif
63+
64+ #ifndef degrees
65+ #define degrees (rad ) ((rad)*RAD_TO_DEG)
66+ #endif
67+
68+ #ifndef sq
69+ #define sq (x ) ((x)*(x))
70+ #endif
71+
72+ // interrupts() / noInterrupts() must be defined by the core
73+
74+ #define lowByte (w ) ((uint8_t) ((w) & 0xff))
75+ #define highByte (w ) ((uint8_t) ((w) >> 8))
76+
77+ #define bitRead (value ,bit ) (((value) >> (bit)) & 0x01)
78+ #define bitSet (value ,bit ) ((value) |= (1UL << (bit)))
79+ #define bitClear (value ,bit ) ((value) &= ~(1UL << (bit)))
80+ #define bitWrite (value ,bit ,bitvalue ) (bitvalue ? bitSet(value, bit) : bitClear(value, bit))
81+
82+ typedef unsignedint word ;
83+
84+ #ifndef bit
85+ #define bit (b ) (1UL << (b))
86+ #endif
87+
88+ typedef bool boolean ;
89+ typedef uint8_t byte ;
90+
91+ void init (void );
92+ void initVariant (void );
93+
94+ int atexit (void (* func )()) __attribute__((weak ));
95+ int main () __attribute__((weak ));
96+
97+ void pinMode (uint8_t pinNumber ,_pinMode pinMode );
98+ void digitalWrite (uint8_t pinNumber ,_pinStatus status );
99+ _pinStatus digitalRead (uint8_t pinNumber );
100+ int analogRead (uint8_t pinNumber );
101+ void analogReference (uint8_t mode );
102+ void analogWrite (uint8_t pinNumber ,int value );
103+
104+ unsigned long millis (void );
105+ unsigned long micros (void );
106+ void delay (unsigned long );
107+ void delayMicroseconds (unsignedint us );
108+ unsigned long pulseIn (uint8_t pin ,uint8_t state ,unsigned long timeout );
109+ unsigned long pulseInLong (uint8_t pin ,uint8_t state ,unsigned long timeout );
110+
111+ void shiftOut (uint8_t dataPin ,uint8_t clockPin ,uint8_t bitOrder ,uint8_t val );
112+ uint8_t shiftIn (uint8_t dataPin ,uint8_t clockPin ,uint8_t bitOrder );
113+
114+ void attachInterrupt (uint8_t interruptNumber ,void (* callback )(void ),_interruptMode mode );
115+ void detachInterrupt (uint8_t interruptNumber );
116+
117+ void setup (void );
118+ void loop (void );
119+
120+ #ifdef __cplusplus
121+ }// extern "C"
122+ #endif
123+
124+ #ifdef __cplusplus
125+
126+ /* C++ prototypes */
127+ uint16_t makeWord (uint16_t w );
128+ uint16_t makeWord (byte h ,byte l );
129+
130+ #define word (...) makeWord(__VA_ARGS__)
131+
132+ unsigned long pulseIn (uint8_t pin ,uint8_t state ,unsigned longtimeout = 1000000L );
133+ unsigned long pulseInLong (uint8_t pin ,uint8_t state ,unsigned longtimeout = 1000000L );
134+
135+ void tone (uint8_t _pin ,unsignedint frequency ,unsigned longduration = 0 );
136+ void noTone (uint8_t _pin );
137+
138+ // WMath prototypes
139+ long random (long );
140+ long random (long ,long );
141+ void randomSeed (unsigned long );
142+ long map (long ,long ,long ,long ,long );
143+
144+ #endif // __cplusplus