#ifndef _SMPP_DEFINES_HEADER
#define _SMPP_DEFINES_HEADER

#define	SMPP_T_CHAR		unsigned char
#define	SMPP_T_INTEGER	unsigned int
#define	SMPP_T_LONG		unsigned long
#define	SMPP_T_STRING	SMPP_T_CHAR *
#define	SMPP_T_BINARY	SMPP_T_CHAR *
#define	SMPP_T_BOOL		int

/* This SMPP Interface implements version 3.4 */
#define SMPP_VERSION_NUMBER     0x34

/* SMPP 3.4 command_id [5.1.2] */
#define SMPP_CMD_GENERIC_NACK                           0x80000000
#define SMPP_CMD_BIND_RECEIVER                          0x00000001
#define SMPP_CMD_BIND_RECEIVER_RESP                     0x80000001
#define SMPP_CMD_BIND_TRANSMITTER                       0x00000002
#define SMPP_CMD_BIND_TRANSMITTER_RESP                  0x80000002
#define SMPP_CMD_QUERY_SM                               0x00000003
#define SMPP_CMD_QUERY_SM_RESP                          0x80000003
#define SMPP_CMD_SUBMIT_SM                              0x00000004
#define SMPP_CMD_SUBMIT_SM_RESP                         0x80000004
#define SMPP_CMD_DELIVER_SM                             0x00000005
#define SMPP_CMD_DELIVER_SM_RESP                        0x80000005
#define SMPP_CMD_UNBIND                                 0x00000006
#define SMPP_CMD_UNBIND_RESP                            0x80000006
#define SMPP_CMD_REPLACE_SM                             0x00000007
#define SMPP_CMD_REPLACE_SM_RESP                        0x80000007
#define SMPP_CMD_CANCEL_SM                              0x00000008
#define SMPP_CMD_CANCEL_SM_RESP                         0x80000008
#define SMPP_CMD_BIND_TRANSCEIVER                       0x00000009
#define SMPP_CMD_BIND_TRANSCEIVER_RESP                  0x80000009
/* Reserved:                                            0x0000000A
                                                      & 0x8000000A */
#define SMPP_CMD_OUTBIND                                0x0000000B
/* Reserved:                                   0x0000000C-00000014
                                             & 0x8000000B-80000014 */
#define SMPP_CMD_ENQUIRE_LINK                           0x00000015
#define SMPP_CMD_ENQUIRE_LINK_RESP                      0x80000015
/* Reserved:                                   0x00000016-00000020
                                             & 0x80000016-80000020 */
#define SMPP_CMD_SUBMIT_MULTI                           0x00000021
#define SMPP_CMD_SUBMIT_MULTI_RESP                      0x80000021
/* Reserved:                                   0x00000022-000000FF
                                             & 0x80000022-800000FF */
/* Reserved:                                            0x00000100 */
/* Reserved:                                            0x80000100 */
/* Reserved:                                            0x00000101
                                                      & 0x80000101 */
#define SMPP_CMD_ALERT_NOTIFICATION                     0x00000102
/* Reserved:                                            0x80000102 */
#define SMPP_CMD_DATA_SM                                0x00000103
#define SMPP_CMD_DATA_SM_RESP                           0x80000103
/* Reserved for SMPP extension:                0x00000104-0000FFFF
                                             & 0x80000104-8000FFFF */
/* Reserved:                                   0x00010000-000101FF
                                             & 0x80010000-800101FF */
/* Reserved for SMSC Vendor:                   0x00010200-000102FF
                                             & 0x80010200-800102FF */
/* Reserved:                                   0x00010300-7FFFFFFF
                                             & 0x80010300-FFFFFFFF */

/* SMPP 3.4 command_status [5.1.3] */
#define SMPP_ESME_ROK                                   0x00000000
#define SMPP_ESME_RINVMSGLEN                            0x00000001
#define SMPP_ESME_RINVCMDLEN                            0x00000002
#define SMPP_ESME_RINVCMDID                             0x00000003
#define SMPP_ESME_RINVBNDSTS                            0x00000004
#define SMPP_ESME_RALYBND                               0x00000005
#define SMPP_ESME_RINVPRTFLG                            0x00000006
#define SMPP_ESME_RINVREGDLVFLG                         0x00000007
#define SMPP_ESME_RSYSERR                               0x00000008
/* Reserved:                                            0x00000009 */
#define SMPP_ESME_RINVSRCADR                            0x0000000A
#define SMPP_ESME_RINVDSTADR                            0x0000000B
#define SMPP_ESME_RINVMSGID                             0x0000000C
#define SMPP_ESME_RBINDFAIL                             0x0000000D
#define SMPP_ESME_RINVPASWD                             0x0000000E
#define SMPP_ESME_RINVSYSID                             0x0000000F
/* Reserved:                                            0x00000010 */
#define SMPP_ESME_RCANCELFAIL                           0x00000011
/* Reserved:                                            0x00000012 */
#define SMPP_ESME_RREPLACEFAIL                          0x00000013
#define SMPP_ESME_RMSGQFUL                              0x00000014
#define SMPP_ESME_RINVSERTYP                            0x00000015
/* Reserved:                                   0x00000016-00000032 */
#define SMPP_ESME_RINVNUMDESTS                          0x00000033
#define SMPP_ESME_RINVDLNAME                            0x00000034
/* Reserved:                                   0x00000035-0000003F */
#define SMPP_ESME_RINVDESTFLAG                          0x00000040
/* Reserved:                                            0x00000041 */
#define SMPP_ESME_RINVSUBREP                            0x00000042
#define SMPP_ESME_RINVESMCLASS                          0x00000043
#define SMPP_ESME_RCNTSUBDL                             0x00000044
#define SMPP_ESME_RSUBMITFAIL                           0x00000045
/* Reserved:                                   0x00000046-00000047 */
#define SMPP_ESME_RINVSRCTON                            0x00000048
#define SMPP_ESME_RINVSRCNPI                            0x00000049
/* Gap in specification:                       0x0000004A-0000004F */
#define SMPP_ESME_RINVDSTTON                            0x00000050
#define SMPP_ESME_RINVDSTNPI                            0x00000051
/* Reserved:                                            0x00000052 */
#define SMPP_ESME_RINVSYSTYP                            0x00000053
#define SMPP_ESME_RINVREPFLAG                           0x00000054
#define SMPP_ESME_RINVNUMMSGS                           0x00000055
/* Reserved:                                   0x00000056-00000057 */
#define SMPP_ESME_RTHROTTLED                            0x00000058
/* Reserved:                                   0x00000059-0x000060 */
#define SMPP_ESME_RINVSCHED                             0x00000061
#define SMPP_ESME_RINVEXPIRY                            0x00000062
#define SMPP_ESME_RINVDFTMSGID                          0x00000063
#define SMPP_ESME_RX_T_APPN                             0x00000064
#define SMPP_ESME_RX_P_APPN                             0x00000065
#define SMPP_ESME_RX_R_APPN                             0x00000066
#define SMPP_ESME_RQUERYFAIL                            0x00000067
/* Reserved:                                   0x00000068-000000BF */
#define SMPP_ESME_RINVOPTPARSTREAM                      0x000000C0
#define SMPP_ESME_ROPTPARNOTALLWD                       0x000000C1
#define SMPP_ESME_RINVPARLEN                            0x000000C2
#define SMPP_ESME_RMISSINGOPTPARAM                      0x000000C3
#define SMPP_ESME_RINVOPTPARAMVAL                       0x000000C4
/* Reserved:                                   0x000000C5-000000FD */
#define SMPP_ESME_RDELIVERYFAILURE                      0x000000FE
#define SMPP_ESME_RUNKNOWNERR                           0x000000FF
/* Reserved for SMPP extension:                0x00000100-000003FF */
/* Reserved for SMSC vendor specific error:    0x00000400-000004FF */
/* Reserved:                                   0x00000500-FFFFFFFF */

#endif
