📄 lcddrv.c
字号:
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 + -