Smart-Home am Beispiel der Präsenzerkennung im Raum Projektarbeit Lennart Heimbs, Johannes Krug, Sebastian Dohle und Kevin Holzschuh bei Prof. Oliver Hofmann SS2019
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

MyCapabilities.h 6.1KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244
  1. /*
  2. * The MySensors Arduino library handles the wireless radio link and protocol
  3. * between your home built sensors/actuators and HA controller of choice.
  4. * The sensors forms a self healing radio network with optional repeaters. Each
  5. * repeater and gateway builds a routing tables in EEPROM which keeps track of the
  6. * network topology allowing messages to be routed to nodes.
  7. *
  8. * Created by Henrik Ekblad <henrik.ekblad@mysensors.org>
  9. * Copyright (C) 2013-2018 Sensnology AB
  10. * Full contributor list: https://github.com/mysensors/MySensors/graphs/contributors
  11. *
  12. * Documentation: http://www.mysensors.org
  13. * Support Forum: http://forum.mysensors.org
  14. *
  15. * This program is free software; you can redistribute it and/or
  16. * modify it under the terms of the GNU General Public License
  17. * version 2 as published by the Free Software Foundation.
  18. */
  19. /**
  20. * @file MyCapabilities.h
  21. * @ingroup MyCapabilities
  22. */
  23. #ifndef MyCapabilities_h
  24. #define MyCapabilities_h
  25. /**
  26. * @defgroup MyCapabilities Node capabilities indicator
  27. * @ingroup MyConfigGrp
  28. *
  29. * @brief MySensors capabilities indications.
  30. *
  31. * At node startup, a capabilities string is shown as part of the initialization logs.
  32. * This string indicate what configuration the node is running with.
  33. *
  34. * The string symbols are ordered in the following way:
  35. * | Setting | Reset | Radio | OTA | Node | Architecture | Signing | Buffering | Encryption
  36. * |-----------|-------------------|-------------------|--------------------|------------------|------------------|------------------|-------------------|-----------------
  37. * | Indicator | @ref MY_CAP_RESET | @ref MY_CAP_RADIO | @ref MY_CAP_OTA_FW | @ref MY_CAP_TYPE | @ref MY_CAP_ARCH | @ref MY_CAP_SIGN | @ref MY_CAP_RXBUF | @ref MY_CAP_ENCR
  38. *
  39. * @see MY_CAPABILITIES
  40. *
  41. * @{
  42. */
  43. // Remote reset
  44. /**
  45. * @def MY_CAP_RESET
  46. * @brief Indicate the remote reset setting.
  47. *
  48. * @see MY_DISABLE_REMOTE_RESET
  49. *
  50. * | Setting | Indicator
  51. * |------------|----------
  52. * | Enabled | R
  53. * | Disabled | N
  54. */
  55. #if defined(MY_DISABLE_REMOTE_RESET)
  56. #define MY_CAP_RESET "N"
  57. #else
  58. #define MY_CAP_RESET "R"
  59. #endif
  60. // OTA firmware update feature
  61. /**
  62. * @def MY_CAP_OTA_FW
  63. * @brief Indicate the OTA update setting.
  64. *
  65. * @see MY_OTA_FIRMWARE_FEATURE
  66. *
  67. * | Setting | Indicator
  68. * |------------|----------
  69. * | Enabled | O
  70. * | Disabled | N
  71. */
  72. #if defined(MY_OTA_FIRMWARE_FEATURE)
  73. #define MY_CAP_OTA_FW "O"
  74. #else
  75. #define MY_CAP_OTA_FW "N"
  76. #endif
  77. // Transport
  78. /**
  79. * @def MY_CAP_RADIO
  80. * @brief Indicate the type of transport selected.
  81. *
  82. * @see MY_RADIO_RF24, MY_RADIO_NRF5_ESB, MY_RADIO_RFM69, MY_RFM69_NEW_DRIVER, MY_RADIO_RFM95, MY_RS485
  83. *
  84. * | Radio | Indicator
  85. * |--------------|----------
  86. * | nRF24/nRF5 | N
  87. * | %RFM69 (old) | R
  88. * | %RFM69 (new) | P
  89. * | RFM95 | L
  90. * | RS485 | S
  91. * | None | -
  92. */
  93. #if defined(MY_RADIO_RF24) || defined(MY_RADIO_NRF5_ESB)
  94. #define MY_CAP_RADIO "N"
  95. #elif defined(MY_RADIO_RFM69)
  96. #if !defined(MY_RFM69_NEW_DRIVER)
  97. // old RFM69 driver
  98. #define MY_CAP_RADIO "R"
  99. #else
  100. // new RFM69 driver
  101. #define MY_CAP_RADIO "P"
  102. #endif
  103. #elif defined(MY_RADIO_RFM95)
  104. #define MY_CAP_RADIO "L"
  105. #elif defined(MY_RS485)
  106. #define MY_CAP_RADIO "S"
  107. #else
  108. #define MY_CAP_RADIO "-"
  109. #endif
  110. // Node type
  111. /**
  112. * @def MY_CAP_TYPE
  113. * @brief Indicate the type of node.
  114. *
  115. * @see MY_GATEWAY_FEATURE, MY_REPEATER_FEATURE, MY_PASSIVE_NODE
  116. *
  117. * | Node type | Indicator
  118. * |-----------|----------
  119. * | Gateway | G
  120. * | Repeater | R
  121. * | Passive | P
  122. * | Node | N
  123. */
  124. #if defined(MY_GATEWAY_FEATURE)
  125. #define MY_CAP_TYPE "G"
  126. #elif defined(MY_REPEATER_FEATURE)
  127. #define MY_CAP_TYPE "R"
  128. #elif defined(MY_PASSIVE_NODE)
  129. #define MY_CAP_TYPE "P"
  130. #else
  131. #define MY_CAP_TYPE "N"
  132. #endif
  133. // Architecture
  134. /**
  135. * @def MY_CAP_ARCH
  136. * @brief Indicate the architecture.
  137. *
  138. * @see ARDUINO_ARCH_SAMD, ARDUINO_ARCH_NRF5, ARDUINO_ARCH_ESP8266, ARDUINO_ARCH_AVR, ARDUINO_ARCH_STM32F1, TEENSYDUINO
  139. *
  140. * | Architecture | Indicator
  141. * |--------------|----------
  142. * | SAMD | S
  143. * | nRF5 | N
  144. * | ESP8266 | E
  145. * | AVR | A
  146. * | STM32F1 | F
  147. * | TEENSY | T
  148. * | Linux | L
  149. * | Unknown | -
  150. */
  151. #if defined(ARDUINO_ARCH_SAMD)
  152. #define MY_CAP_ARCH "S"
  153. #elif defined(ARDUINO_ARCH_NRF5)
  154. #define MY_CAP_ARCH "N"
  155. #elif defined(ARDUINO_ARCH_ESP8266)
  156. #define MY_CAP_ARCH "E"
  157. #elif defined(ARDUINO_ARCH_ESP32)
  158. #define MY_CAP_ARCH "F"
  159. #elif defined(ARDUINO_ARCH_AVR)
  160. #define MY_CAP_ARCH "A"
  161. #elif defined(ARDUINO_ARCH_STM32F1)
  162. #define MY_CAP_ARCH "F"
  163. #elif defined(__arm__) && defined(TEENSYDUINO)
  164. #define MY_CAP_ARCH "T"
  165. #elif defined(__linux__)
  166. #define MY_CAP_ARCH "L"
  167. #else
  168. #define MY_CAP_ARCH "-"
  169. #endif
  170. // Signing
  171. /**
  172. * @def MY_CAP_SIGN
  173. * @brief Indicate the signing backend used.
  174. *
  175. * @see MY_SIGNING_ATSHA204, MY_SIGNING_SOFT
  176. *
  177. * | Signing backend | Indicator
  178. * |-----------------|----------
  179. * | ATSHA204 | A
  180. * | Software | S
  181. * | No signing | -
  182. */
  183. #if defined(MY_SIGNING_ATSHA204)
  184. #define MY_CAP_SIGN "A"
  185. #elif defined(MY_SIGNING_SOFT)
  186. #define MY_CAP_SIGN "S"
  187. #else
  188. #define MY_CAP_SIGN "-"
  189. #endif
  190. // RX queue
  191. /**
  192. * @def MY_CAP_RXBUF
  193. * @brief Indicate the rx message buffer setting.
  194. *
  195. * @see MY_RX_MESSAGE_BUFFER_FEATURE
  196. *
  197. * | Setting | Indicator
  198. * |------------|----------
  199. * | Enabled | Q
  200. * | Disabled | -
  201. */
  202. #if defined(MY_RX_MESSAGE_BUFFER_FEATURE)
  203. #define MY_CAP_RXBUF "Q"
  204. #else
  205. #define MY_CAP_RXBUF "-"
  206. #endif
  207. // Radio encryption
  208. /**
  209. * @def MY_CAP_ENCR
  210. * @brief Indicate the encryption setting.
  211. *
  212. * @see MY_ENCRYPTION_FEATURE
  213. *
  214. * | Setting | Indicator
  215. * |------------|----------
  216. * | Enabled | X
  217. * | Disabled | -
  218. */
  219. #if defined(MY_ENCRYPTION_FEATURE)
  220. #define MY_CAP_ENCR "X"
  221. #else
  222. #define MY_CAP_ENCR "-"
  223. #endif
  224. /**
  225. * @def MY_CAPABILITIES
  226. * @brief This is the resulting capabilities string.
  227. *
  228. * @see MY_CAP_RESET, MY_CAP_RADIO, MY_CAP_OTA_FW, MY_CAP_TYPE, MY_CAP_ARCH, MY_CAP_SIGN, MY_CAP_RXBUF, MY_CAP_ENCR
  229. */
  230. #define MY_CAPABILITIES MY_CAP_RESET MY_CAP_RADIO MY_CAP_OTA_FW MY_CAP_TYPE MY_CAP_ARCH MY_CAP_SIGN MY_CAP_RXBUF MY_CAP_ENCR
  231. /** @}*/ // End of MyCapabilities group
  232. #endif /* MyCapabilities_h */