Integrating the ublox LISA C200 modem

Fork of SprintUSBModemHTTPClientTest by Donatien Garnier

Committer:
sam_grove
Date:
Tue Oct 08 00:08:22 2013 +0000
Revision:
21:3f45e53afe4f
Parent:
20:39772b740985
Added http client test. Return from post seems to be a bit wonky but haven't looked closely at this

Who changed what in which revision?

UserRevisionLine numberNew contents of line
sam_grove 20:39772b740985 1
donatien 0:43ee25ebfe6b 2 #include "mbed.h"
donatien 0:43ee25ebfe6b 3 #include "SprintUSBModem.h"
donatien 0:43ee25ebfe6b 4 #include "HTTPClient.h"
sam_grove 14:cd53f77f8afe 5 #include "Websocket.h"
donatien 0:43ee25ebfe6b 6
sam_grove 20:39772b740985 7 void websocketTest(void const*)
donatien 0:43ee25ebfe6b 8 {
mike.pulice@proxy-usa.com 7:655438fd019f 9 SprintUSBModem modem(p18, true, 1);
sam_grove 21:3f45e53afe4f 10 char msg[2048] = {0};
donatien 0:43ee25ebfe6b 11
sam_grove 20:39772b740985 12 // Using C16-C20 make sure to connect mbed p18 to J2 pin 16
donatien 0:43ee25ebfe6b 13 modem.power(true);
donatien 0:43ee25ebfe6b 14 int ret = modem.connect();
donatien 0:43ee25ebfe6b 15 if(ret)
donatien 0:43ee25ebfe6b 16 {
sam_grove 21:3f45e53afe4f 17 error("Modem connect failed: %s line %d", __PRETTY_FUNCTION__ , __LINE__);
donatien 0:43ee25ebfe6b 18 }
sam_grove 20:39772b740985 19
sam_grove 14:cd53f77f8afe 20 // See the output on http://sockets.mbed.org/sg_test/viewer
sam_grove 14:cd53f77f8afe 21 Websocket ws("ws://sockets.mbed.org:443/ws/sg_test/rw");
sam_grove 14:cd53f77f8afe 22 ws.connect();
sam_grove 20:39772b740985 23 for(int i=0; i<0x7fffffff; ++i)
sam_grove 14:cd53f77f8afe 24 {
sam_grove 14:cd53f77f8afe 25 // create json string with acc/tmp data
sam_grove 20:39772b740985 26 sprintf(msg, "Testing mbed Websockets Loop: %d", i);
sam_grove 20:39772b740985 27 ws.send(msg);
sam_grove 19:f1d893c651e5 28 wait(0.5f);
sam_grove 20:39772b740985 29 memset(msg, 0, 2048);
sam_grove 20:39772b740985 30
sam_grove 20:39772b740985 31 if (ws.read(msg))
sam_grove 14:cd53f77f8afe 32 {
sam_grove 20:39772b740985 33 printf("rcv: %s\r\n", msg);
sam_grove 14:cd53f77f8afe 34 }
sam_grove 20:39772b740985 35 else
sam_grove 20:39772b740985 36 {
sam_grove 20:39772b740985 37 printf("Loop %d ws.read() returns 0\n", i);
sam_grove 20:39772b740985 38 }
donatien 0:43ee25ebfe6b 39 }
donatien 0:43ee25ebfe6b 40
sam_grove 20:39772b740985 41 ws.close();
donatien 0:43ee25ebfe6b 42
sam_grove 20:39772b740985 43 modem.disconnect();
donatien 0:43ee25ebfe6b 44 modem.power(false);
donatien 0:43ee25ebfe6b 45
sam_grove 20:39772b740985 46 puts("Powered off Test Complete");
sam_grove 20:39772b740985 47 while(1);
donatien 0:43ee25ebfe6b 48 }
donatien 0:43ee25ebfe6b 49
sam_grove 21:3f45e53afe4f 50 void httpTest(void const*)
sam_grove 21:3f45e53afe4f 51 {
sam_grove 21:3f45e53afe4f 52 SprintUSBModem modem(p18, true, 1);
sam_grove 21:3f45e53afe4f 53 char const *URL_GET = "http://mbed.org/media/uploads/donatien/hello.txt";
sam_grove 21:3f45e53afe4f 54 char const *URL_POST = "http://httpbin.org/post";
sam_grove 21:3f45e53afe4f 55 char msg[2048] = {0};
sam_grove 21:3f45e53afe4f 56 char buf[32] = {0};
sam_grove 21:3f45e53afe4f 57
sam_grove 21:3f45e53afe4f 58 // Using C16-C20 make sure to connect mbed p18 to J2 pin 16
sam_grove 21:3f45e53afe4f 59 modem.power(true);
sam_grove 21:3f45e53afe4f 60 int ret = modem.connect();
sam_grove 21:3f45e53afe4f 61 if(ret)
sam_grove 21:3f45e53afe4f 62 {
sam_grove 21:3f45e53afe4f 63 error("Modem connect failed: %s %d", __PRETTY_FUNCTION__ , __LINE__);
sam_grove 21:3f45e53afe4f 64 }
sam_grove 21:3f45e53afe4f 65
sam_grove 21:3f45e53afe4f 66 HTTPClient http;
sam_grove 21:3f45e53afe4f 67 HTTPMap map;
sam_grove 21:3f45e53afe4f 68 HTTPText text(msg, 512);
sam_grove 21:3f45e53afe4f 69
sam_grove 21:3f45e53afe4f 70 for(int i=0; i<0x7fffffff; ++i)
sam_grove 21:3f45e53afe4f 71 {
sam_grove 21:3f45e53afe4f 72 //GET data
sam_grove 21:3f45e53afe4f 73 ret = http.get(URL_GET, msg, 2048);
sam_grove 21:3f45e53afe4f 74 if (!ret)
sam_grove 21:3f45e53afe4f 75 {
sam_grove 21:3f45e53afe4f 76 printf("%s\n", msg);
sam_grove 21:3f45e53afe4f 77 }
sam_grove 21:3f45e53afe4f 78 else
sam_grove 21:3f45e53afe4f 79 {
sam_grove 21:3f45e53afe4f 80 printf("%s\n", msg);
sam_grove 21:3f45e53afe4f 81 error("http.get() = %d \t HTTP return code = %d \t %s, line %d\n", ret, http.getHTTPResponseCode(), __PRETTY_FUNCTION__, __LINE__);
sam_grove 21:3f45e53afe4f 82 }
sam_grove 21:3f45e53afe4f 83
sam_grove 21:3f45e53afe4f 84 sprintf(buf, "%d", i);
sam_grove 21:3f45e53afe4f 85 map.put("Loop count", buf);
sam_grove 21:3f45e53afe4f 86 map.put("mbed", "connect");
sam_grove 21:3f45e53afe4f 87
sam_grove 21:3f45e53afe4f 88 //POST data
sam_grove 21:3f45e53afe4f 89 ret = http.post(URL_POST, map, &text);
sam_grove 21:3f45e53afe4f 90 if (0 == ret)
sam_grove 21:3f45e53afe4f 91 {
sam_grove 21:3f45e53afe4f 92 printf("%s\n", msg);
sam_grove 21:3f45e53afe4f 93 }
sam_grove 21:3f45e53afe4f 94 else
sam_grove 21:3f45e53afe4f 95 {
sam_grove 21:3f45e53afe4f 96 error("http.post() = %d \t HTTP return code = %d \t %s, line %d\n", ret, http.getHTTPResponseCode(), __PRETTY_FUNCTION__, __LINE__);
sam_grove 21:3f45e53afe4f 97 }
sam_grove 21:3f45e53afe4f 98 map.clear();
sam_grove 21:3f45e53afe4f 99 memset(msg, 0, 2048);
sam_grove 21:3f45e53afe4f 100 }
sam_grove 21:3f45e53afe4f 101
sam_grove 21:3f45e53afe4f 102 modem.disconnect();
sam_grove 21:3f45e53afe4f 103 modem.power(false);
sam_grove 21:3f45e53afe4f 104
sam_grove 21:3f45e53afe4f 105 puts("Powered off Test Complete");
sam_grove 21:3f45e53afe4f 106 while(1);
sam_grove 21:3f45e53afe4f 107 }
sam_grove 21:3f45e53afe4f 108
donatien 0:43ee25ebfe6b 109 int main()
donatien 0:43ee25ebfe6b 110 {
donatien 0:43ee25ebfe6b 111
sam_grove 21:3f45e53afe4f 112 // Thread task(websocketTest, NULL, osPriorityNormal, 1024 * 5);
sam_grove 21:3f45e53afe4f 113 Thread task(httpTest, NULL, osPriorityNormal, 1024 * 5);
sam_grove 20:39772b740985 114
sam_grove 20:39772b740985 115 DigitalOut led(LED1);
sam_grove 20:39772b740985 116
sam_grove 20:39772b740985 117 while(1)
sam_grove 20:39772b740985 118 {
sam_grove 20:39772b740985 119 led = !led;
sam_grove 20:39772b740985 120 Thread::wait(1000);
sam_grove 20:39772b740985 121 }
sam_grove 20:39772b740985 122
sam_grove 20:39772b740985 123 return 0;
donatien 0:43ee25ebfe6b 124 }