Vodafone Test Suite
Dependencies: mbed-rtos mbed HTTPClient VodafoneUSBModem
Diff: main.cpp
- Revision:
- 1:0d63e4db8503
- Parent:
- 0:6d8a9f4b2cc6
- Child:
- 2:ea883307d02f
--- a/main.cpp Wed Aug 22 08:48:49 2012 +0000 +++ b/main.cpp Wed Aug 22 10:17:54 2012 +0000 @@ -1,152 +1,47 @@ -#define __DEBUG__ 4 //Maximum verbosity -#ifndef __MODULE__ -#define __MODULE__ "net_3g_basic_http_test.cpp" -#endif - -#include "mbed.h" -#include "socket/bsd_socket.h" - -#include "rtos.h" - -#include "VodafoneUSBModem.h" - -DigitalOut led1(LED1); -DigitalOut led2(LED2); -DigitalOut led3(LED3); -DigitalOut led4(LED4); - -extern "C" void HardFault_Handler() -{ - error("Hard Fault!\n"); -} - -void test(void const*) { - VodafoneUSBModem modem; - // socket stuff - int sockfd; - uint16_t port = 3232; - struct sockaddr_in serverAddress; - struct hostent *server; - char urlBuffer[128]; - int urlBufferLength = 128; - - // declare space for phone number and message storage - char numBuffer[20], msgBuffer[512]; - size_t numSMS; // variable to track number of received messages - - DBG("Hello!"); - - modem.sendUSSD("*#100#", msgBuffer, 512); - - DBG("ussd: %s",msgBuffer); - - - int ret = modem.connect("internet","web","web"); - - if (ret == OK) { - int count = 30; - while(1) { - int rssi; - LinkMonitor::REGISTRATION_STATE regState; - LinkMonitor::BEARER bearer; - - modem.getLinkState(&rssi, ®State, &bearer); - DBG("RSSI: %d dBm; Reg state: %d; Bearer: %d", rssi, regState, bearer); - - DBG("Checking SM count"); - - // retrieve the short message count into numSMS - if(modem.getSMCount(&numSMS)==OK) { - DBG("getSMCount success"); - DBG("numSMS: %d",numSMS); - // check if any short messages have been received - if(numSMS>0) { - DBG("SM count > 0"); - // get the oldest short message in the queue - if(modem.getSM(numBuffer,msgBuffer,256)==OK) { - DBG("message received"); - DBG("num: %s",numBuffer); - DBG("msg: %s",msgBuffer); - - // connect to socket and push message - - // create the socket - if((sockfd=::socket(AF_INET,SOCK_STREAM,0))<0) { DBG("Error opening socket\r\n"); } else { DBG("Socket open\r\n"); } - - // create the socket address - std::memset(&serverAddress, 0, sizeof(struct sockaddr_in)); - if((server=::gethostbyname("m2mthings.com"))==NULL) { - DBG("Error resolving address, setting manually."); - serverAddress.sin_addr.s_addr = inet_addr("109.74.199.96"); - } else { - DBG("Address resolved OK"); - memcpy((char*)&serverAddress.sin_addr.s_addr, (char*)server->h_addr_list[0], server->h_length); - } - // set server address family - serverAddress.sin_family = AF_INET; - // set server port - serverAddress.sin_port = htons(port); - - // do socket connect - DBG("Connecting socket to %s:%d", inet_ntoa(serverAddress.sin_addr), ntohs(serverAddress.sin_port)); - if((ret=::connect(sockfd, (const struct sockaddr *)&serverAddress, sizeof(serverAddress)))<0) { - ::close(sockfd); - DBG("Could not connect"); - } else { - DBG("Connection OK"); - } - - DBG("Sending password"); - ::write(sockfd,"hi3h892!",8); - - ret = ::recv(sockfd,urlBuffer,urlBufferLength,0); - if (ret<0) { - DBG("Error receiving ACK."); - } else { - DBG("Received(%d): %s",urlBufferLength,urlBuffer); - modem.sendSM(numBuffer,urlBuffer); - } - - ::close(sockfd); - - - } - } - } - // wait 500ms - Thread::wait(1000); - } - - } - - modem.disconnect(); - DBG("Disconnected"); - - while (1) { - Thread::wait(100); - } -} - -void keepAlive(void const*) -{ - while (1) - { - led1 = !led1; - Thread::wait(500); - led1 = !led1; - Thread::wait(30000); - } -} - - -int main() { - - DBG_INIT(); - DBG_SET_SPEED(115200); - DBG_SET_NEWLINE("\r\n"); - - Thread testTask(test, NULL, osPriorityNormal, 1024 * 5); - keepAlive(NULL); - - return 0; +#define __DEBUG__ 4 //Maximum verbosity +#ifndef __MODULE__ +#define __MODULE__ "net_3g_basic_http_test.cpp" +#endif + +#include "mbed.h" +#include "socket/bsd_socket.h" +#include "rtos.h" +#include "VodafoneUSBModem.h" +#include "VodafoneTestCase.h" +#include "ExampleTest.h" + +DigitalOut led1(LED1); +DigitalOut led2(LED2); +DigitalOut led3(LED3); +DigitalOut led4(LED4); + +extern "C" void HardFault_Handler() { error("Hard Fault!\n"); } + +void test(void const*) { + VodafoneUSBModem modem; + + + ExampleTest t(&modem); + t.runTest(); + + while(1) { + Thread::wait(1000); + } +} + +int main() { + + DBG_INIT(); + DBG_SET_SPEED(115200); + DBG_SET_NEWLINE("\r\n"); + + Thread testTask(test, NULL, osPriorityNormal, 1024 * 5); + // this thread just waits and blinks leds periodically + while(1) { + led1 = !led1; + Thread::wait(500); + led1 = !led1; + Thread::wait(30000); + } + return 0; } \ No newline at end of file