RUI3 (RAK Unified Interface 3) - RAK4631
ruiTop.h
Go to the documentation of this file.
1 #ifndef __RUI_TOP_H__
2 #define __RUI_TOP_H__
3 
4 #include "udrv_delay.h"
5 #include "udrv_rtc.h"
6 #include "udrv_adc.h"
7 #include "udrv_pwm.h"
8 #include "pin_define.h"
9 #include "variant.h"
10 #include "binary.h"
11 
12 #include <math.h>
13 
18 typedef enum{
24 
25 typedef enum{
27  #ifndef rak11720
32  #else
33  RAK_ADC_MODE_1_5 = UDRV_ADC_MODE_1_5,
34  #endif
35 } RAK_ADC_MODE;
36 
37 typedef enum{
43 
44 typedef enum _eAnalogReference
45 {
47  #ifndef rak11720
48  AR_INTERNAL = UDRV_ADC_MODE_3_3, // 0.6V Ref * 6 = 0..3.6V
49  AR_INTERNAL_3_0 = UDRV_ADC_MODE_3_0, // 0.6V Ref * 5 = 0..3.0V
50  AR_INTERNAL_2_4 = UDRV_ADC_MODE_2_4, // 0.6V Ref * 4 = 0..2.4V
51  AR_INTERNAL_1_8 = UDRV_ADC_MODE_1_8, // 0.6V Ref * 3 = 0..1.8V
52  AR_INTERNAL_1_2 = UDRV_ADC_MODE_1_2, // 0.6V Ref * 2 = 0..1.6V
53  #else
54  AR_INTERNAL_1_5 = UDRV_ADC_MODE_1_5, // 0..1.5V
55  #endif
57 
62 enum BitOrder {
63  LSBFIRST = 0,
65 };
66 
67  template<class T, class L>
68  auto min(const T& a, const L& b) -> decltype((b < a) ? b : a)
69  {
70  return (b < a) ? b : a;
71  }
72 
73  template<class T, class L>
74  auto max(const T& a, const L& b) -> decltype((b < a) ? b : a)
75  {
76  return (a < b) ? b : a;
77  }
78 
79 #define PI 3.1415926535897932384626433832795
80 #define HALF_PI 1.5707963267948966192313216916398
81 #define TWO_PI 6.283185307179586476925286766559
82 #define DEG_TO_RAD 0.017453292519943295769236907684886
83 #define RAD_TO_DEG 57.295779513082320876798154814105
84 #define EULER 2.718281828459045235360287471352
85 
86 
89 #define HIGH 0x1
90 #define LOW 0x0
91 #define CHANGE 2
92 #define FALLING 3
93 #define RISING 4
94 
95 #define INPUT 0x0
96 #define OUTPUT 0x1
97 #define INPUT_PULLUP 0x2
98 #define INPUT_PULLDOWN 0x3 //FIXME
99 
100 #define LED_BUILTIN GREEN_LED
101 
136 #define bitRead(value, bit) (((value) >> (bit)) & 0x01)
137 
164 #define bitSet(value, bit) ((value) |= (1UL << (bit)))
165 
192 #define bitClear(value, bit) ((value) &= ~(1UL << (bit)))
193 
234 #define bitWrite(value, bit, bitvalue) ((bitvalue) ? bitSet(value, bit) : bitClear(value, bit))
235 
257 #define bit(b) (1UL << (b))
258 
282 #define lowByte(w) ((uint8_t) ((w) & 0xff))
283 
307 #define highByte(w) ((uint8_t) ((w) >> 8))
308 
310 // Math
311 #define constrain(amt,low,high) ((amt)<(low)?(low):((amt)>(high)?(high):(amt)))
312 #define sq(x) ((x)*(x))
313 #define round(x) ((x)>=0?(long)((x)+0.5):(long)((x)-0.5))
314 #define radians(deg) ((deg)*DEG_TO_RAD)
315 #define degrees(rad) ((rad)*RAD_TO_DEG)
316 #define abs(x) ((x)>0?(x):-(x))
317 long map(long, long, long, long, long);
318 
319 long random(long max);
350 long random(long min, long max);
351 
379 void randomSeed(unsigned long seed);
382 typedef bool boolean;
383 typedef uint8_t byte;
384 typedef unsigned short word;
385 
419 void pinMode(uint8_t pin, uint8_t mode);
420 
451 void digitalWrite(uint8_t pin, uint8_t value);
452 
481 int digitalRead(uint8_t pin);
495 int analogRead(uint8_t pin);
496 
513 
514 /*
515 * \brief Configures the oversampling amount used to sample analog input.
516 *
517 * \param ulOversampling Should be set to 1, 2, 4, 8, 16, 32, 64, 128 or 256.
518 */
519 void analogOversampling( uint32_t ulOversampling);
520 
569 void analogWrite(uint8_t pin, int value);
570 
587 void analogReadResolution(uint8_t bits);
588 
604 void analogWriteResolution(uint8_t bits);
653 void tone(uint8_t pin, uint32_t frequency, uint64_t duration = 0);
654 
689 void noTone(uint8_t pin);
690 
706 void shiftOut(uint8_t dataPin, uint8_t clockPin, uint8_t bitOrder, uint8_t val);
707 
722 uint32_t shiftIn(uint8_t dataPin, uint8_t clockPin, uint8_t bitOrder);
723 
767 unsigned long pulseIn(uint8_t pin, uint8_t state, unsigned long timeout = 1000000L);
768 
783 unsigned long pulseInLong(uint8_t pin, uint8_t state, unsigned long timeout = 1000000L);
807 void interrupts(void);
808 
827 void noInterrupts(void);
828 
870 void attachInterrupt(uint32_t pin, void (*userFunc)(void), int mode);
871 
908 void detachInterrupt(uint32_t pin);
909 
910 void yield(void);
911 
912 
915 #include "wiring.h"
916 #include "ACharacter.h"
917 #include "WString.h"
918 #include "app.h"
919 #include "RAKUnifiedApi.h"
920 #include "HardwareSerial.h"
921 #include "Wire.h"
922 #include "SPI.h"
923 
924 
925 
926 #endif
Definition: udrv_adc.h:24
long random(long max)
_eAnalogReference
Definition: ruiTop.h:44
RAK_ADC_MODE
Definition: ruiTop.h:25
void tone(uint8_t pin, uint32_t frequency, uint64_t duration=0)
default range which depends on platform
Definition: ruiTop.h:26
RAK_ADC_RESOLUTION
Definition: ruiTop.h:18
12 bit resolution
Definition: ruiTop.h:21
Definition: udrv_pwm.h:23
Definition: udrv_adc.h:36
8 bit resolution
Definition: ruiTop.h:38
void interrupts(void)
10 bit resolution
Definition: ruiTop.h:39
void analogReference(eAnalogReference mode)
void randomSeed(unsigned long seed)
unsigned short word
Definition: ruiTop.h:384
Definition: ruiTop.h:51
Definition: udrv_adc.h:30
maximum 2.4V
Definition: ruiTop.h:29
long map(long, long, long, long, long)
maximum 1.8V
Definition: ruiTop.h:30
enum _eAnalogReference eAnalogReference
auto max(const T &a, const L &b) -> decltype((b< a) ? b :a)
Definition: ruiTop.h:74
Definition: ruiTop.h:63
Definition: udrv_adc.h:33
maximum 3.0V
Definition: ruiTop.h:28
void detachInterrupt(uint32_t pin)
Definition: ruiTop.h:52
void analogWriteResolution(uint8_t bits)
void noInterrupts(void)
void analogOversampling(uint32_t ulOversampling)
12 bit resolution
Definition: ruiTop.h:40
maximum 1.2V
Definition: ruiTop.h:31
BitOrder
Definition: ruiTop.h:62
void noTone(uint8_t pin)
Definition: udrv_pwm.h:24
auto min(const T &a, const L &b) -> decltype((b< a) ? b :a)
Definition: ruiTop.h:68
Provide a hardware independent ADC driver layer for API layer to use.
void digitalWrite(uint8_t pin, uint8_t value)
void attachInterrupt(uint32_t pin, void(*userFunc)(void), int mode)
bool boolean
Definition: ruiTop.h:382
void analogReadResolution(uint8_t bits)
Definition: ruiTop.h:46
Provide a hardware independent PWM driver layer for API layer to use.
Definition: ruiTop.h:64
Definition: ruiTop.h:50
RAK_PWM_RESOLUTION
Definition: ruiTop.h:37
Definition: udrv_adc.h:26
void yield(void)
void pinMode(uint8_t pin, uint8_t mode)
10 bit resolution
Definition: ruiTop.h:20
void analogWrite(uint8_t pin, int value)
Definition: ruiTop.h:48
int analogRead(uint8_t pin)
Definition: udrv_adc.h:32
Definition: udrv_adc.h:35
Definition: udrv_adc.h:23
void shiftOut(uint8_t dataPin, uint8_t clockPin, uint8_t bitOrder, uint8_t val)
14 bit resolution
Definition: ruiTop.h:41
8 bit resolution
Definition: ruiTop.h:19
unsigned long pulseInLong(uint8_t pin, uint8_t state, unsigned long timeout=1000000L)
unsigned long pulseIn(uint8_t pin, uint8_t state, unsigned long timeout=1000000L)
Definition: udrv_adc.h:25
Definition: udrv_adc.h:34
14 bit resolution
Definition: ruiTop.h:22
uint32_t shiftIn(uint8_t dataPin, uint8_t clockPin, uint8_t bitOrder)
Definition: udrv_pwm.h:22
Definition: udrv_pwm.h:25
int digitalRead(uint8_t pin)
uint8_t byte
Definition: ruiTop.h:383
Definition: ruiTop.h:49
The c++ wrapper for Serial functions.