/*******************************************************************************
 * @file  rsi_ble_config.h
 * @brief
 *******************************************************************************
 * # License
 * <b>Copyright 2020 Silicon Laboratories Inc. www.silabs.com</b>
 *******************************************************************************
 *
 * The licensor of this software is Silicon Laboratories Inc. Your use of this
 * software is governed by the terms of Silicon Labs Master Software License
 * Agreement (MSLA) available at
 * www.silabs.com/about-us/legal/master-software-license-agreement. This
 * software is distributed to you in Source Code format and is governed by the
 * sections of the MSLA applicable to Source Code.
 *
 ******************************************************************************/

#ifndef RSI_BLE_CONFIG_H
#define RSI_BLE_CONFIG_H

#include "rsi_ble_apis.h"
#include <rsi_data_types.h>
/******************************************************
 * *                      Macros
 * ******************************************************/
//! application event list
#define RSI_BLE_CONN_EVENT 0x01
#define RSI_BLE_DISCONN_EVENT 0x02
#define RSI_BLE_GATT_WRITE_EVENT 0x03
#define RSI_BLE_MTU_EVENT 0x04
#define RSI_BLE_GATT_INDICATION_CONFIRMATION 0x05
#define RSI_BLE_RESP_ATT_VALUE 0x06
#define RSI_SSID 0x0D
#define RSI_SECTYPE 0x0E
#define RSI_BLE_WLAN_DISCONN_NOTIFY 0x0F
#define RSI_WLAN_ALREADY 0x10
#define RSI_WLAN_NOT_ALREADY 0x11
#define RSI_BLE_WLAN_TIMEOUT_NOTIFY 0x12
#define RSI_BLE_WLAN_JOIN_STATUS 0x15
#define RSI_APP_FW_VERSION 0x13
#define RSI_BLE_WLAN_DISCONNECT_STATUS 0x14

#define RSI_REM_DEV_ADDR_LEN 18
#define RSI_REM_DEV_NAME_LEN 31

#define RSI_BLE_DEV_NAME "CCP_DEVICE"
#define RSI_BLE_SET_RAND_ADDR "00:23:A7:12:34:56"

#define CLEAR_WHITELIST 0x00
#define ADD_DEVICE_TO_WHITELIST 0x01
#define DELETE_DEVICE_FROM_WHITELIST 0x02

#define ALL_PHYS 0x00

#define RSI_BLE_DEV_ADDR_RESOLUTION_ENABLE 0

#define RSI_OPERMODE_WLAN_BLE 13

/***********************************************************************************************************************************************/
//! Characteristic Presenatation Format Fields
/***********************************************************************************************************************************************/
#define RSI_BLE_UINT8_FORMAT 0x04
#define RSI_BLE_EXPONENT 0x00
#define RSI_BLE_PERCENTAGE_UNITS_UUID 0x27AD
#define RSI_BLE_NAME_SPACE 0x01
#define RSI_BLE_DESCRIPTION 0x010B

//! BLE characteristic custom service uuid
#define RSI_BLE_CUSTOM_SERVICE_UUID 0xFFF6
#define RSI_BLE_CUSTOM_LEVEL_UUID 0x1FF1

#ifdef RSI_M4_INTERFACE
#define RSI_BLE_MAX_NBR_ATT_REC 20
#define RSI_BLE_MAX_NBR_SLAVES 1
#define RSI_BLE_NUM_CONN_EVENTS 2
#else
#define RSI_BLE_MAX_NBR_ATT_REC 80
#define RSI_BLE_MAX_NBR_SLAVES 3
#define RSI_BLE_NUM_CONN_EVENTS 20
#endif

#define RSI_BLE_MAX_NBR_ATT_SERV 10

#define RSI_BLE_MAX_NBR_MASTERS 1
#define RSI_BLE_GATT_ASYNC_ENABLE 1
#define RSI_BLE_GATT_INIT 0

#define RSI_BLE_START_SCAN 0x01
#define RSI_BLE_STOP_SCAN 0x00

#define RSI_BLE_SCAN_TYPE SCAN_TYPE_ACTIVE
#define RSI_BLE_SCAN_FILTER_TYPE SCAN_FILTER_TYPE_ALL
/* Number of BLE GATT RECORD SIZE IN (n*16 BYTES), eg:(0x40*16)=1024 bytes */
#define RSI_BLE_NUM_REC_BYTES 0x40

#define RSI_BLE_INDICATE_CONFIRMATION_FROM_HOST 0

/*=======================================================================*/
//! Advertising command parameters
/*=======================================================================*/

#define RSI_BLE_ADV_TYPE UNDIR_CONN
#define RSI_BLE_ADV_FILTER_TYPE ALLOW_SCAN_REQ_ANY_CONN_REQ_ANY
#define RSI_BLE_ADV_DIR_ADDR_TYPE LE_PUBLIC_ADDRESS
#define RSI_BLE_ADV_DIR_ADDR "00:15:83:6A:64:17"

#define RSI_BLE_ADV_INT_MIN 0x100
#define RSI_BLE_ADV_INT_MAX 0x200
#define RSI_BLE_ADV_CHANNEL_MAP 0x07

//! Advertise status
//!  Start the advertising process
#define RSI_BLE_START_ADV 0x01
//! Stop the advertising process
#define RSI_BLE_STOP_ADV 0x00

//! BLE Tx Power Index On Air
#define RSI_BLE_PWR_INX 30

//! BLE Active H/w Pwr Features
#define BLE_DISABLE_DUTY_CYCLING 0
#define BLE_DUTY_CYCLING 1
#define BLR_DUTY_CYCLING 2
#define BLE_4X_PWR_SAVE_MODE 4
#define RSI_BLE_PWR_SAVE_OPTIONS BLE_DISABLE_DUTY_CYCLING

//! Advertise types

/* Advertising will be visible(discoverable) to all the devices.
 * Scanning/Connection is also accepted from all devices
 * */
#define UNDIR_CONN 0x80

/* Advertising will be visible(discoverable) to the particular device
 * mentioned in RSI_BLE_ADV_DIR_ADDR only.
 * Scanning and Connection will be accepted from that device only.
 * */
#define DIR_CONN 0x81

/* Advertising will be visible(discoverable) to all the devices.
 * Scanning will be accepted from all the devices.
 * Connection will be not be accepted from any device.
 * */
#define UNDIR_SCAN 0x82

/* Advertising will be visible(discoverable) to all the devices.
 * Scanning and Connection will not be accepted from any device
 * */
#define UNDIR_NON_CONN 0x83

/* Advertising will be visible(discoverable) to the particular device
 * mentioned in RSI_BLE_ADV_DIR_ADDR only.
 * Scanning and Connection will be accepted from that device only.
 * */
#define DIR_CONN_LOW_DUTY_CYCLE 0x84

//! Advertising flags
#define LE_LIMITED_DISCOVERABLE 0x01
#define LE_GENERAL_DISCOVERABLE 0x02
#define LE_BR_EDR_NOT_SUPPORTED 0x04

//! Advertise filters
#define ALLOW_SCAN_REQ_ANY_CONN_REQ_ANY 0x00
#define ALLOW_SCAN_REQ_WHITE_LIST_CONN_REQ_ANY 0x01
#define ALLOW_SCAN_REQ_ANY_CONN_REQ_WHITE_LIST 0x02
#define ALLOW_SCAN_REQ_WHITE_LIST_CONN_REQ_WHITE_LIST 0x03

//! Address types
#define LE_PUBLIC_ADDRESS 0x00
#define LE_RANDOM_ADDRESS 0x01
#define LE_RESOLVABLE_PUBLIC_ADDRESS 0x02
#define LE_RESOLVABLE_RANDOM_ADDRESS 0x03

/*=======================================================================*/

/*=======================================================================*/
//! Connection parameters
/*=======================================================================*/
#define LE_SCAN_INTERVAL 0x0100
#define LE_SCAN_WINDOW 0x0050

#define CONNECTION_INTERVAL_MIN 0x00A0
#define CONNECTION_INTERVAL_MAX 0x00A0

#define CONNECTION_LATENCY 0x0000
#define SUPERVISION_TIMEOUT 0x07D0 // 2000

/*=======================================================================*/

/*=======================================================================*/
//! Scan command parameters
/*=======================================================================*/

#define SL_WFX_BLE_SCAN_TYPE SCAN_TYPE_ACTIVE
#define SL_WFX_BLE_SCAN_FILTER_TYPE SCAN_FILTER_TYPE_ALL

//! Scan status
#define SL_WFX_BLE_START_SCAN 0x01
#define SL_WFX_BLE_STOP_SCAN 0x00

//! Scan types
#define SCAN_TYPE_ACTIVE 0x01
#define SCAN_TYPE_PASSIVE 0x00

//! Scan filters
#define SCAN_FILTER_TYPE_ALL 0x00
#define SCAN_FILTER_TYPE_ONLY_WHITE_LIST 0x01

#define SL_WFX_SEL_INTERNAL_ANTENNA 0x00
#define SL_WFX_SEL_EXTERNAL_ANTENNA 0x01

#define SL_WFX_BT_CTRL_REMOTE_USER_TERMINATED 0x4E13
#define SL_WFX_BT_CTRL_REMOTE_DEVICE_TERMINATED_CONNECTION_DUE_TO_LOW_RESOURCES 0x4E14
#define SL_WFX_BT_CTRL_REMOTE_POWERING_OFF 0x4E15
#define SL_WFX_BT_CTRL_TERMINATED_MIC_FAILURE 0x4E3D
#define SL_WFX_BT_FAILED_TO_ESTABLISH_CONN 0x4E3E
#define SL_WFX_BT_INVALID_RANGE 0x4E60

/***********************************************************************************************************************************************/
//! RS9116 Firmware Configurations
/***********************************************************************************************************************************************/

/*=======================================================================*/
//! Opermode command parameters
/*=======================================================================*/
/*
#define RSI_FEATURE_BIT_MAP \
  (FEAT_ULP_GPIO_BASED_HANDSHAKE | FEAT_DEV_TO_HOST_ULP_GPIO_1) //! To set wlan feature select bit map
#define RSI_TCP_IP_BYPASS RSI_DISABLE                           //! TCP IP BYPASS feature check
#define RSI_TCP_IP_FEATURE_BIT_MAP \
  (TCP_IP_FEAT_DHCPV4_CLIENT) //! TCP/IP feature select bitmap for selecting TCP/IP features
#define RSI_EXT_TCPIP_FEATURE_BITMAP 0

#define RSI_CUSTOM_FEATURE_BIT_MAP FEAT_CUSTOM_FEAT_EXTENTION_VALID //! To set custom feature select bit map

#define RSI_EXT_CUSTOM_FEATURE_BIT_MAP (EXT_FEAT_LOW_POWER_MODE | EXT_FEAT_XTAL_CLK_ENABLE | EXT_FEAT_384K_MODE)

#define RSI_BT_FEATURE_BITMAP (BT_RF_TYPE | ENABLE_BLE_PROTOCOL)
*/
/*=======================================================================*/
//! Power save command parameters
/*=======================================================================*/
//! set handshake type of power mode
//#define RSI_HAND_SHAKE_TYPE GPIO_BASED

#define BLE_ATT_REC_SIZE 500
#define NO_OF_VAL_ATT 5 //! Attribute value count

/***********************************************************************************************************************************************/
//! user defined structure
/***********************************************************************************************************************************************/
typedef struct rsi_ble_att_list_s
{
    uuid_t char_uuid;
    uint16_t handle;
    uint16_t value_len;
    uint16_t max_value_len;
    uint8_t char_val_prop;
    void * value;
} rsi_ble_att_list_t;
typedef struct rsi_ble_s
{
    uint8_t DATA[BLE_ATT_REC_SIZE];
    uint16_t DATA_ix;
    uint16_t att_rec_list_count;
    rsi_ble_att_list_t att_rec_list[NO_OF_VAL_ATT];
} rsi_ble_t;

#endif