nRF5 SDK for Mesh v4.1.0
37 #ifndef NRF_MESH_SECTION_H__ 38 #define NRF_MESH_SECTION_H__ 40 #include "nrf_section.h" 41 #include "nrf_mesh_assert.h" 52 #if defined(__GNUC__) && !defined(HOST) 54 #define NRF_MESH_SECTION_START(section_name) CONCAT_2(__nrf_mesh_start_, section_name) 55 #define NRF_MESH_SECTION_END(section_name) CONCAT_2(__nrf_mesh_stop_, section_name) 57 #define NRF_MESH_SECTION_ITEM_REGISTER_FLASH(section_name, section_var) section_var __attribute__ ((section(".nrf_mesh_flash." STRINGIFY(CONCAT_2(section_name, __1))))) __attribute__((used)) 59 #define NRF_MESH_SECTION_ITEM_REGISTER_RAM(section_name, section_var) section_var __attribute__ ((section(".nrf_mesh_ram." STRINGIFY(CONCAT_2(section_name, __1))))) __attribute__((used)) 62 #define NRF_MESH_SECTION_DEF_FLASH(section_name, data_type) \ 63 volatile data_type NRF_MESH_SECTION_START(section_name)[0] __attribute__ ((section(".nrf_mesh_flash." STRINGIFY(CONCAT_2(section_name, __0))))) __attribute__((used)); \ 64 volatile data_type NRF_MESH_SECTION_END(section_name)[0] __attribute__ ((section(".nrf_mesh_flash." STRINGIFY(CONCAT_2(section_name, __2))))) __attribute__((used)) 66 #define NRF_MESH_SECTION_DEF_RAM(section_name, data_type) \ 67 volatile data_type NRF_MESH_SECTION_START(section_name)[0] __attribute__ ((section(".nrf_mesh_ram." STRINGIFY(CONCAT_2(section_name, __0))))) __attribute__((used)); \ 68 volatile data_type NRF_MESH_SECTION_END(section_name)[0] __attribute__ ((section(".nrf_mesh_ram." STRINGIFY(CONCAT_2(section_name, __2))))) __attribute__((used)) 71 #define NRF_MESH_SECTION_LENGTH(section_name) \ 72 ((size_t)&NRF_MESH_SECTION_END(section_name)[0] - \ 73 (size_t)&NRF_MESH_SECTION_START(section_name)[0]) 75 #define NRF_MESH_SECTION_ITEM_GET(section_name, data_type, i) \ 76 (data_type *) (NRF_MESH_SECTION_START(section_name) + i) 78 #define NRF_MESH_SECTION_ITEM_COUNT(section_name, data_type) \ 79 NRF_MESH_SECTION_LENGTH(section_name) / sizeof(data_type) 83 #define NRF_MESH_SECTION_START(section_name) NRF_SECTION_START_ADDR(section_name) 84 #define NRF_MESH_SECTION_END(section_name) NRF_SECTION_END_ADDR(section_name) 86 #define NRF_MESH_SECTION_ITEM_REGISTER_FLASH(section_name, section_var) NRF_SECTION_ITEM_REGISTER(section_name, section_var) 87 #define NRF_MESH_SECTION_ITEM_REGISTER_RAM(section_name, section_var) NRF_SECTION_ITEM_REGISTER(section_name, section_var) 89 #define NRF_MESH_SECTION_DEF_FLASH(section_name, data_type) NRF_SECTION_DEF(section_name, data_type) 90 #define NRF_MESH_SECTION_DEF_RAM(section_name, data_type) NRF_SECTION_DEF(section_name, data_type) 92 #define NRF_MESH_SECTION_LENGTH(section_name) NRF_SECTION_LENGTH(section_name) 94 #define NRF_MESH_SECTION_ITEM_GET(section_name, data_type, i) NRF_SECTION_ITEM_GET(section_name, data_type, i) 95 #define NRF_MESH_SECTION_ITEM_COUNT(section_name, data_type) NRF_SECTION_ITEM_COUNT(section_name, data_type) 99 #define NRF_MESH_SECTION_FOR_EACH(section_name, data_type, variable) \ 100 for (data_type * variable = (data_type *) NRF_MESH_SECTION_START(section_name); \ 101 (intptr_t) variable != (intptr_t) NRF_MESH_SECTION_END(section_name); \