Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of MTS-Cellular by
Cellular/Cellular.cpp@4:1f63354b8d1b, 2014-05-20 (annotated)
- 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?
User | Revision | Line number | New 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 | } |