Vodafone Test Suite

Dependencies:   mbed-rtos mbed HTTPClient VodafoneUSBModem

Revision:
4:1f8e079924ba
Parent:
3:28336c2e94e4
Child:
8:6c30647f75d7
Child:
9:3ff68422f4d7
--- a/Tests/Test50.h	Thu Aug 23 13:32:32 2012 +0000
+++ b/Tests/Test50.h	Thu Aug 23 15:41:20 2012 +0000
@@ -1,19 +1,83 @@
 #pragma once
-#include "VodafoneUSBModem.h"
-#include "LogHeader.h"
+#include "VodafoneTestCase.h"
 class Test50 : public VodafoneTestCase {
    public:
       Test50(VodafoneUSBModem *m) : VodafoneTestCase(m) {
-         
+         _smsLen = 32;
+         _numberLen = 16;
+      }
+      
+      virtual void setupTest() {
+         allocStorage();
+      }
+      
+      virtual bool endTest(bool state) {
+         freeStorage();
+         return state;
       }
       
       virtual bool runTest() {
-         LOG("Starting SMS-Socket loop soak test.");
+         size_t smCount;
+         LOG("Getting MSISDN");
+         _modem->sendUSSD("*#100#",_ownNumber,_numberLen);
+         LOG("Got  MSISDN %s",_ownNumber);
+         for(int i=0; i<5; i++) {
+            LOG("Creating random string");
+            createRandomString(_smsOut,_smsLen);
+            LOG("Created: %s",_smsOut);
+            if(_modem->sendSM(_ownNumber,_smsOut)==0) {
+               LOG("Sent short message");
+            }
+            bool gotMessage = false;
+            while(!gotMessage) {
+               if(_modem->getSMCount(&smCount)!=0) {
+                  LOG("Faiure getting SM count");
+                  return false;
+               } else {
+                  //LOG("Got SMCount (%d)",smCount);
+               }
+               
+               if(smCount>0) {
+                  if(_modem->getSM(_senderNumber,_smsIn,_smsLen)!=0) {
+                     LOG("Failure getting SM");
+                     return false;
+                  }
+                  LOG("Got SMS: %s",_smsIn);
+                  gotMessage = true;
+               }
+               Thread::wait(50);
+            }
+         }
          
-         return true; 
+         return true;
       }
       
-   protected:
-      VodafoneUSBModem *_modem;
+   private:
+      void createRandomString(char *target, int len) {
+         for(int i=0; i<len; i++) {
+            target[i] = 65+rand()%32;
+         }
+         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;
 };
\ No newline at end of file