Realtek/inc/bluetooth/profile/server/simple_ble_service.h

206 lines
6.1 KiB
C
Raw Normal View History

2025-11-25 10:21:47 +08:00
/**
*****************************************************************************************
* Copyright(c) 2017, Realtek Semiconductor Corporation. All rights reserved.
*****************************************************************************************
* @file simple_ble_service.h
* @brief Demonstration of how to implement a self-definition service.
* @details Demonstration of different kinds of service interfaces.
* @author
* @date
* @version
* *************************************************************************************
*/
/* Define to prevent recursive inclusion */
#ifndef _SIMPLE_BLE_SERVICE_H_
#define _SIMPLE_BLE_SERVICE_H_
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
/* Add Includes here */
#include <profile_server.h>
#include <simple_ble_config.h>
/** @defgroup SIMP_Service Simple Ble Service
* @brief Simple BLE service
* @{
*/
/*============================================================================*
* Macros
*============================================================================*/
/** @defgroup SIMP_Service_Exported_Macros SIMP Service Exported Macros
* @brief
* @{
*/
/** @defgroup SIMP_Service_Application_Parameters SIMP Service Application Parameters
* @brief Type of parameters set/got from application.
* @{
*/
typedef enum
{
SIMPLE_BLE_SERVICE_PARAM_V1_READ_CHAR_VAL = 0x01,
} T_SIMP_PARAM_TYPE;
/** @} */
/** @defgroup SIMP_Service_Upstream_Message SIMP Service Upstream Message
* @brief Upstream message used to inform application.
* @{
*/
/** @defgroup SIMP_Service_Read_Info SIMP Service Read Info
* @brief Parameter for reading characteristic value.
* @{
*/
#define SIMP_READ_V1 1
/** @} */
/** @defgroup SIMP_Service_Write_Info SIMP Service Write Info
* @brief Parameter for writing characteristic value.
* @{
*/
#define SIMP_WRITE_V2 1
/** @} */
/** @defgroup SIMP_Service_Notify_Indicate_Info SIMP Service Notify Indicate Info
* @brief Parameter for enable or disable notification or indication.
* @{
*/
#define SIMP_NOTIFY_INDICATE_V3_ENABLE 1
#define SIMP_NOTIFY_INDICATE_V3_DISABLE 2
#define SIMP_NOTIFY_INDICATE_V4_ENABLE 3
#define SIMP_NOTIFY_INDICATE_V4_DISABLE 4
/** @} */
#define SIMP_READ_V1_MAX_LEN 300
/** @} End of SIMP_Service_Upstream_Message */
/** @} End of SIMP_Service_Exported_Macros */
/*============================================================================*
* Types
*============================================================================*/
/** @defgroup SIMP_Service_Exported_Types SIMP Service Exported Types
* @brief
* @{
*/
/** @defgroup TSIMP_WRITE_MSG TSIMP_WRITE_MSG
* @brief Simple BLE service written msg to application.
* @{
*/
typedef struct
{
uint8_t opcode; //!< ref: @ref SIMP_Service_Write_Info
T_WRITE_TYPE write_type;
uint16_t len;
uint8_t *p_value;
} TSIMP_WRITE_MSG;
/** @} End of TSIMP_WRITE_MSG */
/** @defgroup TSIMP_UPSTREAM_MSG_DATA TSIMP_UPSTREAM_MSG_DATA
* @brief Simple BLE service callback message content.
* @{
*/
typedef union
{
uint8_t notification_indification_index; //!< ref: @ref SIMP_Service_Notify_Indicate_Info
uint8_t read_value_index; //!< ref: @ref SIMP_Service_Read_Info
TSIMP_WRITE_MSG write;
} TSIMP_UPSTREAM_MSG_DATA;
/** @} End of TSIMP_UPSTREAM_MSG_DATA */
/** @defgroup TSIMP_CALLBACK_DATA TSIMP_CALLBACK_DATA
* @brief Simple BLE service data to inform application.
* @{
*/
typedef struct
{
uint8_t conn_id;
T_SERVICE_CALLBACK_TYPE msg_type;
TSIMP_UPSTREAM_MSG_DATA msg_data;
} TSIMP_CALLBACK_DATA;
/** @} End of TSIMP_CALLBACK_DATA */
/** @} End of SIMP_Service_Exported_Types */
/*============================================================================*
* Functions
*============================================================================*/
/** @defgroup SIMP_Service_Exported_Functions SIMP Service Exported Functions
* @brief
* @{
*/
/**
* @brief Add simple BLE service to the BLE stack database.
*
* @param[in] p_func Callback when service attribute was read, write or cccd update.
* @return Service id generated by the BLE stack: @ref T_SERVER_ID.
* @retval 0xFF Operation failure.
* @retval others Service id assigned by stack.
*
*/
T_SERVER_ID simp_ble_service_add_service(void *p_func);
/**
* @brief Set service related data from application.
*
* @param[in] param_type parameter type to set.
* @param[in] len value length to be set.
* @param[in] p_value value to set.
* @return parameter set result.
* @retval 0 false
* @retval 1 true
*/
bool simp_ble_service_set_parameter(T_SIMP_PARAM_TYPE param_type, uint16_t len, void *p_value);
/**
* @brief send notification of simple notify characteristic value.
*
* @param[in] conn_id connection id
* @param[in] service_id service ID of service.
* @param[in] p_value characteristic value to notify
* @param[in] length characteristic value length to notify
* @return notification action result
* @retval 1 true
* @retval 0 false
*/
bool simp_ble_service_send_v3_notify(uint8_t conn_id, T_SERVER_ID service_id,
void *p_value, uint16_t length);
/**
* @brief send indication of simple indicate characteristic value.
*
* @param[in] conn_id connection id
* @param[in] service_id service ID of service.
* @param[in] p_value characteristic value to notify
* @param[in] length characteristic value length to notify
* @return notification action result
* @retval 1 true
* @retval 0 false
*/
bool simp_ble_service_send_v4_indicate(uint8_t conn_id, T_SERVER_ID service_id,
void *p_value, uint16_t length);
/** @} End of SIMP_Service_Exported_Functions */
/** @} End of SIMP_Service */
#ifdef __cplusplus
}
#endif
#endif /* _SIMPLE_BLE_SERVICE_H_ */