Example demonstrating the use of the Vodafone USB Modem library with the HTTP Client

Dependencies:   HTTPClient VodafoneUSBModem mbed-rtos mbed

Fork of VodafoneK3770HTTPClientTestBeta by Donatien Garnier

Committer:
donatien
Date:
Thu May 31 16:06:19 2012 +0000
Revision:
0:f3f18ac13e0c
Child:
1:6ea9ac27702c

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
donatien 0:f3f18ac13e0c 1 /* net_3g_basic_http_test.cpp */
donatien 0:f3f18ac13e0c 2 /*
donatien 0:f3f18ac13e0c 3 Copyright (C) 2012 ARM Limited.
donatien 0:f3f18ac13e0c 4
donatien 0:f3f18ac13e0c 5 Permission is hereby granted, free of charge, to any person obtaining a copy of
donatien 0:f3f18ac13e0c 6 this software and associated documentation files (the "Software"), to deal in
donatien 0:f3f18ac13e0c 7 the Software without restriction, including without limitation the rights to
donatien 0:f3f18ac13e0c 8 use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
donatien 0:f3f18ac13e0c 9 of the Software, and to permit persons to whom the Software is furnished to do
donatien 0:f3f18ac13e0c 10 so, subject to the following conditions:
donatien 0:f3f18ac13e0c 11
donatien 0:f3f18ac13e0c 12 The above copyright notice and this permission notice shall be included in all
donatien 0:f3f18ac13e0c 13 copies or substantial portions of the Software.
donatien 0:f3f18ac13e0c 14
donatien 0:f3f18ac13e0c 15 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
donatien 0:f3f18ac13e0c 16 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
donatien 0:f3f18ac13e0c 17 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
donatien 0:f3f18ac13e0c 18 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
donatien 0:f3f18ac13e0c 19 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
donatien 0:f3f18ac13e0c 20 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
donatien 0:f3f18ac13e0c 21 SOFTWARE.
donatien 0:f3f18ac13e0c 22 */
donatien 0:f3f18ac13e0c 23
donatien 0:f3f18ac13e0c 24 #define __DEBUG__ 4 //Maximum verbosity
donatien 0:f3f18ac13e0c 25 #ifndef __MODULE__
donatien 0:f3f18ac13e0c 26 #define __MODULE__ "net_3g_basic_http_test.cpp"
donatien 0:f3f18ac13e0c 27 #endif
donatien 0:f3f18ac13e0c 28
donatien 0:f3f18ac13e0c 29 #include "core/fwk.h"
donatien 0:f3f18ac13e0c 30 #include "mbed.h"
donatien 0:f3f18ac13e0c 31
donatien 0:f3f18ac13e0c 32 #include "rtos.h"
donatien 0:f3f18ac13e0c 33
donatien 0:f3f18ac13e0c 34 #include "if/VodafoneK3770.h"
donatien 0:f3f18ac13e0c 35 #include "HTTPClient.h"
donatien 0:f3f18ac13e0c 36
donatien 0:f3f18ac13e0c 37 DigitalOut led1(LED1);
donatien 0:f3f18ac13e0c 38 DigitalOut led2(LED2);
donatien 0:f3f18ac13e0c 39 DigitalOut led3(LED3);
donatien 0:f3f18ac13e0c 40 DigitalOut led4(LED4);
donatien 0:f3f18ac13e0c 41 void notify(bool a, bool b, bool c)
donatien 0:f3f18ac13e0c 42 {
donatien 0:f3f18ac13e0c 43 led1 = a;
donatien 0:f3f18ac13e0c 44 led2 = b;
donatien 0:f3f18ac13e0c 45 led3 = c;
donatien 0:f3f18ac13e0c 46 }
donatien 0:f3f18ac13e0c 47
donatien 0:f3f18ac13e0c 48 extern "C" void HardFault_Handler()
donatien 0:f3f18ac13e0c 49 {
donatien 0:f3f18ac13e0c 50 error("Hard Fault!\n");
donatien 0:f3f18ac13e0c 51 }
donatien 0:f3f18ac13e0c 52
donatien 0:f3f18ac13e0c 53 void test(void const*)
donatien 0:f3f18ac13e0c 54 {
donatien 0:f3f18ac13e0c 55 VodafoneK3770 threeg;
donatien 0:f3f18ac13e0c 56 HTTPClient http;
donatien 0:f3f18ac13e0c 57 char str[512];
donatien 0:f3f18ac13e0c 58
donatien 0:f3f18ac13e0c 59 DBG("Hello!");
donatien 0:f3f18ac13e0c 60
donatien 0:f3f18ac13e0c 61 int count = 0;
donatien 0:f3f18ac13e0c 62
donatien 0:f3f18ac13e0c 63 start:
donatien 0:f3f18ac13e0c 64 count++;
donatien 0:f3f18ac13e0c 65 DBG("iteration #%d", count);
donatien 0:f3f18ac13e0c 66
donatien 0:f3f18ac13e0c 67 notify(0, 1, 1);
donatien 0:f3f18ac13e0c 68 //int ret = threeg.connect("pp.vodafone.co.uk");
donatien 0:f3f18ac13e0c 69 int ret = threeg.connect("SMART");
donatien 0:f3f18ac13e0c 70 notify(0, 1, 0);
donatien 0:f3f18ac13e0c 71 if (ret == OK)
donatien 0:f3f18ac13e0c 72 {
donatien 0:f3f18ac13e0c 73 DBG("Trying to fetch page...");
donatien 0:f3f18ac13e0c 74 ret = http.get("http://mbed.org/media/uploads/donatien/hello.txt", str, 128);
donatien 0:f3f18ac13e0c 75 if (ret == OK)
donatien 0:f3f18ac13e0c 76 {
donatien 0:f3f18ac13e0c 77 DBG("Page fetched successfully - read %d characters", strlen(str));
donatien 0:f3f18ac13e0c 78 DBG("Result: %s", str);
donatien 0:f3f18ac13e0c 79 }
donatien 0:f3f18ac13e0c 80 else
donatien 0:f3f18ac13e0c 81 {
donatien 0:f3f18ac13e0c 82 WARN("Error - ret = %d - HTTP return code = %d", ret, http.getHTTPResponseCode());
donatien 0:f3f18ac13e0c 83 }
donatien 0:f3f18ac13e0c 84
donatien 0:f3f18ac13e0c 85 HTTPMap map;
donatien 0:f3f18ac13e0c 86 HTTPText text(str, 512);
donatien 0:f3f18ac13e0c 87 map.put("Hello", "World");
donatien 0:f3f18ac13e0c 88 map.put("test", "1234");
donatien 0:f3f18ac13e0c 89 DBG("Trying to post data...");
donatien 0:f3f18ac13e0c 90 ret = http.post("http://httpbin.org/post", map, &text);
donatien 0:f3f18ac13e0c 91 if (ret == OK)
donatien 0:f3f18ac13e0c 92 {
donatien 0:f3f18ac13e0c 93 DBG("Executed POST successfully - read %d characters", strlen(str));
donatien 0:f3f18ac13e0c 94 DBG("Result: %s", str);
donatien 0:f3f18ac13e0c 95 }
donatien 0:f3f18ac13e0c 96 else
donatien 0:f3f18ac13e0c 97 {
donatien 0:f3f18ac13e0c 98 WARN("Error - ret = %d - HTTP return code = %d", ret, http.getHTTPResponseCode());
donatien 0:f3f18ac13e0c 99 }
donatien 0:f3f18ac13e0c 100 }
donatien 0:f3f18ac13e0c 101 threeg.disconnect();
donatien 0:f3f18ac13e0c 102 DBG("Disconnected");
donatien 0:f3f18ac13e0c 103
donatien 0:f3f18ac13e0c 104 notify(1, 1, 1);
donatien 0:f3f18ac13e0c 105
donatien 0:f3f18ac13e0c 106 goto start;
donatien 0:f3f18ac13e0c 107
donatien 0:f3f18ac13e0c 108 while (1)
donatien 0:f3f18ac13e0c 109 {
donatien 0:f3f18ac13e0c 110 Thread::wait(100);
donatien 0:f3f18ac13e0c 111 }
donatien 0:f3f18ac13e0c 112 }
donatien 0:f3f18ac13e0c 113
donatien 0:f3f18ac13e0c 114 void keepAlive(void const*)
donatien 0:f3f18ac13e0c 115 {
donatien 0:f3f18ac13e0c 116 while (1)
donatien 0:f3f18ac13e0c 117 {
donatien 0:f3f18ac13e0c 118 led1 = !led1;
donatien 0:f3f18ac13e0c 119 Thread::wait(500);
donatien 0:f3f18ac13e0c 120 }
donatien 0:f3f18ac13e0c 121 }
donatien 0:f3f18ac13e0c 122
donatien 0:f3f18ac13e0c 123 void tick()
donatien 0:f3f18ac13e0c 124 {
donatien 0:f3f18ac13e0c 125 led4 = !led4;
donatien 0:f3f18ac13e0c 126 }
donatien 0:f3f18ac13e0c 127
donatien 0:f3f18ac13e0c 128 int main()
donatien 0:f3f18ac13e0c 129 {
donatien 0:f3f18ac13e0c 130 Ticker t;
donatien 0:f3f18ac13e0c 131 t.attach(tick, 1);
donatien 0:f3f18ac13e0c 132 DBG_INIT();
donatien 0:f3f18ac13e0c 133
donatien 0:f3f18ac13e0c 134 notify(1, 0, 0);
donatien 0:f3f18ac13e0c 135
donatien 0:f3f18ac13e0c 136 Thread testTask(test, NULL, osPriorityNormal, 1024 * 4);
donatien 0:f3f18ac13e0c 137 keepAlive(NULL);
donatien 0:f3f18ac13e0c 138
donatien 0:f3f18ac13e0c 139 return 0;
donatien 0:f3f18ac13e0c 140 }