/********************************************************************************** * File Name: Modem.c * Function Describe:device for modem * Relate Module: * Explain: the modem must be using ZTE MC8332 * Writer: ShiLiangWen * Date: 2015.1.20 ***********************************************************************************/ #include "includes.h" void ModemSendAT(char *p) { char d; while(*p){ d=*p; USART_SendData(USART3, (uint8_t) d); /* Loop until the end of transmission */ while (USART_GetFlagStatus(USART3, USART_FLAG_TC) == RESET){} p++; } } int ModemSendData(unsigned char *pData,unsigned short datalen) { int i; for(i=0;i99)return 99; else return csq; } /********************************************************************************** ModemStrCmp ***********************************************************************************/ int ModemStrCmp(char *msg,char *str) { char *p1=str; char *p2=msg; while(*p1!=0){ if(*p1!=*p2)return 1; p1++; p2++; } return 0; } /********************************************************************************** ModemCheckRecv if timeout return 0 else return r ***********************************************************************************/ int ModemWaitMsg(char *pMsgBuf,unsigned short MsgBufLen,int timeout) { int r; timeout++; while(timeout){ timeout--; r=MsgQueueAccept(&ModemMsgQueue,pMsgBuf, MsgBufLen); if(r)return r; else{ if(timeout)DelayTick(1); } } return 0; } /********************************************************************************** ModemWaitAckMsg ***********************************************************************************/ int ModemWaitAckMsg(char *pAck,char *pMsgBuf,unsigned short MsgBufLen,int timeout) { int r; timeout++; while(timeout){ timeout--; r=MsgQueueAccept(&ModemMsgQueue,pMsgBuf, MsgBufLen); if(r){ if(0==ModemStrCmp(pMsgBuf,pAck))return r; }else{ if(timeout)DelayTick(1); } } return 0; } /* int ModemSendTcpData(unsigned char socket,unsigned char *pData,unsigned short len) { int i; char buf[150]; char tmp[5]; unsigned char temp=0; int flag=0; sprintf(buf,"AT+ZIPSEND=%d,%d\r",socket,len); ModemSendAT(buf); //SlwTrace(INF,buf);SlwTrace(INF,"\n"); ModemSendData(pData,len); // if(ModemWaitACKMsg("OK",1))flag=1; #if 0 sprintf(buf,"[TCP]"); for(i=0;i70)len=70; //for(i=0;i0x2f && str[0]<0x3a){ if(str[1]>0x2f && str[1]<0x3a){ if(str[2]>0x2f && str[2]<0x3a){ if(str[3]>0x2f && str[3]<0x3a){ num=1000*(str[0]-0x30); num+=100*(str[1]-0x30); num+=10*(str[2]-0x30); num+=(str[3]-0x30); }else{ num=100*(str[0]-0x30); num+=10*(str[1]-0x30); num+=(str[2]-0x30); } }else{ num=10*(str[0]-0x30); num+=(str[1]-0x30); } }else{ num= str[0]-0x30; } }else{ num=0; } return num; } /********************************************************************************** *ModemSetDTRLow *********************************************************************************** void ModemSetDtrLow(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOC, ENABLE); GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz; GPIO_InitStructure.GPIO_Pin = MODEM_DTR_PIN; GPIO_Init(MODEM_DTR_PORT, &GPIO_InitStructure); MODEM_DTR_LOW; }*/ /********************************************************************************** *ModemSetDTRInput *********************************************************************************** void ModemSetDtrInput(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOC, ENABLE); GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz; GPIO_InitStructure.GPIO_Pin = MODEM_DTR_PIN; GPIO_Init(MODEM_DTR_PORT, &GPIO_InitStructure); }*/ /********************************************************************************** *ModemSetRINGLow *********************************************************************************** void ModemSetRingLow(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOC, ENABLE); GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz; GPIO_InitStructure.GPIO_Pin = MODEM_RING_PIN; GPIO_Init(MODEM_RING_PORT, &GPIO_InitStructure); MODEM_RING_LOW; }*/ /********************************************************************************** *ModemSetRINGInput *********************************************************************************** void ModemSetRingInput(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOC, ENABLE); GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz; GPIO_InitStructure.GPIO_Pin = MODEM_RING_PIN; GPIO_Init(MODEM_RING_PORT, &GPIO_InitStructure); }*/ /********************************************************************************** *ModemSetDSRLow *********************************************************************************** void ModemSetDsrLow(void) { GPIO_InitTypeDef GPIO_InitStructure; //RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOC, ENABLE); GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz; GPIO_InitStructure.GPIO_Pin = MODEM_DSR_PIN; GPIO_Init(MODEM_DSR_PORT, &GPIO_InitStructure); MODEM_DSR_LOW; }*/ /********************************************************************************** *ModemSetDSRInput *********************************************************************************** void ModemSetDsrInput(void) { GPIO_InitTypeDef GPIO_InitStructure; //RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOC, ENABLE); GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz; GPIO_InitStructure.GPIO_Pin = MODEM_DSR_PIN; GPIO_Init(MODEM_DSR_PORT, &GPIO_InitStructure); }*/ /***********************************************************************************/