⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cmppapi.h

📁 用c/c++实现的一个CMPP API
💻 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 + -