2025-12-06 13:49:01 +08:00
|
|
|
|
/*
|
|
|
|
|
|
* blv_authorize.c
|
|
|
|
|
|
*
|
|
|
|
|
|
* Created on: Nov 8, 2025
|
|
|
|
|
|
* Author: cc
|
|
|
|
|
|
*/
|
|
|
|
|
|
#include "blv_authorize.h"
|
|
|
|
|
|
|
|
|
|
|
|
#include "SPI_SRAM.h"
|
|
|
|
|
|
#include "rw_logging.h"
|
|
|
|
|
|
#include "sram_mem_addr.h"
|
2026-01-09 19:16:38 +08:00
|
|
|
|
#include "debug.h"
|
|
|
|
|
|
#include "rtc.h"
|
2025-12-06 13:49:01 +08:00
|
|
|
|
#include <string.h>
|
|
|
|
|
|
|
|
|
|
|
|
BLV_AUTHORIZE sys_authorize;
|
|
|
|
|
|
|
|
|
|
|
|
/*******************************************************************************
|
|
|
|
|
|
* Function Name : BLV_Set_Authorize_Status
|
|
|
|
|
|
* Description : <EFBFBD><EFBFBD><EFBFBD><EFBFBD>BLVϵͳ<EFBFBD><EFBFBD>Ȩ״̬
|
|
|
|
|
|
* Input :
|
|
|
|
|
|
expires_time :<EFBFBD><EFBFBD>Ȩʱ<EFBFBD><EFBFBD>
|
|
|
|
|
|
* Return : None
|
|
|
|
|
|
*******************************************************************************/
|
|
|
|
|
|
__attribute__((section(".non_0_wait"))) void BLV_Set_Authorize_Status(uint32_t Expires_time,uint8_t lock)
|
|
|
|
|
|
{
|
|
|
|
|
|
memset(&sys_authorize,0,sizeof(BLV_AUTHORIZE));
|
|
|
|
|
|
|
|
|
|
|
|
sys_authorize.lock_status = lock;
|
|
|
|
|
|
sys_authorize.expires_time = Expires_time;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/*******************************************************************************
|
|
|
|
|
|
* Function Name : BLV_Authorize_Processing
|
|
|
|
|
|
* Description : BLVϵͳ<EFBFBD><EFBFBD>Ȩ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
* Input :
|
|
|
|
|
|
utc_time :<EFBFBD><EFBFBD><EFBFBD><EFBFBD>utcʱ<EFBFBD><EFBFBD>
|
|
|
|
|
|
* Return : None
|
|
|
|
|
|
*******************************************************************************/
|
|
|
|
|
|
__attribute__((section(".non_0_wait"))) void BLV_Authorize_Processing(uint32_t utc_time)
|
|
|
|
|
|
{
|
|
|
|
|
|
uint32_t temp_tick = utc_time;
|
|
|
|
|
|
uint32_t temp_lock = 0;
|
|
|
|
|
|
if((sys_authorize.expires_time != 0x00) && (temp_tick >= sys_authorize.expires_time ) )
|
|
|
|
|
|
{
|
|
|
|
|
|
sys_authorize.lock_status = 1;
|
|
|
|
|
|
/*<2A><><EFBFBD>ʱ<E2B5BD>䵽<EFBFBD>ں<DABA><F3A3ACBD><EFBFBD><EFBFBD><EFBFBD>״̬<D7B4><CCAC>λ<EFBFBD><CEBB>ͬʱ<CDAC><CAB1><EFBFBD>浽Flash<73><68>*/
|
|
|
|
|
|
temp_lock = SRAM_Read_DW(SRAM_Register_Start_ADDRESS + Register_MandateLock_OFFSET);
|
|
|
|
|
|
if(temp_lock != 0x00000001)
|
|
|
|
|
|
{
|
|
|
|
|
|
SRAM_Write_DW(0x01,SRAM_Register_Start_ADDRESS + Register_MandateLock_OFFSET);
|
|
|
|
|
|
//Retain_Flash_Register_Data();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/*******************************************************************************
|
|
|
|
|
|
* Function Name : Get_Authorize_Lock_Status
|
|
|
|
|
|
* Description : <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD>Ȩ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
|
|
|
|
|
|
* Input :
|
|
|
|
|
|
0x00<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD>Ȩδ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
0x01<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD>Ȩ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
*******************************************************************************/
|
|
|
|
|
|
__attribute__((section(".non_0_wait"))) void Set_Authorize_Lock_Status(uint8_t state)
|
|
|
|
|
|
{
|
|
|
|
|
|
sys_authorize.lock_status = state;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/*******************************************************************************
|
|
|
|
|
|
* Function Name : Get_Authorize_Lock_Status
|
|
|
|
|
|
* Description : <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD>Ȩ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
|
|
|
|
|
|
* Input : None
|
|
|
|
|
|
* Return :
|
|
|
|
|
|
0x00<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD>Ȩδ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
0x01<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD>Ȩ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
*******************************************************************************/
|
|
|
|
|
|
__attribute__((section(".non_0_wait"))) uint8_t Get_Authorize_Lock_Status(void)
|
|
|
|
|
|
{
|
|
|
|
|
|
if(sys_authorize.expires_time != 0x00) return sys_authorize.lock_status;
|
|
|
|
|
|
return 0x00;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/*******************************************************************************
|
|
|
|
|
|
* Function Name : Get_Authorize_UnixTime
|
|
|
|
|
|
* Description : <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD>Ȩ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
* Input : None
|
|
|
|
|
|
* Return : <EFBFBD><EFBFBD>Ȩ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
*******************************************************************************/
|
|
|
|
|
|
__attribute__((section(".non_0_wait"))) uint32_t Get_Authorize_UnixTime(void)
|
|
|
|
|
|
{
|
|
|
|
|
|
return sys_authorize.expires_time;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2026-01-09 19:16:38 +08:00
|
|
|
|
/*******************************************************************************
|
|
|
|
|
|
* Function Name : BLV_Authorize_Task
|
|
|
|
|
|
* Description : BLV<EFBFBD><EFBFBD>Ȩ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
*******************************************************************************/
|
|
|
|
|
|
__attribute__((section(".non_0_wait"))) void BLV_Authorize_Task(void)
|
|
|
|
|
|
{
|
|
|
|
|
|
static uint32_t sys_tick = 0;
|
|
|
|
|
|
uint32_t temp_unix = 0,curr_unix = 0;
|
|
|
|
|
|
|
|
|
|
|
|
if(SysTick_1ms - sys_tick > 10000)
|
|
|
|
|
|
{
|
|
|
|
|
|
sys_tick = SysTick_1ms;
|
|
|
|
|
|
|
|
|
|
|
|
Dbg_Println(DBG_BIT_SYS_STATUS_bit,"RTCʱ<EFBFBD><EFBFBD>: 20%02X-%02X-%02X %02X:%02X:%02X <20><><EFBFBD><EFBFBD>%X",RTC_Raw_Data.year,RTC_Raw_Data.month,RTC_Raw_Data.day,RTC_Raw_Data.hour,RTC_Raw_Data.minute,RTC_Raw_Data.second,RTC_Raw_Data.week);
|
|
|
|
|
|
|
|
|
|
|
|
temp_unix = RTC_Conversion_To_Unix(&RTC_Raw_Data);
|
|
|
|
|
|
|
|
|
|
|
|
BLV_Authorize_Processing(temp_unix);
|
|
|
|
|
|
|
|
|
|
|
|
if(Get_Authorize_Lock_Status() == 0x01)
|
|
|
|
|
|
{
|
|
|
|
|
|
Dbg_Println(DBG_BIT_SYS_STATUS_bit,"MCU<EFBFBD><EFBFBD>Ȩ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>:%08X now:%08X-----",Get_Authorize_UnixTime(),temp_unix);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/*<2A><><EFBFBD>в<EFBFBD><D0B2><EFBFBD>12ʱ<32>䱣<EFBFBD>棬<EFBFBD><E6A3AC>ʱ<EFBFBD>䱣<EFBFBD>浽Flash<73><68>*/
|
|
|
|
|
|
curr_unix = SRAM_Read_DW(SRAM_Register_Start_ADDRESS + Register_CurrentUsageTime_OFFSET);
|
|
|
|
|
|
if(temp_unix - curr_unix > 43200)
|
|
|
|
|
|
{
|
|
|
|
|
|
SRAM_Write_DW(temp_unix,SRAM_Register_Start_ADDRESS + Register_CurrentUsageTime_OFFSET);
|
|
|
|
|
|
Retain_Flash_Register_Data();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2025-12-06 13:49:01 +08:00
|
|
|
|
|