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