MultiTech / MTSAS_Cellular_SMS_Example

Dependencies:   mbed-src mtsas

Committer:
Vanger
Date:
Tue Aug 12 21:49:38 2014 +0000
Revision:
4:ad889da9578c
Parent:
3:7fac2f012338
Child:
5:597d5a5e9d24
Code review 2 fixes

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 4:ad889da9578c 31 * To configure the serial pins for the Freescale KL46Z board, use MTSAS jumper
Vanger 4:ad889da9578c 32 * configuration B. 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 4:ad889da9578c 37 * To configure the serial pins for the Freescale K64F board, use MTSAS jumper
Vanger 4:ad889da9578c 38 * configuration A. Uncomment the following line to use the Freescale K64F board
Vanger 0:d9fd19c8ca39 39 */
Vanger 0:d9fd19c8ca39 40 //MTSSerialFlowControl* io = new MTSSerialFlowControl(D1, D0, D3, D6);
Vanger 0:d9fd19c8ca39 41
Vanger 4:ad889da9578c 42 //Sets the baud rate 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
Vanger 3:7fac2f012338 48 if (! radio) {
Vanger 3:7fac2f012338 49 logFatal("Failed to initialize radio");
Vanger 3:7fac2f012338 50 return 1;
Vanger 3:7fac2f012338 51 }
Vanger 3:7fac2f012338 52
Vanger 4:ad889da9578c 53 radio->configureSignals(D4,D7,RESET);
Vanger 4:ad889da9578c 54 Transport::setTransport(radio);
Vanger 4:ad889da9578c 55
Vanger 2:d0d6e939ba70 56 //Set radio APN
Vanger 1:1f5c9497a125 57 for (int i = 0; i < 10; i++) {
Vanger 1:1f5c9497a125 58 if (i >= 10) {
Vanger 1:1f5c9497a125 59 logError("Failed to set APN\n");
Vanger 1:1f5c9497a125 60 }
Vanger 1:1f5c9497a125 61 if (radio->setApn(APN) == MTS_SUCCESS) {
Vanger 1:1f5c9497a125 62 logInfo("Successfully set APN\n");
Vanger 1:1f5c9497a125 63 break;
Vanger 1:1f5c9497a125 64 } else {
Vanger 1:1f5c9497a125 65 wait(1);
Vanger 1:1f5c9497a125 66 }
Vanger 1:1f5c9497a125 67 }
Vanger 0:d9fd19c8ca39 68
Vanger 1:1f5c9497a125 69 //Delete any previously received SMS messages
Vanger 1:1f5c9497a125 70 for (int i = 0; i < 10; i++) {
Vanger 1:1f5c9497a125 71 if (i >= 10) {
Vanger 1:1f5c9497a125 72 logError("Failed to delete SMS messages\n");
Vanger 1:1f5c9497a125 73 }
Vanger 1:1f5c9497a125 74 if (radio->deleteAllReceivedSms() == MTS_SUCCESS) {
Vanger 1:1f5c9497a125 75 logInfo("Deleted all SMS messages\n");
Vanger 1:1f5c9497a125 76 break;
Vanger 1:1f5c9497a125 77 } else {
Vanger 1:1f5c9497a125 78 wait(1);
Vanger 1:1f5c9497a125 79 }
Vanger 1:1f5c9497a125 80 }
Vanger 0:d9fd19c8ca39 81
Vanger 1:1f5c9497a125 82 // Send SMS message to phone
Vanger 1:1f5c9497a125 83 for (int i = 1; i < 10; i++) {
Vanger 1:1f5c9497a125 84 if(radio->sendSMS(txtmsg) == MTS_SUCCESS) {
Vanger 2:d0d6e939ba70 85 logInfo("Sent SMS successfully:<%s>\n", txtmsg.message.c_str());
Vanger 1:1f5c9497a125 86 break;
Vanger 1:1f5c9497a125 87 } else {
Vanger 2:d0d6e939ba70 88 logError("Failed to send SMS<%s>\n", txtmsg.message.c_str());
Vanger 1:1f5c9497a125 89 }
Vanger 1:1f5c9497a125 90 }
Vanger 0:d9fd19c8ca39 91
Vanger 3:7fac2f012338 92 //Checking for received SMS messages
Vanger 3:7fac2f012338 93 while (true) {
Vanger 1:1f5c9497a125 94 logInfo("Checking for received messages");
Vanger 1:1f5c9497a125 95 vector<Cellular::Sms> recv = radio->getReceivedSms();
Vanger 1:1f5c9497a125 96 if(recv.size() > 0) {
Vanger 1:1f5c9497a125 97 int size = recv.size();
Vanger 1:1f5c9497a125 98 for (int i = 0; i < size; i++) {
Vanger 1:1f5c9497a125 99 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 100 }
Vanger 1:1f5c9497a125 101 }
Vanger 3:7fac2f012338 102
Vanger 3:7fac2f012338 103 if(radio->deleteOnlyReceivedReadSms() != MTS_SUCCESS) {
Vanger 3:7fac2f012338 104 logError("Failed to delete received and read SMS messages");
Vanger 3:7fac2f012338 105 }
Vanger 1:1f5c9497a125 106 wait(10);
Vanger 1:1f5c9497a125 107 }
Vanger 0:d9fd19c8ca39 108
Vanger 1:1f5c9497a125 109 logDebug("End of example code\n");
Vanger 0:d9fd19c8ca39 110 return 0;
Vanger 0:d9fd19c8ca39 111 }