Vodafone Test Suite

Dependencies:   mbed-rtos mbed HTTPClient VodafoneUSBModem

Tests/Test13.h

Committer:
ashleymills
Date:
2014-01-29
Revision:
74:e52ac9624f7f
Parent:
66:6b00a764e549

File content as of revision 74:e52ac9624f7f:

#pragma once
#include "VodafoneTestCase.h"
//#define __DEBUG__ 1

// this test case will wait to send an SMS from the modem.
// if the method that sends a message returns an error it will fail.
// it will report the test as failed if any of the above happens.
// it does not wait after it has succesfully sent an SMS.
extern const char* gTest13Description;

class Test13 : public VodafoneTestCase {
   public: 

      Test13(VodafoneUSBModem *m) : VodafoneTestCase(m) {}
      
   private:
   
      virtual bool executeTest() {
         LOG(gTest13Description);
         LinkMonitor::REGISTRATION_STATE regState = LinkMonitor::REGISTRATION_STATE_UNKNOWN;
         LinkMonitor::BEARER bearer = LinkMonitor::BEARER_UNKNOWN;
         int rssi = -1000;
         if(_modem->getLinkState(&rssi, &regState, &bearer)==0) 
            {
                if(rssi==-1000) 
                    { LOG("Checking signal strength - RSSI: Error."); return false;} 
               else 
                { LOG("Signal strength is: RSSI: %d",rssi);}
            
            
               switch(regState) {
                  case LinkMonitor::REGISTRATION_STATE_UNKNOWN:
                     LOG("regState: UNKNOWN. Failing.");
                     return false;
                  case LinkMonitor::REGISTRATION_STATE_REGISTERING:
                     LOG("regState: REGISTERING");
                     break;
                  case LinkMonitor::REGISTRATION_STATE_DENIED:
                     LOG("regState: DENIED");
                     return false;
                  case LinkMonitor::REGISTRATION_STATE_NO_SIGNAL:
                     LOG("regState: NO SIGNAL");
                     return false;
                  case LinkMonitor::REGISTRATION_STATE_HOME_NETWORK:
                     LOG("regState: HOME NETWORK");
                     break;
                  case LinkMonitor::REGISTRATION_STATE_ROAMING:
                     LOG("regState: ROAMING");
                     break;
                  default:
                     LOG("regState: ERROR. Failing.");
                     return false;
               }
            }     
      
         LOG("Creating GSM test buffer");
         LOG("Sending SMS:' %s ' to test phone: %s , waiting for response.", gIrregularMessage, gTestPhoneNumber);
         
         // create a buffer and send each character until you can send them all
         char shortBuffer[30];
         
         // XXX What are you doing here nick? What is the size of gIrregularMessage? It's a pointer!! You're looking for strlen
         // And gIrregularMessage is longer than shortBuffer so you are goign to kill someone's memory
         for (int i=0; i < sizeof(gIrregularMessage); i++)
            {
                shortBuffer[i] = gIrregularMessage[i];
                LOG("Buffer is now: %s", shortBuffer);
                LOG("Irregular message is %s", gIrregularMessage);
                int ret = _modem->sendSM(gTestPhoneNumber, shortBuffer);

            }
         
         int ret = _modem->sendSM(gTestPhoneNumber, gIrregularMessage);
         
         if (ret)
            {
                LOG("Error in sending the SMS message. The return values is: %d", ret);
                
                switch(ret){
                    case(NET_INVALID): LOG("Error message is: 'phone number is invalid size, must be less than 16 digits'.");break;
                    case(NET_PROTOCOL): LOG("Error message is: 'protocol error from the modem'.");break;
                    default: LOG("Undefined error message.");         

                }
                return false;
            }
         return true;
                  
      }

      char gsm03dot38CharacterSet[127];


};