Implement a secure ICS protocol targeting LoRa Node151 microcontroller for controlling irrigation.
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.
 
 
 
 
 
 

129 lines
5.4 KiB

  1. ##
  2. ## ______ _
  3. ## / _____) _ | |
  4. ## ( (____ _____ ____ _| |_ _____ ____| |__
  5. ## \____ \| ___ | (_ _) ___ |/ ___) _ \
  6. ## _____) ) ____| | | || |_| ____( (___| | | |
  7. ## (______/|_____)_|_|_| \__)_____)\____)_| |_|
  8. ## (C)2013-2017 Semtech
  9. ## ___ _____ _ ___ _ _____ ___ ___ ___ ___
  10. ## / __|_ _/_\ / __| |/ / __/ _ \| _ \/ __| __|
  11. ## \__ \ | |/ _ \ (__| ' <| _| (_) | / (__| _|
  12. ## |___/ |_/_/ \_\___|_|\_\_| \___/|_|_\\___|___|
  13. ## embedded.connectivity.solutions.==============
  14. ##
  15. ## License: Revised BSD License, see LICENSE.TXT file included in the project
  16. ## Authors: Johannes Bruder (STACKFORCE), Miguel Luis (Semtech)
  17. ##
  18. project(mac)
  19. cmake_minimum_required(VERSION 3.6)
  20. #---------------------------------------------------------------------------------------
  21. # Options
  22. #---------------------------------------------------------------------------------------
  23. # Allow selection of region
  24. option(REGION_EU868 "Region EU868" ON)
  25. option(REGION_US915 "Region US915" OFF)
  26. option(REGION_CN779 "Region CN779" OFF)
  27. option(REGION_EU433 "Region EU433" OFF)
  28. option(REGION_AU915 "Region AU915" OFF)
  29. option(REGION_AS923 "Region AS923" OFF)
  30. option(REGION_CN470 "Region CN470" OFF)
  31. option(REGION_KR920 "Region KR920" OFF)
  32. option(REGION_IN865 "Region IN865" OFF)
  33. option(REGION_RU864 "Region RU864" OFF)
  34. set(REGION_LIST REGION_EU868 REGION_US915 REGION_CN779 REGION_EU433 REGION_AU915 REGION_AS923 REGION_CN470 REGION_KR920 REGION_IN865 REGION_RU864)
  35. # AS923 Channel Plan
  36. set(REGION_AS923_DEFAULT_CHANNEL_PLAN_LIST CHANNEL_PLAN_GROUP_AS923_1 CHANNEL_PLAN_GROUP_AS923_2 CHANNEL_PLAN_GROUP_AS923_3 CHANNEL_PLAN_GROUP_AS923_1_JP)
  37. set(REGION_AS923_DEFAULT_CHANNEL_PLAN CHANNEL_PLAN_GROUP_AS923_1 CACHE STRING "Default channel plan for AS923 is CHANNEL_PLAN_GROUP_AS923_1")
  38. set_property(CACHE REGION_AS923_DEFAULT_CHANNEL_PLAN PROPERTY STRINGS ${REGION_AS923_DEFAULT_CHANNEL_PLAN_LIST})
  39. # CN470 Channel Plan
  40. set(REGION_CN470_DEFAULT_CHANNEL_PLAN_LIST CHANNEL_PLAN_20MHZ_TYPE_A CHANNEL_PLAN_20MHZ_TYPE_B CHANNEL_PLAN_26MHZ_TYPE_A CHANNEL_PLAN_26MHZ_TYPE_B)
  41. set(REGION_CN470_DEFAULT_CHANNEL_PLAN CHANNEL_PLAN_20MHZ_TYPE_A CACHE STRING "Default channel plan for CN470 is CHANNEL_PLAN_20MHZ_TYPE_A")
  42. set_property(CACHE REGION_CN470_DEFAULT_CHANNEL_PLAN PROPERTY STRINGS ${REGION_CN470_DEFAULT_CHANNEL_PLAN_LIST})
  43. #---------------------------------------------------------------------------------------
  44. # Target
  45. #---------------------------------------------------------------------------------------
  46. set( MAC_BUILD_SOURCES
  47. ${CMAKE_CURRENT_SOURCE_DIR}/region/RegionAS923.c
  48. ${CMAKE_CURRENT_SOURCE_DIR}/region/RegionCN779.c
  49. ${CMAKE_CURRENT_SOURCE_DIR}/region/RegionEU433.c
  50. ${CMAKE_CURRENT_SOURCE_DIR}/region/RegionEU868.c
  51. ${CMAKE_CURRENT_SOURCE_DIR}/region/RegionIN865.c
  52. ${CMAKE_CURRENT_SOURCE_DIR}/region/RegionRU864.c
  53. ${CMAKE_CURRENT_SOURCE_DIR}/region/RegionKR920.c
  54. ${CMAKE_CURRENT_SOURCE_DIR}/region/RegionBaseUS.c
  55. ${CMAKE_CURRENT_SOURCE_DIR}/region/RegionCommon.c
  56. ${CMAKE_CURRENT_SOURCE_DIR}/region/Region.c
  57. ${CMAKE_CURRENT_SOURCE_DIR}/LoRaMac.c
  58. ${CMAKE_CURRENT_SOURCE_DIR}/LoRaMacAdr.c
  59. ${CMAKE_CURRENT_SOURCE_DIR}/LoRaMacClassB.c
  60. ${CMAKE_CURRENT_SOURCE_DIR}/LoRaMacCommands.c
  61. ${CMAKE_CURRENT_SOURCE_DIR}/LoRaMacConfirmQueue.c
  62. ${CMAKE_CURRENT_SOURCE_DIR}/LoRaMacCrypto.c
  63. ${CMAKE_CURRENT_SOURCE_DIR}/LoRaMacParser.c
  64. ${CMAKE_CURRENT_SOURCE_DIR}/LoRaMacSerializer.c )
  65. if(REGION_US915 STREQUAL ON)
  66. set( MAC_BUILD_SOURCES
  67. ${MAC_BUILD_SOURCES}
  68. "${CMAKE_CURRENT_SOURCE_DIR}/region/RegionUS915.c" )
  69. endif()
  70. if(REGION_AU915 STREQUAL ON)
  71. set( MAC_BUILD_SOURCES
  72. ${MAC_BUILD_SOURCES}
  73. "${CMAKE_CURRENT_SOURCE_DIR}/region/RegionAU915.c" )
  74. endif()
  75. if(REGION_CN470 STREQUAL ON)
  76. set( MAC_BUILD_SOURCES
  77. ${MAC_BUILD_SOURCES}
  78. "${CMAKE_CURRENT_SOURCE_DIR}/region/RegionCN470.c"
  79. "${CMAKE_CURRENT_SOURCE_DIR}/region/RegionCN470A20.c"
  80. "${CMAKE_CURRENT_SOURCE_DIR}/region/RegionCN470B20.c"
  81. "${CMAKE_CURRENT_SOURCE_DIR}/region/RegionCN470A26.c"
  82. "${CMAKE_CURRENT_SOURCE_DIR}/region/RegionCN470B26.c" )
  83. endif()
  84. add_library(${PROJECT_NAME} OBJECT EXCLUDE_FROM_ALL ${MAC_BUILD_SOURCES})
  85. # Loops through all regions and add compile time definitions for the enabled ones.
  86. foreach( REGION ${REGION_LIST} )
  87. if(${REGION})
  88. target_compile_definitions(${PROJECT_NAME} PUBLIC -D"${REGION}")
  89. endif()
  90. endforeach()
  91. # Applies AS923 channel plan
  92. target_compile_definitions(${PROJECT_NAME} PRIVATE -DREGION_AS923_DEFAULT_CHANNEL_PLAN=${REGION_AS923_DEFAULT_CHANNEL_PLAN})
  93. # Applies CN470 channel plan
  94. target_compile_definitions(${PROJECT_NAME} PRIVATE -DREGION_CN470_DEFAULT_CHANNEL_PLAN=${REGION_CN470_DEFAULT_CHANNEL_PLAN})
  95. # Add define if class B is supported
  96. target_compile_definitions(${PROJECT_NAME} PRIVATE $<$<BOOL:${CLASSB_ENABLED}>:LORAMAC_CLASSB_ENABLED>)
  97. # SecureElement NVM
  98. if(${SECURE_ELEMENT} MATCHES SOFT_SE)
  99. target_compile_definitions(${PROJECT_NAME} PRIVATE -DSOFT_SE)
  100. endif()
  101. add_dependencies(${PROJECT_NAME} board)
  102. target_include_directories( ${PROJECT_NAME} PUBLIC
  103. ${CMAKE_CURRENT_SOURCE_DIR}
  104. ${CMAKE_CURRENT_SOURCE_DIR}/region
  105. $<TARGET_PROPERTY:system,INTERFACE_INCLUDE_DIRECTORIES>
  106. $<TARGET_PROPERTY:radio,INTERFACE_INCLUDE_DIRECTORIES>
  107. $<TARGET_PROPERTY:board,INTERFACE_INCLUDE_DIRECTORIES>
  108. )
  109. set_property(TARGET ${PROJECT_NAME} PROPERTY C_STANDARD 11)