Vodafone Test Suite

Dependencies:   mbed-rtos mbed HTTPClient VodafoneUSBModem

Tests/Test50.h

Committer:
nherriot
Date:
2012-08-29
Revision:
13:8b69853966f8
Parent:
12:b50d37429dff
Child:
16:c89d426c6175

File content as of revision 13:8b69853966f8:

#pragma once
#include "VodafoneTestCase.h"
class Test50 : public VodafoneTestCase {
   public:
      Test50(VodafoneUSBModem *m, int tcNumber) : VodafoneTestCase(m, tcNumber) {
         _smsLen = 32;
         _numberLen = 16;
      }
      
      virtual void setupTest() {
         allocStorage();
      }
      
      virtual void endTest() {
         freeStorage();
      }
      
      virtual bool runTest() {
         int numIterations = 10;
         size_t smCount;
         LOG("Test %d waiting for an SMS message...", _testCaseNumber);
         LOG("Getting MSISDN");
         _modem->sendUSSD("*#100#",_ownNumber,_numberLen);
         LOG("Got  MSISDN %s",_ownNumber);
         for(int i=0; i<numIterations; i++) {
            createRandomString(_smsOut,_smsLen);
            if(_modem->sendSM(_ownNumber,_smsOut)!=0) {
               LOG("Error sending short message");
            }
            LOG("Created: %s",_smsOut);
            bool gotMessage = false;
            Timer t;
            t.start();
            while(!gotMessage && t.read_ms()<25000) {
               if(_modem->getSMCount(&smCount)!=0) {
                  LOG("Faiure getting SM count");
                  return false;
               }
               
               if(smCount>0) {
                  if(_modem->getSM(_senderNumber,_smsIn,_smsLen)!=0) {
                     LOG("Failure getting SM");
                     return false;
                  }
                  LOG("Got SMS: %s",_smsIn);
                  if(strcmp(_smsIn,_smsOut)!=0) {
                     LOG("FAIL: strings did not match");
                     return false;
                  }
                  gotMessage = true;
               }
               Thread::wait(50);
            }
            if(!gotMessage) {
               LOG("FAIL: timeout on waiting for SMS");
               return false;
            }
         }
         
         return true;
      }
      
   private:
      void createRandomString(char *target, int len) {
         for(int i=0; i<len; i++) {
            target[i] = 65+rand()%16;
         }
         target[len-1] = 0x00;
      }
      
      void allocStorage() {
         _ownNumber    = (char*)malloc(_numberLen*sizeof(char));
         _senderNumber = (char*)malloc(_numberLen*sizeof(char));
         _smsOut       = (char*)malloc(_smsLen*sizeof(char));
         _smsIn        = (char*)malloc(_smsLen*sizeof(char));
      }
      
      void freeStorage() {
         free(_ownNumber);
         free(_senderNumber);
         free(_smsOut);
         free(_smsIn);
      }
      
      char* _ownNumber;
      char* _senderNumber;
      char* _smsOut;
      char* _smsIn;
      int _smsLen;
      int _numberLen;
};