提交低电提醒,每10s获取一次电量,低于3500mv播报语音设备电量低
This commit is contained in:
parent
410018accb
commit
2d5c89be30
File diff suppressed because it is too large
Load Diff
@ -33,7 +33,7 @@ extern "C" {
|
||||
{GPIO_10, GPIO_SECOND_FUNC_ENABLE, GPIO_DEV_UART1_RXD, GPIO_IO_DISABLE, GPIO_PULL_UP_EN, GPIO_INT_DISABLE, GPIO_INT_TYPE_LOW_LEVEL, GPIO_LOW_POWER_DISCARD_IO_STATUS, GPIO_DRIVER_CAPACITY_0},\
|
||||
{GPIO_11, GPIO_SECOND_FUNC_ENABLE, GPIO_DEV_UART1_TXD, GPIO_IO_DISABLE, GPIO_PULL_UP_EN, GPIO_INT_DISABLE, GPIO_INT_TYPE_LOW_LEVEL, GPIO_LOW_POWER_DISCARD_IO_STATUS, GPIO_DRIVER_CAPACITY_0},\
|
||||
{GPIO_12, GPIO_SECOND_FUNC_DISABLE, GPIO_DEV_INVALID, GPIO_INPUT_ENABLE, GPIO_PULL_UP_EN, GPIO_INT_DISABLE, GPIO_INT_TYPE_LOW_LEVEL, GPIO_LOW_POWER_DISCARD_IO_STATUS, GPIO_DRIVER_CAPACITY_0},\
|
||||
{GPIO_13, GPIO_SECOND_FUNC_DISABLE, GPIO_DEV_INVALID, GPIO_INPUT_ENABLE, GPIO_PULL_UP_EN, GPIO_INT_DISABLE, GPIO_INT_TYPE_LOW_LEVEL, GPIO_LOW_POWER_DISCARD_IO_STATUS, GPIO_DRIVER_CAPACITY_0},\
|
||||
{GPIO_13, GPIO_SECOND_FUNC_ENABLE, GPIO_DEV_ADC15, GPIO_IO_DISABLE, GPIO_PULL_DISABLE, GPIO_INT_DISABLE, GPIO_INT_TYPE_LOW_LEVEL, GPIO_LOW_POWER_DISCARD_IO_STATUS, GPIO_DRIVER_CAPACITY_0},\
|
||||
{GPIO_14, GPIO_SECOND_FUNC_ENABLE, GPIO_DEV_SDIO_HOST_CLK, GPIO_IO_DISABLE, GPIO_PULL_DISABLE, GPIO_INT_DISABLE, GPIO_INT_TYPE_LOW_LEVEL, GPIO_LOW_POWER_DISCARD_IO_STATUS, GPIO_DRIVER_CAPACITY_3},\
|
||||
{GPIO_15, GPIO_SECOND_FUNC_ENABLE, GPIO_DEV_SDIO_HOST_CMD, GPIO_IO_DISABLE, GPIO_PULL_DISABLE, GPIO_INT_DISABLE, GPIO_INT_TYPE_LOW_LEVEL, GPIO_LOW_POWER_DISCARD_IO_STATUS, GPIO_DRIVER_CAPACITY_1},\
|
||||
{GPIO_16, GPIO_SECOND_FUNC_ENABLE, GPIO_DEV_SDIO_HOST_DATA0, GPIO_IO_DISABLE, GPIO_PULL_DISABLE, GPIO_INT_DISABLE, GPIO_INT_TYPE_LOW_LEVEL, GPIO_LOW_POWER_DISCARD_IO_STATUS, GPIO_DRIVER_CAPACITY_1},\
|
||||
|
@ -4,7 +4,7 @@ set(srcs)
|
||||
list(APPEND srcs
|
||||
app_main.c
|
||||
spi_led.c
|
||||
|
||||
bat_main.c
|
||||
)
|
||||
|
||||
if (CONFIG_SYS_CPU0)
|
||||
|
@ -27,7 +27,7 @@
|
||||
#include "bk_ota_private.h"
|
||||
#define TAG "app_evt"
|
||||
#include "spi_led.h" //zhanyu
|
||||
|
||||
#include "bat_main.h"//zhanyu
|
||||
#define LOGI(...) BK_LOGI(TAG, ##__VA_ARGS__)
|
||||
#define LOGW(...) BK_LOGW(TAG, ##__VA_ARGS__)
|
||||
#define LOGE(...) BK_LOGE(TAG, ##__VA_ARGS__)
|
||||
@ -162,6 +162,25 @@ static uint8_t battery_event_callback(evt_battery event_param)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static uint8_t battery_main_event_callback(evt_main_battery event_param)//zhanyu
|
||||
{
|
||||
switch (event_param)
|
||||
{
|
||||
case EVT_BATTERY_MAIN_CHARGING:
|
||||
app_event_send_msg(APP_EVT_CHARGING, 0);
|
||||
break;
|
||||
case EVT_BATTERY_MAIN_LOW_VOLTAGE:
|
||||
app_event_send_msg(APP_EVT_LOW_VOLTAGE, 0);
|
||||
break;
|
||||
case EVT_SHUTDOWN_MAIN_LOW_BATTERY:
|
||||
app_event_send_msg(APP_EVT_SHUTDOWN_LOW_BATTERY, 0);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
// red:if high priority conflicts with low-priority, should stay at high priority states
|
||||
enum
|
||||
{
|
||||
@ -338,6 +357,9 @@ static void app_event_thread(beken_thread_arg_t data)
|
||||
update_countdown();
|
||||
|
||||
battery_event_callback_register(battery_event_callback);
|
||||
|
||||
battery_main_event_callback_register(battery_main_event_callback);//zhanyu
|
||||
|
||||
media_app_asr_evt_register_callback(app_event_asr_evt_callback);
|
||||
|
||||
while (1)
|
||||
@ -504,8 +526,9 @@ static void app_event_thread(beken_thread_arg_t data)
|
||||
|
||||
case APP_EVT_LOW_VOLTAGE:
|
||||
LOGI("APP_EVT_LOW_VOLTAGE\n");
|
||||
skip_countdown_update = true;
|
||||
warning_state |= 1 << WARNING_LOW_BATTERY;
|
||||
//zhanyu
|
||||
// skip_countdown_update = true;
|
||||
// warning_state |= 1 << WARNING_LOW_BATTERY;
|
||||
#if CONFIG_AUD_INTF_SUPPORT_PROMPT_TONE
|
||||
bk_aud_intf_voc_play_prompt_tone(AUD_INTF_VOC_LOW_VOLTAGE);
|
||||
#endif
|
||||
|
@ -41,6 +41,7 @@
|
||||
#include "components/bluetooth/bk_dm_bluetooth.h"
|
||||
#include "app_main.h"
|
||||
#include "spi_led.h"
|
||||
#include "bat_main.h"
|
||||
|
||||
|
||||
extern void user_app_main(void);
|
||||
@ -57,6 +58,9 @@ extern void bk_set_jtag_mode(uint32_t cpu_id, uint32_t group_id);
|
||||
#define CONFIG_WIFI_SSID "BEKEN-CES" //"test123"//"biubiu"//"MEGSCREEN_TEST"//"cs-ruowang-2.4G"//"Carl"//"NXIOT"
|
||||
#define CONFIG_WIFI_PASSWORD "1233211234567" //"1234567890"//"87654321"//"987654321"//"wohenruo"//"12345678"//"88888888"
|
||||
|
||||
//static UINT8 flag = 0;
|
||||
|
||||
|
||||
#ifdef CONFIG_LDO3V3_ENABLE
|
||||
#ifndef LDO3V3_CTRL_GPIO
|
||||
#ifdef CONFIG_LDO3V3_CTRL_GPIO
|
||||
@ -285,69 +289,69 @@ void ai_agent_config()
|
||||
long to execute, it will cause subsequent key events to be responded to untimely.*/
|
||||
static void handle_system_event(key_event_t event)
|
||||
{
|
||||
uint32_t time;
|
||||
// uint32_t time;
|
||||
extern void bk_bt_app_avrcp_ct_vol_change(uint32_t platform_vol);
|
||||
switch (event)
|
||||
{
|
||||
case VOLUME_UP:
|
||||
{
|
||||
uint32_t old_volume = volume;
|
||||
volume_increase();
|
||||
if (old_volume != volume)
|
||||
{
|
||||
#if CONFIG_A2DP_SINK_DEMO
|
||||
bk_bt_app_avrcp_ct_vol_change(volume);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
break;
|
||||
case VOLUME_DOWN:
|
||||
{
|
||||
uint32_t old_volume = volume;
|
||||
volume_decrease();
|
||||
if (old_volume != volume)
|
||||
{
|
||||
#if CONFIG_A2DP_SINK_DEMO
|
||||
bk_bt_app_avrcp_ct_vol_change(volume);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
break;
|
||||
case SHUT_DOWN:
|
||||
time = rtos_get_time(); // long press more than 6s
|
||||
if (time < 9000)
|
||||
{
|
||||
break;
|
||||
}
|
||||
power_off();
|
||||
break;
|
||||
case POWER_ON:
|
||||
power_on();
|
||||
break;
|
||||
case AI_AGENT_CONFIG:
|
||||
ai_agent_config();
|
||||
break;
|
||||
case CONFIG_NETWORK:
|
||||
BK_LOGW(TAG, "Start to config network!\n");
|
||||
// case VOLUME_UP:
|
||||
// {
|
||||
// uint32_t old_volume = volume;
|
||||
// volume_increase();
|
||||
// if (old_volume != volume)
|
||||
// {
|
||||
// #if CONFIG_A2DP_SINK_DEMO
|
||||
// bk_bt_app_avrcp_ct_vol_change(volume);
|
||||
// #endif
|
||||
// }
|
||||
// }
|
||||
// break;
|
||||
// case VOLUME_DOWN:
|
||||
// {
|
||||
// uint32_t old_volume = volume;
|
||||
// volume_decrease();
|
||||
// if (old_volume != volume)
|
||||
// {
|
||||
// #if CONFIG_A2DP_SINK_DEMO
|
||||
// bk_bt_app_avrcp_ct_vol_change(volume);
|
||||
// #endif
|
||||
// }
|
||||
// }
|
||||
// break;
|
||||
// case SHUT_DOWN:
|
||||
// time = rtos_get_time(); // long press more than 6s
|
||||
// if (time < 9000)
|
||||
// {
|
||||
// break;
|
||||
// }
|
||||
// power_off();
|
||||
// break;
|
||||
// case POWER_ON:
|
||||
// power_on();
|
||||
// break;
|
||||
// case AI_AGENT_CONFIG:
|
||||
// ai_agent_config();
|
||||
// break;
|
||||
// case CONFIG_NETWORK:
|
||||
// BK_LOGW(TAG, "Start to config network!\n");
|
||||
|
||||
int ret = rtos_create_thread(&config_network_thread_handle,
|
||||
CONFIG_NETWORK_TASK_PRIORITY,
|
||||
"wifi_config_network",
|
||||
(beken_thread_function_t)prepare_config_network_main,
|
||||
4096,
|
||||
(beken_thread_arg_t)0);
|
||||
if (ret != kNoErr)
|
||||
{
|
||||
BK_LOGE(TAG, "wifi config network task fail \r\n");
|
||||
config_network_thread_handle = NULL;
|
||||
}
|
||||
break;
|
||||
case FACTORY_RESET:
|
||||
BK_LOGW(TAG, "trigger factory config reset\r\n");
|
||||
bk_bluetooth_deinit();
|
||||
bk_factory_reset();
|
||||
bk_reboot();
|
||||
break;
|
||||
// int ret = rtos_create_thread(&config_network_thread_handle,
|
||||
// CONFIG_NETWORK_TASK_PRIORITY,
|
||||
// "wifi_config_network",
|
||||
// (beken_thread_function_t)prepare_config_network_main,
|
||||
// 4096,
|
||||
// (beken_thread_arg_t)0);
|
||||
// if (ret != kNoErr)
|
||||
// {
|
||||
// BK_LOGE(TAG, "wifi config network task fail \r\n");
|
||||
// config_network_thread_handle = NULL;
|
||||
// }
|
||||
// break;
|
||||
// case FACTORY_RESET:
|
||||
// BK_LOGW(TAG, "trigger factory config reset\r\n");
|
||||
// bk_bluetooth_deinit();
|
||||
// bk_factory_reset();
|
||||
// bk_reboot();
|
||||
// break;
|
||||
case TURN_OFF_LOGHT:
|
||||
bk_printf("ispoweron = %d\n", ispoweron);
|
||||
// clearallled();
|
||||
@ -655,6 +659,7 @@ static void handle_system_event(key_event_t event)
|
||||
//poka
|
||||
ws2812_init();
|
||||
thing_init();
|
||||
init_bat_timer();
|
||||
// spi_led_init();
|
||||
bk_printf("VER:1.0.3 2025.05.27\r\n");
|
||||
#endif
|
||||
|
213
bk_aidk/projects/beken_wss_paopao/main/bat_main.c
Executable file
213
bk_aidk/projects/beken_wss_paopao/main/bat_main.c
Executable file
@ -0,0 +1,213 @@
|
||||
#include <common/sys_config.h>
|
||||
#include <components/log.h>
|
||||
#include <modules/wifi.h>
|
||||
#include <components/netif.h>
|
||||
#include <components/event.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "bk_private/bk_init.h"
|
||||
#include <components/system.h>
|
||||
#include <os/os.h>
|
||||
#include <components/shell_task.h>
|
||||
#include "cli.h"
|
||||
#include "media_service.h"
|
||||
#include <driver/pwr_clk.h>
|
||||
#include <driver/pwr_clk.h>
|
||||
#include <modules/pm.h>
|
||||
#if CONFIG_BUTTON
|
||||
#include <key_main.h>
|
||||
#include <key_adapter.h>
|
||||
#endif
|
||||
#include "sys_driver.h"
|
||||
#include "sys_hal.h"
|
||||
#include <driver/gpio.h>
|
||||
#include "gpio_driver.h"
|
||||
#include "bk_genie_comm.h"
|
||||
#include "wifi_boarding_utils.h"
|
||||
#if (CONFIG_SYS_CPU0)
|
||||
#include "beken_config.h"
|
||||
#include "aud_intf.h"
|
||||
#include "bk_factory_config.h"
|
||||
#if CONFIG_NETWORK_AUTO_RECONNECT
|
||||
#include "bk_genie_smart_config.h"
|
||||
#endif
|
||||
#include "motor.h"
|
||||
#endif
|
||||
|
||||
#include "app_event.h"
|
||||
#include "countdown.h"
|
||||
#include <led_blink.h>
|
||||
#include <common/bk_include.h>
|
||||
#include "components/bluetooth/bk_dm_bluetooth.h"
|
||||
#include "app_main.h"
|
||||
#include "spi_led.h"
|
||||
|
||||
#include "bk_saradc.h"
|
||||
#include <driver/adc.h>
|
||||
#include "adc_statis.h"
|
||||
#include <os/os.h>
|
||||
#include "sys_driver.h"
|
||||
#include <bat_main.h>
|
||||
#define BAT_DETEC_ADC_CLK 203125
|
||||
#define BAT_DETEC_ADC_STEADY_CTRL 7
|
||||
#define BAT_DETEC_ADC_SAMPLE_RATE 0
|
||||
|
||||
static battery_main_event_callback_t s_battery_main_event_callback = NULL;
|
||||
int battery_main_event_callback_register(battery_main_event_callback_t callback)
|
||||
{
|
||||
s_battery_main_event_callback = callback;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static uint16_t *s_raw_voltage_data = NULL;
|
||||
static uint16_t prvCalculateVoltage(void)
|
||||
{
|
||||
if (s_raw_voltage_data == NULL)
|
||||
{
|
||||
bk_printf("s_raw_voltage_data is NULL.\r\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
uint32_t sum = 0;
|
||||
uint32_t count = 0;
|
||||
|
||||
for (uint32_t i = 5; i < 10; i++)
|
||||
{
|
||||
if ((s_raw_voltage_data[i] != 0) &&
|
||||
(s_raw_voltage_data[i] != 2048))
|
||||
{
|
||||
sum += s_raw_voltage_data[i];
|
||||
count++;
|
||||
}
|
||||
}
|
||||
|
||||
if (count == 0)
|
||||
{
|
||||
s_raw_voltage_data[0] = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
s_raw_voltage_data[0] = (uint16_t)(sum / count);
|
||||
}
|
||||
|
||||
return s_raw_voltage_data[0];
|
||||
}
|
||||
|
||||
static bk_err_t prvStartBatteryAdcOneTime()
|
||||
{
|
||||
// uint16_t value = 0;
|
||||
uint16_t vol;
|
||||
//int i1 = 0;
|
||||
// if (vol == NULL) {
|
||||
// BAT_MONITOR_WPRT("Error: vol pointer is NULL\r\n");
|
||||
// return BK_FAIL;
|
||||
// }
|
||||
|
||||
gpio_dev_unmap(GPIO_13);
|
||||
// bk_gpio_disable_input(GPIO_0);
|
||||
// bk_gpio_enable_input(GPIO_13);
|
||||
// bk_gpio_enable_pull(GPIO_13);
|
||||
// bk_gpio_pull_up(GPIO_13);
|
||||
// gpio_dev_map(GPIO_13, GPIO_DEV_ADC15);
|
||||
// bk_gpio_disable_output(GPIO_13);
|
||||
|
||||
BK_LOG_ON_ERR(bk_adc_acquire());
|
||||
BK_LOG_ON_ERR(bk_adc_init(ADC_15)); // ADC_0
|
||||
|
||||
adc_config_t config;
|
||||
os_memset(&config, 0, sizeof(config));
|
||||
|
||||
config.chan = ADC_15; // ADC_0
|
||||
config.adc_mode = ADC_CONTINUOUS_MODE;
|
||||
config.src_clk = ADC_SCLK_XTAL_26M;
|
||||
config.clk = BAT_DETEC_ADC_CLK;
|
||||
config.saturate_mode = 4;
|
||||
config.steady_ctrl = BAT_DETEC_ADC_STEADY_CTRL;
|
||||
config.adc_filter = 0;
|
||||
config.sample_rate = BAT_DETEC_ADC_SAMPLE_RATE;
|
||||
|
||||
if (config.adc_mode == ADC_CONTINUOUS_MODE)
|
||||
{
|
||||
config.sample_rate = 0;
|
||||
}
|
||||
|
||||
BK_LOG_ON_ERR(bk_adc_set_config(&config));
|
||||
BK_LOG_ON_ERR(bk_adc_enable_bypass_clalibration());
|
||||
BK_LOG_ON_ERR(bk_adc_start());
|
||||
|
||||
// BK_LOG_ON_ERR(bk_adc_read(&value, ADC_READ_SEMAPHORE_WAIT_TIME));
|
||||
// bk_printf("ADC VALUEbbbbbbbb: %d .\r\n", value);
|
||||
|
||||
s_raw_voltage_data = (uint16_t *)os_malloc(10 * sizeof(uint16_t));
|
||||
bk_err_t ret = bk_adc_read_raw(s_raw_voltage_data,
|
||||
10,
|
||||
ADC_READ_SEMAPHORE_WAIT_TIME);
|
||||
|
||||
if (ret != BK_OK)
|
||||
{
|
||||
bk_printf("Failed to read ADC data, err: %d\r\n", ret);
|
||||
vol = 0;
|
||||
goto ADC_EXIT;
|
||||
}
|
||||
// for(i1 = 0;i1<10;i1 ++){
|
||||
// bk_printf("ADC s_raw_voltage_data[%d]: %d .\r\n", i1,s_raw_voltage_data[i1]);
|
||||
// }
|
||||
|
||||
vol = prvCalculateVoltage();
|
||||
// BAT_MONITOR_PRT("ADC VALUE: %d .\r\n", *vol);
|
||||
bk_printf("ADC bat_value: %d mv\r\n", vol);
|
||||
if (vol < 3500)
|
||||
{
|
||||
if (s_battery_main_event_callback)
|
||||
{
|
||||
bk_printf("ADC bat_value < 3500\r\n");
|
||||
s_battery_main_event_callback(EVT_BATTERY_MAIN_LOW_VOLTAGE);
|
||||
}
|
||||
}
|
||||
|
||||
ADC_EXIT:
|
||||
if (s_raw_voltage_data)
|
||||
{
|
||||
os_free(s_raw_voltage_data);
|
||||
s_raw_voltage_data = NULL;
|
||||
}
|
||||
BK_LOG_ON_ERR(bk_adc_stop());
|
||||
BK_LOG_ON_ERR(bk_adc_deinit(ADC_15));
|
||||
BK_LOG_ON_ERR(bk_adc_release());
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
beken_timer_t g_adc_bat;
|
||||
|
||||
static void adc_bat_ticks(void *param)
|
||||
{
|
||||
|
||||
//bk_printf("adc_bat_ticks\n");
|
||||
prvStartBatteryAdcOneTime();
|
||||
}
|
||||
void init_bat_timer()
|
||||
{
|
||||
|
||||
bk_err_t result;
|
||||
|
||||
bk_printf("init_bat_timer\n");
|
||||
|
||||
result = rtos_init_timer(&g_adc_bat,
|
||||
10000,
|
||||
adc_bat_ticks,
|
||||
(void *)0);
|
||||
|
||||
if (result != 0)
|
||||
{
|
||||
bk_printf("rtos_init_bat_timer fail\r\n");
|
||||
}
|
||||
|
||||
result = rtos_start_timer(&g_adc_bat);
|
||||
if (result != 0)
|
||||
{
|
||||
bk_printf("rtos_start_bat_timer fail\r\n");
|
||||
}
|
||||
|
||||
|
||||
}
|
9
bk_aidk/projects/beken_wss_paopao/main/bat_main.h
Executable file
9
bk_aidk/projects/beken_wss_paopao/main/bat_main.h
Executable file
@ -0,0 +1,9 @@
|
||||
typedef enum{
|
||||
EVT_BATTERY_MAIN_CHARGING = 0,
|
||||
EVT_BATTERY_MAIN_LOW_VOLTAGE,
|
||||
EVT_SHUTDOWN_MAIN_LOW_BATTERY,
|
||||
}evt_main_battery;
|
||||
|
||||
typedef uint8_t (*battery_main_event_callback_t)(evt_main_battery event_param);
|
||||
int battery_main_event_callback_register(battery_main_event_callback_t callback);
|
||||
void init_bat_timer();
|
Loading…
x
Reference in New Issue
Block a user