/********************************** (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 */