2025-11-25 10:21:47 +08:00

165 lines
5.1 KiB
C

/**
*****************************************************************************************
* Copyright(c) 2017, Realtek Semiconductor Corporation. All rights reserved.
*****************************************************************************************
* @file tps.h
* @brief Head file for using TX power service.
* @details TPS data structs and external functions declaration.
* @author
* @date
* @version v1.0
* *************************************************************************************
*/
#ifndef _TPS_H_
#define _TPS_H_
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
#include <stdint.h>
#include "profile_server.h"
/** @defgroup TPS Tx Power Service
* @brief Tx power service
* @details
The Tx Power service uses the Tx Power Level characteristic to expose the current transmit power level
of a device when in a connection.The Tx Power service contains only a Tx Power Level characteristic.
The Tx Power Service generally makes up a profile with some other services, such as Proximity, and its
role is to indicate a device's transmit power level when in a connection.
Application shall register Tx Power service when initialization through @ref tps_add_service function.
Application can set the TX power value through @ref tps_set_parameter function.
* @{
*/
/*============================================================================*
* Macros
*============================================================================*/
/** @defgroup TPS_Exported_Macros TPS Exported Macros
* @brief
* @{
*/
/** @defgroup TPS_Read_Info TPS Read Info
* @brief Read characteristic value.
* @{
*/
#define TPS_READ_TX_POWER_VALUE 1
#define TPS_READ_FIRMWARE_VERSION 2
#define TPS_READ_SYSTEM_ID 3
#define TPS_READ_SERIAL_NUMBER 4
/** @} */
/** @} End of TPS_Exported_Macros */
/*============================================================================*
* Types
*============================================================================*/
/** @defgroup TPS_Exported_Types TPS Exported Types
* @brief
* @{
*/
/* Add all public types here */
/** @defgroup TPS_Application_Parameters TPS Application Parameters
* @brief Type of parameters set/got from application.
* @{
*/
typedef enum
{
TPS_PARAM_TX_POWER,
TPS_PARAM_SYSTEM_ID,
TSP_PARAM_FIRMWARE,
TPS_PARAM_SERIAL_NUMBER
} T_TPS_PARAM_TYPE;
/** @} */
/** @defgroup TPS_Upstream_Message TPS Upstream Message
* @brief TPS data struct for notification data to application.
* @{
*/
/** Message content: @ref TPS_Upstream_Message */
typedef union
{
uint8_t read_value_index;
} T_TPS_UPSTREAM_MSG_DATA;
/** TPS service data to inform application. */
typedef struct
{
uint8_t conn_id;
T_SERVICE_CALLBACK_TYPE msg_type;
T_TPS_UPSTREAM_MSG_DATA msg_data;
} T_TPS_CALLBACK_DATA;
/** @} */
/** @} End of TPS_Exported_Types */
/*============================================================================*
* Functions
*============================================================================*/
/** @defgroup TPS_Exported_Functions TPS Exported Functions
* @{
*/
/**
* @brief Set a Tx power service parameter.
*
* NOTE: You can call this function with a tx power service parameter type and it will set the
* tx power service parameter. Tx power service parameters are defined in @ref T_TPS_PARAM_TYPE.
* If the "len" field sets to the size of a "uint16_t" ,the
* "p_value" field must point to a data with type of "uint16_t".
*
* @param[in] param_type Tx power service parameter type: @ref T_TPS_PARAM_TYPE
* @param[in] len Length of data to write
* @param[in] p_value Pointer to data to write. This is dependent on
* the parameter type and WILL be cast to the appropriate
* data type (example: data type of uint16 will be cast to
* uint16 pointer).
*
* @return Operation result.
* @retval true Operation success.
* @retval false Operation failure.
*
* <b>Example usage</b>
* \code{.c}
void test(void)
{
uint8_t tx_power = 0;
tps_set_parameter(TPS_PARAM_TX_POWER, 1, &tx_power);
}
* \endcode
*/
bool tps_set_parameter(T_TPS_PARAM_TYPE param_type, uint8_t len, void *p_value);
/**
* @brief Add tx power 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.
*
* <b>Example usage</b>
* \code{.c}
void profile_init()
{
server_init(1);
tps_id = tps_add_service(app_handle_profile_message);
}
* \endcode
*/
T_SERVER_ID tps_add_service(void *p_func);
/** @} End of TPS_Exported_Functions */
/** @} End of TPS */
#ifdef __cplusplus
}
#endif /* __cplusplus */
#endif /* _TPS_H_ */