/** * @file * @author chipsea * @brief * @version 0.1 * @date 2020-11-30 * @copyright Copyright (c) 2020, CHIPSEA Co., Ltd. * @note */ /************************************************************************************************** Filename: gapgattserver.h Revised: Revision: Description: This file contains GAP GATT attribute definitions and prototypes. **************************************************************************************************/ #ifndef GAPGATTSERVER_H #define GAPGATTSERVER_H #ifdef __cplusplus extern "C" { #endif /********************************************************************* * INCLUDES */ /********************************************************************* * CONSTANTS */ #define GAP_DEVICE_NAME_LEN (30+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
* @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).
* * @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
* @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).
* * @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.
* INVALIDPARAMETER: Invalid service field.
* FAILURE: Not enough attribute handles available.
* bleMemAllocError: Memory allocation error occurred.
*/ 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.
* FAILURE: Service not found.
*/ 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 */