Vodafone Test Suite
Dependencies: mbed-rtos mbed HTTPClient VodafoneUSBModem
Tests/Test51.h@60:7efce4a3c26f, 2012-10-23 (annotated)
- 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?
User | Revision | Line number | New 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 | }; |