?? cmppapi.h
字號:
/*************************************************************************** Copyright : 2002, ASPIRE TECHNOLOGIES (SHENZHEN) LTD. Program ID : cmppapi.h Description : cmppapi 功能函數頭文件 Version : cmppapi 1.6 Modification Log: DATE AUTHOR DESCRIPTION -------------------------------------------------------------------------- 2002-11-25 chenggang Create 2002-12-16 wenyz 修改 nHSubmit函數接口 2003-08-25 chenggang cmpp3.0修改 1、CMPP_SUBMIT消息:增加Fee_terminal_type字段, 表明Fee_terminal_Id是真實用戶號碼還是偽碼 2、CMPP_SUBMIT消息:擴展Fee_terminal_Id長度為 24字節,適應偽碼的長度需求,并把其類 型從Unsigned Integer修改為Octet String ***************************************************************************/#ifndef _CMPP_API_H_#define _CMPP_API_H_#ifdef WIN32#define ASPAPI __stdcall#else#define ASPAPI#endif/**************************************************************** 本頭文件中所定義函數接口中的指針類型參數 未特別聲明者均由調用者負責空間的分配和銷毀 ****************************************************************/ /**************************************************************** 函數返回值定義****************************************************************/ #define API_OK 1 /* 成功 */#define API_NOCELL 0 /* 沒有數據包 */#define API_ERR_INVALID -1 /* 非法輸入參數 */#define API_ERR_NETWORK -2 /* 網絡錯誤 */#define API_ERR_INIFILE -3 /* 配置文件錯誤 */#define API_ERR_TIMEOUT -4 /* 超時錯誤 */#define API_ERR_PROTOCOL -5 /* 協議錯誤 */#define API_ERR_RESP -6 /* 網關返回錯誤 */#define API_ERR_OTHER -7 /* 其它錯誤 */ /*************************************************************** 數據類型和長度定義***************************************************************/ typedef int CONNFD ; /*連接句柄*//* 設置時間格式定義 */#define MacRelativeTimeFmt 0#define MacAbsoluteTimeFmt 1#define MacRegisterDelivery_No ((unsigned char)0) //(發送時)不需要狀態報告 //(接收時)接收包為普通Deliver#define MacRegisterDelivery_Yes ((unsigned char)1) //(發送時)需要狀態報告 //(接收時)接收包為狀態報告(Receipt)#define MacFeeUserType_Dest ((unsigned char)0) //目的號碼計費#define MacFeeUserType_Third ((unsigned char)3) //指定號碼計費(FeeTerminalId為指定號碼,如不指定,默認按目的號碼計費)#define MacFeeType_Free "01" //免費#define MacFeeType_Piece "02" //按次計費#define MacFeeType_Month "03" //包月計費#define MacFeeType_Subsribe "08" //訂購業務#define MacFeeType_Cancel "09" //取消業務/* Msg_Fmt 字段的宏定義 */#define MSG_FORMAT_ASCII 0 /* ASCII串 */#define MSG_FORMAT_WRITE_CARD 3 /* 短信寫卡操作 */#define MSG_FORMAT_BINARY 4 /* 二進制信息 */#define MSG_FORMAT_UCS2 8 /* UCS2信息 */#define MSG_FORMAT_GB 15 /* 含GB漢字 */ //以下常量定義僅作說明之用:#define MacReceiptStatus_DELIVERED "DELIVRD"#define MacReceiptStatus_EXPIRED "EXPIRED"#define MacReceiptStatus_DELETED "DELETED"#define MacReceiptStatus_UNDELIVERABLE "UNDELIV"#define MacReceiptStatus_ACCEPTED "ACCEPTD"#define MacReceiptStatus_UNKNOWN "UNKNOWN"#define MacReceiptStatus_REJECTED "REJECTD"/* CMPP Length Definition */#define MacMsgId 8#define MacServiceId 10#define MacFeeTermId 32#define MacDesTermId 32#define MacSrcTermId 32#define MacMsgSrc 6#define MacFeeType 2#define MacFeeCode 6#define MacValidTime 17#define MacAtTime 17#define MacSrcId 21#define MacUserNum 99#define MacDstId 21#define MacMsgLen 160#define MacReserve 8#define MacLinkId 20/* for sp the submit pack definition */typedef struct _tagApiSubmit{ unsigned char sInMsgId[MacMsgId+1]; /* 消息標識 */ unsigned char ucPkTotal; /* 信息總條數 */ unsigned char ucPkNumber; /* 消息序號 */ char sFeeTerminalId[MacFeeTermId+1]; /* 計費用戶號碼 */ unsigned char ucFeeTerminalType; /* 被計費用戶的號碼類型, 0: 真實號碼;1: 偽碼*/ char sFeeType[MacFeeType+1]; /* 資費類別 */ int nFeeCode; /* 費率(單位:分)*/ char sServiceId[MacServiceId+1]; /* 業務類型 */ unsigned char ucTpPid; /* GSM協議類型 */ unsigned char ucTpUdhi; /* GSM協議類型 */ char sSrcId[MacSrcId+1]; /* 源號碼 */ char sLinkId[MacLinkId+1]; /* 點播業務使用的LinkID,非點 播類業務的MT 流程不使用 該字段*/}recSubmit;/* CMPP Deliver pack definition */ typedef struct _tagCmppDeliver { unsigned char uchMsgId[MacMsgId+1]; /* 消息標識 */ char chDestId[MacDstId+1]; /* 目的號碼 */ char chServiceId[MacServiceId+1];/* 業務類型 */ unsigned char ucTpPid; /* GSM協議類型 */ unsigned char ucTpUdhi; /* GSM協議類型 */ unsigned char ucMsgFmt; /* 消息格式 */ char chSrcTerminalId[MacSrcTermId+1];/* 源終端號碼 */ unsigned char ucSrcTerminalType; /* 源終端號碼類型, 0:真實號碼;1:偽碼*/ unsigned char ucRegisterDelivery; /* 是否為狀態報告 */ unsigned char ucMsgLength; /* 消息長度 */ char chMsgContent[MacMsgLen+1]; /* 消息內容 */ char chLinkId[MacLinkId+1]; /* 點播業務使用的LinkID,非點 播類業務的MT 流程不使用 該字段*/} recCmppDeliver;/* CMPP Receipt Body definition */#define MacRecStat 7#define MacSubmitTime 10#define MacDoneTime 10typedef struct _tagCmppReceiptBody { unsigned char uchMsgId[MacMsgId+1]; /* 消息標識 */ char chStat[MacRecStat+1]; /* 應答結果 */ char chSubmitTime[MacSubmitTime+1];/* 時間 */ char chDoneTime[MacDoneTime+1]; /* 時間 */ char chDestTerminalId[MacDesTermId+1]; /* 目的號碼 */ unsigned int unSmscSequence; /* 取自SMSC消息標識 */} recCmppReceiptBody;/*************************************************************** 調用函數接口定義***************************************************************/ #ifdef __cplusplusextern "C"{#endif/* * 描述:通過錯誤返回值得到詳細錯誤描述字符串 * 輸入:int nErrReturn 調用API得到的錯誤返回值 * 輸出:無 * 返回值:const char* 詳細錯誤描述字符串指針 */const char* ASPAPI sGetErrorReason( int nErrReturn );/* * 描述:得到詳細錯誤描述字符串 * 輸入:無 * 輸出:無 * 返回值:const char* 詳細錯誤描述字符串指針 */const char* ASPAPI sGetErrorDetail( );/*************************************************************** 高層接口函數 高層函數為SP應用方便提供,只支持單連接, submit的接口參數 較少, 其它的字段在配置文件中配置 ***************************************************************/ /* *描述:(1) 初始化系統接口的配置參數 (2) 連接MTBS服務器 (3) 創建連接接收線程 (4) 創建連接發送線程 (5 創建接收緩沖區 (6) 創建發送緩沖區 (7) 創建MO、回執緩沖區 *輸入:sIniFile 配置文件名 *輸出:無 *返回值:API_OK 成功 * 其它 失敗 */int ASPAPI nHInitInterface( const char* sIniFile );/* *描述:(1)釋放API資源 (2)關閉同MTBS的連接 注意:系統退出時必須調用nHExitInterface,釋放線程資源 *輸入:無 *輸出:無 *返回值:API_OK 成功 * 其它 失敗 */int ASPAPI nHExitInterface( );/* * 描述:SUBMIT,支持群發包(拆分包)接口 * (1) 發送MT請求 * (2) 接收MT響應 * 該接口支持群發,和內容超長度的拆分 * 群發的目的地址號碼用","號分割, 返回API_OK,表明發送都 * 成功,如果非API_OK, 輸出參數sLastTerminateId * 說明最后一個失敗的目標號碼, 如果返回的是API_ERR_RESP, * 說明是網關返回了一個RESPONSE表明錯誤, pnResult表明結果 * 輸入: * recSubmit* prSubmit submit的參數消息結構: 各個域的值含義如下: <1> unsigned char *sInMsgId 信息標識, 由SP輸入(該字段長度可以等于0, 不等于0表示用于MO和MT匹配) <2> unsigned char ucPkTotal 相同的MSGID的信息的總條數,從1開始 <3> unsigned char ucPkNumber 相同的MSGID的信息序號,從1開始 ( 這兩個參數為支持EMS用, 和拆分包的功能互斥, 即:如果內容超長包發送,這兩個參數無效, 應該填為1 ) <4> const char *sFeeTerminalId, 計費號碼, 僅限一個號碼 字段長度可以等于0, 如果長度等于0 對目的終端計費 <5> const char *sFeeType, 取值見MacFeeType_...常量定義 <6> int nFeeCode, 費率(單位:分), 如按次計費為每次費用,如包月計費為包月費用, <7> const char *sServiceId, 業務類型 <8> const unsigned char ucTpPid Gsm協議類型 <9> const unsigned char ucTpUdhi Gsm協議類型 <10> const char *sSrcId, 源號碼 * const char *sDstTerminateId 目標地址號碼( 以,號分割多個號碼) * const unsigned char ucDstTerminateType 目標地址號碼類型 * const unsigned char ucMsgFmt 信息格式 * const unsigned int unMsgLength 內容長度 * const char *sMsgContent 內容 * 輸出:unsigned char *sOutMsgId 信息標識, 由網關產生 * unsigned char *pchResult 結果, 為O 是正確 * char* sLastTerminateId 最后處理的目標號碼 * 返回值:API_OK 成功 * 其它 失敗 */int ASPAPI nHSubmit( recSubmit* prSubmit, const char *sDstTerminateId, const unsigned char ucDstTerminateType, const unsigned char ucMsgFmt, const unsigned int unMsgLength, const char *sMsgContent, unsigned char *sOutMsgId, unsigned char *pchResult, char *sLastTerminateId );/* * 描述:高層取緩沖中的普通MO,回執 * 輸入:int nTimeOut 超時時間(秒) * 輸出:int* pnReceiptOrNot * 類型:1 回執 0 deliver * unsigned int* punSequenceId * recCmppDeliver* prCmppDeliver * recCmppReceiptBody* prReceiptBody, * (在*pnReceiptOrNot為1時有效) * int nTimeOut 超時時間(秒) * 返回值:API_OK 成功 * API_NOCELL 沒有數據包 * 其它 失敗 */int ASPAPI nHGetDeliver( int* pnReceiptOrNot, unsigned int* punSequenceId, recCmppDeliver* prCmppDeliver, recCmppReceiptBody* prReceiptBody, int nTimeOut ); #ifdef __cplusplus}#endif #endif
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -