Vodafone Test Suite

Dependencies:   mbed-rtos mbed HTTPClient VodafoneUSBModem

Committer:
ashleymills
Date:
Tue Oct 30 15:49:40 2012 +0000
Revision:
64:ef77cb252ed6
Parent:
62:e4a094aabbbc
Child:
65:ef3357b6ce97
mbed lib updated, updated test 51

Who changed what in which revision?

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