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

📄 lcddrv.c

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

/*
********************************************************************************
* Handler:  HdlMsg_0x28
********************************************************************************
*/
static void HdlMsg_0x28(void)
{
    INT8U   ack;
    BOOLEAN succed;

    if (lcdrecv.buffer[2] == 0x00)
        succed = TurnupVoiceVolume(PHONE_COM);
    else if (lcdrecv.buffer[2] == 0x01)
        succed = TurndownVoiceVolume(PHONE_COM);
    else
        succed = FALSE;

    if (succed)
        ack = LCD_ACK;
    else
        ack = LCD_NAK;
    SendLCDAck(0x29, ack);
}
/*
********************************************************************************
* Handler:  HdlMsg_0x30
********************************************************************************
*/
static void HdlMsg_0x30(void)
{
    INT8U *data, *tel;
    INT8U  datalen, tellen, i;

    InitStrm(&strm, (STREAMMEM *)&lcdrecv.buffer[2], lcdrecv.len - 2);
    tellen  = ReadBYTE_Strm(&strm);
    tel     = GetStrmPtr(&strm);
    MovStrmPtr(&strm, tellen);
    datalen = ReadBYTE_Strm(&strm);
    data    = GetStrmPtr(&strm);
    if (&data[datalen] > &lcdrecv.buffer[sizeof(lcdrecv.buffer)]) {
        Informer_0x30(_FAILURE);
        return;
    }

    if (!SearchGBCode(data, datalen)) {
        for (i = 0; i < datalen; i++) {
            data[i] = ASCIIToGsmCode(data[i]);
        }
    }
    if (!SendSM(SM_ATTR_AUTOCODE | SM_ATTR_DISCODE6, tel, tellen, data, datalen, Informer_0x30)) {
        Informer_0x30(_FAILURE);
    }
}

/*
********************************************************************************
* Handler:  HdlMsg_0x32
********************************************************************************
*/
static void HdlMsg_0x32(void)
{
    ConfirmSend_LCD(0x33, _SUCCESS);
}

/*
********************************************************************************
* Handler:  HdlMsg_0x41    //yyy
********************************************************************************
*/
static void HdlMsg_0x41(void)
{
    INT8U   ack;
    DATE_STRUCT curdate;

#if 0
    StartTestAlarmer();
    ack = LCD_ACK;        //返回成功
    SendLCDAck(0x42, ack);
#endif

    GetSysTime_Date((DATE_STRUCT *)&curdate);
    if (SysTimeValid()) {
      if((curdate.year == CheckAlarm.Year)&&(curdate.month == CheckAlarm.Month)&&(curdate.day == CheckAlarm.Day)) {
         switch (CheckAlarm.Flag)
         {
            case 0x01:
                 CheckAlarm.Flag = 0x02;
                 StorePubPara(CHECKALARM_);
                 StartTestAlarmer();
                 ack = LCD_ACK;        //返回成功
            break;
            case 0x02:
                 ack = LCD_CHECKING;  //返回正在检查
            break;
            case 0x03:
                 ack = LCD_CHECKED;    //返回已检查
            break;
            default:
                 ;
         }
      } else {
         CheckAlarm.Year  = curdate.year;
         CheckAlarm.Month = curdate.month;
         CheckAlarm.Day   = curdate.day;
         CheckAlarm.Flag  = 0x02;
         StorePubPara(CHECKALARM_);
         StartTestAlarmer();
         ack = LCD_ACK;        //返回成功
      }
    } else {
         ack = LCD_NOTIME;
    }
    SendLCDAck(0x42, ack);
}

/*
********************************************************************************
* Handler:  HdlMsg_0x44    //2yyy
********************************************************************************
*/
static void HdlMsg_0x44(void)
{

   ConfirmSend_LCD(0x43, _SUCCESS);

}

/*
********************************************************************************
* Handler:  HdlMsg_0xCD
********************************************************************************
*/
static void HdlMsg_0xCD(void)
{
    RequestSend_LCD(LCD_ATTR_COMMON, 0xCC, (INT8U *)StrVersion, strlen(StrVersion), 0);
}

/*
********************************************************************************
* Handler:  HdlMsg_0xCF
********************************************************************************
*/
static void HdlMsg_0xCF(void)
{
    ConfirmSend_LCD(0xCE, _SUCCESS);
}

/*
********************************************************************************
* Handler:  HdlMsg_0xFF
********************************************************************************
*/
static void HdlMsg_0xFF(void)
{
    OS_ENTER_CRITICAL();
    while(1);
    OS_EXIT_CRITICAL();
}

/*
********************************************************************************
* Handler:  HdlMsg_0x80
********************************************************************************
*/
static void HdlMsg_0x80(void)
{
    INT8U  tellen, *tel;
    INT16U attrib;

    wstrm = GetSYSFrameStream();
    ASMSYSFrameHead_MODE2(wstrm, EgCode.egcode, 0x0341);
    WriteBYTE_Strm(wstrm, lcdrecv.buffer[2] | 0x40);
    MovStrmPtr(wstrm, QueryPosition(GetStrmPtr(wstrm)));

    if (!PubParaValid(ALARMTEL_)) {
        tellen = 0;
    } else {
        tellen = AlarmTel.len;
        tel    = AlarmTel.tel;
    }

    attrib = GetServiceAttrib(SER_SUCCOR);
    if (!SendSYSFrame_MODE2(wstrm, tel, tellen, attrib, Informer_0x80)) {
        Informer_0x80(_FAILURE);
    }
}

/*
********************************************************************************
* Handler:  HdlMsg_0x82
********************************************************************************
*/
static void HdlMsg_0x82(void)
{
    ConfirmSend_LCD(0x83, _SUCCESS);
}

/*
********************************************************************************
* Handler:  HdlMsg_0x84
********************************************************************************
*/
static void HdlMsg_0x84(void)
{
    INT8U  tellen, *tel;
    INT16U attrib;

    wstrm = GetSYSFrameStream();
    ASMSYSFrameHead_MODE2(wstrm, EgCode.egcode, 0x0342);
    WriteBYTE_Strm(wstrm, lcdrecv.buffer[2] | 0x40);
    MovStrmPtr(wstrm, GetSysTime_Date((DATE_STRUCT *)GetStrmPtr(wstrm)));
    MovStrmPtr(wstrm, GetSysTime_Time((TIME_STRUCT *)GetStrmPtr(wstrm)));

    if (!PubParaValid(ALARMTEL_)) {
        tellen = 0;
    } else {
        tellen = AlarmTel.len;
        tel    = AlarmTel.tel;
    }
    attrib = GetServiceAttrib(SER_SUCCOR);
    if (!SendSYSFrame_MODE2(wstrm, tel, tellen, attrib, Informer_0x84)) {
        Informer_0x84(_FAILURE);
    }
}

/*
********************************************************************************
* Handler:  HdlMsg_0x86
********************************************************************************
*/
static void HdlMsg_0x86(void)
{
    ConfirmSend_LCD(0x87, _SUCCESS);
}

/*
********************************************************************************
* Handler:  HdlMsg_0x50
********************************************************************************
*/
static void HdlMsg_0x50(void)
{

    SendLCDAck(0x51, LCD_NAK);

}

/*
********************************************************************************
* Handler:  HdlMsg_0x52
********************************************************************************
*/

static void HdlMsg_0x52(void)
{
    SendLCDAck(0x53, LCD_NAK);
}

/*
********************************************************************************
* Handler:  HdlMsg_0x54
********************************************************************************
*/
static void HdlMsg_0x54(void)
{
    SendLCDAck(0x55, LCD_NAK);

}

/*
********************************************************************************
* Handler:  HdlMsg_0x56
********************************************************************************
*/
static void HdlMsg_0x56(void)
{

}

/*
********************************************************************************
* Handler:  HdlMsg_0x58
********************************************************************************
*/

static void HdlMsg_0x58(void)
{
    SendLCDAck(0x59, LCD_NAK);

}

/*
********************************************************************************
* Handler:  HdlMsg_0x5A
********************************************************************************
*/
static void HdlMsg_0x5A(void)
{

    SendLCDAck(0x5B, LCD_NAK);

}

/*
********************************************************************************
* Handler:  HdlMsg_0x5C
********************************************************************************
*/
static void HdlMsg_0x5C(void)
{

}

/*
********************************************************************************
* Handler:  HdlMsg_0xA1
********************************************************************************
*/
static void HdlMsg_0xA1(void)
{
    INT8U len;

    InitStrm(&strm, (STREAMMEM *)buffer, sizeof(buffer));
    WriteBYTE_Strm(&strm, 0x01);

    if (PubParaValid(MYTEL_)) {
        WriteBYTE_Strm(&strm, MyTel.len);
        WriteDATA_Strm(&strm, MyTel.tel, MyTel.len);
    } else {
        WriteBYTE_Strm(&strm, 0);
    }

    if (PubParaValid(GPRSIP_)) {
        len = strlen(GprsIP.ippara[0].apn);
        WriteBYTE_Strm(&strm, len);
        WriteDATA_Strm(&strm, (INT8U *)GprsIP.ippara[0].apn, len);

        len = strlen(GprsIP.ippara[0].tcp_ip);
        WriteBYTE_Strm(&strm, len);
        WriteDATA_Strm(&strm, (INT8U *)GprsIP.ippara[0].tcp_ip, len);

        len = strlen(GprsIP.ippara[0].tcp_port);
        WriteBYTE_Strm(&strm, len);
        WriteDATA_Strm(&strm, (INT8U *)GprsIP.ippara[0].tcp_port, len);
    }  else {
        WriteBYTE_Strm(&strm, 0);
        WriteBYTE_Strm(&strm, 0);
        WriteBYTE_Strm(&strm, 0);
    }

    len = strlen(StrPassword);
    WriteBYTE_Strm(&strm, len);
    WriteDATA_Strm(&strm, (INT8U *)StrPassword, len);

    RequestSend_LCD(LCD_ATTR_COMMON, 0xA0, GetStrmStartPtr(&strm), GetStrmLen(&strm), 0);
}

/*
********************************************************************************
* Handler:  HdlMsg_0xA3
********************************************************************************
*/
static void HdlMsg_0xA3(void)
{
    INT8U len;

    InitStrm(&strm, &lcdrecv.buffer[2], 1024L);
    len = ReadBYTE_Strm(&strm);
    if (len > sizeof(MyTel.tel)) {
        SendLCDAck(0xA2, 0x02);
    } else {
        MyTel.len = len;
        ReadDATA_Strm(&strm, MyTel.tel, len);
        StorePubPara(MYTEL_);
        SendLCDAck(0xA2, 0x01);
    }
}

/*
********************************************************************************
* Handler:  HdlMsg_0xA5
********************************************************************************
*/
static void HdlMsg_0xA5(void)
{
    INT8U len;

    InitStrm(&strm, &lcdrecv.buffer[2], 1024L);
    len = ReadBYTE_Strm(&strm);
    if (len > sizeof(GprsIP.ippara[0].apn) - 1) {
        SendLCDAck(0xA4, 0x02);
    } else {
        ReadDATA_Strm(&strm, (INT8U *)GprsIP.ippara[0].apn, len);
        GprsIP.ippara[0].apn[len] = '\0';
        StorePubPara(GPRSIP_);
        SendLCDAck(0xA4, 0x01);
    }
}

/*
********************************************************************************
* Handler:  HdlMsg_0xA7
********************************************************************************
*/
static INT8U RecvBuf[50];

static BOOLEAN CheckIPValid(INT8U len)
{
    unsigned snbits;
    ip_addr  ipaddr;

    if (len <= 1) return FALSE;
    if (parse_ipad(&ipaddr, &snbits, (char *)RecvBuf) != 0)   return FALSE;
    if (SearchDigitalString(RecvBuf, len, '.',  1) == 0xffff) return FALSE;
    if (SearchDigitalString(RecvBuf, len, '.',  2) == 0xffff) return FALSE;
    if (SearchDigitalString(RecvBuf, len, '.',  3) == 0xffff) return FALSE;
    if (SearchDigitalString(RecvBuf, len, '\0', 1) == 0xffff) return FALSE;
    return TRUE;
}

static void HdlMsg_0xA7(void)
{
    INT8U len;

    InitStrm(&strm, &lcdrecv.buffer[2], 1024L);
    len = ReadBYTE_Strm(&strm);
    if (len > sizeof(GprsIP.ippara[0].tcp_ip) - 1) {
        SendLCDAck(0xA6, 0x02);
    } else {
        ReadDATA_Strm(&strm, RecvBuf, len);
        RecvBuf[len++] = '\0';
        if (CheckIPValid(len)) {
            memcpy(GprsIP.ippara[0].tcp_ip, RecvBuf, len);
            StorePubPara(GPRSIP_);
            SendLCDAck(0xA6, 0x01);
        } else {
            SendLCDAck(0xA6, 0x02);
        }
    }
}

/*
********************************************************************************
* Handler:  HdlMsg_0xA9
********************************************************************************
*/
static void HdlMsg_0xA9(void)
{
    INT8U len;

    InitStrm(&strm, &lcdrecv.buffer[2], 1024L);
    len = ReadBYTE_Strm(&strm);
    if (len > sizeof(GprsIP.ippara[0].tcp_port) - 1) {
        SendLCDAck(0xA8, 0x02);
    } else {
        ReadDATA_Strm(&strm, (INT8U *)GprsIP.ippara[0].tcp_port, len);
        GprsIP.ippara[0].tcp_port[len] = '\0';
        StorePubPara(GPRSIP_);
        SendLCDAck(0xA8, 0x01);
    }
}

/*
********************************************************************************
* Handler:  HdlMsg_0xAB
********************************************************************************
*/
static void HdlMsg_0xAB(void)
{
    BOOLEAN success;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -