69 lines
1.9 KiB
C
69 lines
1.9 KiB
C
/****************************************************************************
|
|
|
|
Copyright(c) 2019 by Aerospace C.Power (Chongqing) Microelectronics. ALL RIGHTS RESERVED.
|
|
|
|
This Information is proprietary to Aerospace C.Power (Chongqing) Microelectronics and MAY NOT
|
|
be copied by any method or incorporated into another program without
|
|
the express written consent of Aerospace C.Power. This Information or any portion
|
|
thereof remains the property of Aerospace C.Power. The Information contained herein
|
|
is believed to be accurate and Aerospace C.Power assumes no responsibility or
|
|
liability for its use in any way and conveys no license or title under
|
|
any patent or copyright and makes no representation or warranty that this
|
|
Information is free from patent or copyright infringement.
|
|
|
|
****************************************************************************/
|
|
|
|
#include "os_types.h"
|
|
#include "sec_cpu_utils.h"
|
|
#include "sec_cpu_timer.h"
|
|
#include "sec_cpu_crypto_share.h"
|
|
|
|
#define SEC_CPU_FSM_LOOP_US (10 * 1000)
|
|
|
|
#define SEC_CPU_FSM_EVENT_LOOP_TIMEOUT (1 << 31)
|
|
|
|
typedef struct _sec_cpu_fsm {
|
|
/* fsm loop timestamp */
|
|
uint32_t loop_ts;
|
|
} sec_cpu_fsm_t;
|
|
|
|
static sec_cpu_fsm_t g_sec_cpu_fsm = { 0 };
|
|
|
|
static uint32_t sec_cpu_fsm_loop(uint32_t events)
|
|
{
|
|
(void)events;
|
|
|
|
sec_cpu_crypto_share_query();
|
|
|
|
return 0;
|
|
}
|
|
|
|
static uint32_t sec_cpu_fsm_event_wait(uint32_t timeout_us)
|
|
{
|
|
uint32_t wait_time, ts;
|
|
|
|
do {
|
|
ts = sec_cpu_timer_sys_get();
|
|
wait_time = (uint32_t)(ts - g_sec_cpu_fsm.loop_ts);
|
|
} while (wait_time < timeout_us);
|
|
g_sec_cpu_fsm.loop_ts = ts;
|
|
|
|
return SEC_CPU_FSM_EVENT_LOOP_TIMEOUT;
|
|
}
|
|
|
|
void sec_cpu_fsm_main(void)
|
|
{
|
|
uint32_t events;
|
|
|
|
for (;;) {
|
|
events = sec_cpu_fsm_event_wait(SEC_CPU_FSM_LOOP_US);
|
|
|
|
sec_cpu_fsm_loop(events);
|
|
}
|
|
}
|
|
|
|
void sec_cpu_fsm_init(void)
|
|
{
|
|
sec_cpu_crypto_share_init();
|
|
}
|