eBoard ๐Ÿ‰  โ‘ โ‘งโ‘จ
Written for SIA 2017/2018
eagle_Checks.h
Go to the documentation of this file.
1 #ifndef EAGLE_EBOARD_HELPLIB_CHECKS
2  #define EAGLE_EBOARD_HELPLIB_CHECKS
3 
12 //=====================================================================================================================================================
13 // Checker
14 //=====================================================================================================================================================
15 
16  /* you don't know... */
17 
18  using namespace eagle_impl;
19 
20  //-------------------------------------------------------------------------------------------------------------------------------------------------
21  // check index
22  //-------------------------------------------------------------------------------------------------------------------------------------------------
23 
30  void checkIdx(optVAL_t idx);
31 
33  void checkIdx(optVAL_t idx){
34  #if EBOARD_DEBUG_MODE > 0x0
35  assert(idx>=0x0 && idx < PIN_MAX); //changed pins? change me! (didn't want to use macros)
36  assert(idx!=PIN_BLUETOOTH_RX&&idx!=PIN_BLUETOOTH_TX);
37  #endif
38  }
40 
41  #if EBOARD_COPY_AND_PASTE > 0x0
42  #if EBOARD_CHECK_PINS_PWM > 0x0
43 
44  //-------------------------------------------------------------------------------------------------------------------------------------------------
45  // count SET bit
46  //-------------------------------------------------------------------------------------------------------------------------------------------------
47 
54  optVAL_t countSetBits (optVAL_t x);
55 
57  optVAL_t countSetBits (optVAL_t x) {
58  optVAL_t count; //dont't want to overuse global space^^
59  for (count = 0; x; count++)
60  x &= x - 1;
61  return count;
62  }
64  #endif
65 
66 
67  #if EBOARD_CHECK_PINS > 0x0
68 
69  //-------------------------------------------------------------------------------------------------------------------------------------------------
70  // variables
71  //-------------------------------------------------------------------------------------------------------------------------------------------------
72 
78  #if defined(__AVR_ATmega328P__) && not defined(__AVR_ATmega2560__)
79  uint16_t pin_out = 0x0;
80  #elif defined(__AVR_ATmega2560__)
81  uint64_t pin_out = 0x0;
82  #endif
83 
86  #if defined(__AVR_ATmega328P__) && not defined(__AVR_ATmega2560__)
87  uint16_t pin_in = 0x0;
88  #elif defined(__AVR_ATmega2560__)
89  uint64_t pin_in = 0x0;
90  #endif
91 
92  //-------------------------------------------------------------------------------------------------------------------------------------------------
93  // pin check
94  //-------------------------------------------------------------------------------------------------------------------------------------------------
95 
106  bool checkPin(optVAL_t idx, optVAL_t mode = OUTPUT);
107 
109  bool checkPin(optVAL_t idx, optVAL_t mode){
110  checkIdx(idx);
111  return (mode == OUTPUT)? ((pin_out & (1<<idx))>0x0):((pin_in & (1<<idx))>0x0);
112  }
114 
115  #endif
116 
117  //-------------------------------------------------------------------------------------------------------------------------------------------------
118  // set pins
119  //-------------------------------------------------------------------------------------------------------------------------------------------------
120 
126  void setPin(optVAL_t idx, optVAL_t mode = OUTPUT);
127 
129  void setPin(optVAL_t idx, optVAL_t mode){
130  #if EBOARD_CHECK_PINS > 0x0
131  checkIdx(idx);
132  if(mode==OUTPUT) { //possible to read from OUTPUT digital ... we won't do it
133  pin_out |= (1<<idx);
134  pin_in &= ~(1<<idx);
135  }
136  else {
137  pin_in |= (1<<idx);
138  pin_out &= ~(1<<idx);
139  }
140  #endif
141  pinMode(idx, mode);
142  }
144 
145  #endif
146 #endif
void checkIdx(optVAL_t idx)
[DEBUG_MODE] used to check if a pin index is in bounds
#define PIN_MAX
Definition: eBoard.h:180
this namespace contains all the don&#39;t use manually classes ;)
#define PIN_BLUETOOTH_RX
Definition: eBoard.h:522
#define PIN_BLUETOOTH_TX
Definition: eBoard.h:533
int optVAL_t
Definition: eBoard.h:132