fix code format issue

Signed-off-by: zhaoxingyu <zhaoxingyu@goodix.com>
This commit is contained in:
zhaoxingyu
2024-01-04 16:41:41 +08:00
parent 6e9d896397
commit 7573cb98d2
5 changed files with 94 additions and 146 deletions
@@ -55,59 +55,8 @@ static void system_pmu_calibration_task(void *p_arg);
static app_timer_id_t s_pmu_calibration_timer_id = 0;
#endif
extern uint32_t g_debug_temperature;
#if CFG_LPCLK_INTERNAL_EN
#define PMU_SMALL_INTERVAL_MS (10*1000)
#define TEMPERATURN_HIGH 44
#define TEMPERATURN_LOW 40
static uint32_t pmu_interval_init = 30 * 1000;
static uint32_t pmu_interval_prev = 0;
uint32_t pmu_interval_get(uint32_t is_init)
{
uint32_t interval = 0;
if (g_debug_temperature > TEMPERATURN_HIGH) {
interval = PMU_SMALL_INTERVAL_MS;
} else if (g_debug_temperature >= TEMPERATURN_LOW && g_debug_temperature <= TEMPERATURN_HIGH && is_init) {
interval = PMU_SMALL_INTERVAL_MS;
} else if (g_debug_temperature < TEMPERATURN_LOW) {
interval = pmu_interval_init;
}
return interval;
}
void pmu_timer_handler(void* p_arg)
{
pmu_calibration_handler(p_arg);
uint32_t interval_new;
uint32_t interval_diff;
interval_new = pmu_interval_get(0);
if (interval_new == 0) {
return;
}
interval_diff = interval_new > pmu_interval_prev ?
interval_new - pmu_interval_prev: pmu_interval_prev - interval_new;
if (interval_diff > INTERVAL_MIN) {
#ifdef ENV_USE_FREERTOS
portBASE_TYPE xHigherPriorityTaskWoken;
xTimerChangePeriodFromISR(timer_handle, interval_new, &xHigherPriorityTaskWoken);
portYIELD_FROM_ISR(xHigherPriorityTaskWoken);
#else
app_timer_delete(&s_pmu_calibration_timer_id);
app_timer_create(&s_pmu_calibration_timer_id, ATIMER_REPEAT, pmu_timer_handler);
app_timer_start(s_pmu_calibration_timer_id, interval_new, NULL);
#endif
pmu_interval_prev = interval_new;
}
}
#error "INTERNAL LPCLK is not supported by OHOS"
#endif
/*
@@ -57,6 +57,8 @@
// NOTE: SVC #0 is reserved for freertos, DO NOT USE IT!
#define SVC_TABLE_NUM_MAX 4
#define PMU_CALIBRATION_DURATION_MS (30000)
#define FLASH_CS (LL_GPIO_PIN_2) /* XQSPI flash CS */
#define FLASH_CLK (LL_GPIO_PIN_4) /* XQSPI flash CLK */
#define FLASH_IO_0 (LL_GPIO_PIN_7) /* XQSPI flash IO0 */
@@ -147,7 +149,7 @@ static void BLE_power_check(void)
static void system_calibration(void)
{
system_pmu_calibration_init(30000);
system_pmu_calibration_init(PMU_CALIBRATION_DURATION_MS);
system_pmu_deinit();
SystemCoreSetClock((mcu_clock_type_t)SYSTEM_CLOCK);
+78 -92
View File
@@ -25,142 +25,128 @@
#include "los_task.h"
#include "los_sched.h"
#include <stdint.h>
#include "los_port_pm.h"
#define TICK_MS_IN_HUS (2000)
#define SYS_BLE_SLEEP_ALGO_HUS (580)
#define SLP_WAKUP_ALGO_LP_CNT (32)
#define DEEPSLEEP_TIME_MIN_MS (5)
#define TICK_MS_IN_HUS (2000)
#define SYS_BLE_SLEEP_ALGO_HUS (580)
#define SLP_WAKUP_ALGO_LP_CNT (32)
#define DEEPSLEEP_TIME_MIN_MS (5)
#define DEEPSLEEP_TIME_MIN_SYSTICK (DEEPSLEEP_TIME_MIN_MS * (OS_SYS_CLOCK / 1000))
extern void ultra_wfi(void);
extern uint32_t get_remain_sleep_dur(void);
extern void warm_boot_second(void);
static uint64_t g_tickTimerBaseBeforeSleep = 0;
static uint32_t g_lpCntWhenTickStop = 0;
static uint32_t g_lpCntWhenTickReload = 0;
TINY_RAM_SECTION uint32_t OsSleepMsGet(void)
{
g_tickTimerBaseBeforeSleep = OsGetCurrSchedTimeCycle();
return ((uint32_t)(OsSchedGetNextExpireTime(g_tickTimerBaseBeforeSleep) - g_tickTimerBaseBeforeSleep)) / OS_CYCLE_PER_TICK;
g_tickTimerBaseBeforeSleep = OsGetCurrSchedTimeCycle();
return ((uint32_t)(OsSchedGetNextExpireTime(g_tickTimerBaseBeforeSleep) - g_tickTimerBaseBeforeSleep)) /
OS_CYCLE_PER_TICK;
}
TINY_RAM_SECTION void SysTickReload(void)
{
SysTick->CTRL &= ~SysTick_CTRL_ENABLE_Msk;
SysTick->LOAD = (UINT32)((OS_SYS_CLOCK / LOSCFG_BASE_CORE_TICK_PER_SECOND) - 1UL); /* set reload register */
SysTick->VAL = 0UL; /* Load the SysTick Counter Value */
SysTick->CTRL |= (SysTick_CTRL_ENABLE_Msk | SysTick_CTRL_CLKSOURCE_Msk | SysTick_CTRL_TICKINT_Msk);
SysTick->CTRL &= ~SysTick_CTRL_ENABLE_Msk;
SysTick->LOAD = (UINT32)((OS_SYS_CLOCK / LOSCFG_BASE_CORE_TICK_PER_SECOND) - 1UL);
SysTick->VAL = 0UL;
SysTick->CTRL |= (SysTick_CTRL_ENABLE_Msk | SysTick_CTRL_CLKSOURCE_Msk | SysTick_CTRL_TICKINT_Msk);
}
TINY_RAM_SECTION static void pwrMgmtSleepDurLimit(uint32_t sleepMs)
{
uint32_t sleepHus = sleepMs * TICK_MS_IN_HUS - SYS_BLE_SLEEP_ALGO_HUS;
if (get_remain_sleep_dur() > sleepHus)
{
pwr_mgmt_ble_wakeup();
}
sys_ble_heartbeat_period_set(sleepHus);
uint32_t sleepHus = sleepMs * TICK_MS_IN_HUS - SYS_BLE_SLEEP_ALGO_HUS;
if (get_remain_sleep_dur() > sleepHus) {
pwr_mgmt_ble_wakeup();
}
sys_ble_heartbeat_period_set(sleepHus);
}
TINY_RAM_SECTION static void pwrMgmtEnterSleepWithCond(uint32_t sleepMs)
{
pwrMgmtSleepDurLimit(sleepMs);
pwrMgmtSleepDurLimit(sleepMs);
uint32_t intSave = LOS_IntLock();
uint32_t intSave = LOS_IntLock();
if (DEVICE_BUSY == pwr_mgmt_dev_suspend())
{
ultra_wfi();
LOS_IntRestore(intSave);
return;
}
if (DEVICE_BUSY == pwr_mgmt_dev_suspend()) {
ultra_wfi();
LOS_IntRestore(intSave);
return;
}
if (PMR_MGMT_SLEEP_MODE != pwr_mgmt_mode_get())
{
LOS_IntRestore(intSave);
return;
}
if (PMR_MGMT_SLEEP_MODE != pwr_mgmt_mode_get()) {
LOS_IntRestore(intSave);
return;
}
pwr_mgmt_mode_t bleState = pwr_mgmt_baseband_state_get();
switch (bleState)
{
case PMR_MGMT_IDLE_MODE:
ultra_wfi();
case PMR_MGMT_ACTIVE_MODE:
LOS_IntRestore(intSave);
return;
}
pwr_mgmt_mode_t bleState = pwr_mgmt_baseband_state_get();
switch (bleState) {
case PMR_MGMT_IDLE_MODE:
ultra_wfi();
case PMR_MGMT_ACTIVE_MODE:
LOS_IntRestore(intSave);
return;
}
g_lpCntWhenTickStop = ll_pwr_get_comm_sleep_duration();
g_lpCntWhenTickStop = ll_pwr_get_comm_sleep_duration();
pwr_mgmt_save_context();
pwr_mgmt_save_context();
if (pwr_mgmt_get_wakeup_flag() == COLD_BOOT)
{
if (PMR_MGMT_IDLE_MODE == pwr_mgmt_shutdown())
{
ultra_wfi();
LOS_IntRestore(intSave);
return;
}
LOS_IntRestore(intSave);
}
else
{
pwr_mgmt_set_wakeup_flag(COLD_BOOT);
if (pwr_mgmt_get_wakeup_flag() == COLD_BOOT) {
if (PMR_MGMT_IDLE_MODE == pwr_mgmt_shutdown()) {
ultra_wfi();
LOS_IntRestore(intSave);
return;
}
LOS_IntRestore(intSave);
} else {
pwr_mgmt_set_wakeup_flag(COLD_BOOT);
uint32_t intSaveLocal = LOS_IntLock();
uint32_t intSaveLocal = LOS_IntLock();
g_lpCntWhenTickReload = ll_pwr_get_comm_sleep_duration();
SysTickReload();
g_lpCntWhenTickReload = ll_pwr_get_comm_sleep_duration();
SysTickReload();
uint32_t sleepLpCycles = g_lpCntWhenTickReload - g_lpCntWhenTickStop + SLP_WAKUP_ALGO_LP_CNT;
uint32_t lpCycles2HusErr = 0;
uint32_t sleepHus = sys_lpcycles_2_hus(sleepLpCycles, &lpCycles2HusErr);
uint32_t sleepSystick = sleepHus * (OS_CYCLE_PER_TICK / TICK_MS_IN_HUS);
uint32_t sleepLpCycles = g_lpCntWhenTickReload - g_lpCntWhenTickStop + SLP_WAKUP_ALGO_LP_CNT;
uint32_t lpCycles2HusErr = 0;
uint32_t sleepHus = sys_lpcycles_2_hus(sleepLpCycles, &lpCycles2HusErr);
uint32_t sleepSystick = sleepHus * (OS_CYCLE_PER_TICK / TICK_MS_IN_HUS);
OsTickTimerBaseReset(g_tickTimerBaseBeforeSleep + sleepSystick);
LOS_SchedTickHandler();
OsTickTimerBaseReset(g_tickTimerBaseBeforeSleep + sleepSystick);
LOS_SchedTickHandler();
LOS_IntRestore(intSaveLocal);
warm_boot_second();
}
LOS_IntRestore(intSaveLocal);
warm_boot_second();
}
}
TINY_RAM_SECTION static void osPmEnterHandler(void)
{
uint32_t intSave = LOS_IntLock();
uint32_t intSave = LOS_IntLock();
if ((SCB->ICSR & SCB_ICSR_PENDSTSET_Msk))
{
LOS_IntRestore(intSave);
return;
}
if ((SCB->ICSR & SCB_ICSR_PENDSTSET_Msk)) {
LOS_IntRestore(intSave);
return;
}
uint32_t sleepMs = OsSleepMsGet();
LOS_IntRestore(intSave);
uint32_t sleepMs = OsSleepMsGet();
LOS_IntRestore(intSave);
if (sleepMs < 5)
{
ultra_wfi();
return;
}
if (sleepMs < 5) {
ultra_wfi();
return;
}
if (PMR_MGMT_SLEEP_MODE != pwr_mgmt_mode_get())
{
ultra_wfi();
return;
}
if (PMR_MGMT_SLEEP_MODE != pwr_mgmt_mode_get()) {
ultra_wfi();
return;
}
LOS_TaskLock();
pwrMgmtEnterSleepWithCond(sleepMs);
LOS_TaskUnlock();
LOS_TaskLock();
pwrMgmtEnterSleepWithCond(sleepMs);
LOS_TaskUnlock();
}
void GR551xPwrMgmtInit(void)
{
OsPmEnterHandlerSet(osPmEnterHandler);
OsPmEnterHandlerSet(osPmEnterHandler);
}
+12
View File
@@ -0,0 +1,12 @@
#ifndef __LOS_PORT_PM_H__
#define __LOS_PORT_PM_H__
#include <stdint.h>
void ultra_wfi(void);
uint32_t get_remain_sleep_dur(void);
void warm_boot_second(void);
#endif // __LOS_PORT_PM_H__
-1
View File
@@ -134,7 +134,6 @@ int HiLogWriteInternal(const char *buffer, size_t bufLen)
#if APP_LOG_PORT == 0
int ret = app_uart_transmit_sync(LOG_UART_ID, buffer, bufLen, UART_TX_TIMEOUT);
#elif APP_LOG_PORT == 1
// TODO: implement error code and timeout here
int ret = 0;
bsp_segger_rtt_send(buffer, bufLen);
#endif // APP_LOG_PORT == 0