THB2/bthome_phy6222/SDK/components/ble/host/gapgattserver.h

188 lines
6.2 KiB
C

/**************************************************************************************************
Filename: gapgattserver.h
Revised:
Revision:
Description: This file contains GAP GATT attribute definitions
and prototypes.
SDK_LICENSE
**************************************************************************************************/
#ifndef GAPGATTSERVER_H
#define GAPGATTSERVER_H
#ifdef __cplusplus
extern "C"
{
#endif
/*********************************************************************
INCLUDES
*/
/*********************************************************************
CONSTANTS
*/
// Minimum connection interval (units of 1.25ms, 80=100ms) if automatic parameter update request is enabled
#define DEFAULT_DESIRED_MIN_CONN_INTERVAL 24 // 12 -> 15 ms
// Maximum connection interval (units of 1.25ms, 800=1000ms) if automatic parameter update request is enabled
#define DEFAULT_DESIRED_MAX_CONN_INTERVAL 24 // 30 ms
// Slave latency to use if automatic parameter update request is enabled
#define DEFAULT_DESIRED_SLAVE_LATENCY 29
// Supervision timeout value (units of 10ms, 1000=10s) if automatic parameter update request is enabled
#define DEFAULT_DESIRED_CONN_TIMEOUT 400 // 4s
#define GAP_DEVICE_NAME_LEN (20+1)
// Privacy Flag States
#define GAP_PRIVACY_DISABLED 0x00
#define GAP_PRIVACY_ENABLED 0x01
// GAP GATT Server Parameters
#define GGS_DEVICE_NAME_ATT 0 // RW uint8[GAP_DEVICE_NAME_LEN]
#define GGS_APPEARANCE_ATT 1 // RW uint16
#define GGS_PERI_PRIVACY_FLAG_ATT 2 // RW uint8
#define GGS_RECONNCT_ADDR_ATT 3 // RW uint8[B_ADDR_LEN]
#define GGS_PERI_CONN_PARAM_ATT 4 // RW sizeof(gapPeriConnectParams_t)
#define GGS_PERI_PRIVACY_FLAG_PROPS 5 // RW uint8
#define GGS_W_PERMIT_DEVICE_NAME_ATT 6 // W uint8
#define GGS_W_PERMIT_APPEARANCE_ATT 7 // W uint8
#define GGS_W_PERMIT_PRIVACY_FLAG_ATT 8 // W uint8
// GAP Services bit fields
#define GAP_SERVICE 0x00000001
// Attribute ID used with application's callback when attribute value is changed OTA
#define GGS_DEVICE_NAME_ID 0
#define GGS_APPEARANCE_ID 1
#if defined ( TESTMODES )
// GGS TestModes
#define GGS_TESTMODE_OFF 0 // No Test mode
#define GGS_TESTMODE_W_PERMIT_DEVICE_NAME 1 // Make Device Name attribute writable
#define GGS_TESTMODE_W_PERMIT_APPEARANCE 2 // Make Appearance attribute writable
#define GGS_TESTMODE_W_PERMIT_PRIVACY_FLAG 3 // Make Peripheral Privacy Flag attribute writable with authentication
#endif // TESTMODES
/*********************************************************************
TYPEDEFS
*/
// Callback to notify when attribute value is changed over the air.
typedef void (*ggsAttrValueChange_t)( uint8 attrId );
// GAP GATT Server callback structure
typedef struct
{
ggsAttrValueChange_t pfnAttrValueChange; // When attribute value is changed OTA
} ggsAppCBs_t;
/*********************************************************************
MACROS
*/
/*********************************************************************
Profile Callbacks
*/
/*********************************************************************
API FUNCTIONS
*/
/**
@brief Set a GAP GATT Server parameter.
@param param - Profile parameter ID<BR>
@param len - length of data to right
@param value - pointer to data to write. This is dependent on
the parameter ID and WILL be cast to the appropriate
data type (example: data type of uint16 will be cast to
uint16 pointer).<BR>
@return bStatus_t
*/
extern bStatus_t GGS_SetParameter( uint8 param, uint8 len, void* value );
/**
@brief Get a GAP GATT Server parameter.
@param param - Profile parameter ID<BR>
@param value - pointer to data to put. This is dependent on
the parameter ID and WILL be cast to the appropriate
data type (example: data type of uint16 will be cast to
uint16 pointer).<BR>
@return bStatus_t
*/
extern bStatus_t GGS_GetParameter( uint8 param, void* value );
/**
@brief Add function for the GAP GATT Service.
@param services - services to add. This is a bit map and can
contain more than one service.
@return SUCCESS: Service added successfully.<BR>
INVALIDPARAMETER: Invalid service field.<BR>
FAILURE: Not enough attribute handles available.<BR>
bleMemAllocError: Memory allocation error occurred.<BR>
*/
extern bStatus_t GGS_AddService( uint32 services );
/**
@brief Delete function for the GAP GATT Service.
@param services - services to delete. This is a bit map and can
contain more than one service.
@return SUCCESS: Service deleted successfully.<BR>
FAILURE: Service not found.<BR>
*/
extern bStatus_t GGS_DelService( uint32 services );
/**
@brief Registers the application callback function.
Note: Callback registration is needed only when the
Device Name is made writable. The application
will be notified when the Device Name is changed
over the air.
@param appCallbacks - pointer to application callbacks.
@return none
*/
extern void GGS_RegisterAppCBs( ggsAppCBs_t* appCallbacks );
/**
@brief Set a GGS Parameter value. Use this function to change
the default GGS parameter values.
@param value - new GGS param value
@return void
*/
extern void GGS_SetParamValue( uint16 value );
/**
@brief Get a GGS Parameter value.
@param none
@return GGS Parameter value
*/
extern uint16 GGS_GetParamValue( void );
/*********************************************************************
TASK FUNCTIONS - Don't call these. These are system functions.
*/
/*********************************************************************
*********************************************************************/
#ifdef __cplusplus
}
#endif
#endif /* GAPGATTSERVER_H */