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.

MyEepromAddresses.h 4.8KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  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 MyEepromAddresses.h
  21. * @brief Eeprom addresses for MySensors library data
  22. *
  23. * @defgroup MyEepromAddressesgrp MyEepromAddresses
  24. * @ingroup internals
  25. * @{
  26. *
  27. */
  28. #ifndef MyEepromAddresses_h
  29. #define MyEepromAddresses_h
  30. // EEPROM variable sizes, in bytes
  31. #define SIZE_NODE_ID (1u) //!< Size node ID
  32. #define SIZE_PARENT_NODE_ID (1u) //!< Size parent node ID
  33. #define SIZE_DISTANCE (1u) //!< Size GW distance
  34. #define SIZE_ROUTES (256u) //!< Size routing table
  35. #define SIZE_CONTROLLER_CONFIG (23u) //!< Size controller config
  36. #define SIZE_PERSONALIZATION_CHECKSUM (1u) //!< Size personalization checksum
  37. #define SIZE_FIRMWARE_TYPE (2u) //!< Size firmware type
  38. #define SIZE_FIRMWARE_VERSION (2u) //!< Size firmware version
  39. #define SIZE_FIRMWARE_BLOCKS (2u) //!< Size firmware blocks
  40. #define SIZE_FIRMWARE_CRC (2u) //!< Size firmware CRC
  41. #define SIZE_SIGNING_REQUIREMENT_TABLE (32u) //!< Size signing requirement table
  42. #define SIZE_WHITELIST_REQUIREMENT_TABLE (32u) //!< Size whitelist requirement table
  43. #define SIZE_SIGNING_SOFT_HMAC_KEY (32u) //!< Size soft signing HMAC key
  44. #define SIZE_SIGNING_SOFT_SERIAL (9u) //!< Size soft signing serial
  45. #define SIZE_RF_ENCRYPTION_AES_KEY (16u) //!< Size RF AES encryption key
  46. #define SIZE_NODE_LOCK_COUNTER (1u) //!< Size node lock counter
  47. /** @brief EEPROM start address */
  48. #define EEPROM_START (0u)
  49. /** @brief Address node ID */
  50. #define EEPROM_NODE_ID_ADDRESS EEPROM_START
  51. /** @brief Address parent node ID */
  52. #define EEPROM_PARENT_NODE_ID_ADDRESS (EEPROM_NODE_ID_ADDRESS + SIZE_NODE_ID)
  53. /** @brief Address distance to GW */
  54. #define EEPROM_DISTANCE_ADDRESS (EEPROM_PARENT_NODE_ID_ADDRESS + SIZE_PARENT_NODE_ID)
  55. /** @brief Address routing table */
  56. #define EEPROM_ROUTES_ADDRESS (EEPROM_DISTANCE_ADDRESS + SIZE_DISTANCE)
  57. /** @brief Address configuration bytes sent by controller */
  58. #define EEPROM_CONTROLLER_CONFIG_ADDRESS (EEPROM_ROUTES_ADDRESS + SIZE_ROUTES)
  59. /** @brief Personalization checksum (set by SecurityPersonalizer.ino) */
  60. #define EEPROM_PERSONALIZATION_CHECKSUM_ADDRESS (EEPROM_CONTROLLER_CONFIG_ADDRESS + SIZE_CONTROLLER_CONFIG)
  61. /** @brief Address firmware type */
  62. #define EEPROM_FIRMWARE_TYPE_ADDRESS (EEPROM_PERSONALIZATION_CHECKSUM_ADDRESS + SIZE_PERSONALIZATION_CHECKSUM)
  63. /** @brief Address firmware version */
  64. #define EEPROM_FIRMWARE_VERSION_ADDRESS (EEPROM_FIRMWARE_TYPE_ADDRESS + SIZE_FIRMWARE_TYPE)
  65. /** @brief Address firmware blocks */
  66. #define EEPROM_FIRMWARE_BLOCKS_ADDRESS (EEPROM_FIRMWARE_VERSION_ADDRESS + SIZE_FIRMWARE_VERSION)
  67. /** @brief Address firmware CRC */
  68. #define EEPROM_FIRMWARE_CRC_ADDRESS (EEPROM_FIRMWARE_BLOCKS_ADDRESS + SIZE_FIRMWARE_BLOCKS)
  69. /** @brief Address signing requirement table */
  70. #define EEPROM_SIGNING_REQUIREMENT_TABLE_ADDRESS (EEPROM_FIRMWARE_CRC_ADDRESS + SIZE_FIRMWARE_CRC)
  71. /** @brief Address whitelist requirement table */
  72. #define EEPROM_WHITELIST_REQUIREMENT_TABLE_ADDRESS (EEPROM_SIGNING_REQUIREMENT_TABLE_ADDRESS + SIZE_SIGNING_REQUIREMENT_TABLE)
  73. /** @brief Address soft signing HMAC key. This is set with @ref SecurityPersonalizer.ino */
  74. #define EEPROM_SIGNING_SOFT_HMAC_KEY_ADDRESS (EEPROM_WHITELIST_REQUIREMENT_TABLE_ADDRESS + SIZE_WHITELIST_REQUIREMENT_TABLE)
  75. /** @brief Address soft signing serial key. This is set with @ref SecurityPersonalizer.ino */
  76. #define EEPROM_SIGNING_SOFT_SERIAL_ADDRESS (EEPROM_SIGNING_SOFT_HMAC_KEY_ADDRESS + SIZE_SIGNING_SOFT_HMAC_KEY)
  77. /** @brief Address RF AES encryption key. This is set with @ref SecurityPersonalizer.ino */
  78. #define EEPROM_RF_ENCRYPTION_AES_KEY_ADDRESS (EEPROM_SIGNING_SOFT_SERIAL_ADDRESS + SIZE_SIGNING_SOFT_SERIAL)
  79. /** @brief Address node lock counter. This is set with @ref SecurityPersonalizer.ino */
  80. #define EEPROM_NODE_LOCK_COUNTER_ADDRESS (EEPROM_RF_ENCRYPTION_AES_KEY_ADDRESS + SIZE_RF_ENCRYPTION_AES_KEY)
  81. /** @brief First free address for sketch static configuration */
  82. #define EEPROM_LOCAL_CONFIG_ADDRESS (EEPROM_NODE_LOCK_COUNTER_ADDRESS + SIZE_NODE_LOCK_COUNTER)
  83. #endif // MyEepromAddresses_h
  84. /** @}*/