Example program demonstrating sending and reading SMS messages from the cellular modem using the MTSAS library.
main.cpp@11:159b76eafb5c, 2015-07-09 (annotated)
- Committer:
- leon123
- Date:
- Thu Jul 09 19:04:55 2015 +0000
- Revision:
- 11:159b76eafb5c
- Parent:
- 9:58dba06c3042
Added #defines for the possible hardware platform selections. Re-ordered the hardware selection code to the top. Added a note for the log output and fixed a misspelling.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Vanger | 0:d9fd19c8ca39 | 1 | #include "mbed.h" |
Vanger | 0:d9fd19c8ca39 | 2 | #include "mtsas.h" |
Vanger | 0:d9fd19c8ca39 | 3 | |
leon123 | 11:159b76eafb5c | 4 | /******************************** NOTE *******************************/ |
leon123 | 11:159b76eafb5c | 5 | /******** Uncomment the hardware platform you are working on. ********/ |
leon123 | 11:159b76eafb5c | 6 | #define DRAGONFLY |
leon123 | 11:159b76eafb5c | 7 | //#define NUCLEO_F401RE |
leon123 | 11:159b76eafb5c | 8 | //#define FREESCALE_KL46Z |
leon123 | 11:159b76eafb5c | 9 | //#define FREESCALE_K64F |
leon123 | 11:159b76eafb5c | 10 | /*********************************************************************/ |
leon123 | 11:159b76eafb5c | 11 | |
Vanger | 0:d9fd19c8ca39 | 12 | int main(){ |
leon123 | 11:159b76eafb5c | 13 | |
leon123 | 11:159b76eafb5c | 14 | #if defined(DRAGONFLY) |
leon123 | 11:159b76eafb5c | 15 | /** Dragonfly |
leon123 | 11:159b76eafb5c | 16 | * To configure the serial pins for the Dragonfly board, use: |
leon123 | 11:159b76eafb5c | 17 | * RADIO_TX = pin PC_7, RADIO_RX = pin PC_6 |
leon123 | 11:159b76eafb5c | 18 | * RADIO_RTS = pin PB_10,RADIO_CTS = pin PB_12 |
leon123 | 11:159b76eafb5c | 19 | */ |
leon123 | 11:159b76eafb5c | 20 | MTSSerialFlowControl* io = new MTSSerialFlowControl(RADIO_TX, RADIO_RX, RADIO_RTS, RADIO_CTS); |
leon123 | 11:159b76eafb5c | 21 | #elif defined(NUCLEO_F401RE) |
leon123 | 11:159b76eafb5c | 22 | /** STMicro Nucleo F401RE |
leon123 | 11:159b76eafb5c | 23 | * The supported jumper configurations of the MTSAS do not line up with |
leon123 | 11:159b76eafb5c | 24 | * the pin mapping of the Nucleo F401RE. Therefore, the MTSAS serial TX |
leon123 | 11:159b76eafb5c | 25 | * pin (JP8 Pin 2) must be manually jumped to Serial1 RX (Shield pin D2) |
leon123 | 11:159b76eafb5c | 26 | * and the MTSAS serial RX pin (JP9 Pin 2) pin must be manually jumped to |
leon123 | 11:159b76eafb5c | 27 | * Serial1 TX (Shield pin D8). |
leon123 | 11:159b76eafb5c | 28 | */ |
leon123 | 11:159b76eafb5c | 29 | MTSSerialFlowControl* io = new MTSSerialFlowControl(D8, D2, D3, D6); |
leon123 | 11:159b76eafb5c | 30 | #elif defined(FREESCALE_KL46Z) |
leon123 | 11:159b76eafb5c | 31 | /** Freescale KL46Z |
leon123 | 11:159b76eafb5c | 32 | * To configure the serial pins for the Freescale KL46Z board, use MTSAS jumper |
leon123 | 11:159b76eafb5c | 33 | * configuration B. |
leon123 | 11:159b76eafb5c | 34 | */ |
leon123 | 11:159b76eafb5c | 35 | MTSSerialFlowControl* io = new MTSSerialFlowControl(D2, D9, D3, D6); |
leon123 | 11:159b76eafb5c | 36 | #elif defined(FREESCALE_K64F) |
leon123 | 11:159b76eafb5c | 37 | /** Freescale K64F |
leon123 | 11:159b76eafb5c | 38 | * To configure the serial pins for the Freescale K64F board, use MTSAS jumper |
leon123 | 11:159b76eafb5c | 39 | * configuration A. |
leon123 | 11:159b76eafb5c | 40 | */ |
leon123 | 11:159b76eafb5c | 41 | MTSSerialFlowControl* io = new MTSSerialFlowControl(D1, D0, D3, D6); |
leon123 | 11:159b76eafb5c | 42 | #endif |
Vanger | 3:7fac2f012338 | 43 | |
Vanger | 3:7fac2f012338 | 44 | //Sets the log level to INFO, higher log levels produce more log output. |
Vanger | 3:7fac2f012338 | 45 | //Possible levels: NONE, FATAL, ERROR, WARNING, INFO, DEBUG, TRACE |
Vanger | 1:1f5c9497a125 | 46 | MTSLog::setLogLevel(MTSLog::INFO_LEVEL); |
Vanger | 1:1f5c9497a125 | 47 | |
Vanger | 0:d9fd19c8ca39 | 48 | //Modify to match your apn if you are using an HSPA radio with a SIM card |
Vanger | 0:d9fd19c8ca39 | 49 | const char APN[] = ""; |
Vanger | 0:d9fd19c8ca39 | 50 | |
Vanger | 1:1f5c9497a125 | 51 | //Phone number to send to and receive from. Must be in the form "1xxxxxxxxxx" |
Vanger | 1:1f5c9497a125 | 52 | string PHONE_NUMBER = ""; |
Vanger | 1:1f5c9497a125 | 53 | |
Vanger | 1:1f5c9497a125 | 54 | Cellular::Sms txtmsg; |
Vanger | 1:1f5c9497a125 | 55 | txtmsg.phoneNumber = PHONE_NUMBER; |
Vanger | 1:1f5c9497a125 | 56 | txtmsg.message = "Hello World! MTSAS is up and running!"; |
Vanger | 0:d9fd19c8ca39 | 57 | |
Vanger | 4:ad889da9578c | 58 | //Sets the baud rate for communicating with the radio |
Vanger | 0:d9fd19c8ca39 | 59 | io->baud(115200); |
Vanger | 0:d9fd19c8ca39 | 60 | |
Vanger | 2:d0d6e939ba70 | 61 | //Creates a radio object |
Vanger | 0:d9fd19c8ca39 | 62 | Cellular* radio = CellularFactory::create(io); |
Vanger | 2:d0d6e939ba70 | 63 | |
Vanger | 3:7fac2f012338 | 64 | if (! radio) { |
Vanger | 3:7fac2f012338 | 65 | logFatal("Failed to initialize radio"); |
Vanger | 3:7fac2f012338 | 66 | return 1; |
Vanger | 3:7fac2f012338 | 67 | } |
Vanger | 3:7fac2f012338 | 68 | |
Vanger | 4:ad889da9578c | 69 | Transport::setTransport(radio); |
Vanger | 4:ad889da9578c | 70 | |
Vanger | 2:d0d6e939ba70 | 71 | //Set radio APN |
Vanger | 1:1f5c9497a125 | 72 | for (int i = 0; i < 10; i++) { |
Vanger | 1:1f5c9497a125 | 73 | if (i >= 10) { |
Vanger | 1:1f5c9497a125 | 74 | logError("Failed to set APN\n"); |
Vanger | 1:1f5c9497a125 | 75 | } |
Vanger | 1:1f5c9497a125 | 76 | if (radio->setApn(APN) == MTS_SUCCESS) { |
Vanger | 1:1f5c9497a125 | 77 | logInfo("Successfully set APN\n"); |
Vanger | 1:1f5c9497a125 | 78 | break; |
Vanger | 1:1f5c9497a125 | 79 | } else { |
Vanger | 1:1f5c9497a125 | 80 | wait(1); |
Vanger | 1:1f5c9497a125 | 81 | } |
Vanger | 1:1f5c9497a125 | 82 | } |
Vanger | 0:d9fd19c8ca39 | 83 | |
Vanger | 1:1f5c9497a125 | 84 | //Delete any previously received SMS messages |
Vanger | 1:1f5c9497a125 | 85 | for (int i = 0; i < 10; i++) { |
Vanger | 1:1f5c9497a125 | 86 | if (i >= 10) { |
Vanger | 1:1f5c9497a125 | 87 | logError("Failed to delete SMS messages\n"); |
Vanger | 1:1f5c9497a125 | 88 | } |
Vanger | 1:1f5c9497a125 | 89 | if (radio->deleteAllReceivedSms() == MTS_SUCCESS) { |
Vanger | 1:1f5c9497a125 | 90 | logInfo("Deleted all SMS messages\n"); |
Vanger | 1:1f5c9497a125 | 91 | break; |
Vanger | 1:1f5c9497a125 | 92 | } else { |
Vanger | 1:1f5c9497a125 | 93 | wait(1); |
Vanger | 1:1f5c9497a125 | 94 | } |
Vanger | 1:1f5c9497a125 | 95 | } |
Vanger | 0:d9fd19c8ca39 | 96 | |
Vanger | 1:1f5c9497a125 | 97 | // Send SMS message to phone |
Vanger | 1:1f5c9497a125 | 98 | for (int i = 1; i < 10; i++) { |
Vanger | 1:1f5c9497a125 | 99 | if(radio->sendSMS(txtmsg) == MTS_SUCCESS) { |
Vanger | 2:d0d6e939ba70 | 100 | logInfo("Sent SMS successfully:<%s>\n", txtmsg.message.c_str()); |
Vanger | 1:1f5c9497a125 | 101 | break; |
Vanger | 1:1f5c9497a125 | 102 | } else { |
Vanger | 2:d0d6e939ba70 | 103 | logError("Failed to send SMS<%s>\n", txtmsg.message.c_str()); |
Vanger | 1:1f5c9497a125 | 104 | } |
Vanger | 1:1f5c9497a125 | 105 | } |
Vanger | 0:d9fd19c8ca39 | 106 | |
Vanger | 3:7fac2f012338 | 107 | //Checking for received SMS messages |
Vanger | 3:7fac2f012338 | 108 | while (true) { |
Vanger | 1:1f5c9497a125 | 109 | logInfo("Checking for received messages"); |
Vanger | 1:1f5c9497a125 | 110 | vector<Cellular::Sms> recv = radio->getReceivedSms(); |
Vanger | 1:1f5c9497a125 | 111 | if(recv.size() > 0) { |
Vanger | 1:1f5c9497a125 | 112 | int size = recv.size(); |
Vanger | 1:1f5c9497a125 | 113 | for (int i = 0; i < size; i++) { |
Vanger | 1:1f5c9497a125 | 114 | 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 | 115 | } |
Vanger | 1:1f5c9497a125 | 116 | } |
Vanger | 3:7fac2f012338 | 117 | |
Vanger | 3:7fac2f012338 | 118 | if(radio->deleteOnlyReceivedReadSms() != MTS_SUCCESS) { |
Vanger | 3:7fac2f012338 | 119 | logError("Failed to delete received and read SMS messages"); |
Vanger | 3:7fac2f012338 | 120 | } |
Vanger | 1:1f5c9497a125 | 121 | wait(10); |
Vanger | 1:1f5c9497a125 | 122 | } |
Vanger | 0:d9fd19c8ca39 | 123 | |
Vanger | 0:d9fd19c8ca39 | 124 | return 0; |
Vanger | 0:d9fd19c8ca39 | 125 | } |