Example program demonstrating sending and reading SMS messages from the cellular modem using the MTSAS library.

Dependencies:   mbed-src mtsas

Committer:
Vanger
Date:
Thu Aug 07 21:40:17 2014 +0000
Revision:
3:7fac2f012338
Parent:
2:d0d6e939ba70
Child:
4:ad889da9578c
Updated deleteReceivedMessages line to check for success, made for loop infinite, and fixed comments at beginning of file.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Vanger 0:d9fd19c8ca39 1 #include "mbed.h"
Vanger 0:d9fd19c8ca39 2 #include "mtsas.h"
Vanger 0:d9fd19c8ca39 3
Vanger 0:d9fd19c8ca39 4 int main(){
Vanger 3:7fac2f012338 5
Vanger 3:7fac2f012338 6 //Sets the log level to INFO, higher log levels produce more log output.
Vanger 3:7fac2f012338 7 //Possible levels: NONE, FATAL, ERROR, WARNING, INFO, DEBUG, TRACE
Vanger 1:1f5c9497a125 8 MTSLog::setLogLevel(MTSLog::INFO_LEVEL);
Vanger 1:1f5c9497a125 9
Vanger 0:d9fd19c8ca39 10 //Modify to match your apn if you are using an HSPA radio with a SIM card
Vanger 0:d9fd19c8ca39 11 const char APN[] = "";
Vanger 0:d9fd19c8ca39 12
Vanger 1:1f5c9497a125 13 //Phone number to send to and receive from. Must be in the form "1xxxxxxxxxx"
Vanger 1:1f5c9497a125 14 string PHONE_NUMBER = "";
Vanger 1:1f5c9497a125 15
Vanger 1:1f5c9497a125 16 Cellular::Sms txtmsg;
Vanger 1:1f5c9497a125 17 txtmsg.phoneNumber = PHONE_NUMBER;
Vanger 1:1f5c9497a125 18 txtmsg.message = "Hello World! MTSAS is up and running!";
Vanger 0:d9fd19c8ca39 19
Vanger 0:d9fd19c8ca39 20 /** STMicro Nucelo F401RE
Vanger 0:d9fd19c8ca39 21 * The supported jumper configurations of the MTSAS do not line up with
Vanger 0:d9fd19c8ca39 22 * the pin mapping of the Nucleo F401RE. Therefore, the MTSAS serial TX
Vanger 0:d9fd19c8ca39 23 * pin (JP8 Pin 2) must be manually jumped to Serial1 RX (Shield pin D2)
Vanger 0:d9fd19c8ca39 24 * and the MTSAS serial RX pin (JP9 Pin 2) pin must be manually jumped to
Vanger 0:d9fd19c8ca39 25 * Serial1 TX (Shield pin D8).
Vanger 0:d9fd19c8ca39 26 * Uncomment the following line to use the STMicro Nuceleo F401RE
Vanger 0:d9fd19c8ca39 27 */
Vanger 0:d9fd19c8ca39 28 MTSSerialFlowControl* io = new MTSSerialFlowControl(D8, D2, D3, D6);
Vanger 0:d9fd19c8ca39 29
Vanger 0:d9fd19c8ca39 30 /** Freescale KL46Z
Vanger 0:d9fd19c8ca39 31 * To configure the pins for the Freescale KL46Z board, use configuration B
Vanger 3:7fac2f012338 32 * Uncomment the following line to use the Freescale KL46Z board
Vanger 0:d9fd19c8ca39 33 */
Vanger 0:d9fd19c8ca39 34 //MTSSerialFlowControl* io = new MTSSerialFlowControl(D2, D9, D3, D6);
Vanger 0:d9fd19c8ca39 35
Vanger 3:7fac2f012338 36 /** Freescale K64F
Vanger 0:d9fd19c8ca39 37 * To configure the pins for the Freescale KL46Z board, use configuration A
Vanger 3:7fac2f012338 38 * Uncomment the following line to use the Freescale KL46F board
Vanger 0:d9fd19c8ca39 39 */
Vanger 0:d9fd19c8ca39 40 //MTSSerialFlowControl* io = new MTSSerialFlowControl(D1, D0, D3, D6);
Vanger 0:d9fd19c8ca39 41
Vanger 0:d9fd19c8ca39 42 //Sets the baudrate for communicating with the radio
Vanger 0:d9fd19c8ca39 43 io->baud(115200);
Vanger 0:d9fd19c8ca39 44
Vanger 2:d0d6e939ba70 45 //Creates a radio object
Vanger 0:d9fd19c8ca39 46 Cellular* radio = CellularFactory::create(io);
Vanger 2:d0d6e939ba70 47 radio->configureSignals(D4,D7,RESET);
Vanger 2:d0d6e939ba70 48 Transport::setTransport(radio);
Vanger 2:d0d6e939ba70 49
Vanger 3:7fac2f012338 50 if (! radio) {
Vanger 3:7fac2f012338 51 logFatal("Failed to initialize radio");
Vanger 3:7fac2f012338 52 return 1;
Vanger 3:7fac2f012338 53 }
Vanger 3:7fac2f012338 54
Vanger 2:d0d6e939ba70 55 //Set radio APN
Vanger 1:1f5c9497a125 56 for (int i = 0; i < 10; i++) {
Vanger 1:1f5c9497a125 57 if (i >= 10) {
Vanger 1:1f5c9497a125 58 logError("Failed to set APN\n");
Vanger 1:1f5c9497a125 59 }
Vanger 1:1f5c9497a125 60 if (radio->setApn(APN) == MTS_SUCCESS) {
Vanger 1:1f5c9497a125 61 logInfo("Successfully set APN\n");
Vanger 1:1f5c9497a125 62 break;
Vanger 1:1f5c9497a125 63 } else {
Vanger 1:1f5c9497a125 64 wait(1);
Vanger 1:1f5c9497a125 65 }
Vanger 1:1f5c9497a125 66 }
Vanger 0:d9fd19c8ca39 67
Vanger 1:1f5c9497a125 68 //Delete any previously received SMS messages
Vanger 1:1f5c9497a125 69 for (int i = 0; i < 10; i++) {
Vanger 1:1f5c9497a125 70 if (i >= 10) {
Vanger 1:1f5c9497a125 71 logError("Failed to delete SMS messages\n");
Vanger 1:1f5c9497a125 72 }
Vanger 1:1f5c9497a125 73 if (radio->deleteAllReceivedSms() == MTS_SUCCESS) {
Vanger 1:1f5c9497a125 74 logInfo("Deleted all SMS messages\n");
Vanger 1:1f5c9497a125 75 break;
Vanger 1:1f5c9497a125 76 } else {
Vanger 1:1f5c9497a125 77 wait(1);
Vanger 1:1f5c9497a125 78 }
Vanger 1:1f5c9497a125 79 }
Vanger 0:d9fd19c8ca39 80
Vanger 1:1f5c9497a125 81 // Send SMS message to phone
Vanger 1:1f5c9497a125 82 for (int i = 1; i < 10; i++) {
Vanger 1:1f5c9497a125 83 if(radio->sendSMS(txtmsg) == MTS_SUCCESS) {
Vanger 2:d0d6e939ba70 84 logInfo("Sent SMS successfully:<%s>\n", txtmsg.message.c_str());
Vanger 1:1f5c9497a125 85 break;
Vanger 1:1f5c9497a125 86 } else {
Vanger 2:d0d6e939ba70 87 logError("Failed to send SMS<%s>\n", txtmsg.message.c_str());
Vanger 1:1f5c9497a125 88 }
Vanger 1:1f5c9497a125 89 }
Vanger 0:d9fd19c8ca39 90
Vanger 3:7fac2f012338 91 //Checking for received SMS messages
Vanger 3:7fac2f012338 92 while (true) {
Vanger 1:1f5c9497a125 93 logInfo("Checking for received messages");
Vanger 1:1f5c9497a125 94 vector<Cellular::Sms> recv = radio->getReceivedSms();
Vanger 1:1f5c9497a125 95 if(recv.size() > 0) {
Vanger 1:1f5c9497a125 96 int size = recv.size();
Vanger 1:1f5c9497a125 97 for (int i = 0; i < size; i++) {
Vanger 1:1f5c9497a125 98 logInfo("Message %d: [%s] [%s] [%s]", i, recv[i].phoneNumber.c_str(), recv[i].timestamp.c_str(), recv[i].message.c_str());
Vanger 1:1f5c9497a125 99 }
Vanger 1:1f5c9497a125 100 }
Vanger 3:7fac2f012338 101
Vanger 3:7fac2f012338 102 if(radio->deleteOnlyReceivedReadSms() != MTS_SUCCESS) {
Vanger 3:7fac2f012338 103 logError("Failed to delete received and read SMS messages");
Vanger 3:7fac2f012338 104 }
Vanger 1:1f5c9497a125 105 wait(10);
Vanger 1:1f5c9497a125 106 }
Vanger 0:d9fd19c8ca39 107
Vanger 1:1f5c9497a125 108 logDebug("End of example code\n");
Vanger 0:d9fd19c8ca39 109 return 0;
Vanger 0:d9fd19c8ca39 110 }