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

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

?? gsm_sms.cc

?? 對各種手機進行編程的工具包源碼gsmlib 1.9版本。
?? CC
?? 第 1 頁 / 共 2 頁
字號:
// *************************************************************************// * GSM TA/ME library// *// * File:    gsm_sms.cc// *// * Purpose: SMS functions// *          (ETSI GSM 07.05)// *// * Author:  Peter Hofmann (software@pxh.de)// *// * Created: 16.5.1999// *************************************************************************#ifdef HAVE_CONFIG_H#include <gsm_config.h>#endif#include <gsmlib/gsm_nls.h>#include <gsmlib/gsm_sysdep.h>#include <gsmlib/gsm_sms.h>#include <gsmlib/gsm_util.h>#include <gsmlib/gsm_parser.h>#include <gsmlib/gsm_me_ta.h>#include <strstream>#include <string>using namespace std;using namespace gsmlib;// local constantsstatic const string dashes ="---------------------------------------------------------------------------";// SMSMessage membersRef<SMSMessage> SMSMessage::decode(string pdu,                                   bool SCtoMEdirection,                                   GsmAt *at) throw(GsmException){  Ref<SMSMessage> result;  SMSDecoder d(pdu);  d.getAddress(true);  MessageType messageTypeIndicator = (MessageType)d.get2Bits(); // bits 0..1  if (SCtoMEdirection)    // TPDUs from SC to ME    switch (messageTypeIndicator)    {    case SMS_DELIVER:      result = new SMSDeliverMessage(pdu);      break;    case SMS_STATUS_REPORT:      result = new SMSStatusReportMessage(pdu);      break;    case SMS_SUBMIT_REPORT:      // observed with Motorola Timeport 260, the SCtoMEdirection can      // be wrong in this case      if (at != NULL && at->getMeTa().getCapabilities()._wrongSMSStatusCode)        result = new SMSSubmitMessage(pdu);      else        result = new SMSSubmitReportMessage(pdu);      break;    default:      throw GsmException(_("unhandled SMS TPDU type"), OtherError);    }  else    // TPDUs from ME to SC    switch (messageTypeIndicator)    {    case SMS_SUBMIT:      result = new SMSSubmitMessage(pdu);      break;    case SMS_DELIVER_REPORT:      result = new SMSDeliverReportMessage(pdu);      break;    case SMS_COMMAND:      result = new SMSCommandMessage(pdu);      break;    default:      throw GsmException(_("unhandled SMS TPDU type"), OtherError);    }  result->_at = at;  return result;}Ref<SMSMessage> SMSMessage::decode(istream& s) throw(gsmlib::GsmException){  string pdu;  unsigned char ScToMe; 	  s >> ScToMe;  s >> pdu;  return decode(pdu,ScToMe=='S');}unsigned char SMSMessage::send(Ref<SMSMessage> &ackPdu)  throw(GsmException){  if (_messageTypeIndicator != SMS_SUBMIT &&      _messageTypeIndicator != SMS_COMMAND)    throw GsmException(_("can only send SMS-SUBMIT and SMS-COMMAND TPDUs"),                       ParameterError);  if (_at.isnull())    throw GsmException(_("no device given for sending SMS"), ParameterError);  string pdu = encode();  Parser p(_at->sendPdu("+CMGS=" +                        intToStr(pdu.length() / 2 - getSCAddressLen()),                        "+CMGS:", pdu));  unsigned char messageReference = p.parseInt();  if (p.parseComma(true))  {    string pdu = p.parseEol();    // add missing service centre address if required by ME    if (! _at->getMeTa().getCapabilities()._hasSMSSCAprefix)      pdu = "00" + pdu;    ackPdu = SMSMessage::decode(pdu);  }  else    ackPdu = SMSMessageRef();  return messageReference;}unsigned char SMSMessage::send() throw(GsmException){  SMSMessageRef mref;  return send(mref);}unsigned int SMSMessage::getSCAddressLen(){  SMSEncoder e;  e.setAddress(_serviceCentreAddress, true);  return e.getLength();}unsigned char SMSMessage::userDataLength() const{  unsigned int udhl = _userDataHeader.length();  if (_dataCodingScheme.getAlphabet() == DCS_DEFAULT_ALPHABET)    return _userData.length() + (udhl ? ((1 + udhl) * 8 + 6) / 7 : 0);  else    return _userData.length() + (udhl ? (1 + udhl) : 0);}ostream& SMSMessage::operator<<(ostream& s){  unsigned char ScToMe;	  if (dynamic_cast<SMSDeliverMessage*>(this) ||       dynamic_cast<SMSStatusReportMessage*>(this) ||       dynamic_cast<SMSSubmitReportMessage*>(this))  {    ScToMe = 'S';  }  else if (dynamic_cast<SMSSubmitMessage*>(this) ||            dynamic_cast<SMSCommandMessage*>(this) ||            dynamic_cast<SMSDeliverReportMessage*>(this))  {    ScToMe = 'M';  }  else  {    throw GsmException(_("unhandled SMS TPDU type"), OtherError);  }  s << ScToMe;  return s << encode();}// SMSMessage::SMSMessage(SMSMessage &m)// {//   _at = m._at;  // }// SMSMessage &SMSMessage::operator=(SMSMessage &m)// {// }SMSMessage::~SMSMessage() {}// SMSDeliverMessage membersvoid SMSDeliverMessage::init(){  _messageTypeIndicator = SMS_DELIVER;  _moreMessagesToSend = false;  _replyPath = false;  _statusReportIndication = false;  _protocolIdentifier = 0;}SMSDeliverMessage::SMSDeliverMessage(){  init();}SMSDeliverMessage::SMSDeliverMessage(string pdu) throw(GsmException){  SMSDecoder d(pdu);  _serviceCentreAddress = d.getAddress(true);  _messageTypeIndicator = (MessageType)d.get2Bits(); // bits 0..1  assert(_messageTypeIndicator == SMS_DELIVER);  _moreMessagesToSend = d.getBit(); // bit 2  d.getBit();                   // bit 3  d.getBit();                   // bit 4  _statusReportIndication = d.getBit(); // bit 5  bool userDataHeaderIndicator = d.getBit(); // bit 6  _replyPath = d.getBit();      // bit 7  _originatingAddress = d.getAddress();  _protocolIdentifier = d.getOctet();  _dataCodingScheme = d.getOctet();  _serviceCentreTimestamp = d.getTimestamp();  unsigned char userDataLength = d.getOctet();  d.markSeptet();  if (userDataHeaderIndicator)  {    _userDataHeader.decode(d);    if (_dataCodingScheme.getAlphabet() == DCS_DEFAULT_ALPHABET)      userDataLength -= ((_userDataHeader.length() + 1) * 8 + 6) / 7;    else      userDataLength -= ((string)_userDataHeader).length() + 1;  }  else    _userDataHeader = UserDataHeader();  if (_dataCodingScheme.getAlphabet() == DCS_DEFAULT_ALPHABET)  {                             // userDataLength is length in septets    _userData = d.getString(userDataLength);    _userData = gsmToLatin1(_userData);  }  else  {                             // userDataLength is length in octets    unsigned char *s =       (unsigned char*)alloca(sizeof(unsigned char) * userDataLength);    d.getOctets(s, userDataLength);    _userData.assign((char*)s, (unsigned int)userDataLength);  }}string SMSDeliverMessage::encode(){  SMSEncoder e;  e.setAddress(_serviceCentreAddress, true);  e.set2Bits(_messageTypeIndicator); // bits 0..1  e.setBit(_moreMessagesToSend); // bit 2  e.setBit();                   // bit 3  e.setBit();                   // bit 4  e.setBit(_statusReportIndication); // bit 5  e.setBit(_userDataHeader.length() != 0); // bit 6  e.setBit(_replyPath);         // bit 7  e.setAddress(_originatingAddress);  e.setOctet(_protocolIdentifier);  e.setOctet(_dataCodingScheme);  e.setTimestamp(_serviceCentreTimestamp);  e.setOctet(userDataLength());  e.markSeptet();  if (_userDataHeader.length()) _userDataHeader.encode(e);  if (_dataCodingScheme.getAlphabet() == DCS_DEFAULT_ALPHABET)    e.setString(latin1ToGsm(_userData));  else    e.setOctets((unsigned char*)_userData.data(), _userData.length());  return e.getHexString();}string SMSDeliverMessage::toString() const{  ostrstream os;  os << dashes << endl     << _("Message type: SMS-DELIVER") << endl     << _("SC address: '") << _serviceCentreAddress._number << "'" << endl     << _("More messages to send: ") << _moreMessagesToSend << endl     << _("Reply path: ") << _replyPath << endl     << _("User data header indicator: ")     << (_userDataHeader.length()!=0) << endl     << _("Status report indication: ") << _statusReportIndication << endl     << _("Originating address: '") << _originatingAddress._number      << "'" << endl     << _("Protocol identifier: 0x") << hex     << (unsigned int)_protocolIdentifier << dec << endl     << _("Data coding scheme: ") << _dataCodingScheme.toString() << endl     << _("SC timestamp: ") << _serviceCentreTimestamp.toString() << endl     << _("User data length: ") << (int)userDataLength() << endl     << _("User data header: 0x")     << bufToHex((unsigned char*)                 ((string)_userDataHeader).data(),                 ((string)_userDataHeader).length())     << endl     << _("User data: '") << _userData << "'" << endl     << dashes << endl << endl     << ends;  char *ss = os.str();  string result(ss);  delete[] ss;  return result;}Address SMSDeliverMessage::address() const{  return _originatingAddress;}Ref<SMSMessage> SMSDeliverMessage::clone(){  Ref<SMSMessage> result = new SMSDeliverMessage(*this);  return result;}// SMSSubmitMessage membersvoid SMSSubmitMessage::init(){  // set everything to sensible default values  _messageTypeIndicator = SMS_SUBMIT;  _validityPeriodFormat = TimePeriod::Relative;   _validityPeriod._format = TimePeriod::Relative;  _validityPeriod._relativeTime = 168; // 2 days  _statusReportRequest = false;  _replyPath = false;  _rejectDuplicates = true;  _messageReference = 0;  _protocolIdentifier = 0;}SMSSubmitMessage::SMSSubmitMessage(){  init();}SMSSubmitMessage::SMSSubmitMessage(string pdu) throw(GsmException){   SMSDecoder d(pdu);  _serviceCentreAddress = d.getAddress(true);  _messageTypeIndicator = (MessageType)d.get2Bits(); // bits 0..1  assert(_messageTypeIndicator == SMS_SUBMIT);  _rejectDuplicates = d.getBit(); // bit 2  _validityPeriodFormat = (TimePeriod::Format)d.get2Bits(); // bits 3..4  _statusReportRequest = d.getBit(); // bit 5  bool userDataHeaderIndicator = d.getBit(); // bit 6  _replyPath = d.getBit();      // bit 7  _messageReference = d.getOctet();  _destinationAddress = d.getAddress();  _protocolIdentifier = d.getOctet();  _dataCodingScheme = d.getOctet();  if (_validityPeriodFormat != TimePeriod::NotPresent)    _validityPeriod = d.getTimePeriod(_validityPeriodFormat);  unsigned char userDataLength = d.getOctet();  d.markSeptet();  if (userDataHeaderIndicator)  {    _userDataHeader.decode(d);    if (_dataCodingScheme.getAlphabet() == DCS_DEFAULT_ALPHABET)      userDataLength -= ((_userDataHeader.length() + 1) * 8 + 6) / 7;    else      userDataLength -= ((string)_userDataHeader).length() + 1;  }  else    _userDataHeader = UserDataHeader();  if (_dataCodingScheme.getAlphabet() == DCS_DEFAULT_ALPHABET)  {                             // userDataLength is length in septets    _userData = d.getString(userDataLength);    _userData = gsmToLatin1(_userData);  }  else  {                             // _userDataLength is length in octets    unsigned char *s =      (unsigned char*)alloca(sizeof(unsigned char) * userDataLength);    d.getOctets(s, userDataLength);    _userData.assign((char*)s, userDataLength);  }}SMSSubmitMessage::SMSSubmitMessage(string text, string number){  init();  _destinationAddress = Address(number);  _userData = text;}string SMSSubmitMessage::encode(){  SMSEncoder e;  e.setAddress(_serviceCentreAddress, true);  e.set2Bits(_messageTypeIndicator); // bits 0..1  e.setBit(_rejectDuplicates); // bit 2  e.set2Bits(_validityPeriodFormat); // bits 3..4  e.setBit(_statusReportRequest); // bit 5  bool userDataHeaderIndicator = _userDataHeader.length() != 0;  e.setBit(userDataHeaderIndicator); // bit 6  e.setBit(_replyPath);       // bit 7  e.setOctet(_messageReference);  e.setAddress(_destinationAddress);  e.setOctet(_protocolIdentifier);  e.setOctet(_dataCodingScheme);  e.setTimePeriod(_validityPeriod);  e.setOctet(userDataLength());  e.markSeptet();  if (userDataHeaderIndicator) _userDataHeader.encode(e);  if (_dataCodingScheme.getAlphabet() == DCS_DEFAULT_ALPHABET)    e.setString(latin1ToGsm(_userData));  else    e.setOctets((unsigned char*)_userData.data(), _userData.length());  return e.getHexString();}string SMSSubmitMessage::toString() const{  ostrstream os;  os << dashes << endl     << _("Message type: SMS-SUBMIT") << endl     << _("SC address: '") << _serviceCentreAddress._number << "'" << endl     << _("Reject duplicates: ") << _rejectDuplicates << endl     << _("Validity period format: ");  switch (_validityPeriodFormat)  {  case TimePeriod::NotPresent:    os << _("not present");

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产亚洲污的网站| 一本久道久久综合中文字幕| 一区二区三区在线播放| 亚洲国产成人午夜在线一区| 久久伊人蜜桃av一区二区| 91黄色激情网站| 91黄色激情网站| 欧洲一区在线电影| 在线看不卡av| 欧美色图在线观看| 欧美制服丝袜第一页| 欧美制服丝袜第一页| 欧美日韩一区二区电影| 欧美午夜不卡视频| 91精品一区二区三区在线观看| 在线观看欧美日本| 9191久久久久久久久久久| 91麻豆精品国产自产在线观看一区| 欧美精品三级日韩久久| 欧美精品三级日韩久久| 精品成人佐山爱一区二区| 久久精品一区四区| 日韩一区日韩二区| 亚洲va欧美va国产va天堂影院| 香蕉av福利精品导航| 久久成人免费日本黄色| 成人动漫一区二区三区| 日本二三区不卡| 日韩一区二区中文字幕| 久久众筹精品私拍模特| 亚洲日本一区二区| 日韩综合小视频| 国产高清不卡一区二区| 99视频精品全部免费在线| 欧美日韩精品一区二区天天拍小说| 91精品国产综合久久精品图片| 久久久精品国产免大香伊| 亚洲久本草在线中文字幕| 日本中文一区二区三区| 成人精品免费网站| 欧美日本国产视频| 久久青草国产手机看片福利盒子 | 午夜精品成人在线视频| 蜜桃视频第一区免费观看| av在线播放成人| 欧美不卡123| 一区二区三区精品视频| 极品少妇xxxx精品少妇| 欧美专区日韩专区| 国产欧美日韩不卡| 奇米四色…亚洲| 99精品视频一区| wwwwxxxxx欧美| 午夜精品久久久久久| 成人免费av网站| 精品噜噜噜噜久久久久久久久试看| 亚洲乱码一区二区三区在线观看| 久久激五月天综合精品| 欧美自拍偷拍一区| 国产精品高潮久久久久无| 久久精品国产一区二区三| 欧美在线观看禁18| 国产精品免费人成网站| 国精产品一区一区三区mba视频| 在线视频中文字幕一区二区| 欧美激情综合五月色丁香| 免费观看成人鲁鲁鲁鲁鲁视频| 欧美性猛交一区二区三区精品| 国产人成亚洲第一网站在线播放| 精品一区二区三区日韩| 欧美一区二区播放| 日韩国产欧美在线观看| 欧美日韩www| 亚洲va欧美va国产va天堂影院| 日本韩国精品一区二区在线观看| 亚洲欧美怡红院| 一本到三区不卡视频| 中文字幕亚洲一区二区av在线| 国产精品一区二区在线观看网站| 日韩欧美一二三四区| 日韩精品一级二级 | 精品国产免费一区二区三区香蕉| 亚洲成人免费视频| 欧美日韩国产高清一区二区| 亚洲第一成人在线| 欧美狂野另类xxxxoooo| 日韩精品午夜视频| 日韩精品一区二区三区视频播放| 日本中文字幕一区| 精品sm在线观看| 岛国精品在线观看| 中文字幕日韩欧美一区二区三区| 99re热视频这里只精品| 亚洲另类一区二区| 在线播放中文一区| 免费xxxx性欧美18vr| 久久久久久久久久美女| 91在线无精精品入口| 亚洲一区二区三区四区在线| 56国语精品自产拍在线观看| 男人操女人的视频在线观看欧美| 精品国产免费视频| 91在线国产福利| 日本在线不卡视频| 国产偷国产偷精品高清尤物 | 欧美一二三区精品| 国产乱色国产精品免费视频| 国产精品久久久久四虎| 欧美这里有精品| 狠狠色丁香久久婷婷综合_中| 日本一区二区三区在线观看| 欧美中文字幕亚洲一区二区va在线| 日产国产欧美视频一区精品| 国产日韩精品久久久| 欧美性xxxxxx少妇| 国产福利不卡视频| 三级久久三级久久久| 久久久www免费人成精品| 色婷婷综合久久| 蜜桃av一区二区三区| 亚洲精品综合在线| 久久色视频免费观看| 欧洲日韩一区二区三区| 国产美女视频91| 视频一区视频二区中文| 中文字幕日韩精品一区| 2014亚洲片线观看视频免费| 欧美性色欧美a在线播放| 国产91精品入口| 麻豆一区二区在线| 亚洲国产欧美在线| 中文字幕欧美一| 久久久久99精品国产片| 6080午夜不卡| 欧美日韩一卡二卡| 99re亚洲国产精品| k8久久久一区二区三区| 国内精品伊人久久久久av影院 | 亚洲国产精品天堂| 中文字幕一区二区5566日韩| 久久这里只有精品首页| 91精品国产综合久久精品性色| 色婷婷久久99综合精品jk白丝| 国产综合色产在线精品| 久久精品理论片| 青青草国产成人99久久| 日日噜噜夜夜狠狠视频欧美人| 亚洲精品国产精品乱码不99| 国产精品毛片久久久久久久| 久久久精品蜜桃| 国产视频亚洲色图| 2021久久国产精品不只是精品| 日韩欧美激情一区| 日韩久久久精品| 日韩欧美国产三级| 欧美本精品男人aⅴ天堂| 欧美一卡二卡三卡| 日韩色视频在线观看| 欧美成人三级在线| 久久综合成人精品亚洲另类欧美 | 91蜜桃网址入口| av一区二区久久| 99久久婷婷国产精品综合| av爱爱亚洲一区| 色哟哟日韩精品| 欧美日韩高清一区二区| 欧美久久久一区| www国产精品av| 国产精品麻豆久久久| 亚洲色图清纯唯美| 亚洲国产日韩精品| 蜜臀av一区二区在线免费观看| 日av在线不卡| 国产麻豆9l精品三级站| 福利一区二区在线| 91片在线免费观看| 欧美日韩1234| 日韩免费高清视频| 国产精品久久久久影院色老大| 日韩毛片一二三区| 日韩在线观看一区二区| 国产精品亚洲专一区二区三区| av午夜一区麻豆| 欧美日韩精品一区二区三区| 欧美精品一区男女天堂| 亚洲日本在线天堂| 久久综合综合久久综合| 99精品国产99久久久久久白柏| 欧美亚洲日本国产| 精品久久久网站| 亚洲美女免费视频| 久久精品国产精品青草| 成人免费视频网站在线观看| 欧美色综合影院| 亚洲国产成人午夜在线一区 | 国产精品国模大尺度视频| 亚洲精品乱码久久久久久久久| 男女男精品网站| 日本韩国一区二区三区| 精品国产麻豆免费人成网站|