亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? modemgtm900.c

?? 華為GSM modem GTM900B的驅動代碼
?? C
?? 第 1 頁 / 共 3 頁
字號:
                else
					i = 1;				
			}			
			pt1 ++;
		}
		else
			break;
	}
	if (err != OS_TIMEOUT)
	{
		Ascii2ToHex(&ptrTemp->pktCmd.version,ptrTemp->pBuf,24);
		if(ptrTemp->pktCmd.cmdId == 0x61)
		{
			memcpy(ptrTemp->pBuf,&ptrTemp->pBuf[24],30);
			Ascii2ToHex(&ptrTemp->pBuf[30],&ptrTemp->pBuf[54],6);
			i = (i - 30) / 2 - 2 + 30; //長度不包括CRC
		}
		else
		{
			Ascii2ToHex(ptrTemp->pBuf,&ptrTemp->pBuf[24],i - 24);
			i = i / 2 - 2;	//長度不包括CRC
		}
		crc.chr[0] = ptrTemp->pBuf[ptrTemp->pktCmd.dataLen];
		crc.chr[1] = ptrTemp->pBuf[ptrTemp->pktCmd.dataLen+1];
		j = calculateCRC(&ptrTemp->pktCmd.version,i);
		if(crc.wrd[0] == j)					//如果CRC正確且協議類型為APA層,則向NP層發送消息
		{
			ptrTemp->Info.bufLen = i;
			ptrTemp->Info.comType = COM_DATA;
			ptrTemp->Info.srcPort = PKT_PORT_MODEM;
			OSQPost(QueuePcktApNpa, ptrTemp);
			#ifdef DEBUG_MODEM
			printf("\r\nreceive corret sms %s, line %u\n",__FILE__, __LINE__ );
			#endif
			return;
		}
	}
	FreePcktBuf(ptrTemp);
}

/*******************************************************************************
*                         連接GPRS
*
* Description: 連接成功獲得本地IP地址
*
*			   
*			   
* Arguments  : pCntIpAddr: 指向服務器IP地址的指針
*              CntIpPort: 服務器的IP端口
* Returns    : 成功:1;失敗:0
*******************************************************************************/
INT8U OpenGprs(INT8U* pCntIpAddr, INT16U CntIpPort)
{
	INT8U i,err;
    char strtemp[40];

    sprintf(strtemp, "%s\"%d.%d.%d.%d\",%d\r",ST_AT_IPOPEN,*pCntIpAddr,*(pCntIpAddr+1),
            *(pCntIpAddr+2),*(pCntIpAddr+3),CntIpPort); //按格式輸出到字符串
    modemState = MODEM_INVALID;
    for(i=0;i<5;i++)
    {
	    EXTUARTWriteA((INT8U *)ST_AT_CGDCONT,strlen((const char *)ST_AT_CGDCONT));	    //定義PDP 上下文
	    printf("send AT command: %s \n", ST_AT_CGDCONT);
        OSSemPend(ResetSem, OS_TICKS_PER_SEC * 20, &err);
		if(err == OS_TIMEOUT)
		{
			continue;
		}
    
        EXTUARTWriteA((INT8U *)ST_AT_ETCPIP,strlen((const char *)ST_AT_ETCPIP));        //進入tcpip功能
	    printf("send AT command: %s \n", ST_AT_ETCPIP);
        OSSemPend(ResetSem, OS_TICKS_PER_SEC * 20, &err);
		if(err == OS_TIMEOUT)
		{
			continue;
		}
        err = strlen((const char *)strtemp);
        EXTUARTWriteA((INT8U *)strtemp,strlen((const char *)strtemp));                  //連接服務器 
	    printf("send AT command: %s \n",strtemp);
        OSSemPend(ResetSem, OS_TICKS_PER_SEC * 20, &err);
		if(err == OS_TIMEOUT)
		{
			continue;
		}
        break;
    }
    if(i<5)                         //GPRS連接成功,modem同時在GPRS和SMS模式下
    {
        modemState = MODEM_GPRS|MODEM_SMS;
        return 1;
    }
    else                            //不成功,modem狀態恢復到SMS模式
    {
        #ifdef DEBUG_MODEM
		printf("\r\n GPRS not connected:  %s, line %u\n",__FILE__, __LINE__ );
		#endif
        modemState = MODEM_SMS;
        return 0;
    }
}

/*******************************************************************************
* Description: gprs數據接收
*
* Arguments  : none
*
* Returns    : none
*
* Note       : 只負責接收數據,把數據交給app程序去解析執行。這里只是個驅動。
*******************************************************************************/
void GprsRcvPro(void)
{
	INT8U ch,i;
    int len;
    char ATCmd[10];
    char datalen[5];
	char *ptr;
	X_PACKET *ptrTemp = NULL;
    char dataBuf[GPRSBUF_LEN];

    memset(datalen,0x00,5);
    memset(dataBuf,NULL,GPRSBUF_LEN);
	for(i = 0; i < GPRSBUF_LEN - 1; i ++)
	{
		ch = EXTUARTGetchTmA(OS_TICKS_PER_SEC/10,(INT8U *)&dataBuf[i]);
		if(ch == OS_TIMEOUT)
		{
			break;
		}
		if(dataBuf[i] == 0x0D)
		{
			break;				
		}
	}
    //查找冒號: %和:之間的字符是命令類型
    ptr = strchr(dataBuf,':');
    memset(ATCmd,NULL,10);
    len = ptr - dataBuf;
    if(len<=10 && len >0)
        strncpy(ATCmd,dataBuf,len);
    else
    {
        #ifdef DEBUG_MODEM
		printf("no : found  %s, line %u\n",__FILE__, __LINE__ );
		#endif
        return;
    }
    if(strstr(ATCmd, "IPDATA"))             //接收到GPRS的TCPIP數據
    {
        ptrTemp = GetPcktBuf();             //申請內存
    	while(ptrTemp == NULL)
    	{
    		OSTimeDly(OS_TICKS_PER_SEC/200);//延時5ms
    		ptrTemp = GetPcktBuf();
    		#ifdef DEBUG_MODEM
    		printf("\r\n when receive gprs,no packet  %s, line %u\n",__FILE__, __LINE__ );
    		#endif
    	}
        ptr++;                                  //指向數據長度
        for(i=0; i<4; i++)                      //數據長度最多4位數
		{
			datalen[i] = *ptr; 
            ptr++;
			if((*ptr < 0x30) || (*ptr > 0x39))        //非數字退出
			    break;					
		}
        len = atoi(datalen);                    //取數據長度
        ptr = strchr(dataBuf,'"');              //找第一個引號
        printf("received gprs data: %s\n",dataBuf);
        if(ptr != NULL)                             //把接收到的數據發送給app程序
        {
            ptr++;                                  //指向數據段
            Ascii2ToHex(ptrTemp->pBuf,(INT8U*)ptr,len*2); 
            ptrTemp->Info.comType = COM_GPRS;
			ptrTemp->Info.srcPort = PKT_PORT_MODEM;
            OSQPost(QueuePcktRawDataIn, ptrTemp); 
        }
        else
        {
            FreePcktBuf(ptrTemp);
            #ifdef DEBUG_MODEM
    		printf("no content in received gprs data  %s, line %u\n",__FILE__, __LINE__ );
    		#endif
        }
    }
    else if(strstr(ATCmd, "IPSEND"))        //IP發送成功
        printf("gprs send OK");
    else if(strstr(ATCmd, "IPCLOSE"))       //TCPIP鏈路關閉
    {
        
        printf("gprs tcpip closed");
    }
    else
    {
        #ifdef DEBUG_MODEM
        printf("illegal command received:%s, line %u\n",__FILE__, __LINE__ );
        #endif
    }
}


/*******************************************************************************
* Description:  GPRS數據發送函數
*
* Arguments  : ptr, 指向發送數據首地址;
*            : len,需發送數據的長度
* Returns    : 1,發送成功
*              2,發送失敗
* Note       : 發送一包的數據長度不能超過512字節
*******************************************************************************/
INT8U WriteGprs( INT8U *ptr, INT16U len)
{
    INT8U reSentCnt=3;      //最多重發3次
    INT8U err;
    INT8U sendBuf[512];
    while(reSentCnt > 0)
    {
        hexTo2Ascii(sendBuf,ptr,len);
        OSSemPend(EXTUARTSemShareA,0,&err);
        EXTUARTWriteA((INT8U *)ST_AT_IPSEND,strlen((const char *)ST_AT_IPSEND));
        EXTUARTPutchA('"');
        EXTUARTWriteA(sendBuf,len*2);
        EXTUARTPutchA('"');
		EXTUARTPutchA('\r');
        OSSemPost(EXTUARTSemShareA);
        //等待執行的結果
        if(err != OS_TIMEOUT)
		{
            return 1;      //成功,跳出
        }
		else
		{
            reSentCnt--;
        }
    }
    return 2;
}

/*******************************************************************************
* Description:  gprs或sms接收
*
* Arguments  : none
*
* Returns    : none
*
* Note       : modem可以同時工作在sms和gprs狀態下。調用該函數時,表明modem已經
工作在sms或gprs模式下,因此接收到%符號時可以認為是接收到gprs數據
*******************************************************************************/
void SmsGprsRcv(void)
{
    INT8U ch,err;

    err = EXTUARTGetchTmA(OS_TICKS_PER_SEC/2,&ch);
	if(err == OS_TIMEOUT)
		return;
	else if(ch == '>')                          //發送短信成功的回應
	{
		OSSemPost(SMSSnd1);	
		return;
	}
	else if(ch == '%')                          //接收到gprs數據
		GprsRcvPro();
    else if((ch == '+') || ( ch == 'Q'))        //接收到sms數據
        ATCmdRcvPro(ch);
    else                                        //可能是ERROR,需處理
        return;
}

/*******************************************************************************
** 函數名稱: TaskEXTUARTARcv
** 功能描述: 擴展串口A接收任務,用于和modem的通訊
** 輸 入: *pdata
** 輸 出: 無
** MSR_Uart_A的第7位是modem的DCD腳狀態 1表示數據鏈路已連接 0表示短信方式
** 全局變量: 
** 調用模塊: 
*******************************************************************************/
static void TaskEXTUARTARcv(void *pdata)
{
	INT8U ch,err;
	INT32U i;
    char ack[] = "OK";
    char connect[] = "CONNECT";
	PS_X_PACKET ptrTemp = NULL;
	pdata = pdata;

	for(;;)
	{
		i = (MSR_Uart_A & 0x80);

        if(((MSR_Uart_A & 0x80) != 0x00) && (modemState & MODEM_SMS) && ((modemState & MODEM_GPRS) != MODEM_GPRS))
		{
			modemState = MODEM_DATA;
			#ifdef DEBUG_MODEM
			printf("\r\nModem sms to data %s, line %u\n",__FILE__, __LINE__ );
			#endif
		
		}
		else if(((MSR_Uart_A & 0x80) == 0x00))
		{
			if(modemState & MODEM_DATA)
			{
				DataFlag = 0;
				modemState = MODEM_SMS | MODEM_GPRS;
				#ifdef DEBUG_MODEM
				printf("\r\nModem data to sms %s, line %u\n",__FILE__, __LINE__ );
				#endif
			}
		}
		if(modemState & (MODEM_GPRS | MODEM_SMS))       //SMS或GPRS狀態下
		{
			SmsGprsRcv();
			if(DataFlag != 0)				//避免由于在數傳沒有接通前,掛斷來電,造成不能查詢信源信息
			{
				 if(ConnectTimeOut < OSTimeGet())
				 {
				 	DataFlag = 0;
				 } 
			}
		}
		else if(modemState == MODEM_DATA)
		{
			ModemDataRcvPRO();
		}		
		else
		{
			err = EXTUARTGetchTmA(OS_TICKS_PER_SEC*5 ,&ch);
			if(err == OS_TIMEOUT)
				continue;
			ptrTemp = GetPcktBuf();
			while(ptrTemp == NULL)
			{
				OSTimeDly(OS_TICKS_PER_SEC/200);//延時5ms
				ptrTemp = GetPcktBuf();
			}
            memset(ptrTemp->pBuf,0x00,MAX_BUFLEN);
			ptrTemp->pBuf[0] = ch;
			for(i = 1; i < MAX_BUFLEN - 1; i ++)
			{
				ch = EXTUARTGetchTmA(OS_TICKS_PER_SEC / 2,&ptrTemp->pBuf[i]);
				if(ch != OS_TIMEOUT)
				{
					if(ptrTemp->pBuf[i] == 0x0D)
					{
						ptrTemp->Info.bufLen = i + 1;
						break;				
					}
				}
				else
				{
					break;
				}				
			}
            #ifdef DEBUG_MODEM
    		printf("received AT ack: %s \n",ptrTemp->pBuf);
    		#endif
            if((ch != OS_TIMEOUT) && (strstr((char*)ptrTemp->pBuf,connect)))
            {
                OSSemPost(ResetSem);
                printf("tcp ip OK:  %s, line %u\n",__FILE__, __LINE__ );
            }
            else if((ch != OS_TIMEOUT) && (strstr((char*)ptrTemp->pBuf,ack) ||(ptrTemp->pBuf[i - 1] == 0x30)))      //收到的最后一個字符是0
			{	
                OSSemPost(ResetSem);
			}
			FreePcktBuf(ptrTemp);
			OSTimeDly(OS_TICKS_PER_SEC/200);
		}
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美色图激情小说| 欧美成人精品高清在线播放| 欧美一区二区三区四区视频| 久久一区二区三区四区| 丝袜美腿一区二区三区| 97精品久久久午夜一区二区三区 | av一区二区三区黑人| 日韩一区二区电影网| 一区二区三区国产精华| 国产精品白丝jk黑袜喷水| 欧美一级理论片| 亚洲电影一区二区| 91蝌蚪porny九色| 国产精品女人毛片| 国产91精品免费| 久久亚洲春色中文字幕久久久| 日韩在线a电影| 欧美日韩国产天堂| 亚洲国产aⅴ成人精品无吗| 91视频一区二区三区| 国产精品久久久久久久裸模| 国产乱码精品一区二区三区av| 日韩你懂的在线观看| 日韩精品视频网站| 91精品国产综合久久精品app| 亚洲午夜视频在线| 在线视频观看一区| 亚洲在线视频网站| 欧美日韩视频专区在线播放| 亚洲线精品一区二区三区| 在线日韩av片| 亚洲一区在线观看免费| 欧美午夜不卡在线观看免费| 亚洲成va人在线观看| 欧美日韩精品欧美日韩精品一| 亚洲香肠在线观看| 日韩一区二区电影在线| 精品午夜久久福利影院| 国产亚洲欧美中文| 成人在线综合网| 1区2区3区欧美| 欧美日韩亚洲国产综合| 美国三级日本三级久久99| 久久亚洲综合av| 成人动漫一区二区| 曰韩精品一区二区| 欧美一区二区三级| 国产高清亚洲一区| 亚洲免费av高清| 91精品婷婷国产综合久久 | 成人深夜在线观看| 国产精品丝袜91| 欧美日韩一区二区三区视频| 日韩精品午夜视频| 亚洲国产成人在线| 91亚洲国产成人精品一区二三| 亚洲一区影音先锋| 久久一区二区三区国产精品| 91在线看国产| 奇米888四色在线精品| 国产网站一区二区| 欧美天天综合网| 国产精品资源网| 亚洲福利国产精品| 国产喂奶挤奶一区二区三区| 欧美亚日韩国产aⅴ精品中极品| 麻豆一区二区在线| 亚洲精品欧美激情| 2021久久国产精品不只是精品| 成人激情av网| 久久 天天综合| 一区二区三区四区不卡在线 | 久久综合视频网| 一本久道中文字幕精品亚洲嫩| 七七婷婷婷婷精品国产| 日韩码欧中文字| 久久综合九色综合97婷婷| 欧美视频在线观看一区| 粉嫩一区二区三区在线看 | 一区二区视频在线| 2017欧美狠狠色| 88在线观看91蜜桃国自产| 成人av在线观| 国产精品1024| 久久疯狂做爰流白浆xx| 亚洲综合激情另类小说区| 中文字幕精品在线不卡| 欧美不卡在线视频| 欧美日韩免费视频| 在线观看一区二区精品视频| 成人永久aaa| 国产一区中文字幕| 日韩精品91亚洲二区在线观看| 亚洲视频图片小说| 久久众筹精品私拍模特| 91精品婷婷国产综合久久竹菊| 色婷婷综合久久久久中文| 大白屁股一区二区视频| 国产精品一区专区| 国产最新精品免费| 久草这里只有精品视频| 日韩和的一区二区| 三级欧美在线一区| 五月天婷婷综合| 亚洲高清三级视频| 亚洲国产欧美在线| 一二三四区精品视频| 亚洲欧美色一区| 亚洲精品成人在线| 亚洲精品久久7777| 亚洲欧美韩国综合色| 国产精品白丝在线| 亚洲私人影院在线观看| 中文字幕佐山爱一区二区免费| 国产精品国模大尺度视频| 国产精品福利一区二区三区| 国产精品亲子乱子伦xxxx裸| 国产精品久久看| 亚洲色图19p| 亚洲一区二区三区四区的| 亚洲成a人片在线观看中文| 偷拍一区二区三区四区| 图片区小说区区亚洲影院| 免费成人性网站| 国产精品亚洲专一区二区三区 | 欧美精选午夜久久久乱码6080| 精品视频1区2区| 日韩一区二区免费高清| 精品欧美一区二区久久| 国产偷v国产偷v亚洲高清| 国产精品福利电影一区二区三区四区| 亚洲私人影院在线观看| 亚洲第一久久影院| 久久国产尿小便嘘嘘尿| 成人av影视在线观看| 91精品福利在线| 91精品国产色综合久久ai换脸 | 亚洲高清免费观看| 久久激情五月激情| 不卡的看片网站| 欧美亚洲国产一区二区三区va| 日韩欧美国产一区在线观看| 国产婷婷色一区二区三区| 一区二区三区在线观看欧美| 日韩精品1区2区3区| 懂色av一区二区夜夜嗨| 欧美午夜精品电影| 国产午夜亚洲精品不卡| 亚洲成在人线免费| 国产a久久麻豆| 欧美亚洲日本一区| 国产欧美日韩三级| 亚洲一区二区在线免费看| 国产呦精品一区二区三区网站| 色乱码一区二区三区88| 亚洲精品一区二区三区影院 | 色婷婷国产精品| 欧美一级艳片视频免费观看| 国产精品久久久久四虎| 日韩和欧美的一区| 91黄色激情网站| 国产日韩欧美综合在线| 午夜精品爽啪视频| 99久久国产综合精品色伊| 日韩欧美国产高清| 亚洲一区二区三区小说| 成人app软件下载大全免费| 日韩欧美一卡二卡| 亚洲国产精品影院| 99re免费视频精品全部| 久久久久久久久伊人| 丝袜亚洲另类丝袜在线| 91国内精品野花午夜精品| 欧美国产日韩一二三区| 久久成人18免费观看| 欧美裸体一区二区三区| 亚洲综合成人在线视频| 91看片淫黄大片一级在线观看| 欧美成人bangbros| 日韩电影在线一区二区| 91成人网在线| 综合久久给合久久狠狠狠97色 | 亚洲欧美经典视频| 99精品视频在线观看免费| 久久综合久久久久88| 日韩精品一级中文字幕精品视频免费观看 | 国产乱人伦偷精品视频不卡 | 91福利资源站| 综合激情成人伊人| 99在线精品免费| 国产精品网友自拍| 成人丝袜高跟foot| 欧美国产精品一区| 成人免费视频视频| 国产精品免费久久| 国产福利一区二区三区在线视频| 精品蜜桃在线看| 国产伦精品一区二区三区视频青涩 | 亚洲精品久久7777| 在线亚洲一区观看|