/* * Copyright (c) 2021 Bestechnic (Shanghai) Co., Ltd. All rights reserved. * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #ifndef __APP_BATTERY_H__ #define __APP_BATTERY_H__ #ifdef __cplusplus extern "C" { #endif #include #define APP_BATTERY_LEVEL_MIN (0) #ifdef __INTERCONNECTION__ #define APP_BATTERY_LEVEL_MAX (100) #define APP_BATTERY_DEFAULT_INFO 0xE4 typedef struct { uint8_t chargingStatus : 1; uint8_t batteryLevel : 7; }APP_BATTERY_INFO_T; uint8_t* app_battery_get_mobile_support_self_defined_command_p(void); #else // #ifdef __INTERCONNECTION__ #define APP_BATTERY_LEVEL_MAX (9) #endif // #ifdef __INTERCONNECTION__ #define APP_BATTERY_LEVEL_NUM (APP_BATTERY_LEVEL_MAX-APP_BATTERY_LEVEL_MIN+1) enum APP_BATTERY_STATUS_T { APP_BATTERY_STATUS_NORMAL, APP_BATTERY_STATUS_CHARGING, APP_BATTERY_STATUS_OVERVOLT, APP_BATTERY_STATUS_UNDERVOLT, APP_BATTERY_STATUS_PDVOLT, APP_BATTERY_STATUS_PLUGINOUT, APP_BATTERY_STATUS_INVALID, APP_BATTERY_STATUS_QTY }; #define APP_BATTERY_OPEN_MODE_INVALID (-1) #define APP_BATTERY_OPEN_MODE_NORMAL (0) #define APP_BATTERY_OPEN_MODE_CHARGING (1) #define APP_BATTERY_OPEN_MODE_CHARGING_PWRON (2) typedef uint16_t APP_BATTERY_MV_T; enum APP_BATTERY_CHARGER_T { APP_BATTERY_CHARGER_PLUGOUT = 0, APP_BATTERY_CHARGER_PLUGIN, APP_BATTERY_CHARGER_QTY, }; union APP_BATTERY_MSG_PRAMS{ APP_BATTERY_MV_T volt; enum APP_BATTERY_CHARGER_T charger; uint32_t prams; }; typedef void (*APP_BATTERY_CB_T)(APP_BATTERY_MV_T currvolt, uint8_t currlevel,enum APP_BATTERY_STATUS_T curstatus,uint32_t status, union APP_BATTERY_MSG_PRAMS prams); int app_battery_get_info(APP_BATTERY_MV_T *currvolt, uint8_t *currlevel, enum APP_BATTERY_STATUS_T *status); /** * Battery App owns its own context where it will periodically update the * battery level and state. Makes sense for it to act as a Model and publish * battery change events to any interested users. * * Note: Callback will execute out of BES "App Thread" context. * * TODO: ideally implemented as proper observer pattern with support for multiple * listeners * * Returns * - 0: On success * - 1: If registration failed */ int app_battery_register(APP_BATTERY_CB_T user_cb); int app_battery_open(void); int app_battery_start(void); int app_battery_stop(void); int app_battery_close(void); int app_battery_charger_indication_open(void); int8_t app_battery_current_level(void); int8_t app_battery_is_charging(void); int ntc_capture_open(void); int ntc_capture_start(void); #ifdef __cplusplus } #endif #endif