165 lines
4.1 KiB
C
165 lines
4.1 KiB
C
|
#include "bsp_os.h"
|
|||
|
#include "ptz_header_file.h"
|
|||
|
//#include "device_rotate.h"
|
|||
|
#include "service_areascan.h"
|
|||
|
#include "service_cmdpreprocess.h"
|
|||
|
#include "enet_to_udp.h"
|
|||
|
/********<2A><><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD>ijЩ<C4B3><D0A9><EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>Ԥ<EFBFBD><D4A4><EFBFBD><EFBFBD>********/
|
|||
|
PtzCmdBeforeData BeforeData[CMD_BEFORE_AMOUNT + 1];//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һλ<D2BB><CEBB><EFBFBD><EFBFBD><EFBFBD>洢<EFBFBD><E6B4A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD>Ч<EFBFBD><D0A7><EFBFBD><EFBFBD>
|
|||
|
unsigned char cmd_before_count;
|
|||
|
|
|||
|
|
|||
|
//<2F><><EFBFBD><EFBFBD>ÿһ<C3BF><D2BB>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD>CRC
|
|||
|
unsigned int ptz_cmd_before_single_crc(PtzCmdBeforeData data)
|
|||
|
{
|
|||
|
int i = 0;
|
|||
|
unsigned char *p;
|
|||
|
unsigned int crc = 0;
|
|||
|
p = (unsigned char *)&data;
|
|||
|
for(i = 0; i < (sizeof(data)- sizeof(unsigned int)); i++)
|
|||
|
{
|
|||
|
crc = crc + *p;
|
|||
|
p++;
|
|||
|
}
|
|||
|
return crc;
|
|||
|
}
|
|||
|
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7>
|
|||
|
unsigned int ptz_cmd_before_all_crc()
|
|||
|
{
|
|||
|
int i = 0;
|
|||
|
unsigned int crc = 0;
|
|||
|
for(i = 0; i < CMD_BEFORE_AMOUNT; i++)
|
|||
|
{
|
|||
|
crc = crc + BeforeData[i].crc;
|
|||
|
}
|
|||
|
return crc;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
char ptz_cmd_before_data_save()
|
|||
|
{
|
|||
|
char i;
|
|||
|
PtzCmdBeforeData BeforeData_a[CMD_BEFORE_AMOUNT + 1];
|
|||
|
|
|||
|
for(i = 0; i < CMD_BEFORE_SAVE_FLASH_NUM; i++)
|
|||
|
{
|
|||
|
memset(BeforeData_a, 0, sizeof(BeforeData_a));
|
|||
|
write_many_data(sizeof(BeforeData),(unsigned char *)BeforeData, CMD_BEFORE_FLASH_ADD);
|
|||
|
OSTimeDlyHMSM(0u, 0u, 0u, 5u);
|
|||
|
Flash_Read((unsigned char *)BeforeData_a, CMD_BEFORE_FLASH_ADD, sizeof(BeforeData));
|
|||
|
if(memcmp(BeforeData, BeforeData_a, sizeof(BeforeData)) == 0)//<2F>ж<EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>ȷ
|
|||
|
{
|
|||
|
return 1;
|
|||
|
}
|
|||
|
OSTimeDlyHMSM(0u, 0u, 0u, 5u);
|
|||
|
}
|
|||
|
return 0;
|
|||
|
}
|
|||
|
|
|||
|
char ptz_cmd_before_data_erase()
|
|||
|
{
|
|||
|
char i;
|
|||
|
PtzCmdBeforeData BeforeData_a[CMD_BEFORE_AMOUNT + 1];
|
|||
|
|
|||
|
memset(BeforeData, 0, sizeof(BeforeData));
|
|||
|
for(i = 0; i < CMD_BEFORE_SAVE_FLASH_NUM; i++)
|
|||
|
{
|
|||
|
memset(BeforeData_a, 0, sizeof(BeforeData_a));
|
|||
|
write_many_data(sizeof(BeforeData),(unsigned char *)BeforeData, CMD_BEFORE_FLASH_ADD);
|
|||
|
OSTimeDlyHMSM(0u, 0u, 0u, 5u);
|
|||
|
Flash_Read((unsigned char *)BeforeData_a, CMD_BEFORE_FLASH_ADD, sizeof(BeforeData));
|
|||
|
if(memcmp(BeforeData, BeforeData_a, sizeof(BeforeData)) == 0)//<2F>ж<EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>ȷ
|
|||
|
{
|
|||
|
return 1;
|
|||
|
}
|
|||
|
OSTimeDlyHMSM(0u, 0u, 0u, 5u);
|
|||
|
}
|
|||
|
return 0;
|
|||
|
}
|
|||
|
|
|||
|
char ptz_cmd_before_data_read()
|
|||
|
{
|
|||
|
memset(BeforeData, 0, sizeof(BeforeData));
|
|||
|
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
|
|||
|
Flash_Read((unsigned char *)BeforeData, CMD_BEFORE_FLASH_ADD, sizeof(BeforeData));
|
|||
|
//<2F>ж<EFBFBD><D0B6><EFBFBD>Ч<EFBFBD><D0A7><EFBFBD><EFBFBD>
|
|||
|
if(BeforeData[CMD_BEFORE_AMOUNT].crc == ptz_cmd_before_all_crc())
|
|||
|
{
|
|||
|
return 1;
|
|||
|
}
|
|||
|
return 0;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
char ptz_cmd_before_mode(char dev, PTZ_DATA_PACK *pack)
|
|||
|
{
|
|||
|
int i;
|
|||
|
switch(pack->command[1])
|
|||
|
{
|
|||
|
case CMD_BEFORE_SAVE_OFF://0<>ر<EFBFBD>
|
|||
|
g_ptz.cmd_before_handle_swtich = CMD_BEFORE_SAVE_OFF;
|
|||
|
return 1;
|
|||
|
break;
|
|||
|
|
|||
|
case CMD_BEFORE_SAVE_ON://1<><31><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD><EEB1A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
|
|||
|
g_ptz.cmd_before_handle_swtich = CMD_BEFORE_SAVE_ON;
|
|||
|
return 1;
|
|||
|
break;
|
|||
|
|
|||
|
case CMD_BEFORE_SAVE_SAVE:///2<><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>
|
|||
|
if(g_ptz.cmd_before_handle_swtich == CMD_BEFORE_SAVE_ON)
|
|||
|
{
|
|||
|
|
|||
|
for(i = 0; i < CMD_BEFORE_AMOUNT; i++)
|
|||
|
{//<2F><><EFBFBD><EFBFBD>ÿ<EFBFBD><C3BF>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6>Ч<EFBFBD><D0A7><EFBFBD><EFBFBD>
|
|||
|
BeforeData[i].crc = ptz_cmd_before_single_crc(BeforeData[i]);
|
|||
|
}
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7><EFBFBD><EFBFBD>
|
|||
|
BeforeData[CMD_BEFORE_AMOUNT].crc = ptz_cmd_before_all_crc();
|
|||
|
return ptz_cmd_before_data_save();
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
case CMD_BEFORE_SAVE_ERASE://2<><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD><D0B1><EFBFBD>ָ<EFBFBD><D6B8>
|
|||
|
if(g_ptz.cmd_before_handle_swtich == CMD_BEFORE_SAVE_ON)
|
|||
|
{
|
|||
|
cmd_before_count = 0;
|
|||
|
memset(BeforeData, 0, sizeof(BeforeData));
|
|||
|
return ptz_cmd_before_data_erase();
|
|||
|
}
|
|||
|
break;
|
|||
|
}
|
|||
|
return 0;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
void ptz_cmd_before_start()
|
|||
|
{
|
|||
|
int i;
|
|||
|
if(ptz_cmd_before_data_read() == 1)
|
|||
|
{
|
|||
|
for(i = 0; i < CMD_BEFORE_AMOUNT; i++)
|
|||
|
{
|
|||
|
if(BeforeData[i].swtich != CMD_BEFORE_ON)
|
|||
|
{//ָ<><D6B8><EFBFBD><EFBFBD>Ч
|
|||
|
break;
|
|||
|
}
|
|||
|
if(BeforeData[i].crc != ptz_cmd_before_single_crc(BeforeData[i]))
|
|||
|
{//<2F><><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7><EFBFBD>벻<EFBFBD><EBB2BB>ȷ
|
|||
|
break;
|
|||
|
}
|
|||
|
//<2F><><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>
|
|||
|
if(BeforeData[i].cmd_dev == PTZ_UDP)
|
|||
|
{
|
|||
|
memcpy(&ptz_from, &BeforeData[i].cmd_from, ptz_fromlen);
|
|||
|
ptz_fromlen = BeforeData[i].cmd_fromlen;
|
|||
|
}
|
|||
|
ptz_data_pack_process(BeforeData[i].cmd_dev, (PTZ_DATA_PACK *)BeforeData[i].cmd_data);
|
|||
|
cmd_before_count ++;
|
|||
|
OSTimeDlyHMSM(0u, 0u, 0u, 5u);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|