CH592_Makefile_Template/profile/include/battservice.h
2023-12-21 22:46:50 +07:00

173 lines
5.4 KiB
C

/********************************** (C) COPYRIGHT *******************************
* File Name : battservice.h
* Author : WCH
* Version : V1.0
* Date : 2018/12/11
* Description :
*********************************************************************************
* Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd.
* Attention: This software (modified or not) and binary are used for
* microcontroller manufactured by Nanjing Qinheng Microelectronics.
*******************************************************************************/
#ifndef BATTSERVICE_H
#define BATTSERVICE_H
#ifdef __cplusplus
extern "C" {
#endif
/*********************************************************************
* INCLUDES
*/
/*********************************************************************
* CONSTANTS
*/
// Battery Service Get/Set Parameters
#define BATT_PARAM_LEVEL 0
#define BATT_PARAM_CRITICAL_LEVEL 1
#define BATT_PARAM_SERVICE_HANDLE 2
#define BATT_PARAM_BATT_LEVEL_IN_REPORT 3
// Callback events
#define BATT_LEVEL_NOTI_ENABLED 1
#define BATT_LEVEL_NOTI_DISABLED 2
// HID Report IDs for the service
#define HID_RPT_ID_BATT_LEVEL_IN 4 // Battery Level input report ID
/*********************************************************************
* TYPEDEFS
*/
// Battery Service callback function
typedef void (*battServiceCB_t)(uint8_t event);
// Battery measure HW setup function
typedef void (*battServiceSetupCB_t)(void);
// Battery measure percentage calculation function
typedef uint8_t (*battServiceCalcCB_t)(uint16_t adcVal);
// Battery measure HW teardown function
typedef void (*battServiceTeardownCB_t)(void);
/*********************************************************************
* MACROS
*/
/*********************************************************************
* Profile Callbacks
*/
/*********************************************************************
* API FUNCTIONS
*/
/*********************************************************************
* @fn Batt_AddService
*
* @brief Initializes the Battery service by registering
* GATT attributes with the GATT server.
*
* @return Success or Failure
*/
extern bStatus_t Batt_AddService(void);
/*********************************************************************
* @fn Batt_Register
*
* @brief Register a callback function with the Battery Service.
*
* @param pfnServiceCB - Callback function.
*
* @return None.
*/
extern void Batt_Register(battServiceCB_t pfnServiceCB);
/*********************************************************************
* @fn Batt_SetParameter
*
* @brief Set a Battery Service 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_t will be cast to
* uint16_t pointer).
*
* @return bStatus_t
*/
extern bStatus_t Batt_SetParameter(uint8_t param, uint8_t len, void *value);
/*********************************************************************
* @fn Batt_GetParameter
*
* @brief Get a Battery parameter.
*
* @param param - Profile parameter ID
* @param value - pointer to data to get. This is dependent on
* the parameter ID and WILL be cast to the appropriate
* data type (example: data type of uint16_t will be cast to
* uint16_t pointer).
*
* @return bStatus_t
*/
extern bStatus_t Batt_GetParameter(uint8_t param, void *value);
/*********************************************************************
* @fn Batt_MeasLevel
*
* @brief Measure the battery level and update the battery
* level value in the service characteristics. If
* the battery level-state characteristic is configured
* for notification and the battery level has changed
* since the last measurement, then a notification
* will be sent.
*
* @return Success or Failure
*/
extern bStatus_t Batt_MeasLevel(void);
/*********************************************************************
* @fn Batt_Setup
*
* @brief Set up which ADC source is to be used. Defaults to VDD/3.
*
* @param adc_ch - ADC Channel, e.g. HAL_ADC_CHN_AIN6
* @param minVal - max battery level
* @param maxVal - min battery level
* @param sCB - HW setup callback
* @param tCB - HW tear down callback
* @param cCB - percentage calculation callback
*
* @return none.
*/
extern void Batt_Setup(uint8_t adc_ch, uint16_t minVal, uint16_t maxVal,
battServiceSetupCB_t sCB, battServiceTeardownCB_t tCB,
battServiceCalcCB_t cCB);
/*********************************************************************
* @fn Batt_HandleConnStatusCB
*
* @brief Battery Service link status change handler function.
*
* @param connHandle - connection handle
* @param changeType - type of change
*
* @return none
*/
void Batt_HandleConnStatusCB(uint16_t connHandle, uint8_t changeType);
/*********************************************************************
*********************************************************************/
#ifdef __cplusplus
}
#endif
#endif /* BATTSERVICE_H */