📄 addobjdotmanully.c
字号:
/****************************************************************
** *
** FILE : AddObjDotManully.c *
** COPYRIGHT : (c) 2001 .Xiamen Yaxon NetWork CO.LTD *
** *
** *
** By : Cyb 2006.12.06 *
****************************************************************/
#include "includes.h"
#include "errcode.h"
#include "errtask.h"
#include "message.h"
#include "tools.h"
#include "public.h"
#include "gpsrecer.h"
#include "sensor.h"
#include "almtask.h"
#include "alarmer.h"
#include "SearchAlarmerObj.h"
#include "AddObjDotManully.h"
#include "flash.h"
#define DEBUG_ADDDOT 1
/*
********************************************************************************
* DEFINE DOT BUFFER
********************************************************************************
*/
#pragma arm section zidata="DotBuff_PARA"
static INT8U DotBuff[4096];
#pragma arm section
/*
********************************************************************************
* DEFINE GLOBAL VARIABLES
********************************************************************************
*/
static DATUM_STRUCT GPSdata;
static ALARMEROBJ_STR EleceyeDot;
static D_ALARMEROBJ_STR RadarDot;
static INT8U *ptr;
static BOOLEAN isAddElecEye;
static BOOLEAN isAddRadar;
/*
********************************************************************************
* COUNT THE NUMS OF OBJECTS DOT IN CERTAIN SECTOR
********************************************************************************
*/
static INT16U CountObjectDots(INT16U nSector)
{
INT16U nums;
ReadDotFromFlash(nSector,0,0,(INT8U*)&nums);
#if DEBUG_ADDDOT >0
PrintFromUART(1,"\nnums:");
SendFromUART_HEX(1,(INT8U)nums);
#endif
if (nums == 0xFFFF)
{
return 0;
}
return nums;
}
/*
********************************************************************************
* SAVE DOT INTO THE FLASH SECTOR
********************************************************************************
*/
static BOOLEAN SaveDot(INT8U type)
{
INT8U i;
INT8U len;
INT16U total;
INT16U nSector;
INT32U offset;
INT16U *pbuffer;
ptr = DotBuff;
if ( type == RADAR_SORT)
{
nSector = _OBJECTDOT_RADARSECTOR;
len = sizeof(D_ALARMEROBJ_STR);
}
else
{
nSector = _OBJECTDOT_ELECEYESECTOR;
len = sizeof(ALARMEROBJ_STR);
}
total = CountObjectDots(nSector);
#if DEBUG_ADDDOT >0
PrintFromUART(1,"\ntotal:");
SendFromUART_HEX(1,(INT8U)total);
#endif
if( total >= 300 )
{
return FALSE;
}
for(i=0;i<total;i++)
{
ReadDotFromFlash(nSector,i,len,ptr);
ptr += len;
}
if( type == RADAR_SORT)
{
memcpy(&DotBuff[total*len],(INT8U*)&RadarDot,sizeof(D_ALARMEROBJ_STR));
}
else
{
memcpy(&DotBuff[total*len],(INT8U*)&EleceyeDot,sizeof(ALARMEROBJ_STR));
}
total += 1;
SectorErase_Flash(nSector);
offset = SIZE_FLASHID + 2;
pbuffer = (INT16U *)DotBuff;
len /=2;
for(i=0;i<total*len;i++)
{
HWordProgram_Flash(nSector, offset+i*2, *pbuffer++);
}
offset = SIZE_FLASHID;
HWordProgram_Flash(nSector, offset, total);
WriteFlashID(nSector);
#if DEBUG_ADDDOT >0
ptr = DotBuff;
len *=2;
for( i=0;i<total;i++)
{
ReadDotFromFlash(nSector,i,len,ptr);
ptr += len;
}
PrintFromUART(1,"\nDotBuff1:");
SendFromUART_MEM_HEX(1,DotBuff,total*len);
ptr = ( INT8U *)FlashAbsAddr(nSector, 0);
memcpy(DotBuff,ptr,255);
PrintFromUART(1,"\nDotBuff2:");
SendFromUART_MEM_HEX(1,DotBuff,255);
#endif
return TRUE;
}
/*
********************************************************************************
* ADD OBJECT DOT MANNLLY
********************************************************************************
*/
INT8U AddObjectDot(INT8U type)
{
if(!GpsDataValid()) return GPSINVALID;
if (type == RADAR_SORT)
{
if (isAddRadar)
{
isAddRadar = FALSE;
}
}
else
{
if (isAddElecEye)
{
isAddElecEye = FALSE;
}
}
GetDatumData(&GPSdata);
if(type == RADAR_SORT)
{
RadarDot.type = (INT16U) type;
RadarDot.direction = (GPSdata.direction-1)*3;
memcpy((INT8U*)&RadarDot.posidata,GPSdata.latitude,8);
}
else
{
EleceyeDot.type = (INT16U)type;
memcpy((INT8U*)&EleceyeDot.posidata,GPSdata.latitude,8);
}
if (!SaveDot(type))
{
return OVERFLOW;
}
return SUCCSESS;
}
/*
********************************************************************************
* BEGIN ADD OBJECT DOT MANNLLY
********************************************************************************
*/
void BeginAddObjDot(INT8U type)
{
if ( type == RADAR_SORT)
{
if ( isAddRadar == FALSE)
{
isAddRadar = TRUE;
}
}
else
{
if (isAddElecEye == FALSE)
{
isAddElecEye = TRUE;
}
}
}
/*
********************************************************************************
* END ADD OBJECT DOT MANNLLY
********************************************************************************
*/
void EndAddObjDot(INT8U type)
{
if ( type == RADAR_SORT)
{
if (isAddRadar == TRUE)
{
isAddRadar = FALSE;
}
}
else
{
if (isAddElecEye == TRUE)
{
isAddElecEye = FALSE;
}
}
}
/*
********************************************************************************
* GET ADD STATUS
********************************************************************************
*/
BOOLEAN IsAddRadar(void)
{
return isAddRadar;
}
BOOLEAN IsAddElecEye(void)
{
return isAddElecEye;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -