📄 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 )*//*金华业公司聂咸义修改*/int ASPAPI nHInitInterface( const char* sIniFile, int nFD );/* *描述:(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( int nFD, /*niexianyi add*/ 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 nFD, /*niexianyi add*/ 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 + -