123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549 |
- /**
- * \file MS_features.h
- *
- * \brief EtherMind Compilation Switches Configuration File.
- *
- * This file lists all the Compilation Flags available in various
- * EtherMind Mesh Stack modules.
- */
- /*
- * Copyright (C) 2016. Mindtree Ltd.
- * All rights reserved.
- */
- #ifndef _H_MS_FEATURES_
- #define _H_MS_FEATURES_
- /* ----------------------------------------------------------------------- */
- /* ========== Platform =================================================== */
- /* ----------------------------------------------------------------------- */
- /*
- * WINDOWS
- *
- * This flag is used when the EtherMind stack is being compiled on
- * Windows User Mode platforms.
- *
- * Dependency: None.
- */
- #define WINDOWS
- /* ----------------------------------------------------------------------- */
- /* ==== Mesh Specification Flags ========================================= */
- /* ----------------------------------------------------------------------- */
- /*
- * MS_1_0
- *
- * This flag is used when the EtherMind stack is being compiled for
- * Mesh specification version 1.0.
- */
- #define MS_1_0
- /* ----------------------------------------------------------------------- */
- /* ==== Mesh v1.0 Feature Flags ========================================== */
- /* ----------------------------------------------------------------------- */
- /*
- * MS_PROVISIONING_SUPPORT
- *
- * This flag is used to enable support for Provisioning feature.
- *
- * Dependency: None.
- */
- #define MS_PROVISIONING_SUPPORT
- /*
- * MS_RELAY_SUPPORT
- *
- * This flag is used to enable support for Relay feature.
- *
- * Dependency: None.
- */
- #define MS_RELAY_SUPPORT
- /*
- * MS_PROXY_SUPPORT
- *
- * This flag is used to enable support for Proxy feature.
- *
- * Dependency: None.
- */
- #define MS_PROXY_SUPPORT
- /*
- * MS_PROXY_SERVER
- *
- * This flag is used to enable support for Proxy Server feature.
- *
- * Dependency: MS_PROXY_SUPPORT.
- */
- #ifdef MS_PROXY_SUPPORT
- #define MS_PROXY_SERVER
- #endif /* MS_PROXY_SUPPORT */
- /*
- * MS_PROXY_CLIENT
- *
- * This flag is used to enable support for Proxy Client feature.
- *
- * Dependency: MS_PROXY_SUPPORT.
- */
- #ifdef MS_PROXY_SUPPORT
- #define MS_PROXY_CLIENT
- #endif /* MS_PROXY_SUPPORT */
- /**
- * Check if the relevant roles for Proxy are Enabled
- */
- #ifdef MS_PROXY_SUPPORT
- #if !((defined MS_PROXY_SERVER) || (defined MS_PROXY_CLIENT))
- #error "Server or Client SHALL be supported when MS_PROXY_SUPPORT enabled"
- #endif /* !((defined MS_PROXY_SERVER) || (defined MS_PROXY_CLIENT)) */
- #endif /* MS_PROXY_SUPPORT */
- /*
- * MS_FRIEND_SUPPORT
- *
- * This flag is used to enable support for Friend feature.
- *
- * Dependency: None.
- */
- #define MS_FRIEND_SUPPORT
- /*
- * MS_LPN_SUPPORT
- *
- * This flag is used to enable support for Low Power feature.
- *
- * Dependency: None.
- */
- #define MS_LPN_SUPPORT
- #ifndef CFG_HEARTBEAT_MODE
- #define CFG_HEARTBEAT_MODE 0
- #endif
- /* ----------------------------------------------------------------------- */
- /* ==== Stack Architecture Flags ========================================= */
- /* ----------------------------------------------------------------------- */
- /* ----------------------------------------------------------------------- */
- /* ==== Stack Feature Flags ============================================== */
- /* ----------------------------------------------------------------------- */
- /*
- * MS_SUPPORT_STACK_VERSION_INFO
- *
- * This flag enables EtherMind MS_get_version_number() API.
- *
- * This API is used to retrieve the current stack build version
- * information
- *
- * Dependency: None.
- */
- #define MS_SUPPORT_STACK_VERSION_INFO
- /*
- * MS_HAVE_DYNAMIC_CONFIG
- *
- * This flag enables dynamic configuration of some of the parameters defined in MS_limits.h.
- *
- * Dependency: None.
- */
- #define MS_HAVE_DYNAMIC_CONFIG
- /*
- * MS_DEBUG_ASSERT
- *
- * This flag enables EtherMind MS_assert() macro, for evaluating truth
- * value of an expression. For details, refer to BT_assert.h for the
- * platform.
- *
- * The MS_assert() macro is used for debugging during development, and
- * can be excluded in builds for the final product.
- *
- * Dependency: None.
- */
- #define MS_DEBUG_ASSERT
- /*
- * MS_STATUS
- *
- * This flag enables EtherMind Status Flag APIs for reporting various
- * Status, as described in BT_status_api.h. The EtherMind Status APIs
- * are designed and to be used for debugging purposes during development
- * and can be excluded in builds for final products.
- *
- * Dependency: None.
- */
- /* #define MS_STATUS */
- /*
- * MS_DISABLE_MUTEX
- *
- * This flag disables the use of mutex and conditional variables from all
- * stack modules (protocols and profiles).
- * This should be defined in EtherMind builds where synchronization
- * primitives are not required (such as, single task build of EtherMind).
- *
- * Dependency: None.
- */
- #define MS_DISABLE_MUTEX
- /*
- * EM_HAVE_STATIC_DECL
- *
- * This flag enables provision for declaring functions and/or globals in
- * a file as 'static'.
- */
- #define EM_HAVE_STATIC_DECL
- /*
- * EM_HAVE_CONST_DECL
- *
- * This flag enables provision for declaring globals in a file as 'const'.
- */
- #define EM_HAVE_CONST_DECL
- /*
- * VAR_ARG_IN_MACRO_NOT_SUPPORTED
- *
- * This flag should be enabled if the compiler tool-chain does not support
- * variable argument in macro.
- */
- /* #define VAR_ARG_IN_MACRO_NOT_SUPPORTED */
- /*
- * MS_STORAGE
- *
- * This flag enables support of the Storage Module
- *
- * Dependency: None
- */
- #define MS_STORAGE
- /* ----------------------------------------------------------------------- */
- /* ==== Module Inclusion Flags for EtherMind Mesh Modules ================ */
- /* ----------------------------------------------------------------------- */
- /* Mesh Models */
- #define MS_MODEL_CONFIG
- /* ----------------------------------------------------------------------- */
- /* ==== Module Inclusion Flags for EtherMind Mesh Modules ================ */
- /* ----------------------------------------------------------------------- */
- /*
- * Module inclusion flags for various EtherMind Mesh Modules, and should be
- * defined according to the modules included in the build.
- *
- * Dependency: None.
- */
- #define MS_BRR
- #define MS_NET
- #define MS_LTRN
- #define MS_TRN
- #define MS_ACCESS
- /*
- * Topology - Roles.
- * Only one of the role shall be defined. Edge or Relay.
- */
- /*
- * An Edge node is capable of transmitting and receiving mesh packets,
- * but does not relay incoming packets.
- */
- /* #define MS_ROLE_EDGE_NODE */
- /*
- * A Relay node is capable of transmitting and receiving mesh packets,
- * and contributes to the multi-hop network infrastructure by relaying
- * incoming packets, which are authenticated against the network security
- * credentials.
- */
- #define MS_ROLE_RELAY_NODE
- /*
- * Topology - Sub-Roles.
- * Low Power Node or Friend Relay Node.
- */
- /*
- * A Low Power node is an Edge Node performing low duty cycle scanning.
- */
- /* #define MS_SUB_ROLE_LOW_POWER */
- /*
- * A Friend Relay node is a Relay node.
- * Friend Relay nodes will also allow Low Power nodes to establish friend
- * relationships with it, and once established will cache packets destined
- * for the Low Power node.
- */
- #define MS_SUB_ROLE_FRIEND_RELAY_NODE
- /* ----------------------------------------------------------------------- */
- /* ==== Bearer Module Specific Flags ===================================== */
- /* ----------------------------------------------------------------------- */
- /*
- * MS_BEARER_ADV
- *
- * An advertising bearer.
- */
- #define MS_BEARER_ADV
- /*
- * MS_BEARER_GATT
- *
- * A GATT bearer.
- */
- /* #define MS_BEARER_GATT */
- /*
- * BLEBRR_LP_SUPPORT
- *
- * Enables Low Power Mode interfaces in the bearer.
- */
- #undef BLEBRR_LP_SUPPORT
- /* ----------------------------------------------------------------------- */
- /* ==== Network Module Specific Flags ==================================== */
- /* ----------------------------------------------------------------------- */
- /* ----------------------------------------------------------------------- */
- /* ==== Transport Module Specific Flags ================================== */
- /* ----------------------------------------------------------------------- */
- /*
- * MS_TRN_SEND_UNSEG_MSG_SUPPORT
- *
- * Enables support for sending Unsegmented Transport Message procedure.
- */
- #define MS_TRN_SEND_UNSEG_MSG_SUPPORT
- /*
- * MS_TRN_SEND_CTRL_PKT_SUPPORT
- *
- * Enables support for sending Transport Control Packet procedure.
- */
- #define MS_TRN_SEND_CTRL_PKT_SUPPORT
- #ifdef MS_TRN_SEND_CTRL_PKT_SUPPORT
- /*
- * MS_TRN_CTRL_FRND_PING_SUPPORT
- *
- * Enables support for sending Transport Control Packet - Friend Poll procedure.
- */
- #define MS_TRN_CTRL_FRND_POLL_SUPPORT
- /*
- * MS_TRN_CTRL_FRND_UPDATE_SUPPORT
- *
- * Enables support for sending Transport Control Packet - Friend Update procedure.
- */
- #define MS_TRN_CTRL_FRND_UPDATE_SUPPORT
- /*
- * MS_TRN_CTRL_FRND_REQ_SUPPORT
- *
- * Enables support for sending Transport Control Packet - Friend Request procedure.
- */
- #define MS_TRN_CTRL_FRND_REQ_SUPPORT
- /*
- * MS_TRN_CTRL_FRND_OFFER_SUPPORT
- *
- * Enables support for sending Transport Control Packet - Friend Offer procedure.
- */
- #define MS_TRN_CTRL_FRND_OFFER_SUPPORT
- /*
- * MS_TRN_CTRL_FRND_CLEAR_SUPPORT
- *
- * Enables support for sending Transport Control Packet - Friend Clear procedure.
- */
- #define MS_TRN_CTRL_FRND_CLEAR_SUPPORT
- /*
- * MS_TRN_CTRL_FRND_CLEAR_CNF_SUPPORT
- *
- * Enables support for sending Transport Control Packet - Friend Clear Confirmation procedure.
- */
- #define MS_TRN_CTRL_FRND_CLEAR_CNF_SUPPORT
- /*
- * MS_TRN_CTRL_FRND_SUBSCRN_LIST_ADD_SUPPORT
- *
- * Enables support for sending Transport Control Packet - Friend Subscription List Add procedure.
- */
- #define MS_TRN_CTRL_FRND_SUBSCRN_LIST_ADD_SUPPORT
- /*
- * MS_TRN_CTRL_FRND_SUBSCRN_LIST_REMOVE_SUPPORT
- *
- * Enables support for sending Transport Control Packet - Friend Subscription List Remove procedure.
- */
- #define MS_TRN_CTRL_FRND_SUBSCRN_LIST_REMOVE_SUPPORT
- /*
- * MS_TRN_CTRL_FRND_SUBSCRN_LIST_CNF_SUPPORT
- *
- * Enables support for sending Transport Control Packet - Friend Subscription List Confirmation procedure.
- */
- #define MS_TRN_CTRL_FRND_SUBSCRN_LIST_CNF_SUPPORT
- /*
- * MS_TRN_CTRL_HEARTBEAT_SUPPORT
- *
- * Enables support for sending Transport Control Packet - Heartbeat procedure.
- */
- #define MS_TRN_CTRL_HEARTBEAT_SUPPORT
- #endif /* MS_TRN_SEND_CTRL_PKT_SUPPORT */
- /*
- * MS_TRN_NO_NULL_PARAM_CHECK
- *
- * This flag disables 'null' parameter check in Mesh Transport APIs
- *
- * When application using Mesh Transport APIs are validated and
- * it is ensured that none of the API call path is using
- * an unexpected 'null' parameter, this flag can be enabled
- * to reduce the code size.
- *
- * Dependency: None.
- */
- /* #define MS_TRN_NO_NULL_PARAM_CHECK */
- /*
- * MS_TRN_NO_RANGE_CHECK
- *
- * This flag disables the check in Mesh Transport APIs to verify if the parameter
- * values are within specification defined valid range
- *
- * When application using Mesh Transport APIs are validated and
- * it is ensured that none of the API call path is using
- * parameters with invalid value, this flag can be enabled
- * to reduce the code size.
- *
- * Dependency: None.
- */
- /* #define MS_TRN_NO_RANGE_CHECK */
- /* ----------------------------------------------------------------------- */
- /* ==== Access Module Specific Flags ===================================== */
- /* ----------------------------------------------------------------------- */
- /*
- * MS_ACCESS_PUBLISH_TIMER_SUPPORT
- *
- * This flag enables Publication Timer Support.
- *
- * Dependency: None.
- */
- #define MS_ACCESS_PUBLISH_TIMER_SUPPORT
- /* ----------------------------------------------------------------------- */
- /* ==== Model Specific Flags ============================================= */
- /* ----------------------------------------------------------------------- */
- /*
- * Support Generic OnOff Model.
- */
- #define HAVE_GENERIC_ONOFF_MODEL
- /*
- * Support Generic Level Model.
- */
- #define HAVE_GENERIC_LEVEL_MODEL
- /* ----------------------------------------------------------------------- */
- /* ==== Module Profiling Flags =========================================== */
- /* ----------------------------------------------------------------------- */
- /*
- * Profiling related definitions for all the layers (protocol and profiles)
- * shall be defined in this section.
- */
- /*
- * MS_ENABLE_SPY
- *
- * If defined, this flag enables module profiling.
- *
- * Dependency: None
- */
- #define MS_ENABLE_SPY
- #ifdef MS_ENABLE_SPY
- #define BRR_ENABLE_SPY
- #define NET_ENABLE_SPY
- #define TRN_ENABLE_SPY
- #define APP_ENABLE_SPY
- #endif /* MS_ENABLE_SPY */
- /* ----------------------------------------------------------------------- */
- /* ==== Debug Specification Flags ======================================== */
- /* ----------------------------------------------------------------------- */
- /*
- * Debug definitions for all the layers (protocol and profiles) should be
- * defined in this section.
- */
- /*
- * By default, the Error Logs of all the layers are enabled.
- * To disable error logging of a module, define <module>_NO_DEBUG flag.
- * Example: Define BRR_NO_DEBUG to disable error logging of Bearer layer.
- *
- * By default, the Trace, Information, Data and other Logs
- * of all the layers are disabled.
- * To enable debug logging of a module, define <module>_DEBUG flag.
- * Example: Define BRR_DEBUG to enable debug logging (Trace and Information)
- * of Bearer layer.
- */
- /* Protocol Modules */
- #define COMMON_NO_DEBUG
- /* #define COMMON_DEBUG */
- //#define BRR_DEBUG
- #define BRR_NO_DEBUG
- /* #define BRR_DEBUG */
- //#define NET_DEBUG
- #define NET_NO_DEBUG
- /* #define NET_DEBUG */
- #define LTRN_NO_DEBUG
- //#define LTRN_DEBUG
- /* #define LTRN_DEBUG */
- #define TRN_NO_DEBUG
- //#define TRN_DEBUG
- /* #define TRN_DEBUG */
- #define APP_NO_DEBUG
- //#define APP_DEBUG
- /* #define APP_DEBUG */
- #define STBX_NO_DEBUG
- //#define STBX_DEBUG
- /* #define STBX_DEBUG */
- #define ACCESS_NO_DEBUG
- //#define ACCESS_DEBUG
- /* #define ACCESS_DEBUG */
- #define PROV_NO_DEBUG
- //#define PROV_DEBUG
- /* #define PROV_DEBUG */
- #define CONFIG_NO_DEBUG
- //#define CONFIG_DEBUG
- /* #define CONFIG_DEBUG */
- #endif /* _H_MS_FEATURES_ */
|