mirror of
https://github.com/DarkFlippers/unleashed-firmware
synced 2024-12-24 03:33:08 +00:00
60a9d7e6cf
* ble: profile rework, initial * apps: hid: fix for pairing cleanup * app: hid: select transport based on #define * fixing PVS warnings * ble: serial service: fixed uid naming * bt service: on-demand dialog init; ble profiles: docs; battery svc: proper update * Added shci_cmd_resp_wait/shci_cmd_resp_release impl with semaphore * app: hid: separated transport code * ble: fixed service init order for serial svc; moved hardfault check to ble_glue * cli: ps: added thread prio to output, fixed heap display * ble_glue: naming changes; separate thread for event processing; * furi: added runtime stats; cli: added cpu% to `ps` * cli: fixed thread time calculation * furi: added getter for thread priority * fixing pvs warnings * hid profile: fixed naming * more naming fixes * hal: ble init small cleanup * cleanup & draft beacon api * f18: api sync * apps: moved example_custom_font from debug to examples * BLE extra beacon demo app * naming fix * UI fixes for demo app (wip) * desktop, ble svc: added statusbar icon for beacon * minor cleanup * Minor cleanup & naming fixes * api sync * Removed stale header * hal: added FURI_BLE_EXTRA_LOG for extra logging; comments & code cleanup * naming & macro fixes * quick fixes from review * Eliminated stock svc_ctl * cli: ps: removed runtime stats * minor include fixes * (void) * naming fixes * More naming fixes * fbt: always build all libs * fbt: explicitly globbing libs; dist: logging SDK path * scripts: fixed lib path precedence * hal: bt: profiles: naming changes, support for passing params to a profile; include cleanup * ble: hid: added parameter processing for profile template * api sync * BLE HID: long name trim * Removed unused check * desktop: updated beacon status icon; ble: hid: cleaner device name management * desktop: updated status icon Co-authored-by: あく <alleteam@gmail.com> Co-authored-by: nminaylov <nm29719@gmail.com>
202 lines
7.1 KiB
C
202 lines
7.1 KiB
C
#pragma once
|
|
|
|
#include <ble/core/ble_defs.h>
|
|
|
|
#define CFG_TX_POWER (0x19) /* +0dBm */
|
|
|
|
#define CFG_IDENTITY_ADDRESS GAP_PUBLIC_ADDR
|
|
|
|
/**
|
|
* Define IO Authentication
|
|
*/
|
|
#define CFG_USED_FIXED_PIN USE_FIXED_PIN_FOR_PAIRING_FORBIDDEN
|
|
#define CFG_ENCRYPTION_KEY_SIZE_MAX (16)
|
|
#define CFG_ENCRYPTION_KEY_SIZE_MIN (8)
|
|
|
|
/**
|
|
* Define IO capabilities
|
|
*/
|
|
#define CFG_IO_CAPABILITY IO_CAP_DISPLAY_YES_NO
|
|
|
|
/**
|
|
* Define MITM modes
|
|
*/
|
|
#define CFG_MITM_PROTECTION MITM_PROTECTION_REQUIRED
|
|
|
|
/**
|
|
* Define Secure Connections Support
|
|
*/
|
|
#define CFG_SC_SUPPORT SC_PAIRING_OPTIONAL
|
|
|
|
/**
|
|
* Define PHY
|
|
*/
|
|
#define ALL_PHYS_PREFERENCE 0x00
|
|
#define RX_2M_PREFERRED 0x02
|
|
#define TX_2M_PREFERRED 0x02
|
|
#define TX_1M 0x01
|
|
#define TX_2M 0x02
|
|
#define RX_1M 0x01
|
|
#define RX_2M 0x02
|
|
|
|
/******************************************************************************
|
|
* BLE Stack
|
|
******************************************************************************/
|
|
/**
|
|
* Maximum number of simultaneous connections that the device will support.
|
|
* Valid values are from 1 to 8
|
|
*/
|
|
#define CFG_BLE_NUM_LINK 2
|
|
|
|
/**
|
|
* 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 (256 + 128 + 16 + 8 + 4 + 2)
|
|
|
|
/**
|
|
* 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
|
|
*/
|
|
#define CFG_BLE_PREPARE_WRITE_LIST_SIZE BLE_PREP_WRITE_X_ATT(CFG_BLE_MAX_ATT_MTU)
|
|
|
|
/**
|
|
* Number of allocated memory blocks
|
|
*/
|
|
#define CFG_BLE_MBLOCK_COUNT \
|
|
(BLE_MBLOCKS_CALC(CFG_BLE_PREPARE_WRITE_LIST_SIZE, CFG_BLE_MAX_ATT_MTU, CFG_BLE_NUM_LINK))
|
|
|
|
/**
|
|
* 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 low speed clock for RF wake-up
|
|
* 1 : external high speed crystal HSE/32/32
|
|
* 0 : external low speed crystal ( no calibration )
|
|
*/
|
|
#define CFG_BLE_LSE_SOURCE \
|
|
SHCI_C2_BLE_INIT_CFG_BLE_LS_CLK_LSE | SHCI_C2_BLE_INIT_CFG_BLE_LS_OTHER_DEV | \
|
|
SHCI_C2_BLE_INIT_CFG_BLE_LS_CALIB
|
|
|
|
/**
|
|
* 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
|
|
|
|
/**
|
|
* BLE stack Options flags to be configured with:
|
|
* - SHCI_C2_BLE_INIT_OPTIONS_LL_ONLY
|
|
* - SHCI_C2_BLE_INIT_OPTIONS_LL_HOST
|
|
* - SHCI_C2_BLE_INIT_OPTIONS_NO_SVC_CHANGE_DESC
|
|
* - SHCI_C2_BLE_INIT_OPTIONS_WITH_SVC_CHANGE_DESC
|
|
* - SHCI_C2_BLE_INIT_OPTIONS_DEVICE_NAME_RO
|
|
* - SHCI_C2_BLE_INIT_OPTIONS_DEVICE_NAME_RW
|
|
* - SHCI_C2_BLE_INIT_OPTIONS_EXT_ADV
|
|
* - SHCI_C2_BLE_INIT_OPTIONS_NO_EXT_ADV
|
|
* - SHCI_C2_BLE_INIT_OPTIONS_CS_ALGO2
|
|
* - SHCI_C2_BLE_INIT_OPTIONS_NO_CS_ALGO2
|
|
* - SHCI_C2_BLE_INIT_OPTIONS_POWER_CLASS_1
|
|
* - SHCI_C2_BLE_INIT_OPTIONS_POWER_CLASS_2_3
|
|
* which are used to set following configuration bits:
|
|
* (bit 0): 1: LL only
|
|
* 0: LL + host
|
|
* (bit 1): 1: no service change desc.
|
|
* 0: with service change desc.
|
|
* (bit 2): 1: device name Read-Only
|
|
* 0: device name R/W
|
|
* (bit 3): 1: extended advertizing supported [NOT SUPPORTED]
|
|
* 0: extended advertizing not supported [NOT SUPPORTED]
|
|
* (bit 4): 1: CS Algo #2 supported
|
|
* 0: CS Algo #2 not supported
|
|
* (bit 7): 1: LE Power Class 1
|
|
* 0: LE Power Class 2-3
|
|
* other bits: reserved (shall be set to 0)
|
|
*/
|
|
#define CFG_BLE_OPTIONS \
|
|
(SHCI_C2_BLE_INIT_OPTIONS_LL_HOST | SHCI_C2_BLE_INIT_OPTIONS_WITH_SVC_CHANGE_DESC | \
|
|
SHCI_C2_BLE_INIT_OPTIONS_DEVICE_NAME_RO | SHCI_C2_BLE_INIT_OPTIONS_EXT_ADV | \
|
|
SHCI_C2_BLE_INIT_OPTIONS_CS_ALGO2 | SHCI_C2_BLE_INIT_OPTIONS_POWER_CLASS_2_3)
|
|
|
|
/**
|
|
* 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)
|
|
* With the current wireless firmware implementation, this parameter shall be kept to 255
|
|
*
|
|
*/
|
|
#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)
|