亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? gsm_sms_codec.h

?? Gsm手機(短信息,電話簿)開發庫C++源代碼
?? H
字號:
// *************************************************************************
// * GSM TA/ME library
// *
// * File:    gsm_sms_codec.h
// *
// * Purpose: Coder and Encoder for SMS TPDUs
// *
// * Author:  Peter Hofmann (software@pxh.de)
// *
// * Created: 16.5.1999
// *************************************************************************

#ifndef GSM_SMS_CODEC_H
#define GSM_SMS_CODEC_H

#include <string>
#include <assert.h>

using namespace std;

namespace gsmlib
{
  // this struct represents a telephone number
  // usually _type == Unknown or International
  // and _number == ISDN_Telephone
  struct Address
  {
    enum Type {Unknown = 0, International = 1, National = 2,
               NetworkSpecific = 3, Subscriber = 4,
               Alphanumeric = 5, Abbreviated = 6, Reserved = 7};
    enum NumberingPlan {UnknownPlan = 0, ISDN_Telephone = 1,
                        Data = 3, Telex = 4, NationalPlan = 8,
                        PrivatePlan = 9, Ermes = 10, ReservedPlan = 15};
    Type _type;
    NumberingPlan _plan;
    string _number;    

    Address() : _type(Unknown), _plan(UnknownPlan) {}
    // the constructor sets _type and _plan to defaults
    // _plan == ISDN_Telephone
    // _type == International if number starts with "+"
    // _type == unknown otherwise
    // number must be of the form "+123456" or "123456"
    Address(string number);

    // return string representation
    string toString() const;

    friend bool operator<(const Address &x, const Address &y);
    friend bool operator==(const Address &x, const Address &y);
  };

  // compare two addresses
  extern bool operator<(const Address &x, const Address &y);
  extern bool operator==(const Address &x, const Address &y);

  // representation of a SMS timestamp
  struct Timestamp
  {
    short _year, _month, _day, _hour, _minute, _seconds, _timeZoneMinutes;
    bool _negativeTimeZone;

    Timestamp() : _year(0), _month(0), _day(0), _hour(0),
      _minute(0), _seconds(0), _timeZoneMinutes(0), _negativeTimeZone(false) {}

    // return true if the time stamp is empty (ie. contains only zeroes)
    bool empty() const;

    // return string representation
    string toString(bool appendTimeZone = true) const;

    friend bool operator<(const Timestamp &x, const Timestamp &y);
    friend bool operator==(const Timestamp &x, const Timestamp &y);
  };

  // compare two timestamps
  extern bool operator<(const Timestamp &x, const Timestamp &y);
  extern bool operator==(const Timestamp &x, const Timestamp &y);

  // representation of time period
  struct TimePeriod
  {
    // possible values for validity period format
    enum Format {NotPresent = 0, Relative = 2, Absolute = 3};
    Format _format;
    Timestamp _absoluteTime;
    unsigned char _relativeTime;

    TimePeriod() : _format(NotPresent), _relativeTime(0) {}

    // return string representation (already translated)
    string toString() const;
  };

  // representation of DataCodingScheme
  // the data coding scheme is described in detail in ETSI GSM 03.38, section 4
  const unsigned char DCS_COMPRESSED = 0x20; // bit 5
  
  const unsigned char DCS_DEFAULT_ALPHABET = 0 << 2; // bit 2..3 == 0
  const unsigned char DCS_EIGHT_BIT_ALPHABET = 1 << 2; // bit 2..3 == 01
  const unsigned char DCS_SIXTEEN_BIT_ALPHABET = 2 << 2; // bit 2..3 == 10
  const unsigned char DCS_RESERVED_ALPHABET = 3 << 2; // bit 2..3 == 11
  
  const unsigned char DCS_MESSAGE_WAITING_INDICATION = 0xc0; // bit 7..6 == 11
  const unsigned char DCS_VOICEMAIL_MESSAGE_WAITING = 0;
  const unsigned char DCS_FAX_MESSAGE_WAITING = 1;
  const unsigned char DCS_ELECTRONIC_MAIL_MESSAGE_WAITING = 2;
  const unsigned char DCS_OTHER_MESSAGE_WAITING = 3;

  class DataCodingScheme
  {
  private:
    unsigned char _dcs;

  public:
    // initialize with data coding scheme octet
    DataCodingScheme(unsigned char dcs) : _dcs(dcs) {}
    
    // set to default values (no message waiting, no message class indication,
    // default 7-bit alphabet)
    DataCodingScheme() : _dcs(DCS_DEFAULT_ALPHABET) {}

    // return type of alphabet used (if messageWaitingIndication == false)
    unsigned char getAlphabet() const {return _dcs & (3 << 2);}
    
    // return true if message compressed
    // (if messageWaitingIndication == false)
    bool compressed() const {return _dcs & DCS_COMPRESSED == DCS_COMPRESSED;}

    // return true if message waiting indication
    bool messageWaitingIndication() const
      {return _dcs & DCS_MESSAGE_WAITING_INDICATION == 
         DCS_MESSAGE_WAITING_INDICATION;}

    // return type of waiting message (if messageWaitingIndication == true)
    unsigned char getMessageWaitingType() const {return _dcs & 3;}

    // return string representation (already translated)
    string toString() const;

    operator unsigned char() const {return _dcs;}
  };

  // utility class facilitate SMS TPDU decoding
  class SMSDecoder
  {
  private:
    unsigned char *_p;          // buffer to hold pdu
    short _bi;                  // bit index (0..7)
    unsigned char *_op;         // current octet pointer
    unsigned char *_septetStart; // start of septet string

    unsigned char *_maxop;      // pointer to last byte after _p

  public:
    // initialize with a hexadecimal octet string containing SMS TPDU
    SMSDecoder(string pdu);

    // align to octet border
    void alignOctet();
    
    // remember starting point of septets (important for alignSeptet())
    void markSeptet() {alignOctet(); _septetStart = _op;}

    // align to septet border
    void alignSeptet();
    
    // get single bit
    bool getBit()
    {
      assert(_op < _maxop);
      bool result = ((*_op >> _bi) & 1);
      if (_bi == 7)
      {
        _bi = 0;
        ++_op;
      }
      else
        ++_bi;
      return result;
    }

    // get two bits
    unsigned char get2Bits();

    // get one octet
    unsigned char getOctet();

    // get string of octets of specified length
    void getOctets(unsigned char* octets, unsigned short length);

    // get length semi-octets (bcd-coded number) as ASCII string of numbers
    string getSemiOctets(unsigned short length);

    // get length semi-octets (bcd-coded number) as integer
    unsigned long getSemiOctetsInteger(unsigned short length);

    // get time zone (in minutes) and time zone sign
    unsigned long getTimeZone(bool &negativeTimeZone);

    // get integer with length number of bits
    unsigned long getInteger(unsigned short length);

    // get length number of alphanumeric 7-bit characters
    // markSeptet() must be called before this function
    string getString(unsigned short length);

    // get address/telephone number
    // service centre address has special format
    Address getAddress(bool scAddressFormat = false);

    // get Timestamp
    Timestamp getTimestamp();

    // get TimePeriod of given format
    TimePeriod getTimePeriod(TimePeriod::Format format);

    // destructor
    ~SMSDecoder();
  };

  // utility class for SMS TPDU encoding
  class SMSEncoder
  {
  private:
    unsigned char _p[2000];     // buffer to hold pdu (2000 should be enough)
    short _bi;                  // bit index (0..7)
    unsigned char *_op;         // current octet pointer
    unsigned char *_septetStart; // start of septet string

  public:
    // constructor
    SMSEncoder();

    // align to octet border
    void alignOctet();

    // remember starting point of septets (important for alignSeptet())
    void markSeptet() {alignOctet(); _septetStart = _op;}

    // align to septet border
    void alignSeptet();
    
    // set single bit
    void setBit(bool bit = false)
    {
      if (bit)
        *_op |= (1 << _bi);
      if (_bi == 7)
      {
        _bi = 0;
        ++_op;
      }
      else
        ++_bi;
    }

    // set two bits
    void set2Bits(unsigned char twoBits);

    // set one octet
    void setOctet(unsigned char octet);

    // set string of octets of specified length
    void setOctets(const unsigned char* octets, unsigned short length);

    // set semi-octets semiOctets (given as ASCII string of numbers)
    void setSemiOctets(string semiOctets);

    // set semi-octets (given as integer)
    void setSemiOctetsInteger(unsigned long intValue, unsigned short length);

    // set time zone (in minutes) and time zone sign
    void setTimeZone(bool negativeTimeZone, unsigned long timeZone);

    // set integer with length number of bits
    void setInteger(unsigned long intvalue, unsigned short length);

    // set alphanumeric 7-bit characters
    void setString(string stringValue);

    // set address/telephone number
    // service centre address has special format
    void setAddress(Address &address, bool scAddressFormat = false);

    // set Timestamp
    void setTimestamp(Timestamp timestamp);

    // set TimePeriod
    void setTimePeriod(TimePeriod period);

    // return constructed TPDU as hex-encoded string
    string getHexString();

    // return current length of TPDU 
    unsigned int getLength();
  };

  // class to handle user data header
  class UserDataHeader
  {
  private:
    string _udh;
    
  public:
    // empty user data header
    UserDataHeader() {}

    // initialize with user data header
    UserDataHeader (string udh) : _udh(udh) {}

    // encode header
    void encode(SMSEncoder &e);

    // decode header
    void decode(SMSDecoder &d);

    // return a given information element, if present, or an empty string
    string getIE(unsigned char id);
    
    // return the size of the header
    unsigned int length() const {return _udh.length();}

    // return user data header as octet string
    operator string() const {return _udh;}
  };
};

#endif // GSM_SMS_CODEC_H

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人app在线| 国产亚洲人成网站| 欧美大片在线观看一区二区| 久久精子c满五个校花| 国产精品嫩草99a| 亚洲综合av网| 精品亚洲成a人| 91在线观看污| 日韩一区二区免费高清| 国产欧美久久久精品影院| 亚洲综合色婷婷| 日韩精品欧美精品| 欧美写真视频网站| 日韩欧美国产综合| 亚洲手机成人高清视频| 美国av一区二区| av电影在线观看一区| 欧美一区二区三区在线观看| 中文字幕一区视频| 久久精品国产色蜜蜜麻豆| 96av麻豆蜜桃一区二区| 日韩欧美国产一区二区在线播放| 中文字幕在线一区免费| 日韩精品1区2区3区| 国产a视频精品免费观看| 欧美一区二区三区四区五区 | 欧美sm美女调教| 亚洲美女在线国产| 黄色日韩网站视频| 欧美日韩精品是欧美日韩精品| 欧美va亚洲va| 五月激情综合色| 成人18视频日本| 精品欧美黑人一区二区三区| ㊣最新国产の精品bt伙计久久| 亚洲电影激情视频网站| 97久久精品人人做人人爽50路| 亚洲成人在线网站| 天天综合色天天综合| 99在线精品免费| 欧美成人a在线| 日韩av成人高清| av网站一区二区三区| 久久丝袜美腿综合| 福利91精品一区二区三区| 欧美视频一区在线| 中文一区在线播放| 韩国精品在线观看| 欧美巨大另类极品videosbest| 精品国产一二三区| 午夜电影网一区| 99精品国产视频| 欧美国产精品一区| 老鸭窝一区二区久久精品| 91精品国产综合久久福利| 亚洲人成影院在线观看| 成人黄色a**站在线观看| 精品国一区二区三区| 久久99久久99精品免视看婷婷 | 亚洲人成人一区二区在线观看| 另类小说综合欧美亚洲| 日韩一区二区三区四区五区六区 | 日韩小视频在线观看专区| 色婷婷激情综合| 欧美一区二区三区的| 日韩国产一区二| 在线观看日韩毛片| 亚洲国产视频网站| 日本高清成人免费播放| 亚洲欧美一区二区三区久本道91| 成人一级视频在线观看| 国产精品美女一区二区| 国产精品资源在线看| 精品国产露脸精彩对白| 麻豆一区二区三| 精品视频一区二区不卡| 亚洲18色成人| 在线不卡欧美精品一区二区三区| 日韩在线播放一区二区| 欧美日韩精品系列| 免费一级欧美片在线观看| 欧美精品久久99久久在免费线 | 色综合久久综合中文综合网| 欧美激情艳妇裸体舞| hitomi一区二区三区精品| 久久久久国产成人精品亚洲午夜| 高潮精品一区videoshd| 国产精品视频一二三| caoporn国产精品| 欧美大片一区二区| 国产偷国产偷精品高清尤物| 日韩精品一区第一页| 欧美伦理影视网| 亚洲精品免费看| 欧美色国产精品| 亚洲成a人片在线观看中文| 制服丝袜中文字幕亚洲| 日本成人超碰在线观看| 久久久精品一品道一区| 成人黄色综合网站| 一区二区三区在线免费| 欧美日韩久久一区二区| 老司机精品视频线观看86| 精品国产一区二区精华| 成人激情免费视频| 一区二区三区小说| 成人91在线观看| 天天做天天摸天天爽国产一区| 欧美丝袜丝nylons| 国产呦精品一区二区三区网站| 国产亚洲成年网址在线观看| 91视视频在线直接观看在线看网页在线看 | 国产日韩欧美麻豆| 91在线视频官网| 日韩国产精品久久久| 久久伊人中文字幕| 91麻豆国产福利精品| 日韩av电影天堂| 久久精品欧美日韩| 精品久久久久99| 久久66热re国产| 亚洲欧美影音先锋| 欧美日韩国产片| 国产91高潮流白浆在线麻豆| 亚洲欧洲精品一区二区精品久久久 | 精品一区二区三区免费视频| 国产精品夫妻自拍| 日韩视频一区二区| 成人黄色国产精品网站大全在线免费观看 | 中文字幕一区在线观看| 欧美一级生活片| a美女胸又www黄视频久久| 蜜臂av日日欢夜夜爽一区| 国产精品你懂的| 欧美成人vr18sexvr| 91香蕉视频黄| 国产麻豆成人传媒免费观看| 亚洲日本成人在线观看| 精品美女一区二区三区| 色伊人久久综合中文字幕| 久久久蜜桃精品| 91网站在线播放| 久草这里只有精品视频| 亚洲午夜视频在线观看| 337p日本欧洲亚洲大胆精品| 欧美剧情片在线观看| 成人少妇影院yyyy| 久久99国产精品免费| 亚洲精品第1页| 国产精品乱码人人做人人爱 | 久久久亚洲精品石原莉奈| 欧美精品aⅴ在线视频| 成人免费视频一区| 国产精品自拍一区| 日韩电影免费在线看| 一区二区三区四区在线免费观看 | 2021国产精品久久精品| 91精品午夜视频| 欧美中文字幕一二三区视频| 99国产精品一区| 国产精品一区二区黑丝| 91麻豆6部合集magnet| 国产精品久久久久久久久晋中 | 成人性生交大片免费看视频在线 | 97精品久久久午夜一区二区三区| 蜜臀av一级做a爰片久久| 亚洲国产视频在线| 日韩毛片一二三区| 日韩精品综合一本久道在线视频| 欧美日韩国产一级片| 色欧美乱欧美15图片| 色就色 综合激情| av中文字幕亚洲| 99re热视频这里只精品| 国产aⅴ综合色| 成人国产亚洲欧美成人综合网| 韩国一区二区三区| 精彩视频一区二区三区| 蜜臀av性久久久久蜜臀av麻豆| 男人操女人的视频在线观看欧美| 亚洲sss视频在线视频| 丝袜亚洲另类欧美| 亚洲午夜视频在线| 日韩中文字幕1| 午夜精品影院在线观看| 日本色综合中文字幕| 午夜久久久久久久久| 717成人午夜免费福利电影| 欧美日韩一区精品| 欧美亚洲一区二区在线观看| 欧美最猛黑人xxxxx猛交| 91网站在线观看视频| 在线免费不卡视频| 欧美性受xxxx| 欧美一区二区在线看| 欧美一区二区三区在线看| 欧美精品一区二区高清在线观看| 精品美女被调教视频大全网站| 久久久蜜桃精品| 亚洲国产精品成人综合色在线婷婷 |