Vodafone Test Suite

Dependencies:   mbed-rtos mbed HTTPClient VodafoneUSBModem

Committer:
ashleymills
Date:
Tue Oct 23 14:22:53 2012 +0000
Revision:
60:7efce4a3c26f
Child:
61:4dd870ad7749
Added new SMS bulk test (incomplete).

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ashleymills 60:7efce4a3c26f 1 #pragma once
ashleymills 60:7efce4a3c26f 2 #include "VodafoneTestCase.h"
ashleymills 60:7efce4a3c26f 3
ashleymills 60:7efce4a3c26f 4 extern const char* gTest51Description;
ashleymills 60:7efce4a3c26f 5
ashleymills 60:7efce4a3c26f 6 class Test51 : public VodafoneTestCase {
ashleymills 60:7efce4a3c26f 7 public:
ashleymills 60:7efce4a3c26f 8 Test51(VodafoneUSBModem *m) : VodafoneTestCase(m) {
ashleymills 60:7efce4a3c26f 9 _smsLen = 32;
ashleymills 60:7efce4a3c26f 10 _smsMaxSize = 160; // max size of SMS using
ashleymills 60:7efce4a3c26f 11 _numberLen = 16;
ashleymills 60:7efce4a3c26f 12 }
ashleymills 60:7efce4a3c26f 13
ashleymills 60:7efce4a3c26f 14 private:
ashleymills 60:7efce4a3c26f 15
ashleymills 60:7efce4a3c26f 16 virtual void setupTest() {
ashleymills 60:7efce4a3c26f 17 allocStorage();
ashleymills 60:7efce4a3c26f 18 }
ashleymills 60:7efce4a3c26f 19
ashleymills 60:7efce4a3c26f 20 virtual void endTest() {
ashleymills 60:7efce4a3c26f 21 freeStorage();
ashleymills 60:7efce4a3c26f 22 }
ashleymills 60:7efce4a3c26f 23
ashleymills 60:7efce4a3c26f 24 virtual bool executeTest() {
ashleymills 60:7efce4a3c26f 25 // locals
ashleymills 60:7efce4a3c26f 26 int smsToSend = 10, mailBoxSize = 5;
ashleymills 60:7efce4a3c26f 27 size_t smCount, oldSMCount;
ashleymills 60:7efce4a3c26f 28 Timer t;
ashleymills 60:7efce4a3c26f 29
ashleymills 60:7efce4a3c26f 30 LOG(gTest51Description);
ashleymills 60:7efce4a3c26f 31
ashleymills 60:7efce4a3c26f 32 // Clear out the SMS mail box before we run this test.
ashleymills 60:7efce4a3c26f 33 // loop 3 times with a 1/2 second break in between each
ashleymills 60:7efce4a3c26f 34 LOG("... Clearing out SMS mail box first");
ashleymills 60:7efce4a3c26f 35 for(int j=0; j<3; j++) {
ashleymills 60:7efce4a3c26f 36 if(_modem->getSMCount(&smCount)!=0) {
ashleymills 60:7efce4a3c26f 37 LOG("Faiure getting SM count");
ashleymills 60:7efce4a3c26f 38 return false;
ashleymills 60:7efce4a3c26f 39 }
ashleymills 60:7efce4a3c26f 40
ashleymills 60:7efce4a3c26f 41 for(int i=0; i<smCount; i++) {
ashleymills 60:7efce4a3c26f 42 if(_modem->getSM(_senderNumber,_smsJunkBuffer,_smsMaxSize)!=0) {
ashleymills 60:7efce4a3c26f 43 LOG("Strange! The SMS count is bigger than zero but I can't fetch the SMS?");
ashleymills 60:7efce4a3c26f 44 return false;
ashleymills 60:7efce4a3c26f 45 }
ashleymills 60:7efce4a3c26f 46 LOG("Deleting SMS: \"%s\"",_smsJunkBuffer);
ashleymills 60:7efce4a3c26f 47 }
ashleymills 60:7efce4a3c26f 48 Thread::wait(500);
ashleymills 60:7efce4a3c26f 49 }
ashleymills 60:7efce4a3c26f 50
ashleymills 60:7efce4a3c26f 51 // get own number
ashleymills 60:7efce4a3c26f 52 LOG("Getting MSISDN");
ashleymills 60:7efce4a3c26f 53 _modem->sendUSSD("*#100#",_ownNumber,_numberLen);
ashleymills 60:7efce4a3c26f 54 LOG("Got MSISDN %s",_ownNumber);
ashleymills 60:7efce4a3c26f 55
ashleymills 60:7efce4a3c26f 56 // send 50 SMS to self
ashleymills 60:7efce4a3c26f 57 for(int i=0; i<smsToSend; i++) {
ashleymills 60:7efce4a3c26f 58 if(i<mailBoxSize) {
ashleymills 60:7efce4a3c26f 59 sprintf(_smsOut,"A SMS %d",i);
ashleymills 60:7efce4a3c26f 60 } else {
ashleymills 60:7efce4a3c26f 61 sprintf(_smsOut,"B SMS %d",i);
ashleymills 60:7efce4a3c26f 62 }
ashleymills 60:7efce4a3c26f 63 if(_modem->sendSM(_ownNumber,_smsOut)!=0) {
ashleymills 60:7efce4a3c26f 64 LOG("Error sending short message");
ashleymills 60:7efce4a3c26f 65 return false;
ashleymills 60:7efce4a3c26f 66 } else {
ashleymills 60:7efce4a3c26f 67 LOG("Sent %d/%d: \"%s\"",i,_smsOut,smsToSend);
ashleymills 60:7efce4a3c26f 68 }
ashleymills 60:7efce4a3c26f 69 }
ashleymills 60:7efce4a3c26f 70 Thread::wait(5000);
ashleymills 60:7efce4a3c26f 71
ashleymills 60:7efce4a3c26f 72 // wait for 25 to arrive and then read them as quickly as possible
ashleymills 60:7efce4a3c26f 73 smCount = 0, oldSMCount = 0;
ashleymills 60:7efce4a3c26f 74 t.start();
ashleymills 60:7efce4a3c26f 75 // wait a maximum of 5 minutes
ashleymills 60:7efce4a3c26f 76 while(smCount<mailBoxSize&&t.read_ms()<300000) {
ashleymills 60:7efce4a3c26f 77 if(_modem->getSMCount(&smCount)!=0) {
ashleymills 60:7efce4a3c26f 78 LOG("Failure getting SM count");
ashleymills 60:7efce4a3c26f 79 return false;
ashleymills 60:7efce4a3c26f 80 } else {
ashleymills 60:7efce4a3c26f 81 if(smCount!=oldSMCount) {
ashleymills 60:7efce4a3c26f 82 LOG("smCount: %d",smCount);
ashleymills 60:7efce4a3c26f 83 oldSMCount = smCount;
ashleymills 60:7efce4a3c26f 84 }
ashleymills 60:7efce4a3c26f 85 }
ashleymills 60:7efce4a3c26f 86 Thread::wait(500);
ashleymills 60:7efce4a3c26f 87 }
ashleymills 60:7efce4a3c26f 88 if(smCount!=mailBoxSize) {
ashleymills 60:7efce4a3c26f 89 LOG("Timeout waiting for SMSs, got to %d",smCount);
ashleymills 60:7efce4a3c26f 90 return false;
ashleymills 60:7efce4a3c26f 91 }
ashleymills 60:7efce4a3c26f 92
ashleymills 60:7efce4a3c26f 93 LOG("dumping SMS");
ashleymills 60:7efce4a3c26f 94 while(smCount--) {
ashleymills 60:7efce4a3c26f 95 if(_modem->getSM(_senderNumber,_smsIn,_smsLen)!=0) {
ashleymills 60:7efce4a3c26f 96 LOG("Error reading SMS %d",smCount);
ashleymills 60:7efce4a3c26f 97 return false;
ashleymills 60:7efce4a3c26f 98 } else {
ashleymills 60:7efce4a3c26f 99 LOG("Got SMS: \"%s\" (%s)",_smsIn,_senderNumber);
ashleymills 60:7efce4a3c26f 100 }
ashleymills 60:7efce4a3c26f 101 }
ashleymills 60:7efce4a3c26f 102
ashleymills 60:7efce4a3c26f 103 // wait for next 25 to arrive and then read them as quickly as possible
ashleymills 60:7efce4a3c26f 104 smCount = 0, oldSMCount = 0;
ashleymills 60:7efce4a3c26f 105 t.start();
ashleymills 60:7efce4a3c26f 106 // wait a maximum of 5 minutes
ashleymills 60:7efce4a3c26f 107 while(smCount<mailBoxSize&&t.read_ms()<300000) {
ashleymills 60:7efce4a3c26f 108 if(_modem->getSMCount(&smCount)!=0) {
ashleymills 60:7efce4a3c26f 109 LOG("Failure getting SM count");
ashleymills 60:7efce4a3c26f 110 return false;
ashleymills 60:7efce4a3c26f 111 } else {
ashleymills 60:7efce4a3c26f 112 if(smCount!=oldSMCount) {
ashleymills 60:7efce4a3c26f 113 LOG("smCount: %d",smCount);
ashleymills 60:7efce4a3c26f 114 oldSMCount = smCount;
ashleymills 60:7efce4a3c26f 115 }
ashleymills 60:7efce4a3c26f 116 }
ashleymills 60:7efce4a3c26f 117 Thread::wait(500);
ashleymills 60:7efce4a3c26f 118 }
ashleymills 60:7efce4a3c26f 119 if(smCount!=mailBoxSize) {
ashleymills 60:7efce4a3c26f 120 LOG("Timeout waiting for SMSs, got to %d",smCount);
ashleymills 60:7efce4a3c26f 121 return false;
ashleymills 60:7efce4a3c26f 122 }
ashleymills 60:7efce4a3c26f 123
ashleymills 60:7efce4a3c26f 124 LOG("dumping SMS");
ashleymills 60:7efce4a3c26f 125 while(smCount--) {
ashleymills 60:7efce4a3c26f 126 if(_modem->getSM(_senderNumber,_smsIn,_smsLen)!=0) {
ashleymills 60:7efce4a3c26f 127 LOG("Error reading SMS %d",smCount);
ashleymills 60:7efce4a3c26f 128 return false;
ashleymills 60:7efce4a3c26f 129 } else {
ashleymills 60:7efce4a3c26f 130 LOG("Got SMS: \"%s\" (%s)",_smsIn,_senderNumber);
ashleymills 60:7efce4a3c26f 131 }
ashleymills 60:7efce4a3c26f 132 }
ashleymills 60:7efce4a3c26f 133
ashleymills 60:7efce4a3c26f 134 return true;
ashleymills 60:7efce4a3c26f 135 }
ashleymills 60:7efce4a3c26f 136
ashleymills 60:7efce4a3c26f 137 void allocStorage() {
ashleymills 60:7efce4a3c26f 138 _ownNumber = (char*)malloc(_numberLen*sizeof(char));
ashleymills 60:7efce4a3c26f 139 _senderNumber = (char*)malloc(_numberLen*sizeof(char));
ashleymills 60:7efce4a3c26f 140 _smsOut = (char*)malloc(_smsLen*sizeof(char));
ashleymills 60:7efce4a3c26f 141 _smsIn = (char*)malloc(_smsLen*sizeof(char));
ashleymills 60:7efce4a3c26f 142 _smsJunkBuffer= (char*)malloc(_smsMaxSize*sizeof(char));
ashleymills 60:7efce4a3c26f 143 }
ashleymills 60:7efce4a3c26f 144
ashleymills 60:7efce4a3c26f 145 void freeStorage() {
ashleymills 60:7efce4a3c26f 146 free(_ownNumber);
ashleymills 60:7efce4a3c26f 147 free(_senderNumber);
ashleymills 60:7efce4a3c26f 148 free(_smsOut);
ashleymills 60:7efce4a3c26f 149 free(_smsIn);
ashleymills 60:7efce4a3c26f 150 free(_smsJunkBuffer);
ashleymills 60:7efce4a3c26f 151 }
ashleymills 60:7efce4a3c26f 152
ashleymills 60:7efce4a3c26f 153 char* _ownNumber;
ashleymills 60:7efce4a3c26f 154 char* _senderNumber;
ashleymills 60:7efce4a3c26f 155 char* _smsOut;
ashleymills 60:7efce4a3c26f 156 char* _smsIn;
ashleymills 60:7efce4a3c26f 157 char* _smsJunkBuffer;
ashleymills 60:7efce4a3c26f 158 int _smsLen;
ashleymills 60:7efce4a3c26f 159 int _smsMaxSize;
ashleymills 60:7efce4a3c26f 160 int _numberLen;
ashleymills 60:7efce4a3c26f 161 };