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

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

?? gsm_me_ta.cc

?? 對各種手機進行編程的工具包源碼gsmlib 1.9版本。
?? CC
?? 第 1 頁 / 共 2 頁
字號:
// *************************************************************************// * GSM TA/ME library// *// * File:    gsm_me_ta.cc// *// * Purpose: Mobile Equipment/Terminal Adapter functions// *          (ETSI GSM 07.07)// *// * Author:  Peter Hofmann (software@pxh.de)// *// * Created: 10.5.1999// *************************************************************************#ifdef HAVE_CONFIG_H#include <gsm_config.h>#endif#include <gsmlib/gsm_nls.h>#include <gsmlib/gsm_me_ta.h>#include <gsmlib/gsm_parser.h>#include <gsmlib/gsm_sysdep.h>using namespace std;using namespace gsmlib;// Capabilities membersCapabilities::Capabilities() :  _hasSMSSCAprefix(true),  _cpmsParamCount(-1),          // initialize to -1, must be set later by                                // setSMSStore() function  _omitsColon(true),            // FIXME  _veryShortCOPSanswer(false),  // Falcom A2-1  _wrongSMSStatusCode(false),   // Motorola Timeport 260  _CDSmeansCDSI(false),         // Nokia Cellular Card Phone RPE-1 GSM900 and                                // Nokia Card Phone RPM-1 GSM900/1800  _sendAck(false)               // send ack for directly routed SMS{}// MeTa membersvoid MeTa::init() throw(GsmException){  // switch on extended error codes  // caution: may be ignored by some TAs, so allow it to fail  _at->chat("+CMEE=1", "", true, true);    // select SMS pdu mode  _at->chat("+CMGF=0");  // now fill in capability object  MEInfo info = getMEInfo();    // Ericsson model 6050102  if ((info._manufacturer == "ERICSSON" &&      (info._model == "1100801" ||       info._model == "1140801")) ||      getenv("GSMLIB_SH888_FIX") != NULL)  {    // the Ericsson leaves out the service centre address    _capabilities._hasSMSSCAprefix = false;  }  // handle Falcom strangeness  if ((info._manufacturer == "Funkanlagen Leipoldt OHG" &&      info._revision == "01.95.F2") ||      getenv("GSMLIB_FALCOM_A2_1_FIX") != NULL)  {    _capabilities._veryShortCOPSanswer = true;  }  // handle Motorola SMS store bug - wrong status code  if ((info._manufacturer == "Motorola" &&       info._model == "L Series"))  {    _capabilities._wrongSMSStatusCode = true;  }    // handle Nokia Cellular Card Phone RPE-1 GSM900 and  // Nokia Card Phone RPM-1 GSM900/1800 bug - CDS means CDSI  if ((info._manufacturer == "Nokia Mobile Phones" &&       (info._model == "Nokia Cellular Card Phone RPE-1 GSM900" ||        info._model == "Nokia Card Phone RPM-1 GSM900/1800")))  {    _capabilities._CDSmeansCDSI = true;  }   // find out whether we are supposed to send an acknowledgment  Parser p(_at->chat("+CSMS?", "+CSMS:"));  _capabilities._sendAck = p.parseInt() >= 1;        // set GSM default character set  try  {    setCharSet("GSM");  }  catch (GsmException)  {    // ignore errors, some devices don't support this  }  // set default event handler  // necessary to handle at least RING indications that might  // otherwise confuse gsmlib  _at->setEventHandler(&_defaultEventHandler);}MeTa::MeTa(Ref<Port> port) throw(GsmException) : _port(port){  // initialize AT handling  _at = new GsmAt(*this);  init();}// MeTa::MeTa(Ref<GsmAt> at) throw(GsmException) ://   _at(at)// {//   init();// }void MeTa::setPIN(string pin) throw(GsmException){  _at->chat("+CPIN=\"" + pin + "\"");}string MeTa::getPINStatus() throw(GsmException){  Parser p(_at->chat("+CPIN?", "+CPIN:"));  return p.parseString();}void MeTa::setPhonebook(string phonebookName) throw(GsmException){  if (phonebookName != _lastPhonebookName)  {    _at->chat("+CPBS=\"" + phonebookName + "\"");    _lastPhonebookName = phonebookName;  }}string MeTa::setSMSStore(string smsStore, int storeTypes, bool needResultCode)  throw(GsmException){  if (_capabilities._cpmsParamCount == -1)  {    // count the number of parameters for the CPMS AT sequences    _capabilities._cpmsParamCount = 1;    Parser p(_at->chat("+CPMS=?", "+CPMS:"));    p.parseStringList();    while (p.parseComma(true))    {      ++_capabilities._cpmsParamCount;      p.parseStringList();    }  }  // optimatization: only set current SMS store if different from last call  // or the result code is needed  if (needResultCode || _lastSMSStoreName != smsStore)  {    _lastSMSStoreName = smsStore;    // build chat string    string chatString = "+CPMS=\"" + smsStore + "\"";    for (int i = 1; i < min(_capabilities._cpmsParamCount, storeTypes); ++i)      chatString += ",\"" + smsStore + "\"";    return _at->chat(chatString, "+CPMS:");  }  return "";}void MeTa::getSMSStore(string &readDeleteStore,                       string &writeSendStore,                       string &receiveStore) throw(GsmException){  Parser p(_at->chat("+CPMS?", "+CPMS:"));  writeSendStore = receiveStore = "";  readDeleteStore = p.parseString();  p.parseComma();  p.parseInt();  p.parseComma();  p.parseInt();  if (p.parseComma(true))  {    writeSendStore = p.parseString();    p.parseComma();    p.parseInt();    p.parseComma();    p.parseInt();    if (p.parseComma(true))    {      receiveStore = p.parseString();    }  }}void MeTa::waitEvent(GsmTime timeout) throw(GsmException){  if (_at->wait(timeout))    _at->chat();                // send AT, wait for OK, handle events}// aux function for MeTa::getMEInfo()static string stringVectorToString(const vector<string>& v,                                   char separator = '\n'){  if (v.empty())    return "";  // concatenate string in vector as rows  string result;  for (vector<string>::const_iterator i = v.begin();;)  {    string s = *i;    // remove leading and trailing "s    if (s.length() > 0 && s[0] == '"')      s.erase(s.begin());    if (s.length() > 0 && s[s.length() - 1] == '"')      s.erase(s.end() - 1);    result += s;    // don't add end line to last    if ( ++i == v.end() || !separator)      break;    result += separator;  }  return result;}MEInfo MeTa::getMEInfo() throw(GsmException){  MEInfo result;  // some TAs just return OK and no info line  // leave the info empty in this case  // some TAs return multirows with info like address, firmware version  result._manufacturer =    stringVectorToString(_at->chatv("+CGMI", "+CGMI:", false));  result._model = stringVectorToString(_at->chatv("+CGMM", "+CGMM:", false));  result._revision =    stringVectorToString(_at->chatv("+CGMR", "+CGMR:", false));  result._serialNumber =    stringVectorToString(_at->chatv("+CGSN", "+CGSN:", false),0);  return result;}vector<string> MeTa::getSupportedCharSets() throw(GsmException){  Parser p(_at->chat("+CSCS=?", "+CSCS:"));  return p.parseStringList();}    string MeTa::getCurrentCharSet() throw(GsmException){  if (_lastCharSet == "")  {    Parser p(_at->chat("+CSCS?", "+CSCS:"));    _lastCharSet = p.parseString();  }  return _lastCharSet;}void MeTa::setCharSet(string charSetName) throw(GsmException){  _at->chat("+CSCS=\"" + charSetName + "\"");  _lastCharSet = "";}string MeTa::getExtendedErrorReport() throw(GsmException){  return _at->chat("+CEER", "+CEER:");}void MeTa::dial(string number) throw(GsmException){  _at->chat("D" + number + ";");}void MeTa::answer() throw(GsmException){  _at->chat("A");}void MeTa::hangup() throw(GsmException){  _at->chat("H");}vector<OPInfo> MeTa::getAvailableOPInfo() throw(GsmException){  vector<OPInfo> result;  vector<string> responses = _at->chatv("+COPS=?", "+COPS:");  // special treatment for Falcom A2-1, answer looks like  //   responses.push_back("(1,29341),(3,29340)");  if (_capabilities._veryShortCOPSanswer)  {    if (responses.size() == 1)    {      Parser p(responses[0]);      while (p.parseChar('(', true))      {        OPInfo opi;        opi._status = (OPStatus)p.parseInt();        p.parseComma();        opi._numericName = p.parseInt();        p.parseChar(')');        p.parseComma(true);        result.push_back(opi);      }    }  }  else    // some formats I have encountered...    //responses.push_back("2,,,31017,,(0,1),(2)");    //responses.push_back("(3,\"UK CELLNET\",\"CLNET\",\"23410\"),"     //                    "(3,\"ONE2 ONE\",\"ONE2ONE\",\"23430\"),"    //                    "(3,\"ORANGE\",\"ORANGE\",\"23433\")");    //responses.push_back("(2,\"D1-TELEKOM\",,26201),"    //                    "(3,\"D2  PRIVAT\",,26202),,(0,1,3,4),(0,2)");        // GSM modems might return    // 1. quadruplets of info enclosed in brackets separated by comma    // 2. several lines of quadruplets of info enclosed in brackets    // 3. several lines of quadruplets without brackets and additional    //    info at EOL (e.g. Nokia 8290)    for (vector<string>::iterator i = responses.begin();         i != responses.end(); ++i)    {      bool expectClosingBracket = false;      Parser p(*i);      while (1)      {        OPInfo opi;        expectClosingBracket = p.parseChar('(', true);        int status = p.parseInt(true);        opi._status = (status == NOT_SET ? UnknownOPStatus : (OPStatus)status);        p.parseComma();        opi._longName = p.parseString(true);        p.parseComma();        opi._shortName = p.parseString(true);        p.parseComma();        try        {          opi._numericName = p.parseInt(true);        }        catch (GsmException &e)        {          if (e.getErrorClass() == ParserError)          {            // the Ericsson GM12 GSM modem returns the numeric ID as string            string s = p.parseString();            opi._numericName = checkNumber(s);          }          else            throw e;        }        if (expectClosingBracket) p.parseChar(')');        result.push_back(opi);        if (! p.parseComma(true)) break;        // two commas ",," mean the list is finished        if (p.parseComma(true)) break;      }      // without brackets, the ME/TA must use format 3.      if (! expectClosingBracket) break;    }  return result;}OPInfo MeTa::getCurrentOPInfo() throw(GsmException){  OPInfo result;  // 1. This exception thing is necessary because not all ME/TA combinations  // might support all the formats and then return "ERROR".  // 2. Additionally some modems return "ERROR" for all "COPS=3,n" command  // and report only one format with the "COPS?" command (e.g. Nokia 8290).  // get long format  try  {    try    {      _at->chat("+COPS=3,0");    }    catch (GsmException &e)    {      if (e.getErrorClass() != ChatError) throw;    }    Parser p(_at->chat("+COPS?", "+COPS:"));    result._mode = (OPModes)p.parseInt();    // some phones (e.g. Nokia Card Phone 2.0) just return "+COPS: 0"    // if no network connection    if (p.parseComma(true))    {      if (p.parseInt() == 0)      {        p.parseComma();        result._longName = p.parseString();      }    }  }  catch (GsmException &e)  {    if (e.getErrorClass() != ChatError) throw;  }  // get short format  try  {    try    {      _at->chat("+COPS=3,1");    }    catch (GsmException &e)    {      if (e.getErrorClass() != ChatError) throw;    }    Parser p(_at->chat("+COPS?", "+COPS:"));    result._mode = (OPModes)p.parseInt();    // some phones (e.g. Nokia Card Phone 2.0) just return "+COPS: 0"    // if no network connection    if (p.parseComma(true))    {      if (p.parseInt() == 1)      {        p.parseComma();        result._shortName = p.parseString();      }    }  }  catch (GsmException &e)  {    if (e.getErrorClass() != ChatError) throw;  }  // get numeric format  try  {    try    {      _at->chat("+COPS=3,2");    }    catch (GsmException &e)    {      if (e.getErrorClass() != ChatError) throw;    }    Parser p(_at->chat("+COPS?", "+COPS:"));    result._mode = (OPModes)p.parseInt();    // some phones (e.g. Nokia Card Phone 2.0) just return "+COPS: 0"    // if no network connection    if (p.parseComma(true))    {      if (p.parseInt() == 2)      {        p.parseComma();        try        {          result._numericName = p.parseInt();        }        catch (GsmException &e)        {          if (e.getErrorClass() == ParserError)          {            // the Ericsson GM12 GSM modem returns the numeric ID as string            string s = p.parseString();            result._numericName = checkNumber(s);          }          else            throw e;        }      }    }  }  catch (GsmException &e)  {    if (e.getErrorClass() != ChatError) throw;  }  return result;}void MeTa::setCurrentOPInfo(OPModes mode,                            string longName,                            string shortName,                            int numericName) throw(GsmException){  bool done = false;  if (longName != "")  {    try    {      _at->chat("+COPS=" + intToStr((int)mode) + ",0,\"" + longName + "\"");      done = true;    }    catch (GsmException &e)    {      if (e.getErrorClass() != ChatError) throw;    }  }  if (shortName != "" && ! done)  {    try    {      _at->chat("+COPS=" + intToStr((int)mode) + ",1,\"" + shortName + "\"");      done = true;    }    catch (GsmException &e)    {      if (e.getErrorClass() != ChatError) throw;    }  }  if (numericName != NOT_SET && ! done)  {    try    {      _at->chat("+COPS=" + intToStr((int)mode) + ",2," +                intToStr(numericName));      done = true;    }    catch (GsmException &e)    {      if (e.getErrorClass() != ChatError) throw;    }  }  if (! done)    throw GsmException(_("unable to set operator"), OtherError);}vector<string> MeTa::getFacilityLockCapabilities() throw(GsmException){  string locks = _at->chat("+CLCK=?", "+CLCK:");  // some TA don't add '(' and ')' (Option FirstFone)  if (locks.length() && locks[0] != '(')  {    locks.insert(locks.begin(),'(');    locks += ')';  }  Parser p(locks);  return p.parseStringList();}bool MeTa::getFacilityLockStatus(string facility, FacilityClass cl)  throw(GsmException){  // some TA return always multiline response with all classes  // (Option FirstFone)  // !!! errors handling is correct (responses.empty() true) ?  vector<string> responses =     _at->chatv("+CLCK=\"" + facility + "\",2,," + intToStr((int)cl),"+CLCK:",true);  for (vector<string>::iterator i = responses.begin();       i != responses.end(); ++i)  {    Parser p(*i);    int enabled = p.parseInt();    // if the first time and there is no comma this     // return direct state of classes    // else return all classes    if (i == responses.begin())    {      if (!p.parseComma(true))        return enabled == 1;    }    else      p.parseComma();    if ( p.parseInt() == (int)cl )      return enabled == 1;  }  return false;//  Parser p(_at->chat("+CLCK=\"" + facility + "\",2,," + intToStr((int)cl),//                     "+CLCK:"));//  return p.parseInt() == 1;}void MeTa::lockFacility(string facility, FacilityClass cl, string passwd)

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲三级在线观看| 国产夜色精品一区二区av| 亚洲精品中文字幕在线观看| 不卡的电视剧免费网站有什么| 国产精品污www在线观看| 99国产精品久久久久久久久久久| 国产精品国产精品国产专区不片| 99久久精品免费| 亚洲精品亚洲人成人网| 欧美日韩在线播放一区| 久久精品国产99久久6| 亚洲国产精品成人综合色在线婷婷| 国产在线日韩欧美| 中文字幕中文乱码欧美一区二区| 97精品视频在线观看自产线路二| 亚洲成人动漫精品| 亚洲精品在线免费播放| 99久久综合99久久综合网站| 亚洲综合999| 日韩欧美一二区| caoporen国产精品视频| 五月天婷婷综合| 久久久久久久久99精品| 欧美性xxxxxxxx| 国产九色精品成人porny| 加勒比av一区二区| 1000部国产精品成人观看| 欧美日韩第一区日日骚| 国产乱子轮精品视频| 亚洲精品成人天堂一二三| 日韩欧美在线网站| av电影天堂一区二区在线| 奇米一区二区三区av| 中文字幕亚洲欧美在线不卡| 日韩一区二区三区电影在线观看 | 一区二区三区四区激情| 日韩欧美一区电影| 日本久久精品电影| 国产美女一区二区| 日韩国产高清影视| 一区二区欧美在线观看| 久久精品男人的天堂| 欧美日本不卡视频| 91视频观看视频| 国产九色sp调教91| 美日韩黄色大片| 亚洲一级在线观看| 亚洲婷婷综合色高清在线| 久久精品人人做| 精品国产一区二区三区久久影院| 欧美色欧美亚洲另类二区| 北条麻妃国产九九精品视频| 蜜芽一区二区三区| 亚洲国产精品一区二区尤物区| 国产精品免费视频一区| 精品国产伦一区二区三区免费| 欧美久久久久免费| 色婷婷久久综合| www.av亚洲| 国产91精品一区二区| 国产在线精品免费| 国产在线精品国自产拍免费| 久久国产精品99久久久久久老狼 | 欧美一卡二卡在线| 欧美日韩中文字幕一区二区| 99精品1区2区| kk眼镜猥琐国模调教系列一区二区 | 日韩1区2区日韩1区2区| 亚洲成人动漫在线观看| 亚洲成人中文在线| 天天影视色香欲综合网老头| 一区二区三区中文字幕| 亚洲理论在线观看| 一二三四社区欧美黄| 亚洲欧美激情在线| 亚洲精品中文在线观看| 一区二区三区波多野结衣在线观看| 国产精品久久久久久久岛一牛影视| 国产三级久久久| 国产女主播一区| 中文字幕亚洲一区二区av在线| 国产精品免费免费| 一区精品在线播放| 亚洲综合成人在线| 日本美女一区二区| 毛片基地黄久久久久久天堂| 激情综合五月天| 国产成人在线看| a级高清视频欧美日韩| 色综合久久66| 国产精品成人网| 夜夜精品视频一区二区| 亚洲成人自拍一区| 激情综合色综合久久| 国产成人精品免费看| 成人18视频日本| 欧美性猛交xxxx乱大交退制版| 精品视频一区二区三区免费| 日韩精品专区在线| 欧美激情中文不卡| 亚洲一区二区三区在线| 美女mm1313爽爽久久久蜜臀| 粉嫩高潮美女一区二区三区| 色哟哟一区二区三区| 欧美一区二区视频在线观看2020| wwwwxxxxx欧美| 亚洲伦理在线精品| 美国十次了思思久久精品导航| 成人精品免费网站| 欧美日韩在线精品一区二区三区激情 | 亚洲成人免费视频| 狠狠色狠狠色综合| 99久久国产综合精品麻豆 | 91麻豆精品国产综合久久久久久| 欧美电影精品一区二区| 最新中文字幕一区二区三区 | 91免费在线视频观看| 欧美老肥妇做.爰bbww视频| 日韩高清国产一区在线| 成人免费三级在线| 欧美一区二区黄| 亚洲日本一区二区| 极品少妇xxxx精品少妇偷拍| 91福利视频网站| 久久久久久亚洲综合影院红桃| 亚洲一区免费在线观看| 国产福利不卡视频| 91麻豆精品国产91久久久久久 | 91福利精品视频| 国产亚洲欧美日韩在线一区| 午夜日韩在线电影| 99久免费精品视频在线观看| 欧美va亚洲va在线观看蝴蝶网| 亚洲激情第一区| 丁香六月综合激情| 欧美一区二区三区视频在线 | 日韩免费一区二区| 亚洲激情中文1区| 国产.精品.日韩.另类.中文.在线.播放| 欧美日韩一区二区在线观看| 国产精品伦理在线| 精品伊人久久久久7777人| 在线免费不卡电影| 亚洲天堂网中文字| 粉嫩一区二区三区在线看| 精品国产制服丝袜高跟| 五月天亚洲精品| 欧美综合一区二区三区| 国产欧美精品一区aⅴ影院| 精品一区二区久久| 欧美一区二区精品久久911| 亚洲mv在线观看| 欧美亚洲一区二区三区四区| 一区在线中文字幕| 不卡av在线网| 国产精品久久久久久久久动漫| 国产99久久久精品| 欧美激情综合在线| 韩国v欧美v日本v亚洲v| 精品嫩草影院久久| 精品一区二区三区久久久| 精品久久久三级丝袜| 韩国精品主播一区二区在线观看 | 久久久青草青青国产亚洲免观| 久久国产人妖系列| 日韩欧美国产小视频| 免费在线观看一区二区三区| 欧美日韩精品系列| 亚洲h动漫在线| 7777精品伊人久久久大香线蕉最新版| 亚洲综合一二三区| 欧美色综合网站| 日韩中文字幕一区二区三区| 日韩一区二区三区四区五区六区 | 久久亚洲私人国产精品va媚药| 久久精品免费看| 久久亚洲一区二区三区明星换脸| 国产精品一区二区三区网站| 国产日产欧美一区二区视频| 成a人片国产精品| 亚洲免费在线看| 欧美日韩中字一区| 欧美综合一区二区三区| 亚洲电影一区二区三区| 91精品国产丝袜白色高跟鞋| 麻豆成人综合网| 国产蜜臀97一区二区三区 | 亚洲第一电影网| 欧美嫩在线观看| 久久国产精品99精品国产 | 亚洲激情图片一区| 日韩视频一区二区| 成人黄色免费短视频| 一片黄亚洲嫩模| 欧美tickling挠脚心丨vk| 国产成人av电影在线| 一区二区三区av电影| 日韩欧美国产一区在线观看| 国产成人av资源| 亚洲午夜成aⅴ人片|