📄 manser.c
字号:
}
/*
********************************************************************************
* Handler: MSG_0x101a
********************************************************************************
*/
static void HdlMsg_0x101a(void)
{
INT16U status;
status = 0x7f7f;
if (!PubParaValid(ALARMTEL_)) status &= ~0x2000;
if (!PubParaValid(ATTEMPERTEL_)) status &= ~0x1000;
if (!PubParaValid(TAXTEL_)) status &= ~0x0800;
if (!PubParaValid(SMSTEL_)) status &= ~0x0400;
if (!AlarmerPermitRob()) status &= ~0x0200;
if (!GpsIsNormal()) status &= ~0x0100;
#if EN_LCD > 0
if (!LcdComOK()) status &= ~0x0020;
#endif
ASMSYSFrameHead_MODE1(wstrm, hdlframe, 0x105a);
WriteHWORD_Strm(wstrm, status);
MovStrmPtr(wstrm, QueryPosition(GetStrmPtr(wstrm)));
SendSYSFrame_MODE1(wstrm, hdlframe, SM_ATTR_SUCCESS | channeltype);
}
/*
********************************************************************************
* Handler: MSG_0x0501
********************************************************************************
*/
static void HdlMsg_0x0501(void)
{
#if EN_LCD > 0
InformLCD_Attemper(hdlframelen, hdlframe->data);
#endif
}
/*
********************************************************************************
* Handler: MSG_0x053c add by qzc
********************************************************************************
*/
#if EN_HSTSMON > 0
static BOOLEAN CmpRegion(DATUM_STRUCT GpsDot,GPS_REGION Region)
{
INT8U Result1,Result2;
Result1=CmpString(Region.LeftLa,GpsDot.latitude,4);
Result2=CmpString(Region.LeftLg,GpsDot.longitude,4);
if(Result1==STR_GREAT||Result2==STR_GREAT) return FALSE;
Result1=CmpString(GpsDot.latitude,Region.RightLa,4);
Result2=CmpString(GpsDot.longitude,Region.RightLg,4);
if(Result1==STR_GREAT||Result2==STR_GREAT) return FALSE;
return TRUE;
}
#endif
static void HdlMsg_0x053c(void)
{
#if EN_HSTSMON > 0
DATUM_STRUCT CurGpsDot;
GPS_REGION regionterm;
INT16U TempLen;
if(GetPhoneStatus(PHONE_COM)!=PHONE_FREE) return; //处于通话状态下不响应
GetDatumData(&CurGpsDot);
TempLen=Code6_To_CodeX(MODE_CODE8,SumonBuf,hdlframe->data,hdlframelen);
memcpy(regionterm.LeftLa,SumonBuf,TempLen);
if(!CmpRegion(CurGpsDot,regionterm)) return;
#if EN_LCD > 0
RequestSend_LCD(LCD_ATTR_COMMON,0x74,0,0,0);
#endif
#if EN_HANDSET > 0
if (ComType == USE_HST) {
HdlHstSmon();
}
#endif
#endif
}
/*
********************************************************************************
* Handler: MSG_0x053d add by qzc
********************************************************************************
*/
static void HdlMsg_0x053d(void)
{
#if EN_HSTSMON > 0
INT16U TempLen;
TempLen=Code6_To_CodeX(MODE_CODE8,SumonBuf,hdlframe->data,hdlframelen);
#if EN_LCD > 0
memcpy(SumonBuf+TempLen,MyTel.tel,MyTel.len);
memset(SumonBuf+TempLen+MyTel.len,' ',15-MyTel.len);
RequestSend_LCD(LCD_ATTR_COMMON,0x75,SumonBuf,TempLen+15,0);
#endif
#if EN_HANDSET > 0
if (ComType == USE_HST) {
HdlCenterAck(SumonBuf,TempLen);
}
#endif
ASMSYSFrameHead_MODE1(wstrm,hdlframe,0x057d);
SendSYSFrame_MODE1(wstrm,hdlframe,SM_ATTR_SUCCESS|channeltype);
#endif
}
/*
********************************************************************************
* Handler: MSG_0x2101
********************************************************************************
*/
static void HdlMsg_0x2101(void)
{
#if EN_LCD > 0
InformLCD_Manage(hdlframelen, hdlframe->data);
#endif
}
/*
********************************************************************************
* Handler: MSG_0x0901
********************************************************************************
*/
static void HdlMsg_0x0901(void)
{
#if EN_ODOMETER > 0
INT8U len, *ptr;
ASMSYSFrameHead_MODE1(wstrm, hdlframe, 0x0941);
WriteBYTE_Strm(wstrm, _SYSFRAME_ACK);
len = GetOdoMeterDate(GetStrmPtr(wstrm));
MovStrmPtr(wstrm, len);
ptr = GetStrmPtr(wstrm); /* reserve for length field */
WriteBYTE_Strm(wstrm, 0x0);
len = GetOdoMeterData(GetStrmPtr(wstrm));
MovStrmPtr(wstrm, len);
*ptr = len;
SendSYSFrame_MODE1(wstrm, hdlframe, SM_ATTR_SUCCESS | channeltype);
#endif
#if EN_ODOMETER1 > 0
INT8U len, *ptr;
ASMSYSFrameHead_MODE1(wstrm, hdlframe, 0x0941);
WriteBYTE_Strm(wstrm, _SYSFRAME_ACK);
len = GetOdoMeterDate(GetStrmPtr(wstrm));
MovStrmPtr(wstrm, len);
ptr = GetStrmPtr(wstrm); /* reserve for length field */
WriteBYTE_Strm(wstrm, 0x0);
len = GetOdoMeterData(GetStrmPtr(wstrm));
MovStrmPtr(wstrm, len);
*ptr = len;
SendSYSFrame_MODE1(wstrm, hdlframe, SM_ATTR_SUCCESS | channeltype);
#endif
}
/*
********************************************************************************
* Handler: MSG_0x0902
********************************************************************************
*/
static void HdlMsg_0x0902(void)
{
#if EN_ODOMETER > 0
ClearOdoMeter();
ASMSYSFrameHead_MODE1(wstrm, hdlframe, 0x0942);
WriteBYTE_Strm(wstrm, _SYSFRAME_ACK);
SendSYSFrame_MODE1(wstrm, hdlframe, SM_ATTR_SUCCESS | channeltype);
#endif
#if EN_ODOMETER1 > 0
ClearOdoMeter();
ASMSYSFrameHead_MODE1(wstrm, hdlframe, 0x0942);
WriteBYTE_Strm(wstrm, _SYSFRAME_ACK);
SendSYSFrame_MODE1(wstrm, hdlframe, SM_ATTR_SUCCESS | channeltype);
#endif
}
/*
********************************************************************************
* Handler: MSG_0x0701
********************************************************************************
*/
static void HdlMsg_0x0701(void)
{
INT8U linktime;
linktime = ReadBYTE_Strm(&rstrm);
if (linktime == 0x7f) linktime = 0;
ActivateGPRS_IVUDP(linktime);
ASMSYSFrameHead_MODE1(wstrm, hdlframe, 0x0741);
WriteBYTE_Strm(wstrm, _SYSFRAME_NAK);
SendSYSFrame_MODE1(wstrm, hdlframe, SM_ATTR_SUCCESS | channeltype);
}
/*
********************************************************************************
* Handler: MSG_0x0702
********************************************************************************
*/
static void HdlMsg_0x0702(void)
{
DeactivateGPRS_IVUDP();
ASMSYSFrameHead_MODE1(wstrm, hdlframe, 0x0742);
WriteBYTE_Strm(wstrm, _SYSFRAME_NAK);
SendSYSFrame_MODE1(wstrm, hdlframe, SM_ATTR_SUCCESS | channeltype);
}
/*
********************************************************************************
* Handler: MSG_0x0723
********************************************************************************
*/
static void HdlMsg_0x0723(void)
{
INT8U tellen;
tellen = ReadBYTE_Strm(&rstrm);
ASMSYSFrameHead_MODE1(wstrm, hdlframe, 0x0763);
if (StartAutoDial(CHA_LISTEN, tellen, GetStrmPtr(&rstrm), 15))
WriteBYTE_Strm(wstrm, _SYSFRAME_ACK);
else
WriteBYTE_Strm(wstrm, _SYSFRAME_NAK);
SendSYSFrame_MODE1(wstrm, hdlframe, SM_ATTR_SUCCESS | channeltype);
}
//yyy begin
/*
********************************************************************************
* Handler: MSG_0x0e20
********************************************************************************
*/
static void HdlMsg_0x0e20(void)
{
#if EN_BLACKBOX > 0
ConvertData(hdlframe->data, hdlframelen, 0x00, 0x7f); //0605
ReceiveQueryTerm(hdlframe->data,hdlframelen);
#endif
}
/*
********************************************************************************
* Handler: MSG_0x0e21
********************************************************************************
*/
static void HdlMsg_0x0e21(void)
{
#if EN_BLACKBOX > 0
INT8U AckType;
ConvertData(hdlframe->data, hdlframelen, 0x0, 0x7f);
if(NetCancelBlkQuery(hdlframe->data,hdlframelen)) AckType=0x01;
else AckType=0x7F;
//组帧发送
ASMSYSFrameHead_MODE1(wstrm, hdlframe, 0x0E61);
WriteDATA_Strm(wstrm,hdlframe->data,MAXIDNUM);
WriteBYTE_Strm(wstrm,AckType);
SendSYSFrame_MODE2(wstrm,AlarmTel.tel,AlarmTel.len,SM_ATTR_SUCCESS|channeltype,0);
#endif
}
//yyy end
/*
********************************************************************************
* Handler: MSG_0x0601
********************************************************************************
*/
static void Informer_RelayOil(void)
{
ControlPort(RELAY_OIL, PORT_PULLUP);
}
static void HdlMsg_0x0601(void)
{
INT8U temph, templ;
temph = ReadBYTE_Strm(&rstrm);
templ = ReadBYTE_Strm(&rstrm);
if ((temph & 0x40) == 0) {
if ((templ & 0x40) == 0) {
StopFlashPort(RELAY_OIL);
} else {
StartFlashPort(RELAY_OIL, 60, 3, 7, Informer_RelayOil);
}
}
ASMSYSFrameHead_MODE1(wstrm, hdlframe, 0x0641);
WriteBYTE_Strm(wstrm, _SYSFRAME_ACK);
SendSYSFrame_MODE1(wstrm, hdlframe, SM_ATTR_SUCCESS | channeltype);
}
/*
********************************************************************************
* Handler: MSG_0x0301
********************************************************************************
*/
static void HdlMsg_0x0301(void)
{
#if EN_LCD > 0
InformLCD_SuccorACK(hdlframelen, GetStrmPtr(&rstrm));
#endif
}
/*
********************************************************************************
* Handler: MSG_0x0302
********************************************************************************
*/
static void HdlMsg_0x0302(void)
{
#if EN_LCD > 0
InformLCD_CancelSuccorAck(hdlframelen, GetStrmPtr(&rstrm));
#endif
}
/*
********************************************************************************
* Handler: MSG_0x0f04 开始设置站点
********************************************************************************
*/
static void HdlMsg_0x0f04(void)
{
}
/*
********************************************************************************
* Handler: MSG_0x0f05 设置站点路线
********************************************************************************
*/
static void HdlMsg_0x0f05(void)
{
}
/*
********************************************************************************
* Handler: MSG_0x0f06 结束设置站点
********************************************************************************
*/
static void HdlMsg_0x0f06(void)
{
}
/*
********************************************************************************
* Handler: MSG_0x0f07
********************************************************************************
*/
static void HdlMsg_0x0f07(void)
{
}
/*
********************************************************************************
* Handler: MSG_0x0f08 关闭站点登记
********************************************************************************
*/
static void HdlMsg_0x0f08(void)
{
}
static FUNCENTRY_STRUCT functionentry[] = {
0x0301, HdlMsg_0x0301,
0x0302, HdlMsg_0x0302,
0x0f04, HdlMsg_0x0f04,//add by qzc
0x0f05, HdlMsg_0x0f05,//add by qzc
0x0f06, HdlMsg_0x0f06,//add by qzc
0x0f07, HdlMsg_0x0f07,//add by qzc
0x0f08, HdlMsg_0x0f08,//add by qzc
0x1001, HdlMsg_0x1001,
0x1002, HdlMsg_0x1002,
0x1003, HdlMsg_0x1003,
0x1007, HdlMsg_0x1007,
0x1008, HdlMsg_0x1008,
0x1009, HdlMsg_0x1009,
0x100e, HdlMsg_0x100e,
0x1012, HdlMsg_0x1012, /* //yyy */
0x1015, HdlMsg_0x1015,
0x103b, HdlMsg_0x103b,
0x103c, HdlMsg_0x103c,
0x1032, HdlMsg_0x1032,
0x101a, HdlMsg_0x101a,
0x0501, HdlMsg_0x0501,
0x053c, HdlMsg_0x053c, //add by qzc
0x053d, HdlMsg_0x053d, //add by qzc
0x0601, HdlMsg_0x0601,
0x2101, HdlMsg_0x2101,
0x0901, HdlMsg_0x0901,
0x0902, HdlMsg_0x0902,
0x0701, HdlMsg_0x0701,
0x0702, HdlMsg_0x0702,
0x0723, HdlMsg_0x0723,
0x0e20, HdlMsg_0x0e20,
0x0e21, HdlMsg_0x0e21 /* //yyy */
};
void InformManSer(SYSFRAME_STRUCT *curframe, INT16U framelen, INT8U type)
{
hdlframe = curframe;
hdlframelen = framelen - (sizeof(curframe->EGCODE) + sizeof(curframe->version) + sizeof(curframe->type) +
sizeof(curframe->DTel) + sizeof(curframe->STel) + 1);
if (type == RX_FRAME_TCP) {
channeltype = SM_ATTR_TCP;
} else if (type == RX_FRAME_UDP) {
channeltype = SM_ATTR_UDP;
} else if (type == RX_FRAME_SM) {
channeltype = SM_ATTR_SM;
} else {
channeltype = SM_ATTR_SM;
}
InitStrm(&rstrm, curframe->data, hdlframelen);
wstrm = GetSYSFrameStream();
FindProcEntry(GetType_SYSFrame(curframe), functionentry, sizeof(functionentry)/sizeof(functionentry[0]));
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -