?? modemgtm900.h
字號:
/****************************************Copyright(c)**************************
**
**
**--------------文件信息-------------------------------------------------------
**文 件 名: .c
**創 建 人: 楊林軍
**最 新 版 本:
**最后修改日期:
**描 述:
**
**--------------歷史版本信息---------------------------------------------------
** 創建人: 楊林軍
** 版 本: 1.0
** 日 期:
** 描 述: 原始版本
**
**--------------當前版本修訂---------------------------------------------------
** 修改人:
** 日 期:
** 描 述:
**
**-----------------------------------------------------------------------------
******************************************************************************/
#ifndef MODEM_GTM900_H
#define MODEM_GTM900_H
#ifndef MODEM_GLOBAL
#define MODEM_EXT extern
#else
#define MODEM_EXT
#endif
/*
MODEM_EXT enum state
{
invalid, initializing, sms, smsBusy, dataConnected
, gprs
,closeM
}modemState, modemStatePrv;
*/
#define MODEM_INVALID 0x00
#define MODEM_INITIALIZING 0x01
#define MODEM_SMS 0x02
#define MODEM_SMSBUSY 0x04
#define MODEM_DATA 0x08
#define MODEM_GPRS 0x10
#define MODEM_CLOSE 0x20
typedef enum {Unknown = 0, International = 1, National = 2,
NetworkSpecific = 3, Subscriber = 4,
Alphanumeric = 5, Abbreviated = 6, Reserved = 7} Type ;
//定義相關AT命令
#ifdef MODEM_GLOBAL
//通用TA控制命令
INT8U const ST_M_ATAT[] = "AT\r"; //test command
INT8U const ST_M_IPR[] = "AT+IPR=9600\r"; //波特率設定后,掉電不改變
INT8U const ST_M_CLIP[] = "AT+CLIP=1\r"; //設置顯示主叫識別
INT8U const ST_M_V0[] = "ATV0\r"; //數字型結果碼,
INT8U const ST_M_E0[] = "ATE0\r"; //設置回顯方式不回顯
INT8U const ST_M_S0[] = "ATS0=2\r"; //自動應答前振鈴兩次
INT8U const ST_M_V0S0[] = "ATE0V0S0=2\r"; //該命令是上面3條命令的集合
INT8U const ST_M_ATH[] = "ATH\r"; //掛機控制,可終止當前的所有通話
INT8U const ST_M_COPS[] = "AT+COPS\r"; //選擇運營商
//通用配置命令
INT8U const ST_SMS_CSMS[] = "AT+CSMS=1\r"; //選擇短消息服務
INT8U const ST_SMS_CPMS[] = "AT+CPMS=\"SM\",\"SM\",\"SM\"\r"; //優選消息存儲器為SIM卡
INT8U const ST_SMS_CMGF[] = "AT+CMGF=1\r"; //設置短信格式 為文本格式
//消息接收和讀出命令
INT8U const ST_SMS_CNMI[] = "AT+CNMI=2,2,2\r"; //設置收到短信提醒,并直接發給TE,華為資料中第一個參數取值沒有 3
INT8U const ST_SMS_CMGL[] = "AT+CMGL= \"REC UNREAD\"\r"; //讀接收到但還沒讀的短信
INT8U const ST_SMS_CMGR[] = "AT+CMGR="; //AT+CMGR= index 讀指定索引號index的短信
//消息發送和寫入命令
INT8U const ST_SMS_CMGS[] = "AT+CMGS="; //發送短信
INT8U const ST_SMS_CMSS[] = "AT+CMSS="; //從SIM卡等存儲器發送消息
INT8U const ST_SMS_CMGW[] = "AT+CMGW="; //將消息寫入存儲器
INT8U const ST_SMS_CMGD[] = "AT+CMGD="; //刪除短信
//工程命令
INT8U const ST_EN_EM1[] = "AT%EM=2,1\r"; //讀取Serving cell信息
INT8U const ST_EN_EM2[] = "AT%EM=2,3\r"; //讀取Neighbouring cell信息
INT8U const ST_EN_BAND[] = "AT%BAND=1,9\r"; //手動鎖頻鎖到GSM900
//TCP IP命令
INT8U const ST_AT_ETCPIP[] = "AT%ETCPIP\r"; //該命令實現PDP激活和TCPIP的初始化
INT8U const ST_AT_IPOPEN[] = "AT%IPOPEN=\"TCP\","; //\"60.12.5.163\",8002\r"; //打開一條TCP 或者UDP 鏈接命令
INT8U const ST_AT_IOMODE[] = "AT%IOMODE=1,1,1\r"; //模塊對輸入輸出數據進行轉換,使用單鏈接AT 命令,不使用接收緩存
INT8U const ST_AT_IPSEND[] = "AT%IPSEND="; //單鏈接模式下發送數據命令
INT8U const ST_AT_IPCLOSE[] = "AT%IPCLOSE=1\r"; //關閉連接號為1的鏈接 5是退出GPRS功能
INT8U const ST_AT_TXSTATE[] = "AT%TXSTATE=1\r"; //用于查詢或清除當前鏈接的數據包統計數據(僅對TCP連接有效
INT8U const ST_AT_IPDQ[] = "AT%IPDQ\r"; //查詢接收緩存中的數據包數量
INT8U const ST_AT_IPDR[] = "AT%IPDR="; //數據讀取命令
INT8U const ST_AT_IPDD[] = "AT%IPDD=1,0\r"; //數據刪除命令
INT8U const ST_AT_IPDDMODE[] = "AT%IPDDMODE=0\r"; //數據刪除模式為自動刪除
//標準GPRS命令
INT8U const ST_AT_CGDCONT[] = "AT+CGDCONT=1,\"IP\",\"CMNET\"\r"; //定義PDP 上下文
INT8U const ST_AT_CGQREQ[] = "AT+CGQREQ="; //請求的服務質量簡報
INT8U const ST_AT_CGQMIN[] = "AT+CGQMIN="; //可接收的最小服務質量簡報
INT8U const ST_AT_CGATT[] = "AT+CGATT=1\r"; //GPRS 附著和分離
INT8U const ST_AT_CGACT[] = "AT+CGACT=1\r"; //PDP 上下文激活和去激活
INT8U const ST_AT_CGDATA[] = "AT+CGDATA=\"PPP\"\r"; //進入數據模式
INT8U const ST_AT_CGPADDR[] = "AT+CGPADDR=cid\r"; //顯示PDP 地址
INT8U const ST_AT_CGAUTO[] = "AT+CGAUTO=1\r"; //自動應答網絡側PDP 上下文激活請求
INT8U const ST_AT_CGANS[] = "AT+CGANS=1\r"; //手動應答網絡側PDP 上下文激活請求
INT8U const ST_AT_CGCLASS[] = "AT+CGCLASS=\"B\"\r"; //GPRS 移動臺類別
INT8U const ST_AT_CGEREP[] = "AT+CGEREP=1\r"; //GPRS 事件上報
INT8U const ST_AT_CGREG[] = "AT+CGREG=1\r"; //GPRS 網絡注冊狀態
INT8U const ST_AT_CGSMS[] = "AT+CGSMS=0\r"; //為MO SMS 選擇業務
INT8U const ST_AT_ATD[] = "ATD*99"; //請求GPRS 服務器
INT8U const ST_AT_ATH[] = "ATH"; //手動拒絕網絡側PDP 上下文激活請
INT8U const ST_AT_ATA[] = "ATA"; //手動接受網絡側PDP 上下文激活請求
#else
extern INT8U const ST_EN_EM1[];
extern INT8U const ST_SMS_CNMI[];
extern INT8U const ST_SMS_CNMI1[];
extern INT8U const ST_SMS_CMGS[];
extern INT8U const ST_M_ATAT[];
extern INT8U const ST_SMS_CMGL[];
extern INT8U const ST_SMS_CMGD[];
#endif
MODEM_EXT OS_EVENT *ResetSem; //modem reset signal
MODEM_EXT INT8U SmsSendSpan;
MODEM_EXT int SMSSendDelay;
MODEM_EXT INT8U ModemInfo[10]; //信源信息
MODEM_EXT INT8U FlagModemSmsRcv;
MODEM_EXT INT8U DataFlag;
MODEM_EXT INT32U ConnectTimeOut; //連接超時
MODEM_EXT BOOLEAN SMSDelCnt;
MODEM_EXT INT8U smsIndex[50][5];
MODEM_EXT INT8U ModemCnt;
void ModemInit(void);
/********************************************************************************
* 設置Modem狀態
*
* Description: 設置Modem狀態
*
* Arguments : enum state
*
* Returns : 無
*********************************************************************************/
MODEM_EXT void setModemStat(INT8U mState);
/********************************************************************************
** 函數名稱: resetModem
** 功能描述: Modem復位函數,完成對modem的復位和一些默認配置方式配置
** 輸 入: *pdata
** 輸 出: 無
**
** 全局變量:
** 調用模塊:
*********************************************************************************/
MODEM_EXT void resetModem(void);
MODEM_EXT BOOLEAN ModemReadEquipInfo( OUT INT8U *dest);
BOOLEAN ModemDataConnct(X_PACKET *ptr);
void ModemDataDisconnct(void);
INT8U GetModemStat(void);
/********************************************************
**從MODEM取得下行輸入功率電平
********************************************************/
INT8U GetDnInPw(void); //下行輸入功率電平
/*******************************************************************************
* 連接GPRS
*
* Description: 連接成功獲得本地IP地址
*
* Arguments : pCntIpAddr: 指向服務器IP地址的指針
* CntIpPort: 服務器的IP端口
* Returns : 成功:1;失敗:0
*******************************************************************************/
INT8U OpenGprs(INT8U* pCntIpAddr, INT16U pCntIpPort); //打開GPRS連接
/*******************************************************************************
* Description: GPRS數據發送函數
*
* Arguments : ptr, 指向發送數據首地址;
* : len,需發送數據的長度
* Returns : 1,發送成功
* 2,發送失敗
* Note : 發送一包的數據長度不能超過512字節
我認為更好的做法應該是由openGprs返回一個句柄,handle, 然后向
GPRS發送數據時寫成 WriteGprs(handle, ptr, len),這樣很明了的看出handle指向的空間
屬于驅動,而ptr指向的空間屬于app,app和驅動之間的接口就像內存拷貝那樣簡單。
*******************************************************************************/
INT8U WriteGprs(INT8U *ptr, INT16U len); //GPRS數據發送函數
#endif
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -