diff options
Diffstat (limited to 'tmk_core/tool/mbed/mbed-sdk/libraries/net/cellular/CellularModem/link')
-rw-r--r-- | tmk_core/tool/mbed/mbed-sdk/libraries/net/cellular/CellularModem/link/LinkMonitor.cpp | 175 | ||||
-rw-r--r-- | tmk_core/tool/mbed/mbed-sdk/libraries/net/cellular/CellularModem/link/LinkMonitor.h | 96 |
2 files changed, 0 insertions, 271 deletions
diff --git a/tmk_core/tool/mbed/mbed-sdk/libraries/net/cellular/CellularModem/link/LinkMonitor.cpp b/tmk_core/tool/mbed/mbed-sdk/libraries/net/cellular/CellularModem/link/LinkMonitor.cpp deleted file mode 100644 index 612b376921..0000000000 --- a/tmk_core/tool/mbed/mbed-sdk/libraries/net/cellular/CellularModem/link/LinkMonitor.cpp +++ /dev/null @@ -1,175 +0,0 @@ -/* LinkMonitor.cpp */ -/* Copyright (C) 2012 mbed.org, MIT License - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of this software - * and associated documentation files (the "Software"), to deal in the Software without restriction, - * including without limitation the rights to use, copy, modify, merge, publish, distribute, - * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all copies or - * substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING - * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, - * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -#define __DEBUG__ 0 -#ifndef __MODULE__ -#define __MODULE__ "LinkMonitor.cpp" -#endif - -#include "core/fwk.h" - -#include "LinkMonitor.h" - -#include <cstdio> -using std::sscanf; - -#define DEFAULT_TIMEOUT 10000 - -LinkMonitor::LinkMonitor(ATCommandsInterface* pIf) : m_pIf(pIf), m_rssi(0), m_registrationState(REGISTRATION_STATE_UNKNOWN), m_bearer(BEARER_UNKNOWN) -{ - m_gsm = true; -} - -int LinkMonitor::init(bool gsm) -{ - m_gsm = gsm; - if (m_gsm) - { - // we need to make sure that we setup the operator selection to be in 'numeric' format. - // i.e. it is made up of a network and country code when returned by the modem e.g. Operator = 23415. This allows easy logic parsing for - // setting up other network parameters in future. - DBG("LinkMonitor::init() being called. This should only happen once: executinging AT+COPS=0,2"); - int ret = m_pIf->executeSimple("AT+COPS=0,2", NULL, DEFAULT_TIMEOUT); //Configure to set the operator string to Country Code and mobile network code - if(ret != OK) - { - WARN(" NET_PROTOCOL error from sending the AT+COPS command to the modem. "); - return NET_PROTOCOL; - } - } - return OK; -} - -/*virtual*/ int LinkMonitor::onNewATResponseLine(ATCommandsInterface* pInst, const char* line) -{ - DBG("Line is %s", line); - char n[32] = ""; - char s[32] = ""; - int v; - if( sscanf(line, "+CREG: %*d,%d", &v) >= 1 ) //Reg state is valid - { - DBG("+CREG %d", v); - switch( v ) - { - case 0: - m_registrationState = REGISTRATION_STATE_UNKNOWN; - break; - case 1: - m_registrationState = REGISTRATION_STATE_HOME_NETWORK; - break; - case 2: - m_registrationState = REGISTRATION_STATE_REGISTERING; - break; - case 3: - m_registrationState = REGISTRATION_STATE_DENIED; - break; - case 4: - m_registrationState = REGISTRATION_STATE_NO_SIGNAL; - break; - case 5: - m_registrationState = REGISTRATION_STATE_ROAMING; - break; - default: - m_registrationState = REGISTRATION_STATE_UNKNOWN; - break; - } - } - else if( sscanf(line, "+COPS: %*d,%*d,\"%*[^\"]\",%d", &v) >= 1 ) - { - DBG("+COPS %d", v); - switch( v ) - { - case 0: - m_bearer = BEARER_GSM; - break; - case 2: - m_bearer = BEARER_UMTS; - break; - case 3: - m_bearer = BEARER_EDGE; - break; - case 4: //HSDPA - case 5: //HSUPA - case 6: //HSDPA + HSUPA - m_bearer = BEARER_HSPA; - break; - case 7: - m_bearer = BEARER_LTE; - break; - case 1: //GSM Compact - default: - m_bearer = BEARER_UNKNOWN; - break; - } - } - else if( sscanf(line, "+CSQ: %d,%*d", &v) >= 1 ) - { - DBG("+CSQ %d", v); - if(v == 99) //Unknown - { - m_rssi = 0; //Unknown - } - else - { - m_rssi = -113 + 2*v; - } - } - else if ( (sscanf(line, "+CNUM: \"%[^\"]\",\"%[^\"]\",%d", n, s, &v) == 3) || - (sscanf(line, "+CNUM: \"\",\"%[^\"]\",%d", s, &v) == 2) ) - { - if (*s && ((v == 145/*number includes + */) || (v == 129/*otherwise*/))) { - strcpy(m_phoneNumber, s); - } - } - return OK; -} - -/*virtual*/ int LinkMonitor::onNewEntryPrompt(ATCommandsInterface* pInst) -{ - return OK; -} - -int LinkMonitor::getState(int* pRssi, REGISTRATION_STATE* pRegistrationState, BEARER* pBearer) -{ - m_rssi = 0; - m_registrationState = REGISTRATION_STATE_UNKNOWN; - m_bearer = BEARER_UNKNOWN; - int ret = m_pIf->execute(m_gsm ? "AT+CREG?;+COPS?;+CSQ" : "AT+CREG?;+CSQ", this, NULL, DEFAULT_TIMEOUT); //Configure to get registration info & get it; get signal quality - if(ret != OK) - { - return NET_PROTOCOL; - } - *pRssi = m_rssi; - *pRegistrationState = m_registrationState; - *pBearer = m_bearer; - return OK; -} - -int LinkMonitor::getPhoneNumber(char* phoneNumber) -{ - *m_phoneNumber = '\0'; - if (m_gsm) { - int ret = m_pIf->execute("AT+CNUM", this, NULL, DEFAULT_TIMEOUT); - if(ret != OK) - { - return NET_PROTOCOL; - } - } - strcpy(phoneNumber, m_phoneNumber); - return OK; -}
\ No newline at end of file diff --git a/tmk_core/tool/mbed/mbed-sdk/libraries/net/cellular/CellularModem/link/LinkMonitor.h b/tmk_core/tool/mbed/mbed-sdk/libraries/net/cellular/CellularModem/link/LinkMonitor.h deleted file mode 100644 index 864909d6c5..0000000000 --- a/tmk_core/tool/mbed/mbed-sdk/libraries/net/cellular/CellularModem/link/LinkMonitor.h +++ /dev/null @@ -1,96 +0,0 @@ -/* LinkMonitor.h */ -/* Copyright (C) 2012 mbed.org, MIT License - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of this software - * and associated documentation files (the "Software"), to deal in the Software without restriction, - * including without limitation the rights to use, copy, modify, merge, publish, distribute, - * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all copies or - * substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING - * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, - * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -#ifndef LINKMONITOR_H_ -#define LINKMONITOR_H_ - -#include "core/fwk.h" - -#include "rtos.h" - -#include "at/ATCommandsInterface.h" - -/** Component to monitor link quality - * - */ -class LinkMonitor : protected IATCommandsProcessor -{ -public: - /** Create LinkMonitor instance - @param pIf Pointer to the ATCommandsInterface instance to use - */ - LinkMonitor(ATCommandsInterface* pIf); - - /** Initialize monitor - */ - int init(bool gsm = true); - - /** Registration State - */ - enum REGISTRATION_STATE - { - REGISTRATION_STATE_UNKNOWN, //!< Unknown - REGISTRATION_STATE_REGISTERING, //!< Registering - REGISTRATION_STATE_DENIED, //!< Denied - REGISTRATION_STATE_NO_SIGNAL, //!< No Signal - REGISTRATION_STATE_HOME_NETWORK, //!< Registered on home network - REGISTRATION_STATE_ROAMING //!< Registered on roaming network - }; - - /** Bearer type - */ - enum BEARER - { - BEARER_UNKNOWN, //!< Unknown - BEARER_GSM, //!< GSM (2G) - BEARER_EDGE, //!< EDGE (2.5G) - BEARER_UMTS, //!< UMTS (3G) - BEARER_HSPA, //!< HSPA (3G+) - BEARER_LTE //!< LTE (4G) - }; - - /** Get link state - @param pRssi pointer to store the current RSSI in dBm, between -51 dBm and -113 dBm if known; -51 dBm means -51 dBm or more; -113 dBm means -113 dBm or less; 0 if unknown - @param pRegistrationState pointer to store the current registration state - @param pBearer pointer to store the current bearer - @return 0 on success, error code on failure - */ - int getState(int* pRssi, REGISTRATION_STATE* pRegistrationState, BEARER* pBearer); - - /** Get my phone number - @param phoneNumber pointer to store the current phoneNumber - @return 0 on success, error code on failure - */ - int getPhoneNumber(char* phoneNumber); -protected: - //IATCommandsProcessor - virtual int onNewATResponseLine(ATCommandsInterface* pInst, const char* line); - virtual int onNewEntryPrompt(ATCommandsInterface* pInst); - -private: - ATCommandsInterface* m_pIf; - - int m_rssi; - bool m_gsm; - REGISTRATION_STATE m_registrationState; - BEARER m_bearer; - char m_phoneNumber[16]; -}; - -#endif /* LINKMONITOR_H_ */ |