www.pudn.com > GPRS__moder.rar > wsmsdef.h
/***************************************************************************** * GSM SMS Routines * * Writen by Menghongwen@* * Dec., 2004 copyright YINHUA Technology, all right reserved \****************************************************************************/ #ifndef __WSMSDEF_H #define __WSMSDEF_H #include #include #include #define __GSMSMSNORECEIPT 888 #define __GSMSMSESNDERROR 900 #define GSMPHONETYPEINT 0x91 #define GSMPHONETYPENAT 0xA1 typedef enum { GSMSendAsText = 0, GSMSendAsPDU } TSMSSendMode; typedef enum { GSMMTMessage = 0, GSMMTReceipt, GSMMTError } TGSMMessageType; extern const char * __GSMRESPOK; extern const char * __GSMRESPERR; class TGSMCommand { TRS232Comm hComm; short usSend, rc; char szSend[1024],szRecv[__GSMCOMMINBUFFSIZE]; char szString[2048]; public: short usRecv; TGSMCommand(); bool opencomm(char *pPort); bool closecomm(); char *sendAsString(); char *recvAsString(); void atcommand(char *pname, bool bAssign = true); void cleardata(); void appendstr(char *); void append(BYTE *,BYTE); void append(BYTE ); void appendcr(); void appendcz(); void toAscii(); bool send(short msSecond=0); bool querychar(char ); bool querystring(const char *pv=__GSMRESPOK); short queryShortValue(char *pName); }; typedef union { struct { unsigned planid :4; unsigned numtype:3; unsigned msb :1; } bitmap; BYTE value; } TADDRESSTYPE; class TGSMAddress { BYTE uclen; BYTE ucoctets; TADDRESSTYPE type; public: BYTE value[16]; char ascii[16]; TGSMAddress(); TGSMAddress(char *psmsc); void setvalue(char *psmsc); short loadstring(char *pstream, bool bdao=false); BYTE valuelen() { return uclen; } BYTE packagelen() { return uclen+1;} BYTE semioctets() { return ucoctets;} BYTE typeOf() { return type.value; } void settype(BYTE uc) { type.value = uc; } TGSMAddress & operator= (TGSMAddress&); }; typedef union { struct { unsigned tpmti :2; unsigned tprd :1; unsigned tpvpf :2; unsigned tpspr :1; unsigned tpudhi:1; unsigned tprp :1; } bitmap; BYTE value; } TFOCTET; typedef union { struct { unsigned b40 :5; unsigned b5 :1; unsigned b76 :2; } bitmap; BYTE value; } TTPPID; typedef union { struct { unsigned calss : 2; unsigned alphabet: 2; unsigned hascalss: 1; unsigned compress: 1; unsigned gdatacode:2; } bitmap; BYTE value; } TTPDCS; typedef struct { BYTE years; BYTE month; BYTE day; BYTE hour; BYTE minute; BYTE second; BYTE timezone; } TTPSCTS; class TSMSPDUS { public: TSMSPDUS(); TGSMAddress *sca; TFOCTET foctet; BYTE tpmr; TGSMAddress *tpda; TTPPID tppid; TTPDCS tpdcs; BYTE tpvp; BYTE tpudl; BYTE tpud[180]; BYTE length(); }; class TSMSPDUR { public: TGSMAddress sca; TFOCTET foctet; TGSMAddress tpoa; TTPPID tppid; TTPDCS tpdcs; TTPSCTS tpscts; BYTE tpudl; BYTE tpud[180]; BYTE length(); }; typedef TSMSPDUS * PTSMSPDUS; class TGSMMessage { public: TGSMMessageType msgtype; AnsiString traceno; TGSMAddress address; AnsiString asMessage; TGSMMessage(){ msgtype =GSMMTMessage; } }; typedef TGSMMessage * PTGSMMessage; typedef struct { char szPort[8]; // buand speed etc // parameter HANDLE hevStopGSMService; HANDLE hevThreadStoped; AnsiString asSmscString; short msWaitingTime; DWORD msPollingTime; TQueue * hQueueIn, *hQueueOut; } TSMSConfig; void trimspace(char *string ); char * bcd2asc(char *hexstr, char *ascstr,short length ); char * bcd2ascb(char *hexstr, char *ascstr,short length ); char * asc2bcd(char *ascstr, char *bcdstr,short bcdlen); char * asc2bcdInv(char *ascstr, char *bcdstr,short bcdlen); short ascii2AddressString(char *asc, char *); BYTE encode2UCS2(AnsiString astr, BYTE *); BYTE decodeUcs2(BYTE * pSrc, BYTE * pDst, BYTE nSrcLength); BYTE decode7bit(BYTE * pSrc, char* pDst, BYTE nSrcLength); BYTE decode8bit(BYTE * pSrc, char* pDst, BYTE nSrcLength); #endif