diff options
Diffstat (limited to 'inc/bluetooth/profile/server/bas.h')
-rw-r--r-- | inc/bluetooth/profile/server/bas.h | 230 |
1 files changed, 230 insertions, 0 deletions
diff --git a/inc/bluetooth/profile/server/bas.h b/inc/bluetooth/profile/server/bas.h new file mode 100644 index 0000000..7eee3d4 --- /dev/null +++ b/inc/bluetooth/profile/server/bas.h @@ -0,0 +1,230 @@ +/** +***************************************************************************************** +* Copyright(c) 2017, Realtek Semiconductor Corporation. All rights reserved. +***************************************************************************************** + * @file bas.h + * @brief Head file for using battery service. + * @details BAS data structs and external functions declaration. + * @author + * @date + * @version v1.0 + * ************************************************************************************* + */ + +/* Define to prevent recursive inclusion */ +#ifndef _BAS_H_ +#define _BAS_H_ + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +/* Add Includes here */ +#include "profile_server.h" + + +/** @defgroup BAS Battery Service + * @brief Battery service + * @details + + The Battery Service exposes the state of a battery within a device. + + Battery Service generally makes up a profile with some other services, and it can provide the state of a battery within a device. + + The default supported feature provided by BAS is the notify property of battery level characteristic, + and the application developers can modify the feature supported by BAS according to their own requirements. + The specific configuration process can be achieved by modifying file @ref bas_config.h. + + * <b>Example usage</b> + * \code{.c} + + #define BAS_BATTERY_LEVEL_NOTIFY_SUPPORT 1 + + * \endcode + + Application shall register battery service when initialization through @ref bas_add_service function. + + Application can set the battery level of BAS through @ref bas_set_parameter function. + + Application can send the battery level value of BAS to the client with a notification through @ref bas_battery_level_value_notify function. + + * @{ + */ + +/*============================================================================* + * Macros + *============================================================================*/ +/** @defgroup BAS_Exported_Macros BAS Exported Macros + * @brief + * @{ + */ + +#define BAS_READ_BATTERY_LEVEL 1 +#define BAS_NOTIFY_BATTERY_LEVEL_ENABLE 1 +#define BAS_NOTIFY_BATTERY_LEVEL_DISABLE 2 + +/** End of BAS_Exported_Macros +* @} +*/ + +/*============================================================================* + * Types + *============================================================================*/ +/** @defgroup BAS_Exported_Types BAS Exported Types + * @brief + * @{ + */ + +/** +* @brief Battery service parameter type +*/ +typedef enum +{ + BAS_PARAM_BATTERY_LEVEL = 0x01, +} T_BAS_PARAM_TYPE; + +/** +* @brief set battery service parameter upstream message data +*/ +typedef union +{ + uint8_t notification_indification_index; + uint8_t read_value_index; +} T_BAS_UPSTREAM_MSG_DATA; + +/** +* @brief set battery service parameter upstream callback data +*/ +typedef struct +{ + uint8_t conn_id; + T_SERVICE_CALLBACK_TYPE msg_type; + T_BAS_UPSTREAM_MSG_DATA msg_data; +} T_BAS_CALLBACK_DATA; + +/** End of BAS_Exported_Types +* @} +*/ + + +/*============================================================================* + * Functions + *============================================================================*/ +/** @defgroup BAS_Exported_Functions BAS Exported Functions + * @brief + * @{ + */ + +/** + * @brief Add battery 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); + bas_id = bas_add_service(app_handle_profile_message); + } + * \endcode + */ +T_SERVER_ID bas_add_service(void *p_func); + +/** + * @brief Set a battery service parameter. + * + * NOTE: You can call this function with a battery service parameter type and it will set the + * battery service parameter. Battery service parameters are defined in @ref T_BAS_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 Battery service parameter type: @ref T_BAS_PARAM_TYPE + * @param[in] length 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. + If param_type is set to @ref BAS_PARAM_BATTERY_LEVEL, p_value pointer to the current + charge level of a battery. Unit is org.bluetooth.unit.percentage. Minimum value is 0, + and maximum value is 100. 100% represents fully charged while 0% represents fully discharged. + * + * @return Operation result. + * @retval true Operation success. + * @retval false Operation failure. + * + * <b>Example usage</b> + * \code{.c} + void test(void) + { + uint8_t battery_level = 80; + bas_set_parameter(BAS_PARAM_BATTERY_LEVEL, 1, &battery_level); + } + * \endcode + */ +bool bas_set_parameter(T_BAS_PARAM_TYPE param_type, uint8_t length, uint8_t *p_value); + + +/** + * @brief Send notify battery level notification data . + * + * + * @param[in] conn_id Connection id. + * @param[in] service_id Service id. + * @param[in] battery_level The current charge level of a battery. + Unit is org.bluetooth.unit.percentage. Minimum value is 0, and maximum value is 100. + 100% represents fully charged while 0% represents fully discharged. + * @return Operation result. + * @retval true Operation success. + * @retval false Operation failure. + * + * <b>Example usage</b> + * \code{.c} + void test(void) + { + uint8_t battery_level = 90; + bas_battery_level_value_notify(conn_id, bas_id, battery_level); + } + * \endcode + */ +bool bas_battery_level_value_notify(uint8_t conn_id, T_SERVER_ID service_id, uint8_t battery_level); + + +/** + * @brief Confirm for read battery level value request. + * + * + * @param[in] conn_id Connection id. + * @param[in] service_id Service id. + * @param[in] battery_level The current charge level of a battery. + Unit is org.bluetooth.unit.percentage. Minimum value is 0, and maximum value is 100. + 100% represents fully charged while 0% represents fully discharged. + + * @return Operation result. + * @retval true Operation success. + * @retval false Operation failure. + * + * <b>Example usage</b> + * \code{.c} + void test(void) + { + uint8_t battery_level = 90; + bas_battery_level_value_read_confirm(conn_id, bas_id, battery_level); + } + * \endcode + */ +bool bas_battery_level_value_read_confirm(uint8_t conn_id, T_SERVER_ID service_id, + uint8_t battery_level); + +/** @} End of BAS_Exported_Functions */ + +/** @} End of BAS */ + + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif /* _BAS_H_ */ |