feat:TFTP升级 - 配置文件OK
1、TFTP升级 - 配置文件初步测试没问题 2、配置文件内容解析移植完毕,调试中 3、TFTP升级 - 是否一个套接字搞定,不需要使用两个套接字,待完成
This commit is contained in:
@@ -53,9 +53,9 @@ __attribute__((section(".non_0_wait"))) uint16_t TFTP_Pack_Get_Block(uint8_t *bu
|
||||
{
|
||||
uint16_t temp = 0x00;
|
||||
|
||||
temp = buf[3];
|
||||
temp = buf[2];
|
||||
temp <<= 8;
|
||||
temp |= buf[4];
|
||||
temp |= buf[3];
|
||||
|
||||
return temp;
|
||||
}
|
||||
@@ -94,7 +94,7 @@ __attribute__((section(".non_0_wait"))) uint8_t TFTP_send_ack_packet(uint8_t s,
|
||||
{
|
||||
uint8_t err = 0;
|
||||
uint32_t sendlen = TFTP_ACK_PKT_LEN;
|
||||
char packet[TFTP_ACK_PKT_LEN];
|
||||
uint8_t packet[24];
|
||||
|
||||
/* define the first two bytes of the packet */
|
||||
if(1 == IAPVarTypeStruct_Ptr.IapErrFlag) TFTP_Pack_Set_Opcode(packet,TFTP_ERROR);
|
||||
@@ -102,8 +102,10 @@ __attribute__((section(".non_0_wait"))) uint8_t TFTP_send_ack_packet(uint8_t s,
|
||||
|
||||
TFTP_Pack_Set_Block(packet, block);
|
||||
|
||||
Dbg_Println(DBG_BIT_NET_STATUS_bit,"TFTP ACK packet -- SocketId:%d , port:%d ,block:%ld len:%ld , IP:%d.%d.%d.%d",s,to_port,block,sendlen,to_ip[0],to_ip[1],to_ip[2],to_ip[3]);
|
||||
err = WCHNET_SocketUdpSendTo(s, (uint8_t *)&packet[0], &sendlen, to_ip, to_port);
|
||||
Dbg_Println(DBG_BIT_NET_STATUS_bit,"TFTP ACK packet -- SocketId:%d , port:%d ,block:%d len:%d , IP:%d.%d.%d.%d",s,to_port,block,sendlen,to_ip[0],to_ip[1],to_ip[2],to_ip[3]);
|
||||
Dbg_Print_Buff(DBG_BIT_NET_STATUS_bit, "Send Data: ", packet, sendlen);
|
||||
|
||||
err = WCHNET_SocketUdpSendTo(s, packet, &sendlen, to_ip, to_port);
|
||||
|
||||
return err;
|
||||
}
|
||||
@@ -128,7 +130,7 @@ __attribute__((section(".non_0_wait"))) uint8_t IAP_tftp_process_write(uint8_t s
|
||||
|
||||
IAPVarTypeStruct_Ptr.TotalCount =0;
|
||||
IAPVarTypeStruct_Ptr.IapErrFlag = 0;
|
||||
|
||||
Dbg_Println(DBG_BIT_NET_STATUS_bit,"ip:%d.%d.%d.%d, port:%d",to_ip[0], to_ip[1], to_ip[2], to_ip[3], to_port);
|
||||
/*BLV_C1 -- <20><><EFBFBD><EFBFBD>Flash<73><68><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֤<EFBFBD><D6A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֮<EFBFBD><D6AE><EFBFBD><EFBFBD><EFBFBD>ٲ<EFBFBD><D9B2><EFBFBD>ͬʱ<CDAC><CAB1>SRAM<41>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4>flash<73><68>*/
|
||||
if(IAPVarTypeStruct_Ptr.IapFileType == TFTP_IAP_DataType_APP)
|
||||
{
|
||||
@@ -145,7 +147,7 @@ __attribute__((section(".non_0_wait"))) uint8_t IAP_tftp_process_write(uint8_t s
|
||||
return 0x01;
|
||||
}
|
||||
|
||||
TFTP_send_ack_packet(s, to_ip, to_port, tftp_args.block);
|
||||
TFTP_send_ack_packet(g_netinfo.SocketId[SocketIdnex_TFTPDATA], to_ip, to_port, tftp_args.block); //ʹ<><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><D7BD><EFBFBD>
|
||||
return 0x00;
|
||||
}
|
||||
|
||||
@@ -167,7 +169,9 @@ __attribute__((section(".non_0_wait"))) void TFTP_IAP_Data_Processing(uint8_t s,
|
||||
IAPVarTypeStruct_Ptr.IapPercent++;
|
||||
IAPVarTypeStruct_Ptr.processing_tick = SysTick_1ms;
|
||||
|
||||
if( (pkt_buf_len > TFTP_DATA_PKT_HDR_LEN) && (TFTP_Pack_Get_Block(pkt_buf) == (IAPVarTypeStruct_Ptr.Write_Block + 1) ) )
|
||||
Dbg_Println(DBG_BIT_NET_STATUS_bit,"%s block:%d - %d",__func__,IAPVarTypeStruct_Ptr.Write_Block,TFTP_Pack_Get_Block(pkt_buf));
|
||||
|
||||
if( (pkt_buf_len > TFTP_DATA_PKT_HDR_LEN) && ( TFTP_Pack_Get_Block(pkt_buf) == (IAPVarTypeStruct_Ptr.Write_Block + 1) ) )
|
||||
{
|
||||
pkt_buf_len = pkt_buf_len - TFTP_DATA_PKT_HDR_LEN;
|
||||
memset(data_buffer,0,TFTP_DATA_LEN_MAX);
|
||||
@@ -368,9 +372,9 @@ __attribute__((section(".non_0_wait"))) void TFTP_IAP_Data_Processing(uint8_t s,
|
||||
// }
|
||||
|
||||
IAPVarTypeStruct_Ptr.IapErrFlag = 1;
|
||||
Dbg_Println(DBG_BIT_NET_STATUS_bit,"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD>Md5<EFBFBD><EFBFBD><EFBFBD><EFBFBD>:%02X,%02X,%02X,%02X,%02X,%02X,%02X,%02X,%02X,%02X%02X,%02X,%02X,%02X,%02X,%02X", \
|
||||
Dbg_Println(DBG_BIT_NET_STATUS_bit,"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD>Md5<EFBFBD><EFBFBD><EFBFBD><EFBFBD>:%X,%X,%X,%X,%X,%X,%X,%X,%X,%X,%X,%X,%X,%X,%X,%X", \
|
||||
md5[0],md5[1],md5[2],md5[3],md5[4],md5[5],md5[6],md5[7],md5[8],md5[9],md5[10],md5[11],md5[12],md5[13],md5[14],md5[15]);
|
||||
Dbg_Println(DBG_BIT_NET_STATUS_bit,"UDP Md5:%02X,%02X,%02X,%02X,%02X,%02X,%02X,%02X,%02X,%02X,%02X,%02X,%02X,%02X,%02X,%02X", \
|
||||
Dbg_Println(DBG_BIT_NET_STATUS_bit,"UDP Md5:%X,%X,%X,%X,%X,%X,%X,%X,%X,%X,%X,%X,%X,%X,%X,%X", \
|
||||
IAPVarTypeStruct_Ptr.Md5[0],IAPVarTypeStruct_Ptr.Md5[1], \
|
||||
IAPVarTypeStruct_Ptr.Md5[2],IAPVarTypeStruct_Ptr.Md5[3], \
|
||||
IAPVarTypeStruct_Ptr.Md5[4],IAPVarTypeStruct_Ptr.Md5[5], \
|
||||
@@ -422,8 +426,8 @@ __attribute__((section(".non_0_wait"))) void TFTP_IAP_Data_Processing(uint8_t s,
|
||||
memcpy(&data_buffer[8],IAPVarTypeStruct_Ptr.Md5,16);
|
||||
Flash_Write(data_buffer,24,SPIFLASH_LOGIC_DataFlag_ADDRESS);
|
||||
|
||||
Dbg_Println(DBG_BIT_DEVICE_STATUS_bit,"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
LOG_LogicInfo_DebugRecord("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ");
|
||||
Dbg_Println(DBG_BIT_DEVICE_STATUS_bit,"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
LOG_LogicInfo_DebugRecord("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ");
|
||||
}else{
|
||||
// switch(IAPVarTypeStruct_Ptr->IapType)
|
||||
// {
|
||||
@@ -436,9 +440,9 @@ __attribute__((section(".non_0_wait"))) void TFTP_IAP_Data_Processing(uint8_t s,
|
||||
// }
|
||||
|
||||
IAPVarTypeStruct_Ptr.IapErrFlag = 1;
|
||||
Dbg_Println(DBG_BIT_NET_STATUS_bit,"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD>Md5<EFBFBD><EFBFBD><EFBFBD><EFBFBD>:%02X,%02X,%02X,%02X,%02X,%02X,%02X,%02X,%02X,%02X%02X,%02X,%02X,%02X,%02X,%02X",\
|
||||
Dbg_Println(DBG_BIT_NET_STATUS_bit,"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD>Md5<EFBFBD><EFBFBD><EFBFBD><EFBFBD>:%X,%X,%X,%X,%X,%X,%X,%X,%X,%X,%X,%X,%X,%X,%X,%X",\
|
||||
md5[0],md5[1],md5[2],md5[3],md5[4],md5[5],md5[6],md5[7],md5[8],md5[9],md5[10],md5[11],md5[12],md5[13],md5[14],md5[15]);
|
||||
Dbg_Println(DBG_BIT_NET_STATUS_bit,"UDP Md5:%02X,%02X,%02X,%02X,%02X,%02X,%02X,%02X,%02X,%02X,%02X,%02X,%02X,%02X,%02X,%02X",\
|
||||
Dbg_Println(DBG_BIT_NET_STATUS_bit,"UDP Md5:%X,%X,%X,%X,%X,%X,%X,%X,%X,%X,%X,%X,%X,%X,%X,%X",\
|
||||
IAPVarTypeStruct_Ptr.Md5[0],IAPVarTypeStruct_Ptr.Md5[1],\
|
||||
IAPVarTypeStruct_Ptr.Md5[2],IAPVarTypeStruct_Ptr.Md5[3],\
|
||||
IAPVarTypeStruct_Ptr.Md5[4],IAPVarTypeStruct_Ptr.Md5[5],\
|
||||
@@ -461,7 +465,7 @@ __attribute__((section(".non_0_wait"))) void TFTP_IAP_Data_Processing(uint8_t s,
|
||||
* Function Name : UDPSocket_TFTP_CMD_AppCallBack
|
||||
* Description : TFTP<54><50><EFBFBD><EFBFBD><EFBFBD><EFBFBD><D7BD><EFBFBD> - <20><><EFBFBD>ݴ<EFBFBD><DDB4><EFBFBD><EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD>
|
||||
*******************************************************************************/
|
||||
__attribute__((section(".non_0_wait"))) void UDPSocket_TFTP_CMD_AppCallBack(struct _SOCK_INF * SocketInf,uint32_t ipaddr,uint16_t port,uint8_t *buff,uint32_t len)
|
||||
void UDPSocket_TFTP_CMD_AppCallBack(struct _SOCK_INF * SocketInf,uint32_t ipaddr,uint16_t port,uint8_t *buff,uint32_t len)
|
||||
{
|
||||
uint8_t ip_addr[4];
|
||||
ip_addr[0] = ipaddr & 0xFF;
|
||||
@@ -469,7 +473,7 @@ __attribute__((section(".non_0_wait"))) void UDPSocket_TFTP_CMD_AppCallBack(stru
|
||||
ip_addr[2] = (ipaddr >> 16) & 0xFF ;
|
||||
ip_addr[3] = (ipaddr >> 24) & 0xFF ;
|
||||
|
||||
Dbg_Println(DBG_BIT_NET_STATUS_bit,"%s len:%ld",__func__,len);
|
||||
Dbg_Println(DBG_BIT_NET_STATUS_bit,"%s len:%d",__func__,len);
|
||||
Dbg_Println(DBG_BIT_NET_STATUS_bit,"ip:%d.%d.%d.%d, port:%d",ip_addr[0], ip_addr[1], ip_addr[2], ip_addr[3], port);
|
||||
|
||||
/*TFTP <20><><EFBFBD><EFBFBD><EEB4A6>*/
|
||||
@@ -483,7 +487,7 @@ __attribute__((section(".non_0_wait"))) void UDPSocket_TFTP_CMD_AppCallBack(stru
|
||||
|
||||
IAP_tftp_process_write(g_netinfo.SocketId[SocketIdnex_TFTPCMD], ip_addr, port); //<2F>ظ<EFBFBD><D8B8><EFBFBD><EFBFBD><EFBFBD> д<>ļ<EFBFBD>ָ<EFBFBD><D6B8>
|
||||
}else{
|
||||
|
||||
Dbg_Println(DBG_BIT_NET_STATUS_bit,"TFTP Type:%d",IAPVarTypeStruct_Ptr.FunType);
|
||||
}
|
||||
|
||||
}else if( TFTP_Pack_Get_Opcode(buff) == TFTP_OPTION )
|
||||
@@ -501,7 +505,7 @@ __attribute__((section(".non_0_wait"))) void UDPSocket_TFTP_CMD_AppCallBack(stru
|
||||
* Function Name : UDPSocket_TFTP_DATA_AppCallBack
|
||||
* Description : TFTP<54><50><EFBFBD><EFBFBD><EFBFBD><EFBFBD><D7BD><EFBFBD> - <20><><EFBFBD>ݴ<EFBFBD><DDB4><EFBFBD><EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD>
|
||||
*******************************************************************************/
|
||||
__attribute__((section(".non_0_wait"))) void UDPSocket_TFTP_DATA_AppCallBack(struct _SOCK_INF * SocketInf,uint32_t ipaddr,uint16_t port,uint8_t *buff,uint32_t len)
|
||||
void UDPSocket_TFTP_DATA_AppCallBack(struct _SOCK_INF * SocketInf,uint32_t ipaddr,uint16_t port,uint8_t *buff,uint32_t len)
|
||||
{
|
||||
uint8_t ip_addr[4];
|
||||
ip_addr[0] = ipaddr & 0xFF;
|
||||
@@ -509,7 +513,7 @@ __attribute__((section(".non_0_wait"))) void UDPSocket_TFTP_DATA_AppCallBack(str
|
||||
ip_addr[2] = (ipaddr >> 16) & 0xFF ;
|
||||
ip_addr[3] = (ipaddr >> 24) & 0xFF ;
|
||||
|
||||
Dbg_Println(DBG_BIT_NET_STATUS_bit,"%s len:%ld",__func__,len);
|
||||
Dbg_Println(DBG_BIT_NET_STATUS_bit,"%s len:%d",__func__,len);
|
||||
Dbg_Println(DBG_BIT_NET_STATUS_bit,"ip:%d.%d.%d.%d, port:%d",ip_addr[0], ip_addr[1], ip_addr[2], ip_addr[3], port);
|
||||
|
||||
if( TFTP_Pack_Get_Opcode(buff) == TFTP_DATA ) //TFTP IAP<41>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>
|
||||
@@ -564,7 +568,7 @@ __attribute__((section(".non_0_wait"))) void Internal_TFTP_Task(void)
|
||||
case STA_INIT_IDLE:
|
||||
//<2F><><EFBFBD>ƶ˷<C6B6><CBB7>Ͷ<EFBFBD>ȡ<EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
if( SysTick_1ms - IAPVarTypeStruct_Ptr.processing_tick > TFTP_IAP_Timeout) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><D7BD><EFBFBD>
|
||||
if( SysTick_1ms - IAPVarTypeStruct_Ptr.processing_tick > 30000) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><D7BD><EFBFBD>
|
||||
{
|
||||
//Cloud_IAP_Plan_SendPack(tftp_args,IAPVarTypeStruct_Ptr,IAPPlan_State_IAPTimeout); //<2F><><EFBFBD><EFBFBD>IAP<41><50><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ
|
||||
|
||||
@@ -587,7 +591,7 @@ __attribute__((section(".non_0_wait"))) void Internal_TFTP_Task(void)
|
||||
IAPVarTypeStruct_Ptr.enable = 0x00;
|
||||
break;
|
||||
default:
|
||||
IAPVarTypeStruct_Ptr.status = STA_END; //<2F>ͷ<EFBFBD><CDB7><EFBFBD><D7BD><EFBFBD>
|
||||
IAPVarTypeStruct_Ptr.status = STA_INIT_WAIT; //<2F>ͷ<EFBFBD><CDB7><EFBFBD><D7BD><EFBFBD>
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user