⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 manser.c

📁 在ARM7和UC/OSII的平台上实现了GPS自动报站的功能,涉及GPS模块LEA_4S的驱动,位置速寻算法,语音芯片ISD4004的录放音驱动,LED页面管理等等.从启动代码到操作系统的移植以及到业
💻 C
📖 第 1 页 / 共 2 页
字号:
}

/*
********************************************************************************
* 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 + -