X1UWaterWmbusISK/app/UWater_Frame/UWater_frame_func_ReplySYNB.c

1351 lines
40 KiB
C
Raw Normal View History

2024-06-03 15:49:39 +08:00
#include "sys_config.h"
#if PRODUCT_SY
#include "sys_processor.h"
#include "UWater_eeprom_driver.h"
#include "UWater_rtcc_app.h"
#include "UWater_power_app.h"
#include "UWater_gp22_app.h"
#include "UWater_pt_app.h"
#include "UWater_DataTools_App.h"
#include "UWater_SY_Store_App.h"
#include "SOE.h"
#include "UWater_frame_func_ReplyNB.h"
#include "UWater_frame_func_ReplySYNB.h"
static STRUCT_FRAME_SY frame_struct_SY; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD><D4BC>Ϣ
static u8 *new_message_data_rev_sy;
static u8 up_deal_stat_sy = UP_DEAL_S0;
static u8 s_sy_eep_complete=0;
static u8 task_complete_sy = PTL_PACK_BUSY;
static u8 g_frame_temp_send_buf_sy[UP_BUF_SIZE]; //<2F><><EFBFBD>ݲ<EFBFBD><DDB2>ֻ<EFBFBD><D6BB><EFBFBD><EFBFBD><EFBFBD>
static u16 g_frame_temp_len_sy=0;
static u8 *temp_send_start_p;
static u8 *temp_send_end_p;
static u8 *temp_send_end_p1;
static u8 temp_check_addr[7];
static u8 upload_serial_num_sy=0;
static u8 temp_upload_step=0;
static u8 upload_frame_retry_times = 0;
//<2F>ϱ<EFBFBD><CFB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݻ<EFBFBD>ȡ
static TYP_STATE_SY upload_frame_stat_sy=SY_STATE_S0;
static u8 task_complete_upload_sy = PTL_PACK_BUSY;
static u8 task_complete_warning_sy = PTL_PACK_BUSY;
static u8 SY_CircleUploadPackets=0; //<2F><>Ҫ<EFBFBD>ϱ<EFBFBD><CFB1><EFBFBD><EFBFBD>ܰ<EFBFBD><DCB0><EFBFBD>
static u8 SY_CircleThisPacketNum=0;//<2F><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
static u8 SY_CircleThisUploadPacket_Index=0;//<2F><>ǰҪ<C7B0>ϱ<EFBFBD><CFB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>
static u8 SY_CiecleThisUploadPacket_Cnt=0;//<2F><>ǰҪ<C7B0>ϱ<EFBFBD><CFB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD><DDB0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
static u8 SY_CircleUploadBuf[400];//10+16x24=394//<2F><><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD><CFB1><EFBFBD><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD>
static u16 SY_UploadDataLen=0;
static STRUCT_FRAME_SY temp_struct_upload_SY;
//<2F>ϱ<EFBFBD><CFB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݻ<EFBFBD>ȡ
static TYP_STATE_SY step_UploadWarningSY = SY_STATE_S0;
static u8* temp_warning_start_p;
static u8* temp_warning_end_p;
//ˮ<><CBAE><EFBFBD><EFBFBD>ƽ̨<C6BD><CCA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݹ<EFBFBD>Լ
//<2F>ϴ<EFBFBD><CFB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD>101<30><31>Ӧ<EFBFBD><D3A6>1<EFBFBD><31> <20>ϱ<EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݡ<EFBFBD>ˮ<EFBFBD><CBAE>״̬<D7B4><CCAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
void frame_func_reply_SYNB_UploadFrozenData(void)
{
task_complete_sy = PTL_PACK_FAIL;//<2F><><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD>Ӧ<EFBFBD><D3A6>֡,<2C><><EFBFBD>ش<EFBFBD><D8B4><EFBFBD>,<2C><><EFBFBD>Ʋ<EFBFBD>Ӧ<EFBFBD><D3A6>
}
//<2F>ϱ<EFBFBD><CFB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(102,Ӧ<><D3A6>2) <20>ϱ<EFBFBD><CFB1><EFBFBD><EFBFBD>ڲɼ<DAB2><C9BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void frame_func_reply_SYNB_UploadCycleData(void)
{
if(*(new_message_data_rev_sy + 14) == upload_serial_num_sy) //<2F>ж<EFBFBD><D0B6><EFBFBD><EFBFBD>к<EFBFBD><D0BA>Ƿ<EFBFBD><C7B7><EFBFBD>ȷ
{
if(*(new_message_data_rev_sy + 19) == 0) //<2F>ϱ<EFBFBD><CFB1>Ƿ<EFBFBD><C7B7>ɹ<EFBFBD>
{
FrameSetMsgApp(MsgShenYang_NbUplaod_AckOk);
}
}
task_complete_sy = PTL_PACK_FAIL;//<2F><><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD>Ӧ<EFBFBD><D3A6>֡,<2C><><EFBFBD>ش<EFBFBD><D8B4><EFBFBD>,<2C><><EFBFBD>Ʋ<EFBFBD>Ӧ<EFBFBD><D3A6>
}
//ͻ<><CDBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD>(103,Ӧ<><D3A6>3) <20>ڷ<EFBFBD><DAB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD>Ϊ1<CEAA>ı<EFBFBD><C4B1><EFBFBD><EFBFBD>¼<EFBFBD>ʱ<EFBFBD><CAB1>ʱ<EFBFBD>ϴ<EFBFBD>
void frame_func_reply_SYNB_SuddenAlarmUpload(void)
{
if(*(new_message_data_rev_sy + 14) == upload_serial_num_sy) //<2F>ж<EFBFBD><D0B6><EFBFBD><EFBFBD>к<EFBFBD><D0BA>Ƿ<EFBFBD><C7B7><EFBFBD>ȷ
{
if(*(new_message_data_rev_sy + 19) == 0) //<2F>ϱ<EFBFBD><CFB1>Ƿ<EFBFBD><C7B7>ɹ<EFBFBD>
{
FrameSetMsgApp(MsgShenYang_NbUplaod_AckOk);
}
}
task_complete_sy = PTL_PACK_FAIL;//<2F><><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD>Ӧ<EFBFBD><D3A6>֡,<2C><><EFBFBD>ش<EFBFBD><D8B4><EFBFBD>,<2C><><EFBFBD>Ʋ<EFBFBD>Ӧ<EFBFBD><D3A6>
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݲ<EFBFBD>ѯ(8,Ӧ<><D3A6>108) <20><>ѯ<EFBFBD>ն<EFBFBD><D5B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݡ<EFBFBD><DDA1><EFBFBD><EAB6B3><EFBFBD><EFBFBD><EFBFBD>ݡ<EFBFBD><DDA1><EFBFBD><C2B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void frame_func_reply_SYNB_ACK_FrozenDataQuery(void)
{
static u8 num_get,num_to_get,num_to_read,totalnum,totalPackts,curPackt,send_totalPackts;
static u8 temp_all_num=0;
static u8 check_num=0;
static UNION_SY_STORE_FROZEN temp_read_frozen_data;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݶ<EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
static u16 temp_frozen_addr=EEP_ADDR_SY_STORE_FROZEN_DAILY;
switch(up_deal_stat_sy)
{
case UP_DEAL_S0:
{
temp_send_start_p = g_frame_temp_send_buf_sy;
temp_send_end_p = g_frame_temp_send_buf_sy;
temp_send_end_p1 = g_frame_temp_send_buf_sy;
if(*(new_message_data_rev_sy + 19) == 0)//<2F><>
{
num_to_read = get_SY_StorePara(SY_StoreCurIndex_Daily);//<2F>ն<EFBFBD><D5B6>ᵱǰ<E1B5B1>洢ָ<E6B4A2><D6B8>
temp_all_num = 7;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>7<EFBFBD><37>
temp_frozen_addr=EEP_ADDR_SY_STORE_FROZEN_DAILY;
}
else if(*(new_message_data_rev_sy + 19) == 1)//<2F><>
{
num_to_read = get_SY_StorePara(SY_StoreCurIndex_Month);
temp_all_num = 18;//18<31><38>
temp_frozen_addr=EEP_ADDR_SY_STORE_FROZEN_MONTH;
}
else if(*(new_message_data_rev_sy + 19) == 2)//<2F><>
{
num_to_read = get_SY_StorePara(SY_StoreCurIndex_Year);
temp_all_num = 6;//6<><36>
temp_frozen_addr=EEP_ADDR_SY_STORE_FROZEN_YEAR;
}
totalnum = 0;
num_get = 0;
num_to_get = *(new_message_data_rev_sy + 20);//<2F><>Ҫ<EFBFBD><D2AA>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
totalPackts = *(new_message_data_rev_sy + 21);//<2F>ܰ<EFBFBD><DCB0><EFBFBD>
curPackt = *(new_message_data_rev_sy + 22);//<2F><>ǰ<EFBFBD><C7B0>
*temp_send_end_p++ = 0;//<2F><><EFBFBD><EFBFBD><EFBFBD>ܰ<EFBFBD><DCB0><EFBFBD>
*temp_send_end_p++ = 0;//<2F><><EFBFBD>ص<EFBFBD>ǰ<EFBFBD><C7B0>
*temp_send_end_p++ = 0;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
up_deal_stat_sy = UP_DEAL_S1;
}
break;
case UP_DEAL_S1:
{
if(totalnum >= temp_all_num)//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>temp_all_num
{
send_totalPackts = totalPackts;
up_deal_stat_sy = UP_DEAL_S3;
break;
}
if(TASK_IDLE == EepIfIdle())//<2F><EFBFBD><E6B4A2><EFBFBD>ݵ<EFBFBD>EEPROM
{
if(num_to_read > temp_all_num) //<2F><>ָֹ<D6B9><D6B8><EFBFBD>ܷ<EFBFBD><DCB7><EFBFBD>
{
num_to_read = temp_all_num;
}
if(num_to_read == 0)
{
num_to_read = temp_all_num;
}
totalnum++;
num_to_read--;
EepRead(temp_frozen_addr + num_to_read*STORE_SIZE_DATA_FROZEN, &temp_read_frozen_data.data_buf[0], STORE_SIZE_DATA_FROZEN, &s_sy_eep_complete);
up_deal_stat_sy = UP_DEAL_S2;
}
}
break;
case UP_DEAL_S2:
{
if(TASK_IDLE == EepIfIdle())//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
check_num = 0;
for(int i = 0; i<(STORE_SIZE_DATA_FROZEN-1); i++)
{
check_num += temp_read_frozen_data.data_buf[i];
}
if(check_num == temp_read_frozen_data.Data.CheckSum)
{
temp_read_frozen_data.Data.FrozenDataTime.s.year = BCD2HEX(temp_read_frozen_data.Data.FrozenDataTime.s.year);
temp_read_frozen_data.Data.FrozenDataTime.s.month = BCD2HEX(temp_read_frozen_data.Data.FrozenDataTime.s.month);
temp_read_frozen_data.Data.FrozenDataTime.s.day = BCD2HEX(temp_read_frozen_data.Data.FrozenDataTime.s.day);
temp_read_frozen_data.Data.FrozenDataTime.s.hour = BCD2HEX(temp_read_frozen_data.Data.FrozenDataTime.s.hour);
temp_read_frozen_data.Data.FrozenDataTime.s.minute= BCD2HEX(temp_read_frozen_data.Data.FrozenDataTime.s.minute);
temp_read_frozen_data.Data.FrozenDataTime.s.second= BCD2HEX(temp_read_frozen_data.Data.FrozenDataTime.s.second);
num_get++;
if(num_get >= num_to_get)//<2F><EFBFBD><EFB5BD>Ҫ<EFBFBD><D2AA>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
for(int i = 0; i<(STORE_SIZE_DATA_FROZEN-2); i++)
{
*temp_send_end_p++ = temp_read_frozen_data.data_buf[i];
}
up_deal_stat_sy = UP_DEAL_S3;
break;
}
else
{
if(curPackt==1)
{
if(num_get<=9)//<2F><><EFBFBD><EFBFBD>9<EFBFBD><39><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD>ֳ<EFBFBD><D6B3><EFBFBD><EFBFBD><EFBFBD>
{
for(int i = 0; i<(STORE_SIZE_DATA_FROZEN-2); i++)
{
*temp_send_end_p++ = temp_read_frozen_data.data_buf[i];
}
totalPackts =1;
}
else
{
totalPackts = 2;//<2F>ܰ<EFBFBD><DCB0><EFBFBD>Ϊ2
if(num_get>0)
{
num_get--;
}
up_deal_stat_sy = UP_DEAL_S3;
break;
}
}
else if(curPackt==2)
{
if(num_get>9)//<2F><><EFBFBD><EFBFBD>9<EFBFBD><39><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD>ֳ<EFBFBD><D6B3><EFBFBD><EFBFBD><EFBFBD>
{
for(int i = 0; i<(STORE_SIZE_DATA_FROZEN-2); i++)
{
*temp_send_end_p++ = temp_read_frozen_data.data_buf[i];
}
}
}
else
{
totalPackts = 0;
up_deal_stat_sy = UP_DEAL_S3;
break;
}
}
}
up_deal_stat_sy = UP_DEAL_S1;
}
}
break;
case UP_DEAL_S3:
{
send_totalPackts = totalPackts;
*temp_send_end_p1++ = send_totalPackts;//<2F>ܰ<EFBFBD><DCB0><EFBFBD>
*temp_send_end_p1++ = curPackt;//<2F><>ǰ<EFBFBD><C7B0>
if(num_get>9)
{
num_get = num_get - 9;
}
*temp_send_end_p1++ = num_get;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
g_frame_temp_len_sy = (temp_send_end_p - temp_send_start_p);//<2F><>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵij<DDB5><C4B3><EFBFBD>
up_deal_stat_sy = UP_DEAL_S0;
task_complete_sy = PTL_PACK_SUCCESS;
}
break;
default:
{
up_deal_stat_sy = UP_DEAL_S0;
task_complete_sy = PTL_PACK_FAIL;
}
break;
}
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݲ<EFBFBD>ѯ(9,Ӧ<><D3A6>109)
void frame_func_reply_SYNB_ACK_CycleDataQuery(void)
{
static u8 temp_data_cnt=0;//Ҫ<><D2AA>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
static u8 temp_packet_cnt=0;//<2F>ܰ<EFBFBD><DCB0><EFBFBD>
static u8 curPacket;
static u8 packet_index_buf[6];
static u8 curPacketIndex=0;//Ҫ<><D2AA>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
u8 readDays=0;//Ҫ<><D2AA>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
switch(up_deal_stat_sy)
{
case UP_DEAL_S0:
{
g_frame_temp_len_sy = 0;
temp_send_start_p = g_frame_temp_send_buf_sy;
temp_send_end_p = g_frame_temp_send_buf_sy;
readDays = *(new_message_data_rev_sy + 19); //<2F><>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD>
curPacket = *(new_message_data_rev_sy + 21);//<2F><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>
temp_packet_cnt = getSY_CircleDataPackets(readDays, packet_index_buf);//<2F><>ȡ<EFBFBD>ܰ<EFBFBD><DCB0><EFBFBD><EFBFBD>Ͱ<EFBFBD><CDB0><EFBFBD>
*temp_send_end_p++ = temp_packet_cnt;//<2F>ܰ<EFBFBD><DCB0><EFBFBD>
//<2F><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if((curPacket > temp_packet_cnt)||(curPacket == 0))//Ҫ<><D2AA>ȡ<EFBFBD>ĵ<EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>Ч
{
*temp_send_end_p++ = 0;
up_deal_stat_sy = UP_DEAL_S2;
}
else
{
*temp_send_end_p++ = curPacket;
up_deal_stat_sy = UP_DEAL_S1;
}
}
break;
case UP_DEAL_S1:
{
if(TASK_IDLE == EepIfIdle())
{
DateTime temp_time;
curPacketIndex = packet_index_buf[curPacket-1];
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
temp_data_cnt = SY_GetCircleReadStartEnd(curPacketIndex,1) - SY_GetCircleReadStartEnd(curPacketIndex,0);
//<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
SY_GetCircleDateTime(&temp_time,curPacketIndex, 1);//<2F><>ʼʱ<CABC><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*temp_send_end_p++ = BCD2HEX(temp_time.s.year);//<2F><>
*temp_send_end_p++ = BCD2HEX(temp_time.s.month);//<2F><>
*temp_send_end_p++ = BCD2HEX(temp_time.s.day);//<2F><>
*temp_send_end_p++ = BCD2HEX(temp_time.s.hour); //ʱ
*temp_send_end_p++ = BCD2HEX(temp_time.s.minute);//<2F><>
*temp_send_end_p++ = BCD2HEX(temp_time.s.second);//<2F><>
//ʱ<><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*temp_send_end_p++ = 6;//30<33><30><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*temp_send_end_p++ = temp_data_cnt;
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
u16 temp_ee_addr=0;
temp_ee_addr = EEP_ADDR_SY_STORE_CIRCLE + curPacketIndex*16*24 + SY_GetCircleReadStartEnd(curPacketIndex,0)*16;
EepRead(temp_ee_addr, temp_send_end_p, 16*temp_data_cnt, &s_sy_eep_complete);
temp_send_end_p += 16*temp_data_cnt;
up_deal_stat_sy = UP_DEAL_S2;
}
}
break;
case UP_DEAL_S2:
{
if(TASK_IDLE == EepIfIdle())//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
g_frame_temp_len_sy = (temp_send_end_p - temp_send_start_p);//<2F><>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵij<DDB5><C4B3><EFBFBD>
up_deal_stat_sy = UP_DEAL_S0;
task_complete_sy = PTL_PACK_SUCCESS;
}
}
break;
default:
{
up_deal_stat_sy = UP_DEAL_S0;
task_complete_sy = PTL_PACK_FAIL;
}
break;
}
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʷ<EFBFBD><CAB7><EFBFBD>ݲ<EFBFBD>ѯ<EFBFBD><D1AF>10<31><30>Ӧ<EFBFBD><D3A6>110<31><30> <20><>ѯ<EFBFBD><D1AF>ʷ<EFBFBD><CAB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void frame_func_reply_SYNB_ACK_AlarmHistoryDataQuery(void)
{
static u8 *new_message_data_rev_ies;
static u8 num_get,num_to_get,num_to_read,totalnum;
static mtype16_ temp_soe_type;
static ONE_SOE soe_event_read;
static DateTime_noweek start_time;
static DateTime_noweek end_time;
static u8 *temp_alarm_cnt;
static u8 *temp_all_packets_p;
static u8 all_packets, cur_packet;
switch(up_deal_stat_sy)
{
case UP_DEAL_S0:
{
DateTime tempDataTime;
new_message_data_rev_ies = (new_message_data_rev_sy + 19);
temp_send_start_p = g_frame_temp_send_buf_sy;
temp_send_end_p = g_frame_temp_send_buf_sy;
temp_all_packets_p = g_frame_temp_send_buf_sy;
totalnum = 0;
num_get = 0;
RtccGetDateTime(&tempDataTime);//<2F><>ȡ<EFBFBD><C8A1>ǰʱ<C7B0><CAB1>
num_to_read = Sys_data_object.P4.Point_SOE_write;
temp_soe_type.to_uint16 = SOE_ALL_TYPE;
start_time = getBackDateTimeNoWeek(*(new_message_data_rev_ies + 0));//<2F><>ȡ<EFBFBD><C8A1>ʼʱ<CABC><CAB1>
all_packets = *(new_message_data_rev_ies + 1);//<2F>ܰ<EFBFBD><DCB0><EFBFBD>
cur_packet = *(new_message_data_rev_ies + 2);//<2F><>ǰ<EFBFBD><C7B0>,<2C><><EFBFBD><EFBFBD>ֵ 4 (7*25<32><35>=175<37>ֽ<EFBFBD>һ<EFBFBD><D2BB>,4<><34>100<30><30>)
//<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
end_time.s.year = tempDataTime.s.year;
end_time.s.month = tempDataTime.s.month;
end_time.s.day = tempDataTime.s.day;
end_time.s.hour = tempDataTime.s.hour;
end_time.s.minute = tempDataTime.s.minute;
end_time.s.second = tempDataTime.s.second;
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
if((0 == cur_packet)||(cur_packet > 4))
{
up_deal_stat_sy = UP_DEAL_S3;
}
num_to_get = 25;//25<32><35>һ<EFBFBD><D2BB><EFBFBD>ְ<EFBFBD>
{
*temp_send_end_p++ = all_packets;//<2F>ܰ<EFBFBD><DCB0><EFBFBD>(վλ)
*temp_send_end_p++ = cur_packet;//<2F><>ǰ<EFBFBD><C7B0>
temp_alarm_cnt = temp_send_end_p++; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
up_deal_stat_sy = UP_DEAL_S1;
}
}
break;
case UP_DEAL_S1://<2F><>ȡһ<C8A1><D2BB>SOE
{
if(totalnum >= TOTAL_NUM_SOE)//<2F>ܹ<EFBFBD><DCB9><EFBFBD>TOTAL_NUM_SOE<4F><45> ǿ<><C7BF><EFBFBD>˳<EFBFBD><CBB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٶ<EFBFBD><D9B6><EFBFBD>
{
all_packets = (num_get/25);
if(num_get%25)
{
all_packets++;
}
*temp_all_packets_p = all_packets;
up_deal_stat_sy = UP_DEAL_S3;
break;
}
if(TASK_IDLE == EepIfIdle())//<2F><EFBFBD><E6B4A2><EFBFBD>ݵ<EFBFBD>EEPROM
{
totalnum++;
if(num_to_read > TOTAL_NUM_SOE) //<2F><>ָֹ<D6B9><D6B8><EFBFBD>ܷ<EFBFBD><DCB7><EFBFBD>
{
num_to_read = TOTAL_NUM_SOE;
}
if(num_to_read == 0)
{
num_to_read = TOTAL_NUM_SOE;
}
num_to_read--;
EepRead(EEP_ADDR_SOE_BASE + (u16)num_to_read*LENGTH_ONE_SOE,(u8*)&soe_event_read,LENGTH_ONE_SOE, &s_sy_eep_complete);
up_deal_stat_sy = UP_DEAL_S2;
}
}
break;
case UP_DEAL_S2:
{
if(TASK_IDLE == EepIfIdle())//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
if(TRUE == Check_One_Soe(temp_soe_type.to_uint16,&start_time,&end_time,&soe_event_read))//<2F><><EFBFBD>һ<E2B5BD><D2BB><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7>SOE
{
num_get++;
if((num_get > (cur_packet-1)*25)&&(num_get < (cur_packet*num_to_get)))//<2F><><EFBFBD><EFBFBD><><D2AA>ȡ<EFBFBD>ڶ<EFBFBD><DAB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹӵ<CDB4>26<32><36><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD>ݸ<EFBFBD><DDB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>50<35><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
*temp_send_end_p++ = soe_event_read.soe_type-1000;
*temp_send_end_p++ = BCD2HEX(soe_event_read.soe_time.s.year);
*temp_send_end_p++ = BCD2HEX(soe_event_read.soe_time.s.month);
*temp_send_end_p++ = BCD2HEX(soe_event_read.soe_time.s.day);
*temp_send_end_p++ = BCD2HEX(soe_event_read.soe_time.s.hour);
*temp_send_end_p++ = BCD2HEX(soe_event_read.soe_time.s.minute);
*temp_send_end_p++ = BCD2HEX(soe_event_read.soe_time.s.second);
}
}
up_deal_stat_sy = UP_DEAL_S1;
}
}
break;
case UP_DEAL_S3:
{
*temp_alarm_cnt = ((g_frame_temp_len_sy-3)/7); //<2F><><EFBFBD><EFBFBD><E3B1A8><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>
g_frame_temp_len_sy = (temp_send_end_p - temp_send_start_p);//<2F><>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵij<DDB5><C4B3><EFBFBD>
up_deal_stat_sy = UP_DEAL_S0;
task_complete_sy = PTL_PACK_SUCCESS;
}
break;
default:
{
up_deal_stat_sy = UP_DEAL_S0;
task_complete_sy = PTL_PACK_FAIL;
}
break;
}
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(51,Ӧ<><D3A6>151) <20><><EFBFBD>ն<EFBFBD><D5B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݡ<EFBFBD><DDA1><EFBFBD>ʷ<EFBFBD><CAB7><EFBFBD>ݡ<EFBFBD><DDA1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void frame_func_reply_SYNB_ACK_ClearAllData(void)
{
temp_send_start_p = g_frame_temp_send_buf_sy;
temp_send_end_p = g_frame_temp_send_buf_sy;
*temp_send_end_p++ = *(new_message_data_rev_sy + 19);
*temp_send_end_p++ = *(new_message_data_rev_sy + 20);
*temp_send_end_p++ = *(new_message_data_rev_sy + 21);
if(*(new_message_data_rev_sy + 19) == 1) //<2F><><EFBFBD>ն<EFBFBD><D5B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
*temp_send_end_p++ = 1; //0<><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 1<><31><EFBFBD>ɹ<EFBFBD> 2<><32>ʧ<EFBFBD><CAA7>
FrameSetMsgApp(MsgShenYang_FrozenClear);
}
if(*(new_message_data_rev_sy + 20) == 1) //<2F><><EFBFBD>ձ<EFBFBD><D5B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
*temp_send_end_p++ = 1; //0<><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 1<><31><EFBFBD>ɹ<EFBFBD> 2<><32>ʧ<EFBFBD><CAA7>
FrameSetMsgApp(MsgShenYang_WarningClear);
}
if(*(new_message_data_rev_sy + 21) == 1) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
*temp_send_end_p++ = 1; //0<><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 1<><31><EFBFBD>ɹ<EFBFBD> 2<><32>ʧ<EFBFBD><CAA7>
FrameSetMsgApp(MsgShenYang_CircleClear);
}
g_frame_temp_len_sy = 3;
task_complete_sy = PTL_PACK_SUCCESS;
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(52,Ӧ<><D3A6>152)
void frame_func_reply_SYNB_ACK_RestoreFactorySetting(void)
{
temp_send_start_p = g_frame_temp_send_buf_sy;
temp_send_end_p = g_frame_temp_send_buf_sy;
*temp_send_end_p++ = *(new_message_data_rev_sy + 19);
*temp_send_end_p++ = *(new_message_data_rev_sy + 20);
if(*(new_message_data_rev_sy + 20) == 1) //<2F>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
FrameSetMsgApp(MsgShenYang_FactorySettingAndReset);
}
else
{
if(*(new_message_data_rev_sy + 19) == 1) //<2F><><EFBFBD><EFBFBD>
{
FrameSetMsgApp(MsgShenYang_SysReset);
}
}
g_frame_temp_len_sy = 2;
task_complete_sy = PTL_PACK_SUCCESS;
}
//<2F><><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>(71,Ӧ<><D3A6>171) <20>ɳ<EFBFBD><C9B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><D0B6><EFBFBD><EFBFBD>ı<EFBFBD><C4B1>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɳ<EFBFBD><C9B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void frame_func_reply_SYNB_DebugInstruction(void)
{
g_frame_temp_len_sy = 0;
task_complete_sy = PTL_PACK_SUCCESS;
}
/**
5<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>TLV<EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɱ<EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ID(Tag)<EFBFBD>Ķ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>2<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD><EFBFBD>Tag<EFBFBD><EFBFBD>Ӧ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><EFBFBD><EFBFBD>Ҳ<EFBFBD><EFBFBD>ͬ<EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD>
**/
//ˮ<><CBAE>Ӧ<EFBFBD><D3A6>ƽ̨<C6BD><CCA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Լ
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD>6<EFBFBD><36>Ӧ<EFBFBD><D3A6>106<30><36> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD>ʱ<EFBFBD><EFBFBD><E4A1A2><EFBFBD>ط<EFBFBD><D8B7>š<EFBFBD><C5A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void frame_func_reply_SYNB_ACK_ParameterSetting(void)
{
static u8 tlv_para_cnt=0;//Ҫ<><D2AA><EFBFBD>õIJ<C3B5><C4B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
switch(up_deal_stat_sy)
{
case UP_DEAL_S0:
{
u8 temp_tag=0;
u8 temp_len=0;
u8 temp_value[32];
u8 *temp_rev_p;
temp_rev_p = (new_message_data_rev_sy + 19);
temp_send_start_p = g_frame_temp_send_buf_sy;
temp_send_end_p = g_frame_temp_send_buf_sy;
tlv_para_cnt = *temp_rev_p++; //Ҫ<><D2AA><EFBFBD>õIJ<C3B5><C4B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if(tlv_para_cnt <= TLV_STR_BUF_LEN)
{
*temp_send_end_p++ = tlv_para_cnt;
for(int i=0; i<tlv_para_cnt; i++)
{
temp_tag = *temp_rev_p++;
temp_len = *temp_rev_p++;
*temp_send_end_p++ = temp_tag;
*temp_send_end_p++ = temp_len;
for(int j=0; j<temp_len; j++)
{
temp_value[j] = *temp_rev_p++;
*temp_send_end_p++ = temp_value[j];
}
if(SUCCESS_IES == SetTLVData(temp_tag, temp_len, temp_value))
{
*temp_send_end_p++ = 0;//<2F>ɹ<EFBFBD>
}
else
{
*temp_send_end_p++ = 1;//ʧ<><CAA7>
}
}
}
else
{
tlv_para_cnt = 0;
}
g_frame_temp_len_sy = (temp_send_end_p - temp_send_start_p);//<2F><>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵij<DDB5><C4B3><EFBFBD>
task_complete_sy = PTL_PACK_SUCCESS;
up_deal_stat_sy = UP_DEAL_S0;
}
break;
default:
{
up_deal_stat_sy = UP_DEAL_S0;
task_complete_sy = PTL_PACK_FAIL;
}
break;
}
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѯ<EFBFBD><D1AF>7<EFBFBD><37>Ӧ<EFBFBD><D3A6>107<30><37> <20>ڷ<EFBFBD><DAB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD>Ϊ1<CEAA>ı<EFBFBD><C4B1><EFBFBD><EFBFBD>¼<EFBFBD>ʱ<EFBFBD><CAB1>ʱ<EFBFBD>ϴ<EFBFBD>
void frame_func_reply_SYNB_ACK_ParameterQuery(void)
{
static u8 tlv_para_cnt=0;//Ҫ<><D2AA><EFBFBD>õIJ<C3B5><C4B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
u8 temp_tag=0;
u8 temp_value[32];
u8 index=0;
u8 *temp_rev_p;
tlv_para_cnt = *(new_message_data_rev_sy + 19);//Ҫ<><D2AA>ѯ<EFBFBD>IJ<EFBFBD><C4B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
temp_send_start_p = g_frame_temp_send_buf_sy;
temp_send_end_p = g_frame_temp_send_buf_sy;
temp_rev_p = (new_message_data_rev_sy + 20); //tag<61><67>ʼλ<CABC><CEBB>
if(tlv_para_cnt <= TLV_STR_BUF_LEN)
{
*temp_send_end_p++ = tlv_para_cnt;//Ӧ<><D3A6>Ҫ<EFBFBD><D2AA>ѯ<EFBFBD>IJ<EFBFBD><C4B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
for(int i=0; i<tlv_para_cnt; i++)
{
temp_tag = *temp_rev_p++;
index = getTlvTagIndex(temp_tag);
if(GetTLVData(temp_tag, TlvStrBuf[index].Len, temp_value) == SUCCESS_IES)
{
*temp_send_end_p++ = temp_tag;
*temp_send_end_p++ = TlvStrBuf[index].Len;
for(int j=0; j<TlvStrBuf[index].Len; j++)
{
*temp_send_end_p++ = temp_value[j];
}
}
}
g_frame_temp_len_sy = (temp_send_end_p - temp_send_start_p);
}
else
{
g_frame_temp_len_sy = 0;
tlv_para_cnt = 0;
}
task_complete_sy = PTL_PACK_SUCCESS;
}
/**************************************************************************************
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ
ˮ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD>6<EFBFBD>ֽ<EFBFBD>BCD<EFBFBD>Ϊÿһ<EFBFBD><EFBFBD>ˮ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ψһ<EFBFBD>ĵ<EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽΪ<EFBFBD><EFBFBD><EFBFBD>Ҵ<EFBFBD><EFBFBD>2λ<EFBFBD><EFBFBD>+<EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD>2λ<EFBFBD><EFBFBD>+<EFBFBD><EFBFBD>ˮ<EFBFBD>ţ<EFBFBD>8λ<EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַΪAA AA AA AA AA AAʱΪ<EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַֻ<EFBFBD><EFBFBD>Ӧ<EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD>ͨѶ<EFBFBD>С<EFBFBD>
***************************************************************************************/
u8 check_met_addr_SYNB(u8 *p_buf,u8 *des_buf)
{
u8 tmp_i;
if(UP_SOURCE_IR == frame_get_datasource()) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8>֧<EFBFBD>ֹ㲥<D6B9><E3B2A5>ַ
{
for(tmp_i=0;tmp_i < 6;tmp_i++)
{
if((0xAA != *(p_buf + 2 + tmp_i)) && (*(p_buf + 2 +tmp_i) != *(des_buf + tmp_i))) //<2F><EFBFBD><E3B2A5><EFBFBD><EFBFBD>ַ<EFBFBD>ͱ<EFBFBD><CDB1><EFBFBD>ַ
{
break;
}
}
}
else //Զ<>˲<EFBFBD>֧<EFBFBD>ֹ㲥<D6B9><E3B2A5>ַ
{
for (tmp_i = 0; tmp_i < 6; tmp_i++)
{
if (*(p_buf + 2 +tmp_i) != *(des_buf + tmp_i))
{
break;
}
}
}
if(tmp_i >= 6)
{
return SUCCESS_IES;
}
return ERROR_IES;
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>NB<4E><42>Լ
u8 crack_frame_SY(u16 frame_lenth,u8 *frame_buffer)
{
u16 tmp_i = 0;
u16 tmp_j = 0;
u8 tmp_check = 0;
for (tmp_i = 0; tmp_i < frame_lenth; tmp_i++)
{
if (FM_HEAD_MARK == *(frame_buffer + tmp_i))
{
if (MET_TYPE_SY == *(frame_buffer + tmp_i + 1))
{
frame_struct_SY.head_site = tmp_i; //<2F><>¼֡ͷ
frame_struct_SY.sta = *(frame_buffer + tmp_i + 16);//״̬<D7B4>֣<EFBFBD>bit0Ϊ1ʱ<31><CAB1>ʾ<EFBFBD><CABE><EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD>01H<31><48>ʾ<EFBFBD><CABE><EFBFBD>ܣ<EFBFBD>bit1Ϊ1ʱ<31><CAB1>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD><CFB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>bitλԤ<CEBB><D4A4>
frame_struct_SY.len.data_buf[0] = *(frame_buffer + tmp_i + 17);//<2F><><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD><D4BC><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>Ϊ2<CEAA>ֽڣ<D6BD><DAA3><EFBFBD><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD><D6BD>ں<EFBFBD>
frame_struct_SY.len.data_buf[1] = *(frame_buffer + tmp_i + 18);
frame_struct_SY.end_site = frame_struct_SY.head_site + frame_struct_SY.len.datas + 20;
frame_struct_SY.check_len = frame_struct_SY.end_site - frame_struct_SY.head_site - 1;
frame_struct_SY.serial_num0 = *(frame_buffer + tmp_i + 14); //<2F><><EFBFBD>кţ<D0BA>Ӧ<EFBFBD><D3A6>ʹ<EFBFBD><CAB9>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡<EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>Ч
if ((frame_struct_SY.end_site < frame_lenth) && (FM_END_MARK == *(frame_buffer + frame_struct_SY.end_site)))
{
frame_struct_SY.ctrl = *(frame_buffer + frame_struct_SY.head_site + 15);
new_message_data_rev_sy = frame_buffer + frame_struct_SY.head_site;
for (tmp_j = 0; tmp_j < 6; tmp_j++) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD><D4BC>ַֻ<D6B7><D6BB>6<EFBFBD>ֽڵ<D6BD>BCD
{
temp_check_addr[tmp_j] = Sys_data_object.P1.met_addr[tmp_j];
}
//<2F><><EFBFBD><EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD>
for (tmp_j = frame_struct_SY.head_site; tmp_j < (frame_struct_SY.end_site - 1); tmp_j++)
{
tmp_check += *(frame_buffer + tmp_j);
}
if (tmp_check == *(frame_buffer + frame_struct_SY.end_site - 1))
{
frame_struct_SY.sta &= 0xFD; //<2F><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD><CFB4><EFBFBD>bit1Ϊ1ʱ<31><CAB1>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD><CFB4><EFBFBD>0<EFBFBD><30>ʾӦ<CABE><D3A6><EFBFBD><EFBFBD>
frame_lenth = 0;
if (ERROR_IES == check_met_addr_SYNB(frame_buffer + frame_struct_SY.head_site, temp_check_addr)) //<2F><><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>ַ<EFBFBD>ͱ<EFBFBD><CDB1><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>ͬ<EFBFBD><CDAC><EFBFBD><EFBFBD>ͬ<EFBFBD><CDAC><EFBFBD><EFBFBD>1<EFBFBD><31><EFBFBD><EFBFBD>ͬ<EFBFBD><CDAC><EFBFBD><EFBFBD>0
{
return (ERROR_IES);
}
return SUCCESS_IES;
}
}
}
}
}
return ERROR_IES;
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD>
u8 up_deal_code_sy(void)
{
task_complete_sy = PTL_PACK_BUSY;
switch(frame_struct_SY.ctrl)
{
case FM_UPLOAD_FROZEN_DATA_REPLY_CTRL://<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD><DDB5>ϱ<EFBFBD>Ӧ<EFBFBD><D3A6>
{
frame_func_reply_SYNB_UploadFrozenData();
frame_struct_SY.ack_ctrl = FM_UPLOAD_FROZEN_DATA_CTRL;
}
break;
case FM_UPLOAD_CYCLE_DATA_REPLY_CTRL://<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD><DDB5>ϱ<EFBFBD>Ӧ<EFBFBD><D3A6>
{
frame_func_reply_SYNB_UploadCycleData();
frame_struct_SY.ack_ctrl = FM_UPLOAD_CYCLE_DATA_CTRL;
}
break;
case FM_SUDDEN_ALARM_UPLOAD_REPLY_CTRL://<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD>ϱ<EFBFBD>Ӧ<EFBFBD><D3A6>
{
frame_func_reply_SYNB_SuddenAlarmUpload();
frame_struct_SY.ack_ctrl = FM_SUDDEN_ALARM_UPLOAD_CTRL;
}
break;
case FM_FROZEN_DATA_QUERY_CTRL://<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݲ<EFBFBD>ѯ
{
frame_func_reply_SYNB_ACK_FrozenDataQuery();
frame_struct_SY.ack_ctrl = FM_FROZEN_DATA_QUERY_REPLY_CTRL;
}
break;
case FM_CYCLE_DATA_QUERY_CTRL://<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݲ<EFBFBD>ѯ
{
frame_func_reply_SYNB_ACK_CycleDataQuery();
frame_struct_SY.ack_ctrl = FM_CYCLE_DATA_QUERY_REPLY_CTRL;
}
break;
case FM_ALARM_HISTORY_DATA_QUERY_CTRL://<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2>ѯ
{
frame_func_reply_SYNB_ACK_AlarmHistoryDataQuery();
frame_struct_SY.ack_ctrl = FM_ALARM_HISTORY_DATA_QUERY_REPLY_CTRL;
}
break;
case FM_CLEAR_ALL_DATA_CTRL://<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
frame_func_reply_SYNB_ACK_ClearAllData();
frame_struct_SY.ack_ctrl = FM_CLEAR_ALL_DATA_REPLY_CTRL;
}
break;
case FM_RESTORE_FACTORY_SETTING_CTRL:
{
frame_func_reply_SYNB_ACK_RestoreFactorySetting();
frame_struct_SY.ack_ctrl = FM_RESTORE_FACTORY_SETTING_REPLY_CTRL;
}
break;
case FM_DEBUG_INSTRUCTION_CTRL:
{
frame_func_reply_SYNB_DebugInstruction();
frame_struct_SY.ack_ctrl = FM_DEBUG_INSTRUCTION_REPLY_CTRL;
}
break;
case FM_PARAMENTER_SETTING_CTRL:
{
frame_func_reply_SYNB_ACK_ParameterSetting();
frame_struct_SY.ack_ctrl = FM_PARAMENTER_SETTING_REPLY_CTRL;
}
break;
case FM_PARAMENTER_QUERY_CTRL:
{
frame_func_reply_SYNB_ACK_ParameterQuery();
frame_struct_SY.ack_ctrl = FM_PARAMENTER_QUERY_REPLY_CTRL;
}
break;
default:
{
up_deal_stat_sy = UP_DEAL_S0;
task_complete_sy = PTL_PACK_FAIL;
}
break;
}
return task_complete_sy;
}
void Frame_ResetDealState_Shenyang(void)
{
up_deal_stat_sy = UP_DEAL_S0;
}
void get_imei_and_signal_parameters(u8 *tmp_data_buf)
{
u8 i = 0;
u8 s_temp_data1 = 0;
u8 temp_buf1[16];
u8 temp_buf2[16];
s16 s_temp_data=0;
UNION_2U8TOU16 s_temp_singal;
NbiotGetIMEI((char*)temp_buf1);
temp_buf2[0] = temp_buf1[0] - 0x30;
for(i=1;i<8;i++)
{
temp_buf2[i] = (temp_buf1[2*i]-0x30)&0x0F;
temp_buf2[i] |= ((temp_buf1[2*i-1]-0x30)<<4)&0xF0;
}
for(i=0;i<8;i++)
{
*tmp_data_buf ++ = temp_buf2[7-i];
}
*tmp_data_buf ++ =0;
*tmp_data_buf ++ =0;
*tmp_data_buf ++ =0;
NbiotGetRSRP(&s_temp_data);
s_temp_singal.datas = (s_temp_data*0.1);
s_temp_singal.datas = (~ s_temp_singal.datas) | 0x8000;
*tmp_data_buf ++ = s_temp_singal.datas_map .data0 ;
*tmp_data_buf ++ = s_temp_singal.datas_map .data1;
NbiotGetSNR(&s_temp_data); //<2F><><EFBFBD><EFBFBD>ƽ̨<C6BD><CCA8><EFBFBD><EFBFBD>δ<EFBFBD>Ŵ<EFBFBD>10<31><30><EFBFBD><EFBFBD>2<EFBFBD>ֽ<EFBFBD><D6BD>з<EFBFBD><D0B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
s_temp_data = s_temp_data*0.1;
if(s_temp_data<0)
{
s_temp_singal.datas = (-s_temp_data);
s_temp_singal.datas = (~s_temp_singal.datas) |0x8000;
}
else
{
s_temp_singal.datas = s_temp_data;
}
*tmp_data_buf ++ = s_temp_singal.data_buf[0];
*tmp_data_buf ++ = s_temp_singal.data_buf[1];
NbiotGetECL(&s_temp_data);
s_temp_singal.datas = s_temp_data*0.1;
*tmp_data_buf ++ = (u8)(s_temp_singal.datas); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԼECLҪһ<D2AA><D2BB><EFBFBD>ֽڣ<D6BD><DAA3><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD><30>1<EFBFBD><31>2
NbiotGetCSQ(&s_temp_data1); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԼCSQ<53>ϴ<EFBFBD>1<EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD><EFBFBD>
*tmp_data_buf ++ = s_temp_data1;
}
//<2F><><EFBFBD><EFBFBD>NB<4E><42>Լ<EFBFBD><D4BC>֡
void Frame_ack_ShenYangBase(STRUCT_FRAME_SY temp_struct, u8* p_temp_buf, u16 p_temp_len, u8* p_send_buf, u16* p_send_len)
{
u8 i = 0;
u16 j = 0;
UNION_2U8TOU16 frame_pack_len;
p_send_buf[0] = 0xFE; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԼûҪ<C3BB><D2AA><EFBFBD><EFBFBD>ǰ<EFBFBD><C7B0>
p_send_buf[1] = 0xFE;
p_send_buf[2] = FM_HEAD_MARK; //<2F><>ͷ68H
p_send_buf[3] = MET_TYPE_SY; //<2F><>Լ<EFBFBD>汾02H
//ASCII<49><49>ʽ<EFBFBD><CABD>IMEI<45><49>11<31>ֽ<EFBFBD>(imeiʵ<69><CAB5><EFBFBD><EFBFBD>15<31><35><EFBFBD><EFBFBD>)
//<2F>źŲ<C5BA><C5B2><EFBFBD>6<EFBFBD>ֽ<EFBFBD> //<2F>ź<EFBFBD>ǿ<EFBFBD><C7BF>(RSRP),2<>ֽ<EFBFBD><D6BD>з<EFBFBD><D0B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(SNR),2<>ֽ<EFBFBD><D6BD>з<EFBFBD><D0B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD>ǵȼ<C7B5><C8BC><EFBFBD>1<EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0,1,2
//<2F>ź<EFBFBD><C5BA><EFBFBD><EFBFBD><EFBFBD>(CSQ)<29><>1<EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD>ַ6<D6B7>ֽ<EFBFBD>
//<2F><><EFBFBD>к<EFBFBD>1<EFBFBD>ֽ<EFBFBD> <20>Լ<EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1<EFBFBD>ֽ<EFBFBD>
//<2F><><EFBFBD>ܰ汾1<E6B1BE>ֽ<EFBFBD> 0<><30>1
//<2F><><EFBFBD><EFBFBD><EFBFBD>򳤶<EFBFBD>2<EFBFBD>ֽ<EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>N<EFBFBD>ֽ<EFBFBD>
//У<><D0A3><EFBFBD><EFBFBD>1<EFBFBD>ֽ<EFBFBD>
//<2F><>β16H
get_imei_and_signal_parameters(&p_send_buf[4]); //<2F><>18<31>ֽ<EFBFBD>
for (i = 0; i < 6; i++) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD><D4BC>ַ<EFBFBD><D6B7>6<EFBFBD>ֽ<EFBFBD>BCD
{
p_send_buf[21 + i] = Sys_data_object.P1.met_addr[i];
}
p_send_buf[27] = temp_struct.serial_num0; //Ӧ<><D3A6><EFBFBD><EFBFBD><EFBFBD>к<EFBFBD>
p_send_buf[28] = temp_struct.ack_ctrl;
p_send_buf[29] = temp_struct.sta;
frame_pack_len.datas = p_temp_len;
p_send_buf[30] = frame_pack_len.datas_map .data0 ;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD><D4BC><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>2<EFBFBD>ֽڣ<D6BD><DAA3><EFBFBD><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD><D6BD>ں<EFBFBD>
p_send_buf[31] = frame_pack_len.datas_map .data1 ;
memcpy(&p_send_buf[32], p_temp_buf, p_temp_len);
p_send_buf[32+frame_pack_len.datas]=0;
for (j = 2; j < 32+frame_pack_len.datas; j++)
{
p_send_buf[32+frame_pack_len.datas] += p_send_buf[j];//У<><D0A3><EFBFBD><EFBFBD>
}
p_send_buf[33+frame_pack_len.datas] = FM_END_MARK; //֡<><D6A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*p_send_len = 34+frame_pack_len.datas;
}
//<2F><><EFBFBD><EFBFBD>NB<4E><42>ԼӦ<D4BC><D3A6>֡<EFBFBD><D6A1>ʽ<EFBFBD><CABD>֡
void Sy_Frame_nb_read_ack(u8* p_send_buf, u16* p_send_len)
{
Frame_ack_ShenYangBase(frame_struct_SY, g_frame_temp_send_buf_sy, g_frame_temp_len_sy, p_send_buf, p_send_len);
}
////////////////////////////////////////////////////////////////<2F><><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD><CFB1><EFBFBD><EFBFBD><EFBFBD>//////////////////////////////
//<2F><><EFBFBD><EFBFBD>NB<4E><42>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD><CFB1><EFBFBD>֡
void Sy_Frame_nb_upload(u8* p_send_buf, u16* p_send_len)
{
Frame_ack_ShenYangBase(temp_struct_upload_SY, SY_CircleUploadBuf, SY_UploadDataLen, p_send_buf, p_send_len);
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD><CFB4><EFBFBD>֡
void Nb_SY_ReadWarningRecord(u8 *p_send_buf, u16 *p_send_len)
{
static u8 num_get,num_to_read,totalnum;
static mtype16_ temp_soe_type;
static ONE_SOE soe_event_read;
static DateTime_noweek start_time;
static DateTime_noweek end_time;
switch(step_UploadWarningSY)
{
case SY_STATE_S0:
{
DateTime tempDataTime;
temp_warning_start_p = p_send_buf;
temp_warning_end_p = p_send_buf;
RtccGetDateTime(&tempDataTime);//<2F><>ȡ<EFBFBD><C8A1>ǰʱ<C7B0><CAB1>
num_to_read = Sys_data_object.P4.Point_SOE_write;
temp_soe_type.to_uint16 = SOE_ALL_TYPE;
//<2F><>ʼʱ<CABC><CAB1>
start_time.s.year = tempDataTime.s.year;
start_time.s.month = tempDataTime.s.month;
start_time.s.day = tempDataTime.s.day;
start_time.s.hour = 0x00;
start_time.s.minute = 0x00;
start_time.s.second = 0x00;
//<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
end_time.s.year = tempDataTime.s.year;
end_time.s.month = tempDataTime.s.month;
end_time.s.day = tempDataTime.s.day;
end_time.s.hour = tempDataTime.s.hour;
end_time.s.minute = tempDataTime.s.minute;
end_time.s.second = tempDataTime.s.second;
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
num_get = 0;
totalnum = 0;
SY_UploadDataLen = 9;
temp_warning_end_p += 9;
step_UploadWarningSY = SY_STATE_S1;
}
break;
case SY_STATE_S1://<2F><>ȡһ<C8A1><D2BB>SOE
{
if(totalnum >= TOTAL_NUM_SOE)//<2F>ܹ<EFBFBD><DCB9><EFBFBD>TOTAL_NUM_SOE<4F><45> ǿ<><C7BF><EFBFBD>˳<EFBFBD><CBB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٶ<EFBFBD><D9B6><EFBFBD>
{
step_UploadWarningSY = SY_STATE_S3;
break;
}
if(TASK_IDLE == EepIfIdle())//<2F><EFBFBD><E6B4A2><EFBFBD>ݵ<EFBFBD>EEPROM
{
totalnum++;
if(num_to_read > TOTAL_NUM_SOE) //<2F><>ָֹ<D6B9><D6B8><EFBFBD>ܷ<EFBFBD><DCB7><EFBFBD>
{
num_to_read = TOTAL_NUM_SOE;
}
if(num_to_read == 0)
{
num_to_read = TOTAL_NUM_SOE;
}
num_to_read--;
EepRead(EEP_ADDR_SOE_BASE + (u16)num_to_read*LENGTH_ONE_SOE,(u8*)&soe_event_read,LENGTH_ONE_SOE, &s_sy_eep_complete);
}
step_UploadWarningSY = SY_STATE_S2;
}
break;
case SY_STATE_S2:
{
if(TASK_IDLE == EepIfIdle())//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
if(TRUE == Check_One_Soe(temp_soe_type.to_uint16,&start_time,&end_time,&soe_event_read))//<2F><><EFBFBD>һ<E2B5BD><D2BB><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7>SOE
{
*temp_warning_end_p++ = soe_event_read.soe_type-1000;
*temp_warning_end_p++ = BCD2HEX(soe_event_read.soe_time.s.year);
*temp_warning_end_p++ = BCD2HEX(soe_event_read.soe_time.s.month);
*temp_warning_end_p++ = BCD2HEX(soe_event_read.soe_time.s.day);
*temp_warning_end_p++ = BCD2HEX(soe_event_read.soe_time.s.hour);
*temp_warning_end_p++ = BCD2HEX(soe_event_read.soe_time.s.minute);
*temp_warning_end_p++ = BCD2HEX(soe_event_read.soe_time.s.second);
num_get++;
if(num_get >= 20)//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>20<32><30>
{
step_UploadWarningSY = SY_STATE_S3;
break;
}
}
step_UploadWarningSY = SY_STATE_S1;
}
}
break;
case SY_STATE_S3:
{
DateTime tempRtcc_time;
RtccGetDateTime(&tempRtcc_time);;//<2F><>ȡ<EFBFBD><C8A1>ǰʱ<C7B0><CAB1>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 3<>ֽ<EFBFBD>
*temp_warning_start_p++ = BCD2HEX(tempRtcc_time.s.year);
*temp_warning_start_p++ = BCD2HEX(tempRtcc_time.s.month);
*temp_warning_start_p++ = BCD2HEX(tempRtcc_time.s.day);
//<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1> 3<>ֽ<EFBFBD>
*temp_warning_start_p++ = BCD2HEX(tempRtcc_time.s.hour);
*temp_warning_start_p++ = BCD2HEX(tempRtcc_time.s.minute);
*temp_warning_start_p++ = BCD2HEX(tempRtcc_time.s.second);
//<2F><><EFBFBD><EFBFBD>״̬
*temp_warning_start_p++ = getWaterState();
//<2F><><EFBFBD><EFBFBD>״̬
*temp_warning_start_p++ = 0;//<2F>޷<EFBFBD>
*temp_warning_start_p++ = ((SY_UploadDataLen-9)/7);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*p_send_len = temp_warning_end_p-temp_warning_start_p;
task_complete_warning_sy = PTL_PACK_SUCCESS;
step_UploadWarningSY = SY_STATE_S0;
}
break;
default:
{
step_UploadWarningSY = SY_STATE_S0;
}
break;
}
}
void GetUploadDataResetState_ShenYangUDP(void)
{
upload_frame_stat_sy =SY_STATE_S0;
}
u8 GetUploadDataCheckIdle_ShenYangUDP(void)
{
if(SY_STATE_S0 == upload_frame_stat_sy)
{
return TASK_IDLE;
}
else
{
return TASK_BUSY;
}
}
u8 GetUploadDataCheckTask_ShenYangUDP(void)
{
return task_complete_upload_sy;
}
void GetUploadDataMachine_ShenYangUDP(u8 data_step, u8* p_send_buf, u16* p_send_len)
{
switch(upload_frame_stat_sy)
{
case SY_STATE_S0:
{
if(data_step == UPLOAD_FRAME_REQUEST_NEW)//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD>
{
temp_upload_step = 0;
upload_frame_retry_times = 0;
upload_frame_stat_sy = SY_STATE_S1;
}
else if(data_step == UPLOAD_FRAME_UPLOAD_OK)//<2F><><EFBFBD>ͳɹ<CDB3>
{
if(temp_upload_step == SY_STATE_S2)//<2F><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD>ݷ<EFBFBD><DDB7>ͳɹ<CDB3>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
task_complete_upload_sy = PTL_PACK_FAIL;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
upload_frame_stat_sy = SY_STATE_S0;
}
if(temp_upload_step == SY_STATE_S3)//<2F><>ʷ<EFBFBD><CAB7><EFBFBD>ݷ<EFBFBD><DDB7>ͳɹ<CDB3>,<2C><EFBFBD>ѷ<EFBFBD><D1B7><EFBFBD>λ<EFBFBD><CEBB>,<2C><>ȡ<EFBFBD><C8A1>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
upload_frame_stat_sy = SY_STATE_S10;
}
if(temp_upload_step == SY_STATE_S4)//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݷ<EFBFBD><DDB7>ͳɹ<CDB3>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
task_complete_upload_sy = PTL_PACK_FAIL;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
upload_frame_stat_sy = SY_STATE_S0;
}
upload_frame_retry_times = 0;
SystemClearUploadAgain();//<2F>ش<EFBFBD><D8B4><EFBFBD>0
}
else if(data_step == UPLOAD_FRAME_UPLOAD_RETRY)//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><C2B7><EFBFBD>
{
upload_frame_stat_sy = SY_STATE_S21;
}
else if(data_step == UPLOAD_FRAME_ONLINE_FAIL) //<2F><><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>
{
if(UPLOAD_TYPE_FIX_TIME == GetEventUploadType()||
(UPLOAD_TYPE_RETRY_AGAIN == GetEventUploadType()))//<2F><>ʱ<EFBFBD>ϴ<EFBFBD>
{
SystemAddUploadAgain();//<2F>ش<EFBFBD><D8B4><EFBFBD><EFBFBD><EFBFBD>
}
task_complete_upload_sy = PTL_PACK_FAIL;
upload_frame_stat_sy = SY_STATE_S0;
}
else
{
task_complete_upload_sy = PTL_PACK_FAIL;
upload_frame_stat_sy = SY_STATE_S0;
}
}
break;
case SY_STATE_S1://<2F><>ȡ<EFBFBD>ϱ<EFBFBD><CFB1>ܰ<EFBFBD><DCB0><EFBFBD>
{
SY_CircleUploadPackets = getSY_CircleUploadPackets();//<2F>ϱ<EFBFBD><CFB1>ܰ<EFBFBD><DCB0><EFBFBD>
if(SY_CircleUploadPackets == 0)//<2F><>û<EFBFBD>д洢<D0B4><E6B4A2><EFBFBD><EFBFBD>,<2C><><EFBFBD>ϱ<EFBFBD><CFB1><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>
{
upload_frame_stat_sy = SY_STATE_S2;
}
else
{
SY_CircleThisPacketNum = 0;
SY_CircleThisUploadPacket_Index = getSY_ThisCirclePacket_Index(SY_CircleThisPacketNum);//Ҫ<>ϱ<EFBFBD><CFB1><EFBFBD>λ<EFBFBD><CEBB>
upload_frame_stat_sy = SY_STATE_S3;
}
}
break;
case SY_STATE_S2://ֻ<>ϱ<EFBFBD><CFB1><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>
{
temp_upload_step = SY_STATE_S2;
temp_struct_upload_SY.ack_ctrl = FM_UPLOAD_CYCLE_DATA_CTRL;
temp_struct_upload_SY.sta = 0;
upload_serial_num_sy++;//<2F><><EFBFBD>к<EFBFBD><D0BA><EFBFBD><EFBFBD><EFBFBD>
temp_struct_upload_SY.serial_num0 = upload_serial_num_sy;
SY_UploadDataLen = NB_SY_Frame_Upload_CurrentData(&SY_CircleUploadBuf[0]);//<2F><>ȡ<EFBFBD><C8A1><EFBFBD>ݲ<EFBFBD><DDB2><EFBFBD>
Sy_Frame_nb_upload(p_send_buf, p_send_len);//<2F>ϱ<EFBFBD><CFB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡
task_complete_upload_sy = PTL_PACK_SUCCESS;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
upload_frame_stat_sy = SY_STATE_S0;
}
break;
case SY_STATE_S3://<2F>ϱ<EFBFBD><CFB1><EFBFBD>ʷ<EFBFBD><CAB7><EFBFBD><EFBFBD>:<3A><><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD>λ<EFBFBD>û<EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
{
SY_CiecleThisUploadPacket_Cnt = NB_SY_Frame_Upload_Data(SY_CircleThisUploadPacket_Index, &SY_CircleUploadBuf[10]);
if(SY_CiecleThisUploadPacket_Cnt > 0)
{
temp_upload_step = SY_STATE_S3;
DateTime tempRtcc_time;
SY_CircleUploadBuf[0] = SY_CircleUploadPackets; //<2F>ܰ<EFBFBD><DCB0><EFBFBD> 1<>ֽ<EFBFBD>
SY_CircleUploadBuf[1] = SY_CircleThisPacketNum+1; //<2F><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 1<>ֽ<EFBFBD>
SY_GetCircleDateTime(&tempRtcc_time, SY_CircleThisUploadPacket_Index, 0);
//<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD> 3<>ֽ<EFBFBD>
SY_CircleUploadBuf[2] = BCD2HEX(tempRtcc_time.s.year);//BCDת<44><D7AA>hex
SY_CircleUploadBuf[3] = BCD2HEX(tempRtcc_time.s.month);
SY_CircleUploadBuf[4] = BCD2HEX(tempRtcc_time.s.day);
//<2F><>ʼʱ<CABC><CAB1> 3<>ֽ<EFBFBD>
SY_CircleUploadBuf[5] = BCD2HEX(tempRtcc_time.s.hour);
SY_CircleUploadBuf[6] = BCD2HEX(tempRtcc_time.s.minute);
SY_CircleUploadBuf[7] = BCD2HEX(tempRtcc_time.s.second);
SY_CircleUploadBuf[8] = 6; //6:<3A><>ʾ30<33><30><EFBFBD>ӣ<EFBFBD>5x6<78><36>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1<EFBFBD>ֽ<EFBFBD>
SY_CircleUploadBuf[9] = SY_CiecleThisUploadPacket_Cnt; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1<EFBFBD>ֽ<EFBFBD>
SY_UploadDataLen = 10 + 16*SY_CiecleThisUploadPacket_Cnt;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
temp_struct_upload_SY.ack_ctrl = FM_UPLOAD_CYCLE_DATA_CTRL;
temp_struct_upload_SY.sta = 0;
upload_serial_num_sy++;//<2F><><EFBFBD>к<EFBFBD><D0BA><EFBFBD><EFBFBD><EFBFBD>
temp_struct_upload_SY.serial_num0 = upload_serial_num_sy;
Sy_Frame_nb_upload(p_send_buf, p_send_len);//<2F>ϱ<EFBFBD><CFB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡
task_complete_upload_sy = PTL_PACK_SUCCESS;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
upload_frame_stat_sy = SY_STATE_S0;
}
}
break;
case SY_STATE_S4://<2F><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD>
{
if(FrameCheckMsgApp(MsgShenYang_NbUploadWarningWithCircle))//<2F>ж<EFBFBD><D0B6>Ƿ<EFBFBD><C7B7>ϱ<EFBFBD><CFB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
{
FrameClearMsgApp(MsgShenYang_NbUploadWarningWithCircle);
step_UploadWarningSY = SY_STATE_S0;
task_complete_warning_sy = PTL_PACK_BUSY;
upload_frame_stat_sy = SY_STATE_S5;
}
else
{
task_complete_upload_sy = PTL_PACK_FAIL;//<2F><><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>
upload_frame_stat_sy = SY_STATE_S0;
}
}
break;
case SY_STATE_S5://<2F><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD>
{
Nb_SY_ReadWarningRecord(SY_CircleUploadBuf, &SY_UploadDataLen);
if(task_complete_warning_sy == PTL_PACK_SUCCESS)
{
temp_struct_upload_SY.ack_ctrl = FM_SUDDEN_ALARM_UPLOAD_CTRL;
temp_struct_upload_SY.sta = 0;
upload_serial_num_sy++;//<2F><><EFBFBD>к<EFBFBD><D0BA><EFBFBD><EFBFBD><EFBFBD>
temp_struct_upload_SY.serial_num0 = upload_serial_num_sy;
Sy_Frame_nb_upload(p_send_buf, p_send_len);//<2F>ϱ<EFBFBD><CFB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡
temp_upload_step = SY_STATE_S4;
task_complete_upload_sy = PTL_PACK_SUCCESS;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
upload_frame_stat_sy = SY_STATE_S0;
}
}
break;
case SY_STATE_S10://<2F><>ǰ<EFBFBD><C7B0><EFBFBD>ϱ<EFBFBD><CFB1>ɹ<EFBFBD><C9B9><EFBFBD>,<2C><><EFBFBD>´洢ָ<E6B4A2><D6B8>
{
if(ShenYang_CircleDataStore_ClearUploadIndex(SY_CircleThisUploadPacket_Index))
{
SY_CircleThisPacketNum ++;
if(SY_CircleThisPacketNum < SY_CircleUploadPackets)
{
SY_CircleThisUploadPacket_Index = getSY_ThisCirclePacket_Index(SY_CircleThisPacketNum);//Ҫ<>ϱ<EFBFBD><CFB1><EFBFBD>λ<EFBFBD><CEBB>
upload_frame_stat_sy = SY_STATE_S3;//<2F><><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD><CFB1><EFBFBD><EFBFBD><EFBFBD>
}
else
{
upload_frame_stat_sy = SY_STATE_S4;//<2F>ϱ<EFBFBD><CFB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><>ʼ<EFBFBD>ϱ<EFBFBD><CFB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
}
}
}
break;
case UP_DEAL_S21://<2F><><EFBFBD><EFBFBD>
{
if(upload_frame_retry_times < 3)
{
upload_frame_retry_times++;
if(temp_upload_step == SY_STATE_S2)//<2F><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD>ݷ<EFBFBD><DDB7><EFBFBD>ʧ<EFBFBD><CAA7>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD>ǰ<EFBFBD><C7B0>
{
upload_frame_stat_sy = SY_STATE_S2;
}
else if(temp_upload_step == SY_STATE_S3)//<2F><>ʷ<EFBFBD><CAB7><EFBFBD>ݷ<EFBFBD><DDB7><EFBFBD>ʧ<EFBFBD><CAA7>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͸ð<CDB8><C3B0><EFBFBD>ʷ<EFBFBD><CAB7><EFBFBD><EFBFBD>
{
upload_frame_stat_sy = SY_STATE_S3;
}
else if(temp_upload_step == SY_STATE_S4)//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݷ<EFBFBD><DDB7><EFBFBD>ʧ<EFBFBD><CAA7>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͱ<EFBFBD><CDB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
upload_frame_stat_sy = SY_STATE_S4;
}
else
{
task_complete_upload_sy = PTL_PACK_FAIL;
upload_frame_stat_sy = SY_STATE_S0;
}
}
else//<2F><><EFBFBD>·<EFBFBD><C2B7><EFBFBD>ʧ<EFBFBD><CAA7>3<EFBFBD>εĴ<CEB5><C4B4><EFBFBD>
{
if((UPLOAD_TYPE_FIX_TIME == GetEventUploadType())||
(UPLOAD_TYPE_RETRY_AGAIN == GetEventUploadType()))//<2F><>ʱ<EFBFBD>ϴ<EFBFBD>
{
if((temp_upload_step == SY_STATE_S2)||(temp_upload_step == SY_STATE_S3))//<2F><><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD><CFB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD>ش<EFBFBD>
{
SystemAddUploadAgain();//<2F>ش<EFBFBD><D8B4><EFBFBD><EFBFBD><EFBFBD>
}
}
task_complete_upload_sy = PTL_PACK_FAIL;
upload_frame_stat_sy = SY_STATE_S0;
}
}
break;
default:
{
upload_frame_stat_sy = SY_STATE_S0;
break;
}
}
}
/*******************************************************************************
* @fun_name:NB_SS_Control_GetPara
* @brief :
* @param[in] :<EFBFBD><EFBFBD>ȡ<EFBFBD>ϱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ز<EFBFBD><EFBFBD><EFBFBD>
* @param[out]: None
* @retval : None
* @other :
******************************************************************************/
u8 NB_SS_Control_GetPara(NB_SS_ControlParaTypeDef paraType)
{
return 0;
}
/*******************************************************************************
* @fun_name:NB_SS_Control_SetPara
* @param[in] :<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ز<EFBFBD><EFBFBD><EFBFBD>
******************************************************************************/
void NB_SS_Control_SetPara(NB_SS_ControlParaTypeDef paraType, u8 data)
{
switch(paraType)
{
case NB_HistroyReadIndex://<2F><>ʷ<EFBFBD><CAB7><EFBFBD>ݵĶ<DDB5>ָ<EFBFBD><D6B8>
{
Sys_data_object.P1.histroy_w = data;
break;
}
case NB_UploadFailTimes://ʧ<>ܴ<EFBFBD><DCB4><EFBFBD>
{
SystemClearUploadAgain();
Sys_data_object.P1.Supplemental_send_flag.datas = data;
Sys_data_object.P3.ProductUpoadFailFlag = 0;
break;
}
case NB_SS_FormatError://<2F>ϱ<EFBFBD><CFB1><EFBFBD><EFBFBD>ݸ<EFBFBD>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD>
{
break;
}
default:
break;
}
}
//<2F><>Լ<EFBFBD><D4BC><EFBFBD>ݴ洢<DDB4><E6B4A2><EFBFBD>ֳ<EFBFBD>ʼ<EFBFBD><CABC>
void DataStoreInit(void)
{
Quanzhou_Store_InitApp();
ShenYang_Store_InitApp();
}
//<2F><>Լ<EFBFBD><D4BC><EFBFBD>ݴ洢״̬<D7B4><CCAC>
void DataStoreMachine(void)
{
Quanzhou_Store_Machine();//<2F>ա<EFBFBD><D5A1><EFBFBD><C2B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ洢
ShenYang_Store_Machine();//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ洢
ShenYang_SOE_Machine();//SOE<4F><45>¼<EFBFBD>
ShenYang_TlvDataStoreMachine(); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
}
//<2F><>Լ<EFBFBD><D4BC><EFBFBD>ݴ洢<DDB4><E6B4A2><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
u8 DataStoreIfIdle(void)
{
if((QuanzhouStore_IfSleep() == TRUE) && (ShenYangStore_IfSleep() == TRUE))
{
return TRUE;
}
return FALSE;
}
#endif