mirror of https://github.com/ARMmbed/mbed-os.git
437 lines
14 KiB
C
437 lines
14 KiB
C
/**
|
|
******************************************************************************
|
|
* @file app_conf.h
|
|
* @author MCD Application Team
|
|
* @brief Application configuration file
|
|
******************************************************************************
|
|
* @attention
|
|
*
|
|
* <h2><center>© Copyright (c) 2019 STMicroelectronics.
|
|
* All rights reserved.</center></h2>
|
|
*
|
|
* This software component is licensed by ST under BSD 3-Clause license,
|
|
* the "License"; You may not use this file except in compliance with the
|
|
* License. You may obtain a copy of the License at:
|
|
* opensource.org/licenses/BSD-3-Clause
|
|
*
|
|
******************************************************************************
|
|
*/
|
|
|
|
|
|
/* Define to prevent recursive inclusion -------------------------------------*/
|
|
#ifndef __APP_CONFIG_H
|
|
#define __APP_CONFIG_H
|
|
|
|
#include "hw.h"
|
|
#include "hw_conf.h"
|
|
|
|
/******************************************************************************
|
|
* Transparent Mode Config
|
|
******************************************************************************/
|
|
|
|
/**
|
|
* Identity root key used to derive LTK and CSRK
|
|
*/
|
|
#define CFG_BLE_IRK {0x12,0x34,0x56,0x78,0x9a,0xbc,0xde,0xf0,0x12,0x34,0x56,0x78,0x9a,0xbc,0xde,0xf0}
|
|
|
|
/**
|
|
* Encryption root key used to derive LTK and CSRK
|
|
*/
|
|
#define CFG_BLE_ERK {0xfe,0xdc,0xba,0x09,0x87,0x65,0x43,0x21,0xfe,0xdc,0xba,0x09,0x87,0x65,0x43,0x21}
|
|
|
|
/**< specific parameters *//*****************************************************/
|
|
/******************************************************************************
|
|
* Information Table
|
|
*
|
|
* Version
|
|
* [0:3] = Build - 0: Untracked - 15:Released - x: Tracked version
|
|
* [4:7] = branch - 0: Mass Market - x: ...
|
|
* [8:15] = Subversion
|
|
* [16:23] = Version minor
|
|
* [24:31] = Version major
|
|
*
|
|
******************************************************************************/
|
|
#define CFG_FW_MAJOR_VERSION (0)
|
|
#define CFG_FW_MINOR_VERSION (0)
|
|
#define CFG_FW_SUBVERSION (1)
|
|
#define CFG_FW_BRANCH (0)
|
|
#define CFG_FW_BUILD (0)
|
|
|
|
|
|
/******************************************************************************
|
|
* BLE Stack
|
|
******************************************************************************/
|
|
/**
|
|
* Maximum number of simultaneous connections that the device will support.
|
|
* Valid values are from 1 to 8
|
|
*/
|
|
#define CFG_BLE_NUM_LINK 8
|
|
|
|
/**
|
|
* Maximum number of Services that can be stored in the GATT database.
|
|
* Note that the GAP and GATT services are automatically added so this parameter should be 2 plus the number of user services
|
|
*/
|
|
#define CFG_BLE_NUM_GATT_SERVICES 8
|
|
|
|
/**
|
|
* Maximum number of Attributes
|
|
* (i.e. the number of characteristic + the number of characteristic values + the number of descriptors, excluding the services)
|
|
* that can be stored in the GATT database.
|
|
* Note that certain characteristics and relative descriptors are added automatically during device initialization
|
|
* so this parameters should be 9 plus the number of user Attributes
|
|
*/
|
|
#define CFG_BLE_NUM_GATT_ATTRIBUTES 68
|
|
|
|
/**
|
|
* Maximum supported ATT_MTU size
|
|
*/
|
|
#define CFG_BLE_MAX_ATT_MTU (156)
|
|
|
|
/**
|
|
* Size of the storage area for Attribute values
|
|
* This value depends on the number of attributes used by application. In particular the sum of the following quantities (in octets) should be made for each attribute:
|
|
* - attribute value length
|
|
* - 5, if UUID is 16 bit; 19, if UUID is 128 bit
|
|
* - 2, if server configuration descriptor is used
|
|
* - 2*DTM_NUM_LINK, if client configuration descriptor is used
|
|
* - 2, if extended properties is used
|
|
* The total amount of memory needed is the sum of the above quantities for each attribute.
|
|
*/
|
|
#define CFG_BLE_ATT_VALUE_ARRAY_SIZE (1344)
|
|
|
|
/**
|
|
* Prepare Write List size in terms of number of packet with ATT_MTU=23 bytes
|
|
*/
|
|
#define CFG_BLE_PREPARE_WRITE_LIST_SIZE ( 0x3A )
|
|
|
|
/**
|
|
* Number of allocated memory blocks
|
|
*/
|
|
#define CFG_BLE_MBLOCK_COUNT ( 0x79 )
|
|
|
|
/**
|
|
* Enable or disable the Extended Packet length feature. Valid values are 0 or 1.
|
|
*/
|
|
#define CFG_BLE_DATA_LENGTH_EXTENSION 1
|
|
|
|
/**
|
|
* Sleep clock accuracy in Slave mode (ppm value)
|
|
*/
|
|
#define CFG_BLE_SLAVE_SCA 500
|
|
|
|
/**
|
|
* Sleep clock accuracy in Master mode
|
|
* 0 : 251 ppm to 500 ppm
|
|
* 1 : 151 ppm to 250 ppm
|
|
* 2 : 101 ppm to 150 ppm
|
|
* 3 : 76 ppm to 100 ppm
|
|
* 4 : 51 ppm to 75 ppm
|
|
* 5 : 31 ppm to 50 ppm
|
|
* 6 : 21 ppm to 30 ppm
|
|
* 7 : 0 ppm to 20 ppm
|
|
*/
|
|
#define CFG_BLE_MASTER_SCA 0
|
|
|
|
/**
|
|
* Source for the 32 kHz slow speed clock
|
|
* 1 : internal RO
|
|
* 0 : external crystal ( no calibration )
|
|
*/
|
|
#define CFG_BLE_LSE_SOURCE 1
|
|
|
|
/**
|
|
* Start up time of the high speed (16 or 32 MHz) crystal oscillator in units of 625/256 us (~2.44 us)
|
|
*/
|
|
#define CFG_BLE_HSE_STARTUP_TIME 0x148
|
|
|
|
/**
|
|
* Maximum duration of the connection event when the device is in Slave mode in units of 625/256 us (~2.44 us)
|
|
*/
|
|
#define CFG_BLE_MAX_CONN_EVENT_LENGTH ( 0xFFFFFFFF )
|
|
|
|
/**
|
|
* Viterbi Mode
|
|
* 1 : enabled
|
|
* 0 : disabled
|
|
*/
|
|
#define CFG_BLE_VITERBI_MODE 1
|
|
|
|
/**
|
|
* LL Only Mode
|
|
* 1 : LL Only
|
|
* 0 : LL + Host
|
|
*/
|
|
#define CFG_BLE_LL_ONLY 1
|
|
|
|
|
|
/******************************************************************************
|
|
* Transport Layer
|
|
******************************************************************************/
|
|
/**
|
|
* Queue length of BLE Event
|
|
* This parameter defines the number of asynchronous events that can be stored in the HCI layer before
|
|
* being reported to the application. When a command is sent to the BLE core coprocessor, the HCI layer
|
|
* is waiting for the event with the Num_HCI_Command_Packets set to 1. The receive queue shall be large
|
|
* enough to store all asynchronous events received in between.
|
|
* When CFG_TLBLE_MOST_EVENT_PAYLOAD_SIZE is set to 27, this allow to store three 255 bytes long asynchronous events
|
|
* between the HCI command and its event.
|
|
* This parameter depends on the value given to CFG_TLBLE_MOST_EVENT_PAYLOAD_SIZE. When the queue size is to small,
|
|
* the system may hang if the queue is full with asynchronous events and the HCI layer is still waiting
|
|
* for a CC/CS event, In that case, the notification TL_BLE_HCI_ToNot() is called to indicate
|
|
* to the application a HCI command did not receive its command event within 30s (Default HCI Timeout).
|
|
*/
|
|
#define CFG_TLBLE_EVT_QUEUE_LENGTH 5
|
|
|
|
/**
|
|
* This parameter should be set to fit most events received by the HCI layer. It defines the buffer size of each element
|
|
* allocated in the queue of received events and can be used to optimize the amount of RAM allocated by the Memory Manager.
|
|
* It should not exceed 255 which is the maximum HCI packet payload size (a greater value is a lost of memory as it will
|
|
* never be used)
|
|
* It shall be at least 4 to receive the command status event in one frame.
|
|
* The default value is set to 27 to allow receiving an event of MTU size in a single buffer. This value maybe reduced
|
|
* further depending on the application.
|
|
*
|
|
*/
|
|
#define CFG_TLBLE_MOST_EVENT_PAYLOAD_SIZE 255 /**< Set to 255 with the memory manager and the mailbox */
|
|
|
|
#define TL_BLE_EVENT_FRAME_SIZE ( TL_EVT_HDR_SIZE + CFG_TLBLE_MOST_EVENT_PAYLOAD_SIZE )
|
|
|
|
/******************************************************************************
|
|
* UART interfaces
|
|
******************************************************************************/
|
|
|
|
/**
|
|
* Select UART interfaces
|
|
*/
|
|
#define CFG_UART_GUI hw_uart1
|
|
#define DBG_TRACE_UART_CFG hw_lpuart1
|
|
#define CFG_CONSOLE_MENU
|
|
|
|
/******************************************************************************
|
|
* USB interface
|
|
******************************************************************************/
|
|
|
|
/**
|
|
* Enable/Disable USB interface
|
|
*/
|
|
#define CFG_USB_INTERFACE_ENABLE 1
|
|
|
|
/******************************************************************************
|
|
* Low Power
|
|
******************************************************************************/
|
|
/**
|
|
* When set to 1, the low power mode is enable
|
|
* When set to 0, the device stays in RUN mode
|
|
*/
|
|
#define CFG_LPM_SUPPORTED 0
|
|
|
|
/******************************************************************************
|
|
* Timer Server
|
|
******************************************************************************/
|
|
/**
|
|
* CFG_RTC_WUCKSEL_DIVIDER: This sets the RTCCLK divider to the wakeup timer.
|
|
* The higher is the value, the better is the power consumption and the accuracy of the timerserver
|
|
* The lower is the value, the finest is the granularity
|
|
*
|
|
* CFG_RTC_ASYNCH_PRESCALER: This sets the asynchronous prescaler of the RTC. It should as high as possible ( to ouput
|
|
* clock as low as possible) but the output clock should be equal or higher frequency compare to the clock feeding
|
|
* the wakeup timer. A lower clock speed would impact the accuracy of the timer server.
|
|
*
|
|
* CFG_RTC_SYNCH_PRESCALER: This sets the synchronous prescaler of the RTC.
|
|
* When the 1Hz calendar clock is required, it shall be sets according to other settings
|
|
* When the 1Hz calendar clock is not needed, CFG_RTC_SYNCH_PRESCALER should be set to 0x7FFF (MAX VALUE)
|
|
*
|
|
* CFG_RTCCLK_DIVIDER_CONF:
|
|
* Shall be set to either 0,2,4,8,16
|
|
* When set to either 2,4,8,16, the 1Hhz calendar is supported
|
|
* When set to 0, the user sets its own configuration
|
|
*
|
|
* The following settings are computed with LSI as input to the RTC
|
|
*/
|
|
#define CFG_RTCCLK_DIVIDER_CONF 0
|
|
|
|
#if (CFG_RTCCLK_DIVIDER_CONF == 0)
|
|
/**
|
|
* Custom configuration
|
|
* It does not support 1Hz calendar
|
|
* It divides the RTC CLK by 16
|
|
*/
|
|
#define CFG_RTCCLK_DIV (16)
|
|
#define CFG_RTC_WUCKSEL_DIVIDER (0)
|
|
#define CFG_RTC_ASYNCH_PRESCALER (CFG_RTCCLK_DIV - 1)
|
|
#define CFG_RTC_SYNCH_PRESCALER (0x7FFF)
|
|
|
|
#else
|
|
|
|
#if (CFG_RTCCLK_DIVIDER_CONF == 2)
|
|
/**
|
|
* It divides the RTC CLK by 2
|
|
*/
|
|
#define CFG_RTC_WUCKSEL_DIVIDER (3)
|
|
#endif
|
|
|
|
#if (CFG_RTCCLK_DIVIDER_CONF == 4)
|
|
/**
|
|
* It divides the RTC CLK by 4
|
|
*/
|
|
#define CFG_RTC_WUCKSEL_DIVIDER (2)
|
|
#endif
|
|
|
|
#if (CFG_RTCCLK_DIVIDER_CONF == 8)
|
|
/**
|
|
* It divides the RTC CLK by 8
|
|
*/
|
|
#define CFG_RTC_WUCKSEL_DIVIDER (1)
|
|
#endif
|
|
|
|
#if (CFG_RTCCLK_DIVIDER_CONF == 16)
|
|
/**
|
|
* It divides the RTC CLK by 16
|
|
*/
|
|
#define CFG_RTC_WUCKSEL_DIVIDER (0)
|
|
#endif
|
|
|
|
#define CFG_RTCCLK_DIV CFG_RTCCLK_DIVIDER_CONF
|
|
#define CFG_RTC_ASYNCH_PRESCALER (CFG_RTCCLK_DIV - 1)
|
|
#define CFG_RTC_SYNCH_PRESCALER (DIVR( LSE_VALUE, (CFG_RTC_ASYNCH_PRESCALER+1) ) - 1 )
|
|
|
|
#endif
|
|
|
|
/** tick timer value in us */
|
|
#define CFG_TS_TICK_VAL DIVR( (CFG_RTCCLK_DIV * 1000000), LSE_VALUE )
|
|
|
|
typedef enum
|
|
{
|
|
CFG_TIM_PROC_ID_ISR,
|
|
} CFG_TimProcID_t;
|
|
|
|
/******************************************************************************
|
|
* Debug
|
|
******************************************************************************/
|
|
/**
|
|
* When set, this resets some hw resources to set the device in the same state than the power up
|
|
* The FW resets only register that may prevent the FW to run properly
|
|
*
|
|
* This shall be set to 0 in a final product
|
|
*
|
|
*/
|
|
#define CFG_HW_RESET_BY_FW 1
|
|
|
|
#define CFG_LED_SUPPORTED 1
|
|
#define CFG_BUTTON_SUPPORTED 1
|
|
|
|
/**
|
|
* keep debugger enabled while in any low power mode when set to 1
|
|
* should be set to 0 in production
|
|
*/
|
|
#define CFG_DEBUGGER_SUPPORTED 0
|
|
|
|
/**
|
|
* When set to 1, the traces are enabled in the BLE services
|
|
*/
|
|
#define CFG_DEBUG_BLE_TRACE 0
|
|
|
|
/**
|
|
* Enable or Disable traces in application
|
|
*/
|
|
#define CFG_DEBUG_APP_TRACE 0
|
|
|
|
|
|
#if defined ( __CC_ARM ) /* Keil */
|
|
#undef CFG_DEBUG_BLE_TRACE
|
|
#undef CFG_DEBUG_APP_TRACE
|
|
#undef CFG_LPM_SUPPORTED
|
|
#define CFG_DEBUG_BLE_TRACE 0
|
|
#define CFG_DEBUG_APP_TRACE 0
|
|
#define CFG_LPM_SUPPORTED 0
|
|
#endif
|
|
|
|
|
|
#if (CFG_DEBUG_APP_TRACE != 0)
|
|
#define APP_DBG_MSG PRINT_MESG_DBG
|
|
#else
|
|
#define APP_DBG_MSG PRINT_NO_MESG
|
|
#endif
|
|
|
|
|
|
#if ( (CFG_DEBUG_BLE_TRACE != 0) || (CFG_DEBUG_APP_TRACE != 0) )
|
|
#define CFG_DEBUG_TRACE 1
|
|
#endif
|
|
|
|
#if (CFG_DEBUG_TRACE != 0)
|
|
#undef CFG_LPM_SUPPORTED
|
|
#undef CFG_DEBUGGER_SUPPORTED
|
|
#define CFG_LPM_SUPPORTED 0
|
|
#define CFG_DEBUGGER_SUPPORTED 1
|
|
#endif
|
|
|
|
/******************************************************************************
|
|
* Scheduler
|
|
******************************************************************************/
|
|
|
|
/**
|
|
* These are the lists of task id registered to the scheduler
|
|
* Each task id shall be in the range [0:31]
|
|
* This mechanism allows to implement a generic code in the API TL_BLE_HCI_StatusNot() to comply with
|
|
* the requirement that a HCI/ACI command shall never be sent if there is already one pending
|
|
*/
|
|
|
|
/**< Add in that list all tasks that may send a ACI/HCI command */
|
|
typedef enum
|
|
{
|
|
CFG_TASK_BLE_HCI_CMD_ID,
|
|
CFG_TASK_SYS_HCI_CMD_ID,
|
|
CFG_TASK_HCI_ACL_DATA_ID,
|
|
CFG_TASK_SYS_LOCAL_CMD_ID,
|
|
CFG_TASK_TX_TO_HOST_ID,
|
|
|
|
CFG_LAST_TASK_ID_WITH_HCICMD, /**< Shall be LAST in the list */
|
|
} CFG_Task_Id_With_HCI_Cmd_t;
|
|
|
|
/**< Add in that list all tasks that never send a ACI/HCI command */
|
|
typedef enum
|
|
{
|
|
CFG_FIRST_TASK_ID_WITH_NO_HCICMD = CFG_LAST_TASK_ID_WITH_HCICMD - 1, /**< Shall be FIRST in the list */
|
|
|
|
CFG_TASK_VCP_SEND_DATA_ID,
|
|
CFG_TASK_SYSTEM_HCI_ASYNCH_EVT_ID,
|
|
|
|
CFG_LAST_TASK_ID_WITHO_NO_HCICMD /**< Shall be LAST in the list */
|
|
} CFG_Task_Id_With_NO_HCI_Cmd_t;
|
|
#define CFG_TASK_NBR CFG_LAST_TASK_ID_WITHO_NO_HCICMD
|
|
|
|
/**
|
|
* This is the list of priority required by the application
|
|
* Each Id shall be in the range 0..31
|
|
*/
|
|
typedef enum
|
|
{
|
|
CFG_SCH_PRIO_0,
|
|
CFG_SCH_PRIO_1,
|
|
CFG_PRIO_NBR,
|
|
} CFG_SCH_Prio_Id_t;
|
|
|
|
/**
|
|
* This is a bit mapping over 32bits listing all events id supported in the application
|
|
*/
|
|
typedef enum
|
|
{
|
|
CFG_IDLEEVT_SYSTEM_HCI_CMD_EVT_RSP_ID,
|
|
} CFG_IdleEvt_Id_t;
|
|
|
|
/******************************************************************************
|
|
* LOW POWER
|
|
******************************************************************************/
|
|
/**
|
|
* Supported requester to the MCU Low Power Manager - can be increased up to 32
|
|
* It lits a bit mapping of all user of the Low Power Manager
|
|
*/
|
|
typedef enum
|
|
{
|
|
CFG_LPM_APP,
|
|
} CFG_LPM_Id_t;
|
|
|
|
#endif /*__APP_CONFIG_H */
|
|
|
|
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
|