795 lines
25 KiB
C
795 lines
25 KiB
C
|
#include "config_info.h"
|
|||
|
#include "getcfg.h"
|
|||
|
#include "onchip_flash.h"
|
|||
|
#include "bsp_ser.h"
|
|||
|
#include "check.h"
|
|||
|
#include "w25q128.h"
|
|||
|
#include "encryption_chip.h"
|
|||
|
#include "ds3231.h"
|
|||
|
#include "udp.h"
|
|||
|
|
|||
|
u_int8_t g_device_local_ip[21];
|
|||
|
u_int8_t g_device_mac[21];
|
|||
|
u_int8_t g_device_netmask[21];
|
|||
|
u_int8_t g_device_gateway[21];
|
|||
|
|
|||
|
u_int8_t g_device_term_ip[21];
|
|||
|
u_int8_t g_device_a9_ip[21];
|
|||
|
u_int8_t g_device_server_ip[21];
|
|||
|
u_int8_t g_device_web_ip[21];
|
|||
|
|
|||
|
int ipStrValid( const char * str_ip,u_int8_t *rvalue);
|
|||
|
/******************************************************************************
|
|||
|
** <EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƣ<EFBFBD>config.c
|
|||
|
** <EFBFBD><EFBFBD> <EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>صĺ<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
** <EFBFBD><EFBFBD><EFBFBD><EFBFBD>־<EFBFBD><EFBFBD>
|
|||
|
******************************************************************************/
|
|||
|
|
|||
|
static u_int8_t config_buff[1500];
|
|||
|
/******************************************************************************
|
|||
|
** <EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƣ<EFBFBD>read_config_file
|
|||
|
** <EFBFBD><EFBFBD> <EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD>Ƭ<EFBFBD><EFBFBD>flash<EFBFBD>ж<EFBFBD>ini<EFBFBD>ļ<EFBFBD>
|
|||
|
** <EFBFBD><EFBFBD><EFBFBD><EFBFBD>־<EFBFBD><EFBFBD>
|
|||
|
******************************************************************************/
|
|||
|
static BOOL read_config_file(void)
|
|||
|
{
|
|||
|
if (!app_crc_OK(HY_PKG_TYPE_CFG_FILE)){//У<><D0A3>ʧ<EFBFBD><CAA7>
|
|||
|
memset(system_info.cmd_id, 0x30, sizeof(system_info.cmd_id));
|
|||
|
term_printf("\n<EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>ʧ<EFBFBD><EFBFBD>\n\r");
|
|||
|
return FALSE;
|
|||
|
}
|
|||
|
if (!pack_head_verify(HY_PKG_TYPE_CFG_FILE)){//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7>
|
|||
|
term_printf("\n<EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>ʧ<EFBFBD><EFBFBD>\n\r");
|
|||
|
return FALSE;
|
|||
|
}
|
|||
|
|
|||
|
return TRUE;
|
|||
|
}
|
|||
|
|
|||
|
/******************************************************************************
|
|||
|
** <EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƣ<EFBFBD>get_system_config_from_file(void)
|
|||
|
** <EFBFBD><EFBFBD> <EFBFBD>ܣ<EFBFBD><EFBFBD>õ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
|||
|
** <EFBFBD><EFBFBD><EFBFBD><EFBFBD>־<EFBFBD><EFBFBD>
|
|||
|
******************************************************************************/
|
|||
|
BOOL get_system_config_from_file(void)
|
|||
|
{
|
|||
|
unsigned long ret =1;
|
|||
|
|
|||
|
if (!read_config_file())
|
|||
|
return FALSE;
|
|||
|
|
|||
|
/******************************************************************************
|
|||
|
[rf]<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
*******************************************************************************/
|
|||
|
//RF
|
|||
|
ret = GetConfigFromBuf("rf",
|
|||
|
"host_type",
|
|||
|
"0",
|
|||
|
(char *)&sys_rf.host_type,
|
|||
|
sizeof(sys_rf.host_type),
|
|||
|
(char *)config_buff
|
|||
|
);
|
|||
|
if (ret != 0){
|
|||
|
sys_rf.host_type -='0';
|
|||
|
term_printf("\n<EFBFBD><EFBFBD>ȡRF<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣʧ<EFBFBD><EFBFBD>\n\r");
|
|||
|
// return FALSE;
|
|||
|
}else{
|
|||
|
term_printf("\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: ");
|
|||
|
sys_rf.host_type -='0';
|
|||
|
if (sys_rf.host_type == RF_HOST)
|
|||
|
term_printf("RF(һ<><D2BB><EFBFBD><EFBFBD>)\n\r");
|
|||
|
else if(sys_rf.host_type == RF_RELAY)
|
|||
|
term_printf("RF(<28>м<EFBFBD><D0BC><EFBFBD><EFBFBD><EFBFBD>)\n\r");
|
|||
|
else if(sys_rf.host_type == RF_UNDEFINE)
|
|||
|
term_printf("<EFBFBD><EFBFBD>ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28><>RF)\n\r");
|
|||
|
}
|
|||
|
|
|||
|
//rf_sync_num
|
|||
|
if(sys_rf.host_type != RF_UNDEFINE){
|
|||
|
ret = GetConfigFromBuf("rf",
|
|||
|
"sync_num",
|
|||
|
"HY0000",
|
|||
|
(char *)sys_rf.sync_num,
|
|||
|
sizeof(sys_rf.sync_num),
|
|||
|
(char *)config_buff
|
|||
|
);
|
|||
|
if (ret != 0)
|
|||
|
term_printf("\n<EFBFBD><EFBFBD>ȡRFͬ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><EFBFBD>\n\r");
|
|||
|
else
|
|||
|
term_printf("RFͬ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: %s\n\r",sys_rf.sync_num);
|
|||
|
}
|
|||
|
|
|||
|
/******************************************************************************
|
|||
|
[host_mk60_cfg]
|
|||
|
*******************************************************************************/
|
|||
|
//Ӳ<><D3B2><EFBFBD>汾<EFBFBD><E6B1BE>
|
|||
|
ret = GetConfigFromBuf("host_mk60_cfg",
|
|||
|
"hardwarever",
|
|||
|
"00000000000000",
|
|||
|
(char *)system_info.hardware_version,
|
|||
|
sizeof(system_info.hardware_version),
|
|||
|
(char *)config_buff
|
|||
|
);
|
|||
|
if (ret != 0){
|
|||
|
term_printf("\n<EFBFBD><EFBFBD>ȡӲ<EFBFBD><EFBFBD><EFBFBD>汾<EFBFBD><EFBFBD>ʧ<EFBFBD><EFBFBD>\n\r");
|
|||
|
}else{
|
|||
|
term_printf("Ӳ<EFBFBD><EFBFBD><EFBFBD>汾<EFBFBD><EFBFBD>: %s\n\r",system_info.hardware_version);
|
|||
|
}
|
|||
|
|
|||
|
//<2F><>˾<EFBFBD><CBBE><EFBFBD><EFBFBD>ΨһCMDid<69><64>
|
|||
|
ret = GetConfigFromBuf("host_mk60_cfg",
|
|||
|
"cmd_id",
|
|||
|
"HY_OLMS_000000000",
|
|||
|
(char *)system_info.cmd_id,//<2F>ն<EFBFBD>id
|
|||
|
sizeof(system_info.cmd_id),
|
|||
|
(char *)config_buff
|
|||
|
);
|
|||
|
if (ret != 0){
|
|||
|
term_printf("\n<EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD>ԴIDʧ<EFBFBD><EFBFBD>\n\r");
|
|||
|
}else{
|
|||
|
term_printf("<EFBFBD><EFBFBD>ԴID: %s\n\r",system_info.cmd_id);
|
|||
|
}
|
|||
|
|
|||
|
//<2F><>˾<EFBFBD><CBBE><EFBFBD><EFBFBD>Ψһ<CEA8><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>豸id<69><64>
|
|||
|
ret = GetConfigFromBuf("host_mk60_cfg",
|
|||
|
"component_id",
|
|||
|
"SD__0000000000",
|
|||
|
(char *)system_info.component_id,
|
|||
|
sizeof(system_info.component_id),
|
|||
|
(char *)config_buff
|
|||
|
);
|
|||
|
if (ret != 0){
|
|||
|
term_printf("\n<EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IDʧ<EFBFBD><EFBFBD>\n\r");
|
|||
|
}else{
|
|||
|
term_printf("<EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ID; %s\n\r",system_info.component_id);
|
|||
|
}
|
|||
|
|
|||
|
/******************************************************************************
|
|||
|
net
|
|||
|
*******************************************************************************/
|
|||
|
//[local]
|
|||
|
//ip
|
|||
|
|
|||
|
ret = GetConfigFromBuf("local",
|
|||
|
"ip",
|
|||
|
"172.16.17.14",
|
|||
|
(char *)g_device_local_ip,
|
|||
|
sizeof(g_device_local_ip),
|
|||
|
(char *)config_buff
|
|||
|
);
|
|||
|
if (ret != 0){
|
|||
|
term_printf("<EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ip<EFBFBD><EFBFBD>ַʧ<EFBFBD><EFBFBD>,Ĭ<><C4AC> :%s\n\r",g_device_local_ip);
|
|||
|
ipStrValid((const char *)g_device_local_ip,g_local_ip);
|
|||
|
}else{
|
|||
|
term_printf("local_ip; %s\n\r",g_device_local_ip);
|
|||
|
ipStrValid((const char *)g_device_local_ip,g_local_ip);
|
|||
|
}
|
|||
|
|
|||
|
//mac
|
|||
|
ret = GetConfigFromBuf("local",
|
|||
|
"mac",
|
|||
|
"00:01:00:00:00:02",
|
|||
|
(char *)g_device_mac,
|
|||
|
sizeof(g_device_mac),
|
|||
|
(char *)config_buff
|
|||
|
);
|
|||
|
if (ret != 0){
|
|||
|
term_printf("<EFBFBD><EFBFBD>ȡmac<EFBFBD><EFBFBD>ַʧ<EFBFBD><EFBFBD>,Ĭ<><C4AC> :%s\n\r",g_device_mac);
|
|||
|
macStrValid((const char *)g_device_mac,g_local_mac);
|
|||
|
}else{
|
|||
|
term_printf("mac; %s\n\r",g_device_mac);
|
|||
|
macStrValid((const char *)g_device_mac,g_local_mac);
|
|||
|
}
|
|||
|
|
|||
|
//netmask
|
|||
|
ret = GetConfigFromBuf("local",
|
|||
|
"netmask",
|
|||
|
"255.255.252.0",
|
|||
|
(char *)g_device_netmask,
|
|||
|
sizeof(g_device_netmask),
|
|||
|
(char *)config_buff
|
|||
|
);
|
|||
|
if (ret != 0){
|
|||
|
term_printf("<EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD>Ĭ<EFBFBD><EFBFBD>netmask: %s\n\r",g_device_netmask);
|
|||
|
ipStrValid((const char *)g_device_netmask,g_netmask);
|
|||
|
}else{
|
|||
|
term_printf("netmask; %s\n\r",g_device_netmask);
|
|||
|
ipStrValid((const char *)g_device_netmask,g_netmask);
|
|||
|
}
|
|||
|
|
|||
|
//gateway
|
|||
|
ret = GetConfigFromBuf("local",
|
|||
|
"gateway",
|
|||
|
"172.16.16.54",
|
|||
|
(char *)g_device_gateway,
|
|||
|
sizeof(g_device_gateway),
|
|||
|
(char *)config_buff
|
|||
|
);
|
|||
|
if (ret != 0){
|
|||
|
term_printf("<EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD>Ĭ<EFBFBD><EFBFBD>gateway: %s\n\r",g_device_gateway);
|
|||
|
ipStrValid((const char *)g_device_gateway,g_gateway);
|
|||
|
}else{
|
|||
|
term_printf("gateway; %s\n\r",g_device_gateway);
|
|||
|
ipStrValid((const char *)g_device_gateway,g_gateway);
|
|||
|
}
|
|||
|
|
|||
|
//[server]
|
|||
|
//[term]
|
|||
|
ret = GetConfigFromBuf("server",
|
|||
|
"term_ip",
|
|||
|
"172.16.17.11",
|
|||
|
(char *)g_device_term_ip,
|
|||
|
sizeof(g_device_term_ip),
|
|||
|
(char *)config_buff
|
|||
|
);
|
|||
|
if (ret != 0){
|
|||
|
term_printf("<EFBFBD><EFBFBD>ȡ<EFBFBD>ն<EFBFBD>ip<EFBFBD><EFBFBD>ַʧ<EFBFBD><EFBFBD>,Ĭ<><C4AC> :%s\n\r",g_device_term_ip);
|
|||
|
ipStrValid((const char *)g_device_term_ip,net_devices[0].ip);
|
|||
|
}else{
|
|||
|
term_printf("term_ip; %s\n\r",g_device_term_ip);
|
|||
|
//ת<><D7AA><EFBFBD><EFBFBD>ȡ<EFBFBD>ĵ<EFBFBD>ַ
|
|||
|
ipStrValid((const char *)g_device_term_ip,net_devices[0].ip);
|
|||
|
}
|
|||
|
|
|||
|
//a9 ip
|
|||
|
ret = GetConfigFromBuf("server",
|
|||
|
"a9_ip",
|
|||
|
"172.16.16.54",
|
|||
|
(char *)g_device_a9_ip,
|
|||
|
sizeof(g_device_a9_ip),
|
|||
|
(char *)config_buff
|
|||
|
);
|
|||
|
if (ret != 0){
|
|||
|
term_printf("<EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>a9 ip<69><70>ַʧ<D6B7><CAA7>,Ĭ<><C4AC> :%s\n\r",g_device_a9_ip);
|
|||
|
ipStrValid((const char *)g_device_a9_ip,net_devices[1].ip);
|
|||
|
}else{
|
|||
|
term_printf("a9_ip; %s\n\r",g_device_a9_ip);
|
|||
|
ipStrValid((const char *)g_device_a9_ip,net_devices[1].ip);
|
|||
|
}
|
|||
|
|
|||
|
//web ip
|
|||
|
ret = GetConfigFromBuf("server",
|
|||
|
"web_ip",
|
|||
|
"118.123.114.8",
|
|||
|
(char *)g_device_web_ip,
|
|||
|
sizeof(g_device_web_ip),
|
|||
|
(char *)config_buff
|
|||
|
);
|
|||
|
if (ret != 0){
|
|||
|
term_printf("<EFBFBD><EFBFBD>ȡweb ip<69><70>ַʧ<D6B7><CAA7>,Ĭ<><C4AC> :%s\n\r",g_device_web_ip);
|
|||
|
ipStrValid((const char *)g_device_web_ip,net_devices[4].ip);
|
|||
|
}else{
|
|||
|
term_printf("web_ip; %s\n\r",g_device_web_ip);
|
|||
|
ipStrValid((const char *)g_device_web_ip,net_devices[4].ip);
|
|||
|
}
|
|||
|
|
|||
|
/******************************************************************************
|
|||
|
[cert]
|
|||
|
*******************************************************************************/
|
|||
|
//֤<><D6A4><EFBFBD><EFBFBD><EFBFBD>κ<EFBFBD>
|
|||
|
//batch_num
|
|||
|
ret = GetConfigFromBuf("cert",
|
|||
|
"batch_num",
|
|||
|
"000",
|
|||
|
(char *)system_info.batch_num,
|
|||
|
sizeof(system_info.batch_num),
|
|||
|
(char *)config_buff
|
|||
|
);
|
|||
|
if (ret != 0){
|
|||
|
term_printf("\n<EFBFBD><EFBFBD>ȡ֤<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κ<EFBFBD>ʧ<EFBFBD><EFBFBD>\n\r");
|
|||
|
}else{
|
|||
|
term_printf("\n֤<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κ<EFBFBD>: ");
|
|||
|
term_printf("%s\n\r",system_info.batch_num);
|
|||
|
}
|
|||
|
|
|||
|
//ͬһ<CDAC><D2BB><EFBFBD><EFBFBD>֤<EFBFBD><D6A4><EFBFBD><EFBFBD><EFBFBD>к<EFBFBD>
|
|||
|
ret = GetConfigFromBuf("cert",
|
|||
|
"serial_num",
|
|||
|
"0000",
|
|||
|
(char *)system_info.cert_num,
|
|||
|
sizeof(system_info.cert_num),
|
|||
|
(char *)config_buff
|
|||
|
);
|
|||
|
if (ret != 0){
|
|||
|
term_printf("\n<EFBFBD><EFBFBD>ȡ֤<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>к<EFBFBD>ʧ<EFBFBD><EFBFBD>\n\r");
|
|||
|
}else{
|
|||
|
term_printf("֤<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>к<EFBFBD>: ");
|
|||
|
term_printf("%s\n\r",system_info.cert_num);
|
|||
|
}
|
|||
|
|
|||
|
//<2F><><EFBFBD><EFBFBD>֤<EFBFBD><D6A4>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>id
|
|||
|
ret = GetConfigFromBuf("cert",
|
|||
|
"encryption_id",
|
|||
|
"ENCRYPTION_000000",
|
|||
|
(char *)system_info.encryption_id,
|
|||
|
sizeof(system_info.encryption_id),
|
|||
|
(char *)config_buff
|
|||
|
);
|
|||
|
if (ret != 0){
|
|||
|
term_printf("\n<EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֤<EFBFBD><EFBFBD><EFBFBD>豸IDʧ<EFBFBD><EFBFBD>\n\r");
|
|||
|
}else{
|
|||
|
term_printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֤<EFBFBD><EFBFBD><EFBFBD>豸ID; %s\n\r",system_info.encryption_id);
|
|||
|
}
|
|||
|
|
|||
|
/******************************************************************************
|
|||
|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
*******************************************************************************/
|
|||
|
//<2F><><EFBFBD><EFBFBD>1<EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
ret = GetConfigFromBuf("bat",
|
|||
|
"bat1_cfg",
|
|||
|
"0",
|
|||
|
(char *)&sys_bat.bat1_cfg,
|
|||
|
sizeof(sys_bat.bat1_cfg),
|
|||
|
(char *)config_buff
|
|||
|
);
|
|||
|
if (ret != 0){
|
|||
|
sys_bat.bat1_cfg -='0';
|
|||
|
term_printf("\n<EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>1<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><EFBFBD>\n\r");
|
|||
|
}else{
|
|||
|
sys_bat.bat1_cfg -='0';
|
|||
|
term_printf("\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD>1<EFBFBD><EFBFBD><EFBFBD><EFBFBD>: ");
|
|||
|
if (sys_bat.bat1_cfg)
|
|||
|
term_printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>\n\r");
|
|||
|
else
|
|||
|
term_printf("<EFBFBD>ر<EFBFBD>\n\r");
|
|||
|
}
|
|||
|
|
|||
|
//<2F><><EFBFBD><EFBFBD>2<EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
ret = GetConfigFromBuf("bat",
|
|||
|
"bat2_cfg",
|
|||
|
"0",
|
|||
|
(char *)&sys_bat.bat2_cfg,
|
|||
|
sizeof(sys_bat.bat2_cfg),
|
|||
|
(char *)config_buff
|
|||
|
);
|
|||
|
if (ret != 0){
|
|||
|
sys_bat.bat2_cfg -='0';
|
|||
|
term_printf("\n<EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>2<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><EFBFBD>\n\r");
|
|||
|
}else{
|
|||
|
sys_bat.bat2_cfg -='0';
|
|||
|
term_printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>2<EFBFBD><EFBFBD><EFBFBD><EFBFBD>: ");
|
|||
|
if (sys_bat.bat2_cfg)
|
|||
|
term_printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>\n\r");
|
|||
|
else
|
|||
|
term_printf("<EFBFBD>ر<EFBFBD>\n\r");
|
|||
|
}
|
|||
|
|
|||
|
//<2F><><EFBFBD><EFBFBD>3<EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
ret = GetConfigFromBuf("bat",
|
|||
|
"bat3_cfg",
|
|||
|
"0",
|
|||
|
(char *)&sys_bat.bat3_cfg,
|
|||
|
sizeof(sys_bat.bat3_cfg),
|
|||
|
(char *)config_buff
|
|||
|
);
|
|||
|
if (ret != 0){
|
|||
|
sys_bat.bat3_cfg -='0';
|
|||
|
term_printf("\n<EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>3<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><EFBFBD>\n\r");
|
|||
|
}else{
|
|||
|
sys_bat.bat3_cfg -='0';
|
|||
|
term_printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>3<EFBFBD><EFBFBD><EFBFBD><EFBFBD>: ");
|
|||
|
if (sys_bat.bat3_cfg)
|
|||
|
term_printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>\n\r");
|
|||
|
else
|
|||
|
term_printf("<EFBFBD>ر<EFBFBD>\n\r");
|
|||
|
}
|
|||
|
|
|||
|
//<2F><><EFBFBD><EFBFBD>4<EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
ret = GetConfigFromBuf("bat",
|
|||
|
"bat4_cfg",
|
|||
|
"0",
|
|||
|
(char *)&sys_bat.bat4_cfg,
|
|||
|
sizeof(sys_bat.bat4_cfg),
|
|||
|
(char *)config_buff
|
|||
|
);
|
|||
|
if (ret != 0){
|
|||
|
sys_bat.bat4_cfg -='0';
|
|||
|
term_printf("\n<EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>4<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><EFBFBD>\n\r");
|
|||
|
}else{
|
|||
|
sys_bat.bat4_cfg -='0';
|
|||
|
term_printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>4<EFBFBD><EFBFBD><EFBFBD><EFBFBD>: ");
|
|||
|
if (sys_bat.bat4_cfg)
|
|||
|
term_printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>\n\r");
|
|||
|
else
|
|||
|
term_printf("<EFBFBD>ر<EFBFBD>\n\r");
|
|||
|
}
|
|||
|
|
|||
|
//<2F><><EFBFBD><EFBFBD>5<EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
ret = GetConfigFromBuf("bat",
|
|||
|
"bat5_cfg",
|
|||
|
"0",
|
|||
|
(char *)&sys_bat.bat5_cfg,
|
|||
|
sizeof(sys_bat.bat5_cfg),
|
|||
|
(char *)config_buff
|
|||
|
);
|
|||
|
if (ret != 0){
|
|||
|
sys_bat.bat5_cfg -='0';
|
|||
|
term_printf("\n<EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>5<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><EFBFBD>\n\r");
|
|||
|
}else{
|
|||
|
sys_bat.bat5_cfg -='0';
|
|||
|
term_printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>5<EFBFBD><EFBFBD><EFBFBD><EFBFBD>: ");
|
|||
|
if (sys_bat.bat5_cfg)
|
|||
|
term_printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>\n\r");
|
|||
|
else
|
|||
|
term_printf("<EFBFBD>ر<EFBFBD>\n\r");
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
/******************************************************************************
|
|||
|
|
|||
|
*******************************************************************************/
|
|||
|
//<2F><><EFBFBD><EFBFBD>FLASH<53>洢<EFBFBD><E6B4A2><EFBFBD>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
|
|||
|
Flash_Read((u_int8_t *)&device_work_information,FLASH_DEVICE_WORK_INFO_ADDR_BEGIN,sizeof(device_work_information));
|
|||
|
if((device_work_information.head == DEVICE_SAVE_HEAD)&&(device_work_information.end == DEVICE_SAVE_END)){
|
|||
|
g_device_last_save_total_working_time = device_work_information.total_work_time;
|
|||
|
g_send_flow = device_work_information.total_send_flow;
|
|||
|
g_receive_flow = device_work_information.total_receive_flow;
|
|||
|
g_hy_send_flow = device_work_information.hy_total_send_flow;
|
|||
|
g_hy_receive_flow = device_work_information.hy_total_receive_flow;
|
|||
|
}
|
|||
|
BSP_OS_TimeDlyMs(10);
|
|||
|
term_printf("\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><EFBFBD>:<3A><><EFBFBD><EFBFBD><EFBFBD>ѷ<EFBFBD><D1B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>%d\n\r",g_send_flow);
|
|||
|
term_printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><EFBFBD>:<3A><><EFBFBD><EFBFBD><EFBFBD>ѽ<EFBFBD><D1BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>%d\n\r",g_receive_flow);
|
|||
|
term_printf("<EFBFBD><EFBFBD>Դͨ<EFBFBD><EFBFBD>:<3A><><EFBFBD><EFBFBD><EFBFBD>ѷ<EFBFBD><D1B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>%d\n\r",g_hy_send_flow);
|
|||
|
term_printf("<EFBFBD><EFBFBD>Դͨ<EFBFBD><EFBFBD>:<3A><><EFBFBD><EFBFBD><EFBFBD>ѽ<EFBFBD><D1BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>%d\n\r",g_hy_receive_flow);
|
|||
|
|
|||
|
return TRUE;
|
|||
|
}
|
|||
|
|
|||
|
/******************************************************************************
|
|||
|
** <EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƣ<EFBFBD> get_key_from_file
|
|||
|
** <EFBFBD><EFBFBD> <EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD>Ƭ<EFBFBD><EFBFBD>flash<EFBFBD>ж<EFBFBD><EFBFBD><EFBFBD>Կ<EFBFBD>ļ<EFBFBD>
|
|||
|
** <EFBFBD><EFBFBD><EFBFBD><EFBFBD>־<EFBFBD><EFBFBD>
|
|||
|
******************************************************************************/
|
|||
|
|
|||
|
BOOL get_key_from_file(void)
|
|||
|
{
|
|||
|
hy_release_file_head h_read;
|
|||
|
if (!app_crc_OK(HY_PKG_TYPE_PUB_KEY)){//У<><D0A3>ʧ<EFBFBD><CAA7>
|
|||
|
term_printf("\n<EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD>ȫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƽ̨<EFBFBD><EFBFBD>Կ<EFBFBD>ļ<EFBFBD>ʧ<EFBFBD><EFBFBD>\n\r");
|
|||
|
return FALSE;
|
|||
|
}
|
|||
|
if (!pack_head_verify(HY_PKG_TYPE_CERT)){//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7>
|
|||
|
term_printf("\n<EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD>ȫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƽ̨<EFBFBD><EFBFBD>Կ<EFBFBD>ļ<EFBFBD>ʧ<EFBFBD><EFBFBD>\n\r");
|
|||
|
return FALSE;
|
|||
|
}
|
|||
|
Flash_Read((u_int8_t *)&h_read, KEY_HEAD_BEGIN, sizeof(h_read));
|
|||
|
memcpy(system_info.key,&config_buff[4],(h_read.data_len)-4);//copy<70><79>Կ//150813<31><33><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB>ǰ4<C7B0><34><EFBFBD><EFBFBD>Ч<EFBFBD>ֽ<EFBFBD>
|
|||
|
term_printf("\n<EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD>ȫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƽ̨<EFBFBD><EFBFBD>Կ<EFBFBD>ɹ<EFBFBD>\n\r");//ȥ<><C8A5>ǰ4<C7B0><34><EFBFBD>ֽ<EFBFBD>
|
|||
|
|
|||
|
if (encryption_chip_sm2_import_public_key(1,system_info.key)){
|
|||
|
term_printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>оƬ<EFBFBD><EFBFBD><EFBFBD>밲ȫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƽ̨<EFBFBD><EFBFBD>Կ<EFBFBD>ɹ<EFBFBD>");
|
|||
|
}else
|
|||
|
term_printf("\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>оƬ<EFBFBD><EFBFBD><EFBFBD>밲ȫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƽ̨<EFBFBD><EFBFBD>Կʧ<EFBFBD><EFBFBD>");
|
|||
|
|
|||
|
return TRUE;
|
|||
|
}
|
|||
|
|
|||
|
/******************************************************************************
|
|||
|
** <EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƣ<EFBFBD> get_cert1_from_file
|
|||
|
** <EFBFBD><EFBFBD> <EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD>Ƭ<EFBFBD><EFBFBD>flash<EFBFBD>ж<EFBFBD><EFBFBD><EFBFBD>Կ<EFBFBD>ļ<EFBFBD>
|
|||
|
** <EFBFBD><EFBFBD><EFBFBD><EFBFBD>־<EFBFBD><EFBFBD>
|
|||
|
******************************************************************************/
|
|||
|
|
|||
|
BOOL get_cert1_from_file(void)
|
|||
|
{
|
|||
|
hy_release_file_head h_read;
|
|||
|
|
|||
|
if (!app_crc_OK(HY_PKG_TYPE_CERT)){//У<><D0A3>ʧ<EFBFBD><CAA7>
|
|||
|
term_printf("\n<EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD>ȫ֤<EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>ʧ<EFBFBD><EFBFBD>\n\r");
|
|||
|
return FALSE;
|
|||
|
}
|
|||
|
|
|||
|
if (!pack_head_verify(HY_PKG_TYPE_CERT)){//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7>
|
|||
|
term_printf("\n<EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD>ȫ֤<EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>ʧ<EFBFBD><EFBFBD>\n\r");
|
|||
|
return FALSE;
|
|||
|
}
|
|||
|
|
|||
|
Flash_Read((u_int8_t *)&h_read, CERT_HEAD_BEGIN, sizeof(h_read));
|
|||
|
memcpy(system_info.cert1,config_buff,h_read.data_len);//copy<70><79>ȫ֤<C8AB><D6A4>
|
|||
|
system_info.cert1_len = h_read.data_len;//֤<>鳤<EFBFBD><E9B3A4>
|
|||
|
if (system_info.cert1_len < 200){
|
|||
|
term_printf("\n<EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD>ȫ֤<EFBFBD>鳤<EFBFBD><EFBFBD>ʧ<EFBFBD><EFBFBD>\n\r");
|
|||
|
return FALSE;
|
|||
|
}
|
|||
|
term_printf("\n<EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD>ȫ֤<EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD>\n\r");
|
|||
|
return TRUE;
|
|||
|
}
|
|||
|
|
|||
|
/******************************************************************************
|
|||
|
** <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:check_sum
|
|||
|
** <EFBFBD><EFBFBD> <EFBFBD>ܣ<EFBFBD>
|
|||
|
** <EFBFBD><EFBFBD><EFBFBD><EFBFBD>־<EFBFBD><EFBFBD>
|
|||
|
******************************************************************************/
|
|||
|
static u_int8_t check_sum(u_int8_t *p, int len)
|
|||
|
{
|
|||
|
u_int8_t ret = 0;
|
|||
|
int i = 0;
|
|||
|
|
|||
|
for(; i<len; i++)
|
|||
|
{
|
|||
|
ret += p[i];
|
|||
|
}
|
|||
|
return (~ret)+1;
|
|||
|
}
|
|||
|
|
|||
|
/******************************************************************************
|
|||
|
** <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:upgrade_pkg_head_checksum_OK
|
|||
|
** <EFBFBD><EFBFBD> <EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><EFBFBD>checksum
|
|||
|
** <EFBFBD><EFBFBD><EFBFBD><EFBFBD>־<EFBFBD><EFBFBD>
|
|||
|
******************************************************************************/
|
|||
|
u_int8_t upgrade_pkg_head_checksum_OK(hy_release_file_head *pkg_head)
|
|||
|
{
|
|||
|
return check_sum((u_int8_t *)pkg_head, (u_int8_t *)(&pkg_head->head_checksum) - (u_int8_t *)pkg_head)
|
|||
|
== pkg_head->head_checksum;
|
|||
|
}
|
|||
|
|
|||
|
/******************************************************************************
|
|||
|
** <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƣ<EFBFBD>ext_flash_erase
|
|||
|
** <EFBFBD><EFBFBD> <EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƭ<EFBFBD><EFBFBD>rom<EFBFBD>еĴ洢<EFBFBD>ռ<EFBFBD>
|
|||
|
** <EFBFBD><EFBFBD><EFBFBD><EFBFBD>־<EFBFBD><EFBFBD>
|
|||
|
******************************************************************************/
|
|||
|
BOOL ext_flash_erase(hy_release_file_head *pkg_head)
|
|||
|
{
|
|||
|
u_int32_t total_len = pkg_head->data_len;
|
|||
|
|
|||
|
if(pkg_head->file_type == HY_PKG_TYPE_PUB_KEY){
|
|||
|
if((pkg_head->addr + total_len) > KEY_ADDR_END)
|
|||
|
return FALSE;
|
|||
|
Flash_Erase_Sector(EXT_FLASH_BLOCK_NUM,KEY_HEAD_SECTOR_BEGIN);
|
|||
|
Flash_Erase_Sector(EXT_FLASH_BLOCK_NUM,KEY_SECTOR_BEGIN);
|
|||
|
}else if(pkg_head->file_type == HY_PKG_TYPE_CERT){
|
|||
|
if((pkg_head->addr + total_len) > CERT_ADDR_END)
|
|||
|
return FALSE;
|
|||
|
Flash_Erase_Sector(EXT_FLASH_BLOCK_NUM,CERT_HEAD_SECTOR_BEGIN);
|
|||
|
Flash_Erase_Sector(EXT_FLASH_BLOCK_NUM,CERT_SECTOR_BEGIN);
|
|||
|
}else if(pkg_head->file_type == HY_PKG_TYPE_CFG_FILE){
|
|||
|
if((pkg_head->addr + total_len) > CFG_FILE_ADDR_END)
|
|||
|
return FALSE;
|
|||
|
Flash_Erase_Sector(EXT_FLASH_BLOCK_NUM,CFG_FILE_HEAD_SECTOR_BEGIN);
|
|||
|
Flash_Erase_Sector(EXT_FLASH_BLOCK_NUM,CFG_FILE_SECTOR_BEGIN);
|
|||
|
}
|
|||
|
|
|||
|
return TRUE;
|
|||
|
}
|
|||
|
/******************************************************************************
|
|||
|
** <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: app_crc_OK
|
|||
|
** <EFBFBD><EFBFBD> <EFBFBD>ܣ<EFBFBD>У<EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><EFBFBD>Ƭ<EFBFBD><EFBFBD>rom<EFBFBD><EFBFBD>Ӧ<EFBFBD>ó<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ͨ<EFBFBD><EFBFBD>crc16<EFBFBD><EFBFBD>ʽУ<EFBFBD><EFBFBD>
|
|||
|
** <EFBFBD><EFBFBD><EFBFBD><EFBFBD>־<EFBFBD><EFBFBD>
|
|||
|
******************************************************************************/
|
|||
|
|
|||
|
BOOL app_crc_OK(u_int8_t file_type)
|
|||
|
{
|
|||
|
u_int16_t crc16;
|
|||
|
hy_release_file_head h_read;
|
|||
|
u_int8_t crc16_read2[2] = {0x00};
|
|||
|
u_int32_t read_addr = 0;
|
|||
|
u_int32_t read_len = 0;
|
|||
|
|
|||
|
if (file_type == HY_PKG_TYPE_CERT){
|
|||
|
Flash_Read((u_int8_t *)&h_read, CERT_HEAD_BEGIN, sizeof(h_read)-1);
|
|||
|
if(h_read.file_type != HY_PKG_TYPE_CERT)
|
|||
|
return FALSE;
|
|||
|
if (!upgrade_pkg_head_checksum_OK(&h_read))
|
|||
|
return FALSE;
|
|||
|
read_addr = CERT_ADDR_BEGIN;
|
|||
|
}else if (file_type == HY_PKG_TYPE_PUB_KEY){
|
|||
|
Flash_Read((u_int8_t *)&h_read, KEY_HEAD_BEGIN, sizeof(h_read)-1);
|
|||
|
if(h_read.file_type != HY_PKG_TYPE_PUB_KEY)
|
|||
|
return FALSE;
|
|||
|
if (!upgrade_pkg_head_checksum_OK(&h_read))
|
|||
|
return FALSE;
|
|||
|
read_addr = KEY_ADDR_BEGIN;
|
|||
|
}else if (file_type == HY_PKG_TYPE_CFG_FILE){
|
|||
|
Flash_Read((u_int8_t *)&h_read,CFG_FILE_HEAD_BEGIN, sizeof(h_read)-1);
|
|||
|
if(h_read.file_type != HY_PKG_TYPE_CFG_FILE)
|
|||
|
return FALSE;
|
|||
|
if (!upgrade_pkg_head_checksum_OK(&h_read))
|
|||
|
return FALSE;
|
|||
|
read_addr = CFG_FILE_ADDR_BEGIN;
|
|||
|
}
|
|||
|
CRC16_init(&crc16);
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷcrc
|
|||
|
CRC16_update(&crc16,(u_int8_t *)&h_read, sizeof(h_read)-1);
|
|||
|
read_len = h_read.data_len; //<2F><><EFBFBD><EFBFBD>crc16<31><36><EFBFBD><EFBFBD>
|
|||
|
if(read_len > 1000)
|
|||
|
return FALSE;
|
|||
|
Flash_Read(config_buff, read_addr,read_len);
|
|||
|
Flash_Read((u_int8_t *)crc16_read2, read_addr+read_len,sizeof(u_int16_t));
|
|||
|
CRC16_update(&crc16,config_buff, read_len);
|
|||
|
|
|||
|
return crc16 == *(u_int16_t *)&crc16_read2;
|
|||
|
}
|
|||
|
|
|||
|
/******************************************************************************
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: write_pack_head_to_ext_flash
|
|||
|
*<EFBFBD><EFBFBD> <EFBFBD>ܣ<EFBFBD>д<EFBFBD><EFBFBD>ͷ<EFBFBD><EFBFBD>Ƭ<EFBFBD><EFBFBD>flash<EFBFBD><EFBFBD>
|
|||
|
*<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD>
|
|||
|
*<EFBFBD><EFBFBD> <EFBFBD>ģ<EFBFBD>
|
|||
|
******************************************************************************/
|
|||
|
BOOL write_pack_head_to_ext_flash(hy_release_file_head *pkg_head)
|
|||
|
{
|
|||
|
|
|||
|
if(pkg_head->file_type == HY_PKG_TYPE_PUB_KEY){
|
|||
|
Flash_Write_MorePage((u_int8_t *)pkg_head,KEY_HEAD_BEGIN,sizeof(*pkg_head));
|
|||
|
}else if(pkg_head->file_type == HY_PKG_TYPE_CERT){
|
|||
|
Flash_Write_MorePage((u_int8_t *)pkg_head,CERT_HEAD_BEGIN,sizeof(*pkg_head));
|
|||
|
}else if(pkg_head->file_type == HY_PKG_TYPE_CFG_FILE){
|
|||
|
Flash_Write_MorePage((u_int8_t *)pkg_head,CFG_FILE_HEAD_BEGIN,sizeof(*pkg_head));
|
|||
|
}
|
|||
|
|
|||
|
return TRUE;
|
|||
|
}
|
|||
|
|
|||
|
/******************************************************************************
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: write_file_to_ext_flash
|
|||
|
*<EFBFBD><EFBFBD> <EFBFBD>ܣ<EFBFBD>д<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ⲿflash<EFBFBD><EFBFBD>
|
|||
|
*<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD>
|
|||
|
*<EFBFBD><EFBFBD> <EFBFBD>ģ<EFBFBD>
|
|||
|
******************************************************************************/
|
|||
|
BOOL write_file_to_ext_flash(hy_release_file_head *pkg_head)
|
|||
|
{;
|
|||
|
u_int32_t len = pkg_head->data_len + sizeof(u_int16_t); //<2F><><EFBFBD><EFBFBD>+crc16
|
|||
|
u_int32_t write_addr = pkg_head->addr;
|
|||
|
Flash_Write_MorePage(pkg_head->data,write_addr,len);
|
|||
|
return TRUE;
|
|||
|
}
|
|||
|
|
|||
|
/******************************************************************************
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: pack_head_verify
|
|||
|
*<EFBFBD><EFBFBD> <EFBFBD>ܣ<EFBFBD>У<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><EFBFBD>
|
|||
|
*<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD>
|
|||
|
*<EFBFBD><EFBFBD> <EFBFBD>ģ<EFBFBD>
|
|||
|
******************************************************************************/
|
|||
|
BOOL pack_head_verify(u_int8_t file_type)
|
|||
|
{
|
|||
|
hy_release_file_head pkg_head = {0x00};
|
|||
|
u_int32_t read_addr;
|
|||
|
|
|||
|
if (file_type == HY_PKG_TYPE_PUB_KEY){
|
|||
|
read_addr = KEY_HEAD_BEGIN;
|
|||
|
}else if (file_type == HY_PKG_TYPE_CERT){
|
|||
|
read_addr = CERT_HEAD_BEGIN;
|
|||
|
}else if (file_type == HY_PKG_TYPE_CFG_FILE){
|
|||
|
read_addr = CFG_FILE_HEAD_BEGIN;
|
|||
|
}
|
|||
|
|
|||
|
Flash_Read((u_int8_t *)&pkg_head,read_addr, sizeof(pkg_head)-1);
|
|||
|
|
|||
|
//<2F><><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
if((pkg_head.data_len) > (1024*2))
|
|||
|
return FALSE;
|
|||
|
|
|||
|
//<2F><>ʼ<EFBFBD><CABC>־<EFBFBD><D6BE><EFBFBD><EFBFBD>
|
|||
|
if(pkg_head.flag != HY_RELEASE_FILE_FLAG)
|
|||
|
return FALSE;
|
|||
|
|
|||
|
//ͷ<><CDB7><EFBFBD>ȼ<EFBFBD><C8BC><EFBFBD>
|
|||
|
if(pkg_head.head_len != (sizeof(pkg_head)-1))
|
|||
|
return FALSE;
|
|||
|
|
|||
|
//<2F>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD> boot app cert key cfg_file
|
|||
|
if((pkg_head.file_type != HY_PKG_TYPE_APP) && (pkg_head.file_type != HY_PKG_TYPE_BOOT_LOADER) && (pkg_head.file_type != HY_PKG_TYPE_CERT) && (pkg_head.file_type != HY_PKG_TYPE_PUB_KEY)&& (pkg_head.file_type != HY_PKG_TYPE_CFG_FILE))
|
|||
|
return FALSE;
|
|||
|
|
|||
|
//<2F>ļ<EFBFBD><C4BC><EFBFBD>ʽ<EFBFBD>汾
|
|||
|
if(pkg_head.file_format_ver != 1)
|
|||
|
return FALSE;
|
|||
|
|
|||
|
if(pkg_head.file_type == HY_PKG_TYPE_APP){ //App
|
|||
|
//<2F><>д<EFBFBD><D0B4>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>
|
|||
|
if(pkg_head.addr < APP_ADDR_BEGIN)
|
|||
|
return FALSE;
|
|||
|
//<2F>ռ<EFBFBD><D5BC><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
if((pkg_head.addr + pkg_head.data_len) > APP_ADDR_END)
|
|||
|
return FALSE;
|
|||
|
}else if(pkg_head.file_type == HY_PKG_TYPE_BOOT_LOADER){ //Bootloader
|
|||
|
//<2F><>д<EFBFBD><D0B4>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>
|
|||
|
if(pkg_head.addr != 0) //bootloader<65><72><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0Ϊ<30><CEAA>ʼ<EFBFBD><CABC>ַ
|
|||
|
return FALSE;
|
|||
|
//<2F>ռ<EFBFBD><D5BC><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
if((pkg_head.addr + pkg_head.data_len) > BOOTLOADER_ADDR_END)
|
|||
|
return FALSE;
|
|||
|
}else if(pkg_head.file_type == HY_PKG_TYPE_CERT){//CERT
|
|||
|
//<2F><>д<EFBFBD><D0B4>ַ
|
|||
|
if(pkg_head.addr < CERT_ADDR_BEGIN)
|
|||
|
return FALSE;
|
|||
|
//<2F>ռ<EFBFBD><D5BC><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
if((pkg_head.addr + pkg_head.data_len) > CERT_ADDR_END)
|
|||
|
return FALSE;
|
|||
|
}else if(pkg_head.file_type == HY_PKG_TYPE_PUB_KEY){//KEY
|
|||
|
//<2F><>д<EFBFBD><D0B4>ַ
|
|||
|
if(pkg_head.addr < KEY_ADDR_BEGIN)
|
|||
|
return FALSE;
|
|||
|
//<2F>ռ<EFBFBD><D5BC><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
if((pkg_head.addr + pkg_head.data_len) > KEY_ADDR_END)
|
|||
|
return FALSE;
|
|||
|
}else if(pkg_head.file_type == HY_PKG_TYPE_CFG_FILE){//CFG FILE
|
|||
|
//<2F><>д<EFBFBD><D0B4>ַ
|
|||
|
if(pkg_head.addr < CFG_FILE_ADDR_BEGIN)
|
|||
|
return FALSE;
|
|||
|
//<2F>ռ<EFBFBD><D5BC><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
if((pkg_head.addr + pkg_head.data_len) > CFG_FILE_ADDR_END)
|
|||
|
return FALSE;
|
|||
|
}
|
|||
|
return TRUE;
|
|||
|
}
|
|||
|
|
|||
|
//<2F><><EFBFBD><EFBFBD>Ƭ<EFBFBD><C6AC>flash<73><68><EFBFBD><EFBFBD><EFBFBD>ռ<EFBFBD>
|
|||
|
void erase_ext_flash(u_int8_t block_begin,u_int32_t total_len)
|
|||
|
{
|
|||
|
int i = 0;
|
|||
|
int block_count = total_len / Flash_BLOCKBYTE_LENGTH;
|
|||
|
|
|||
|
if(total_len % Flash_BLOCKBYTE_LENGTH)
|
|||
|
block_count++;
|
|||
|
|
|||
|
for(i = 0; i<block_count; i++){
|
|||
|
Flash_Erase_Block(block_begin + i);
|
|||
|
BSP_OS_TimeDlyMs(10);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
/******************************************************************************
|
|||
|
** <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƣ<EFBFBD>
|
|||
|
** <EFBFBD><EFBFBD> <EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD>ת<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD>硰192.168.8.1<EFBFBD><EFBFBD>ת<EFBFBD><EFBFBD>192 168 8 1<EFBFBD><EFBFBD><EFBFBD><EFBFBD>2<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
** <EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
** <EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
*******************************************************************************/
|
|||
|
int ipStrValid( const char * str_ip,u_int8_t *rvalue)
|
|||
|
{
|
|||
|
char p[20];
|
|||
|
int n,i,dotnumber,j;
|
|||
|
int num_len=0;
|
|||
|
|
|||
|
char k[4];
|
|||
|
|
|||
|
memset(p,0,sizeof(p));
|
|||
|
if(str_ip==NULL)
|
|||
|
return 0;
|
|||
|
n=strlen(str_ip);
|
|||
|
if(n==0)
|
|||
|
return 0;
|
|||
|
j=0;
|
|||
|
dotnumber=0;
|
|||
|
for(i=0;i<n;i++)
|
|||
|
{
|
|||
|
if(str_ip[i]=='.')
|
|||
|
{
|
|||
|
p[j]=0;
|
|||
|
num_len = strlen(p);
|
|||
|
if( num_len == 0 )
|
|||
|
return 0;
|
|||
|
k[dotnumber] = atoi(p);
|
|||
|
//if(k[dotnumber]>252)
|
|||
|
// return 0;
|
|||
|
dotnumber++;
|
|||
|
if(dotnumber>3)
|
|||
|
return 0;
|
|||
|
j=0;
|
|||
|
continue;
|
|||
|
}
|
|||
|
else if( (str_ip[i]<='9') && (str_ip[i]>='0') )
|
|||
|
{
|
|||
|
p[j++]=str_ip[i];
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
return 0;
|
|||
|
}
|
|||
|
}
|
|||
|
p[j]=0;
|
|||
|
k[3]=atoi(p);
|
|||
|
if(dotnumber!=3)
|
|||
|
return 0;
|
|||
|
if(k[3]>=255)//Ĭ<>ϲ<EFBFBD><CFB2>ܵ<EFBFBD><DCB5><EFBFBD>255 <20>㲥<EFBFBD><E3B2A5>ַ
|
|||
|
return 0;
|
|||
|
memcpy(rvalue,k,4);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
return 1;
|
|||
|
};
|
|||
|
|