ME910 support
Fork of MTS-Cellular by
Test/TestSMS.h
- Committer:
- mfiore
- Date:
- 2014-06-17
- Revision:
- 20:7cc2f55fb16b
- Parent:
- 18:fa0d8120f81f
- Child:
- 21:916ef2da10f1
File content as of revision 20:7cc2f55fb16b:
#ifndef TESTSMS_H #define TESTSMS_H #include "mtsas.h" #include <string> #include <vector> using namespace mts; class TestSMS : public TestCollection { public: TestSMS(); virtual void run(); private: MTSSerialFlowControl* io; Cellular* radio; }; const char APN[] = ""; TestSMS::TestSMS() : TestCollection("TestSMS") {} void TestSMS::run() { string number; string response; vector<string> parts; vector<Cellular::Sms> rmessages; vector<string> smessages; smessages.push_back("testing SMS 1"); smessages.push_back("testing SMS 2"); smessages.push_back("This is a longer SMS message. It is the third and final message that will be sent."); MTSLog::setLogLevel(MTSLog::TRACE_LEVEL); Test::start("Setup"); io = new MTSSerialFlowControl(D8, D2, D3, D6); io->baud(115200); radio = CellularFactory::create(io); if (! radio) { logError("radio is NULL"); Test::assertTrue(false); } radio->configureSignals(D4, D7, RESET); for (int i = 0; i < 10; i++) { if (i >= 10) { Test::assertTrue(false); } if (radio->setApn(APN) == SUCCESS) { break; } else { wait(1); } } Test::end(); Test::start("Send SMS"); logInfo("finding my phone number"); while (true) { response = radio->sendCommand("AT+CNUM", 1000); if (response.find("ERROR") == string::npos && response.find("error") == string::npos) { break; } wait(1); } if (response.find("My Number") != string::npos) { parts = Text::split(response, ","); number = parts[1]; size_t fquote = number.find("\""); size_t bquote = number.rfind("\""); number = number.substr(fquote + 1, bquote - 1); logInfo("my phone number: [%s]", number.c_str()); } else { Test::assertTrue(false); } Test::assertTrue(radio->sendSMS(number, smessages[0]) == SUCCESS); Test::assertTrue(radio->sendSMS(number, smessages[1]) == SUCCESS); Test::end(); wait(30); Test::start("Receive SMS"); rmessages = radio->getReceivedSms(); Test::assertTrue(rmessages.size() == 2); for (int i = 0; i < rmessages.size(); i++) { Test::assertTrue(rmessages[i].message == smessages[i]); } Test::end(); Test::start("Send another SMS"); Test::assertTrue(radio->sendSMS(number, smessages[2]) == SUCCESS); Test::end(); wait(30); /* the SMS that we haven't "read" yet should not get deleted */ Test::start("Delete Read SMS Messages"); Test::assertTrue(radio->deleteOnlyReceivedReadSms() == SUCCESS); Test::assertTrue(radio->getReceivedSms().size() == 1); Test::end(); Test::start("Receive another SMS"); rmessages = radio->getReceivedSms(); Test::assertTrue(rmessages.size() == 1); Test::assertTrue(rmessages[0].message == smessages[2]); Test::end(); Test::start("Delete All SMS Messages"); Test::assertTrue(radio->deleteAllReceivedSms() == SUCCESS); Test::assertTrue(radio->getReceivedSms().size() == 0); Test::end(); } #endif