__main_struct.h 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293
  1. /*
  2. https://www.tutorialspoint.com/cprogramming/c_storage_classes.htm
  3. A storage class defines the scope (visibility) and life-time of variables and/or functions within a C Program. They precede the type that they modify. We have four different storage classes in a C program −
  4. auto
  5. register
  6. static
  7. extern
  8. The auto Storage Class
  9. The auto storage class is the default storage class for all local variables.
  10. {
  11. int mount;
  12. auto int month;
  13. }
  14. The example above defines two variables with in the same storage class.
  15. 'auto' can only be used within functions, i.e., local variables.
  16. */
  17. //GLOBAL TYPES
  18. typedef int GARBAGE_TO_REMOVE_ASSOC_T ; //Old not usable pointer to remove
  19. const GARBAGE_TO_REMOVE_ASSOC_T GARBAGE_TO_REMOVE_ASSOC_EMPTY = 0 ;
  20. typedef byte ARDUINO_OPTIONS_T ;
  21. typedef int ARDUINO_SIZE_T ; //for display etc
  22. typedef boolean ARDUINO_STATE_T ; //for states of ports etc
  23. //EOF GLOBAL TYPES
  24. typedef ARDUINO_SIZE_T ARDUINO_SIZE_MIN_T ; //for display etc
  25. typedef ARDUINO_SIZE_T ARDUINO_SIZE_MAX_T ; //for display etc
  26. typedef int ARDUINO_FUNC_STATIC_ID_COUNTER_T ; //for static function couter
  27. const ARDUINO_FUNC_STATIC_ID_COUNTER_T ARDUINO_FUNC_STATIC_ID_COUNTER_INIT = 0 ;
  28. typedef int ARDUINO_LOOP_LATENCY_T;
  29. typedef int ARDUINO_LOOP_LATENCY_COUNTER_T; //WILL increment
  30. const ARDUINO_LOOP_LATENCY_COUNTER_T ARDUINO_LOOP_LATENCY_COUNTER_INIT = 1 ; //
  31. typedef ARDUINO_LOOP_LATENCY_T ARDUINO_LOOP_LATENCY_TASK_T; //to limit e.g. rottary button rapid transactions
  32. typedef byte ARDUINO_LOOP_LATENCY_CONTROL_FLAG_T ;
  33. const ARDUINO_LOOP_LATENCY_CONTROL_FLAG_T ARDUINO_LOOP_LATENCY_CONTROL_FLAG_NONE = B00000000 ;
  34. const ARDUINO_LOOP_LATENCY_CONTROL_FLAG_T ARDUINO_LOOP_LATENCY_CONTROL_FLAG_BYPASS = B00000001 ;
  35. typedef bool ARDUINO_FUNCT_INIT_RESULT_T ;
  36. typedef int ARDUINO_ARRAY_INDEX_T ; //for controll arrays behaviour
  37. typedef int ARDUINO_ARRAY_ATTR_T ; //for controll arrays behaviour
  38. typedef int ARDUINO_ARRAY_PRIMARY_KET_T ;
  39. typedef ARDUINO_ARRAY_ATTR_T ARDUINO_ARRAY_INDEX_CURRENT_T ; //porzadkowo do przegladania co jest biezacym pointerem
  40. typedef ARDUINO_ARRAY_ATTR_T ARDUINO_ARRAY_INDEX_LAST_T ; //porzadkowo co jest ostatnim elementem
  41. typedef ARDUINO_ARRAY_ATTR_T ARDUINO_ARRAY_INDEX_NEXT_T ; //porzadkowo co jest ostatnim elementem
  42. typedef ARDUINO_ARRAY_ATTR_T ARDUINO_ARRAY_COUNT_T ; //current count elements - porzadkowo
  43. typedef ARDUINO_ARRAY_ATTR_T ARDUINO_ARRAY_INDEX_LIMIT_T ;
  44. typedef ARDUINO_ARRAY_INDEX_T ARDUINO_ARRAY_INDEX_TO_DELETE ;
  45. typedef long ARDUINO_ARRAY_time_min_run_MIN_T ;
  46. typedef ARDUINO_ARRAY_ATTR_T ARDUINO_ARRAY_INDEX_time_min_run_MIN_T ;
  47. //DO OBSLUGI KOLEJEK
  48. typedef ARDUINO_ARRAY_ATTR_T ARDUINO_ARRAY_ATTR_QUEUE_COUNT_MAX_T ;
  49. typedef ARDUINO_ARRAY_ATTR_T ARDUINO_ARRAY_ATTR_QUEUE_FRONT_T ;
  50. typedef ARDUINO_ARRAY_ATTR_T ARDUINO_ARRAY_ATTR_QUEUE_BACK_T ;
  51. typedef ARDUINO_ARRAY_ATTR_T ARDUINO_ARRAY_ATTR_QUEUE_COUNT_T ;
  52. typedef ARDUINO_ARRAY_ATTR_T ARDUINO_ARRAY_ATTR_QUEUE_PEEK_T ;
  53. struct ARDUINO_ARRAY_ATTR_QUEUE_S {
  54. ARDUINO_ARRAY_ATTR_QUEUE_COUNT_MAX_T ARDUINO_ARRAY_ATTR_QUEUE_COUNT_MAX_A;
  55. ARDUINO_ARRAY_ATTR_QUEUE_COUNT_T ARDUINO_ARRAY_ATTR_QUEUE_COUNT_A ;
  56. ARDUINO_ARRAY_ATTR_QUEUE_PEEK_T ARDUINO_ARRAY_ATTR_QUEUE_PEEK_A ;
  57. ARDUINO_ARRAY_ATTR_QUEUE_BACK_T ARDUINO_ARRAY_ATTR_QUEUE_BACK_A ;
  58. ARDUINO_ARRAY_ATTR_QUEUE_FRONT_T ARDUINO_ARRAY_ATTR_QUEUE_FRONT_A;
  59. };
  60. /*
  61. typedef ARDUINO_OPTIONS_T ARDUINO_ARRAY_ATTR_QUEUE_OPTIONS_T; // [#109 ELSE] 100100]
  62. const ARDUINO_ARRAY_ATTR_QUEUE_OPTIONS_T ARDUINO_ARRAY_ATTR_QUEUE_ACTION_GET = B00000001 ;
  63. const ARDUINO_ARRAY_ATTR_QUEUE_OPTIONS_T ARDUINO_ARRAY_ATTR_QUEUE_ACTION_SET = B00000010 ;
  64. const ARDUINO_ARRAY_ATTR_QUEUE_OPTIONS_T ARDUINO_ARRAY_ATTR_QUEUE_ACTION_ADD = B00000100 ; //add back == pop
  65. const ARDUINO_ARRAY_ATTR_QUEUE_OPTIONS_T ARDUINO_ARRAY_ATTR_QUEUE_COUNT_MAX = B00001000 ;
  66. const ARDUINO_ARRAY_ATTR_QUEUE_OPTIONS_T ARDUINO_ARRAY_ATTR_QUEUE_COUNT = B00010000 ;
  67. const ARDUINO_ARRAY_ATTR_QUEUE_OPTIONS_T ARDUINO_ARRAY_ATTR_QUEUE_PEEK = B00100000 ; //
  68. const ARDUINO_ARRAY_ATTR_QUEUE_OPTIONS_T ARDUINO_ARRAY_ATTR_QUEUE_FRONT = B01000000 ; //newest set+read(add)
  69. const ARDUINO_ARRAY_ATTR_QUEUE_OPTIONS_T ARDUINO_ARRAY_ATTR_QUEUE_BACK = B10000000 ;//add back == pop
  70. */
  71. typedef struct ARDUINO_ARRAY_ATTR_QUEUE_S ARDUINO_ARRAY_ATTR_QUEUE_T ;
  72. const ARDUINO_ARRAY_ATTR_QUEUE_COUNT_MAX_T ARDUINO_ARRAY_ATTR_QUEUE_COUNT_MAX_INIT = ARDUINO_FUNC_STATIC_ID_COUNTER_INIT ;
  73. const ARDUINO_ARRAY_ATTR_QUEUE_COUNT_T ARDUINO_ARRAY_ATTR_QUEUE_COUNT_INIT = ARDUINO_FUNC_STATIC_ID_COUNTER_INIT ;
  74. const ARDUINO_ARRAY_ATTR_QUEUE_PEEK_T ARDUINO_ARRAY_ATTR_QUEUE_PEEK_INIT = ARDUINO_FUNC_STATIC_ID_COUNTER_INIT ;
  75. const ARDUINO_ARRAY_ATTR_QUEUE_BACK_T ARDUINO_ARRAY_ATTR_QUEUE_BACK_INIT = ARDUINO_FUNC_STATIC_ID_COUNTER_INIT ;
  76. const ARDUINO_ARRAY_ATTR_QUEUE_FRONT_T ARDUINO_ARRAY_ATTR_QUEUE_FRONT_INIT = ARDUINO_FUNC_STATIC_ID_COUNTER_INIT ;
  77. typedef byte ARDUINO_QUEUE_FLAG_T ;
  78. typedef ARDUINO_QUEUE_FLAG_T ARDUINO_QUEUE_ELEMENT_FLAG_T ; //type to be inside array to control
  79. const ARDUINO_QUEUE_ELEMENT_FLAG_T ARDUINO_QUEUE_ELEMENT_FLAG_INITIAL_CORRUPT = B00000001 ; //type of empty initial array records
  80. const ARDUINO_QUEUE_ELEMENT_FLAG_T ARDUINO_QUEUE_ELEMENT_FLAG_COMIT_CONTEXT = B00000010 ; //to handle this flag by functions - shows that is expected sturcture
  81. const ARDUINO_QUEUE_ELEMENT_FLAG_T ARDUINO_QUEUE_ELEMENT_FLAG_COMIT_LOCKED = B00000100 ; //when locked commit
  82. const ARDUINO_QUEUE_ELEMENT_FLAG_T ARDUINO_QUEUE_ELEMENT_FLAG_STANDARD = B00001000 ; //type of empty initial array records
  83. const ARDUINO_QUEUE_FLAG_T ARDUINO_QUEUE_FLAG_INIT = B00000000 ; //just to init
  84. const ARDUINO_QUEUE_FLAG_T ARDUINO_QUEUE_FLAG_INITIALIZED = B00000001 ; //
  85. const ARDUINO_QUEUE_FLAG_T ARDUINO_QUEUE_FLAG_RESTRICT_INDEX = B00000010 ; //no loose index changes
  86. const ARDUINO_QUEUE_FLAG_T ARDUINO_QUEUE_FLAG_CAN_OVERWRITE = B00000100 ; //data can be overwrited
  87. const ARDUINO_QUEUE_FLAG_T ARDUINO_QUEUE_FLAG_USE_ELEMENT_FLAG_T = B00001000 ; //delete order etc use ARDUINO_QUEUE_ELEMENT_FLAG_T in childs
  88. const ARDUINO_QUEUE_FLAG_T ARDUINO_QUEUE_FLAG_CANNOT_OVERWRITE = B00010000 ; //data can be overwrited
  89. const ARDUINO_QUEUE_FLAG_T ARDUINO_QUEUE_FLAG_NOT_SPECIFIED = B00100000 ; //not specified
  90. const ARDUINO_QUEUE_FLAG_T ARDUINO_QUEUE_FLAG_QUEUE = B01000000 ; //USE ARDUINO_ARRAY_ATTR_QUEUE_BACK_A + ARDUINO_ARRAY_ATTR_QUEUE_COUNT_A + rotate
  91. const ARDUINO_QUEUE_FLAG_T ARDUINO_QUEUE_FLAG_FULL_ONLY_POP = B10000000 ; // WHEN QUEUE FULL - DISALLOW TO NEW RECORDS
  92. typedef ARDUINO_OPTIONS_T ARDUINO_ARRAY_ATTR_INDEX_OPTIONS_T; //do obslygi kluczy
  93. const ARDUINO_ARRAY_ATTR_INDEX_OPTIONS_T ARDUINO_ARRAY_ATTR_INDEX_OPTIONS_INIT = B00000000 ; //initial state
  94. const ARDUINO_ARRAY_ATTR_INDEX_OPTIONS_T ARDUINO_ARRAY_ATTR_INDEX__TO_INITIALIZE = B00000000 ; //initial state
  95. const ARDUINO_ARRAY_ATTR_INDEX_OPTIONS_T ARDUINO_ARRAY_ATTR_INDEX__INITIALIZED = B00000001 ; //initial state
  96. const ARDUINO_ARRAY_ATTR_INDEX_OPTIONS_T ARDUINO_ARRAY_ATTR_INDEX__TO_COMMIT = B00000010 ;
  97. const ARDUINO_ARRAY_ATTR_INDEX_OPTIONS_T ARDUINO_ARRAY_ATTR_INDEX__TO_INCREMENT = B00000100 ;
  98. const ARDUINO_ARRAY_ATTR_INDEX_OPTIONS_T ARDUINO_ARRAY_ATTR_INDEX__READY_TO_QUERY = B00001000 ;
  99. const ARDUINO_ARRAY_ATTR_INDEX_OPTIONS_T ARDUINO_ARRAY_ATTR_INDEX__INCREMENTED = B00001000 ; //same as READY_TO_QUERY
  100. const ARDUINO_ARRAY_ATTR_INDEX_OPTIONS_T ARDUINO_ARRAY_ATTR_INDEX__LOCK = B00010000 ; //use typedef ARDUINO_ARRAY_INDEX_NEXT_T ARDUINO_ARRAY_INDEX_NEXT_LOCK_A
  101. const ARDUINO_ARRAY_ATTR_INDEX_OPTIONS_T ARDUINO_ARRAY_ATTR_INDEX__HAS_ERRORS = B00100000 ;
  102. typedef ARDUINO_ARRAY_INDEX_NEXT_T ARDUINO_ARRAY_INDEX_NEXT_LOCK_T ;
  103. struct ARDUINO_ATTR_ARRAY_S {
  104. ARDUINO_ARRAY_INDEX_CURRENT_T ARDUINO_ARRAY_INDEX_CURRENT_A ;
  105. ARDUINO_ARRAY_INDEX_LAST_T ARDUINO_ARRAY_INDEX_LAST_A ; //mzoe byc usabvle do pointerowania rejestru dalej
  106. ARDUINO_ARRAY_COUNT_T ARDUINO_ARRAY_COUNT_A ;
  107. ARDUINO_ARRAY_INDEX_LIMIT_T ARDUINO_ARRAY_INDEX_LIMIT_A;
  108. ARDUINO_ARRAY_INDEX_NEXT_T ARDUINO_ARRAY_INDEX_NEXT_A ;
  109. ARDUINO_ARRAY_time_min_run_MIN_T ARDUINO_ARRAY_time_min_run_MIN_A ;
  110. ARDUINO_ARRAY_INDEX_time_min_run_MIN_T ARDUINO_ARRAY_INDEX_time_min_run_MIN_A ;
  111. ARDUINO_QUEUE_FLAG_T ARDUINO_QUEUE_FLAG_A ;
  112. ARDUINO_ARRAY_ATTR_QUEUE_BACK_T ARDUINO_ARRAY_ATTR_QUEUE_BACK_A ; //ostatni zabrany element
  113. ARDUINO_ARRAY_ATTR_QUEUE_COUNT_T ARDUINO_ARRAY_ATTR_QUEUE_COUNT_A ; //kolejka elementow
  114. ARDUINO_ARRAY_ATTR_INDEX_OPTIONS_T ARDUINO_ARRAY_ATTR_INDEX_OPTIONS_A ;
  115. ARDUINO_ARRAY_ATTR_QUEUE_FRONT_T ARDUINO_ARRAY_ATTR_QUEUE_FRONT_A ;
  116. ARDUINO_ARRAY_ATTR_QUEUE_PEEK_T ARDUINO_ARRAY_ATTR_QUEUE_PEEK_A;
  117. };
  118. typedef ARDUINO_ATTR_ARRAY_S ARDUINO_ATTR_ARRAY_T;
  119. struct ARDUINO_ARRAY_INDEX_T_TO_DELETE_S {
  120. ARDUINO_ARRAY_INDEX_TO_DELETE ARDUINO_ARRAY_INDEX_TO_DELETE_A ;
  121. };
  122. struct ARDUINO_ARRAY_INDEX_TABLE_S { //to controll elements - like deletion etc
  123. ARDUINO_ARRAY_INDEX_T ARDUINO_ARRAY_INDEX_A ;
  124. //int ARDUINO_ARRAY_INDEX_A ;
  125. };
  126. typedef ARDUINO_ARRAY_INDEX_TABLE_S ARDUINO_ARRAY_INDEX_TABLE_T;
  127. struct ARDUINO_ARRAY_ASSOC_TABLE_S { //to associate and cache
  128. ARDUINO_ARRAY_INDEX_T ARDUINO_ARRAY_INDEX_A ; //indexed name of sth
  129. };
  130. struct ARDUINO_ARRAY_QUEUE_TABLE_S { //to controll elements - like deletion etc
  131. ARDUINO_ARRAY_INDEX_T ARDUINO_ARRAY_INDEX_A ;
  132. ARDUINO_QUEUE_FLAG_T ARDUINO_QUEUE_FLAG_T ;
  133. //int ARDUINO_ARRAY_INDEX_A ;
  134. };
  135. typedef struct ARDUINO_ARRAY_QUEUE_TABLE_S ARDUINO_ARRAY_QUEUE_TABLE_T ;
  136. //typedef ARDUINO_ARRAY_ATTR_T ARDUINO_ARRAY_DRIVER
  137. const ARDUINO_ARRAY_INDEX_T ARDUINO_ARRAY_INDEX_NOT_SET = 0 ; //for controll arrays behaviour
  138. const ARDUINO_ARRAY_INDEX_T ARDUINO_ARRAY_INDEX_CORRUPT = 0 ; //for controll arrays behaviour
  139. const ARDUINO_ARRAY_INDEX_T ARDUINO_ARRAY_INDEX_FIRST = 1 ; //for controll arrays behaviour
  140. const ARDUINO_ARRAY_COUNT_T ARDUINO_ARRAY_COUNT_T_INIT = 0 ; //current count elements - porzadkowo
  141. const ARDUINO_ARRAY_INDEX_CURRENT_T ARDUINO_ARRAY_INDEX_CURRENT_INIT = 0 ; //
  142. const ARDUINO_ARRAY_INDEX_LAST_T ARDUINO_ARRAY_INDEX_LAST_INIT = 0 ;
  143. const ARDUINO_ARRAY_INDEX_NEXT_T ARDUINO_ARRAY_INDEX_NEXT_INIT = 1;
  144. const ARDUINO_ARRAY_time_min_run_MIN_T ARDUINO_ARRAY_time_min_run_MIN_INIT = 0 ;
  145. const ARDUINO_ARRAY_time_min_run_MIN_T ARDUINO_ARRAY_time_min_run_MIN_NOT_SET = 1 ;
  146. const ARDUINO_ARRAY_INDEX_time_min_run_MIN_T ARDUINO_ARRAY_INDEX_time_min_run_MIN_INIT = 0 ;
  147. const int ARDUINO_time_seq_id_A_INCREMENT = 1000 ;
  148. const ARDUINO_ARRAY_INDEX_T ARDUINO_ATTR_ARRAY_S_INDEX = ARDUINO_ARRAY_INDEX_FIRST ;
  149. //const ARDUINO_FUNCT_INIT_RESULT_T ARDUINO_FUNCT_INIT_RESULT_T_
  150. //#define membersof(x) (sizeof(x) / sizeof(x[0]))
  151. #define BLACK 0x0000
  152. #define BLUE 0x001F
  153. #define RED 0xF800
  154. #define GREEN 0x07E0
  155. #define CYAN 0x07FF
  156. #define MAGENTA 0xF81F
  157. #define YELLOW 0xFFE0
  158. #define WHITE 0xFFFF
  159. #define SERVOMIN 150 // this is the 'minimum' pulse length count (out of 4096)
  160. #define SERVOMAX 600 // this is the 'maximum' pulse length count (out of 4096)
  161. #define ArrayElementSize(x) (sizeof()/sizeof(x[0]))
  162. /* n = digitalRead(encoder0PinA);
  163. if ((encoder0PinALast == LOW) && (n == HIGH)) {
  164. if (digitalRead(encoder0PinB) == LOW) {
  165. encoder0Pos--;
  166. } else {
  167. encoder0Pos++;
  168. }
  169. Serial.print (encoder0Pos);
  170. Serial.print ("/");
  171. }
  172. encoder0PinALast = n;
  173. typedef ARDUINO_ROTTARY_ENC_DIR_S
  174. val = encoder_direction();
  175. */
  176. /*
  177. class MyObject{
  178. uint8_t aByte; //one byte of memory
  179. uint16_t aInt; //two bytes of memory
  180. };
  181. MyObject anObject; //create an instance of MyObject
  182. */