Cellular library for MTS Socket Modem Arduino Shield devices from Multi-Tech Systems

Dependents:   mtsas mtsas mtsas mtsas

Committer:
Mike Fiore
Date:
Tue May 20 16:11:38 2014 -0500
Revision:
4:1f63354b8d1b
Parent:
3:04046eebaef5
Child:
7:0ee8e69a3e9c
use MTSLog, put mbed.h in cpp files

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Mike Fiore 4:1f63354b8d1b 1 #include "mbed.h"
Mike Fiore 1:f155d94d6f3a 2 #include "Cellular.h"
Mike Fiore 1:f155d94d6f3a 3 #include "MTSText.h"
Mike Fiore 4:1f63354b8d1b 4 #include "MTSLog.h"
Mike Fiore 1:f155d94d6f3a 5
Mike Fiore 1:f155d94d6f3a 6 using namespace mts;
Mike Fiore 1:f155d94d6f3a 7
Mike Fiore 1:f155d94d6f3a 8 std::string Cellular::getRegistrationNames(Registration registration)
Mike Fiore 1:f155d94d6f3a 9 {
Mike Fiore 1:f155d94d6f3a 10 switch(registration) {
Mike Fiore 1:f155d94d6f3a 11 case NOT_REGISTERED:
Mike Fiore 1:f155d94d6f3a 12 return "NOT_REGISTERED";
Mike Fiore 1:f155d94d6f3a 13 case REGISTERED:
Mike Fiore 1:f155d94d6f3a 14 return "REGISTERED";
Mike Fiore 1:f155d94d6f3a 15 case SEARCHING:
Mike Fiore 1:f155d94d6f3a 16 return "SEARCHING";
Mike Fiore 1:f155d94d6f3a 17 case DENIED:
Mike Fiore 1:f155d94d6f3a 18 return "DENIED";
Mike Fiore 1:f155d94d6f3a 19 case UNKNOWN:
Mike Fiore 1:f155d94d6f3a 20 return "UNKNOWN";
Mike Fiore 1:f155d94d6f3a 21 case ROAMING:
Mike Fiore 1:f155d94d6f3a 22 return "ROAMING";
Mike Fiore 1:f155d94d6f3a 23 default:
Mike Fiore 1:f155d94d6f3a 24 return "UNKNOWN ENUM";
Mike Fiore 1:f155d94d6f3a 25 }
Mike Fiore 1:f155d94d6f3a 26 }
Mike Fiore 1:f155d94d6f3a 27
Mike Fiore 1:f155d94d6f3a 28 Code Cellular::test()
Mike Fiore 1:f155d94d6f3a 29 {
Mike Fiore 1:f155d94d6f3a 30 int i = 0;
Mike Fiore 1:f155d94d6f3a 31 while (sendBasicCommand("AT", 1000) != SUCCESS) {
Mike Fiore 1:f155d94d6f3a 32 i++;
Mike Fiore 1:f155d94d6f3a 33 if (i >= 30) {
Mike Fiore 4:1f63354b8d1b 34 logError("Could not talk to radio after 30 tries");
Mike Fiore 1:f155d94d6f3a 35 i = 0;
Mike Fiore 1:f155d94d6f3a 36 }
Mike Fiore 1:f155d94d6f3a 37 wait(1);
Mike Fiore 1:f155d94d6f3a 38 }
Mike Fiore 1:f155d94d6f3a 39 return SUCCESS;
Mike Fiore 1:f155d94d6f3a 40 }
Mike Fiore 1:f155d94d6f3a 41
Mike Fiore 1:f155d94d6f3a 42 int Cellular::getSignalStrength()
Mike Fiore 1:f155d94d6f3a 43 {
Mike Fiore 1:f155d94d6f3a 44 string response = sendCommand("AT+CSQ", 1000);
Mike Fiore 1:f155d94d6f3a 45 if (response.find("OK") == string::npos) {
Mike Fiore 1:f155d94d6f3a 46 return -1;
Mike Fiore 1:f155d94d6f3a 47 }
Mike Fiore 1:f155d94d6f3a 48 int start = response.find(':');
Mike Fiore 1:f155d94d6f3a 49 int stop = response.find(',', start);
Mike Fiore 1:f155d94d6f3a 50 string signal = response.substr(start + 2, stop - start - 2);
Mike Fiore 1:f155d94d6f3a 51 int value;
Mike Fiore 1:f155d94d6f3a 52 sscanf(signal.c_str(), "%d", &value);
Mike Fiore 1:f155d94d6f3a 53 return value;
Mike Fiore 1:f155d94d6f3a 54 }
Mike Fiore 1:f155d94d6f3a 55
Mike Fiore 1:f155d94d6f3a 56 Cellular::Registration Cellular::getRegistration()
Mike Fiore 1:f155d94d6f3a 57 {
Mike Fiore 1:f155d94d6f3a 58 string response = sendCommand("AT+CREG?", 5000);
Mike Fiore 1:f155d94d6f3a 59 if (response.find("OK") == string::npos) {
Mike Fiore 1:f155d94d6f3a 60 return UNKNOWN;
Mike Fiore 1:f155d94d6f3a 61 }
Mike Fiore 1:f155d94d6f3a 62 int start = response.find(',');
Mike Fiore 1:f155d94d6f3a 63 int stop = response.find(' ', start);
Mike Fiore 1:f155d94d6f3a 64 string regStat = response.substr(start + 1, stop - start - 1);
Mike Fiore 1:f155d94d6f3a 65 int value;
Mike Fiore 1:f155d94d6f3a 66 sscanf(regStat.c_str(), "%d", &value);
Mike Fiore 1:f155d94d6f3a 67 switch (value) {
Mike Fiore 1:f155d94d6f3a 68 case 0:
Mike Fiore 1:f155d94d6f3a 69 return NOT_REGISTERED;
Mike Fiore 1:f155d94d6f3a 70 case 1:
Mike Fiore 1:f155d94d6f3a 71 return REGISTERED;
Mike Fiore 1:f155d94d6f3a 72 case 2:
Mike Fiore 1:f155d94d6f3a 73 return SEARCHING;
Mike Fiore 1:f155d94d6f3a 74 case 3:
Mike Fiore 1:f155d94d6f3a 75 return DENIED;
Mike Fiore 1:f155d94d6f3a 76 case 4:
Mike Fiore 1:f155d94d6f3a 77 return UNKNOWN;
Mike Fiore 1:f155d94d6f3a 78 case 5:
Mike Fiore 1:f155d94d6f3a 79 return ROAMING;
Mike Fiore 1:f155d94d6f3a 80 }
Mike Fiore 1:f155d94d6f3a 81 return UNKNOWN;
Mike Fiore 1:f155d94d6f3a 82 }