Ashley Mills
/
3GPrinter
Adafruit thermal receipt printer connected to a Vodafone K3770 dongle.
main.cpp@0:2bc4b84eac04, 2012-05-23 (annotated)
- Committer:
- ashleymills
- Date:
- Wed May 23 12:59:00 2012 +0000
- Revision:
- 0:2bc4b84eac04
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
ashleymills | 0:2bc4b84eac04 | 1 | #define __DEBUG__ 4 //Maximum verbosity |
ashleymills | 0:2bc4b84eac04 | 2 | #ifndef __MODULE__ |
ashleymills | 0:2bc4b84eac04 | 3 | #define __MODULE__ "net_3g_basic_http_test.cpp" |
ashleymills | 0:2bc4b84eac04 | 4 | #endif |
ashleymills | 0:2bc4b84eac04 | 5 | |
ashleymills | 0:2bc4b84eac04 | 6 | #include "core/fwk.h" |
ashleymills | 0:2bc4b84eac04 | 7 | #include "mbed.h" |
ashleymills | 0:2bc4b84eac04 | 8 | |
ashleymills | 0:2bc4b84eac04 | 9 | #include "rtos.h" |
ashleymills | 0:2bc4b84eac04 | 10 | |
ashleymills | 0:2bc4b84eac04 | 11 | #include "if/VodafoneK3770.h" |
ashleymills | 0:2bc4b84eac04 | 12 | #include "HTTPClient.h" |
ashleymills | 0:2bc4b84eac04 | 13 | #include "AdafruitThermal.h" |
ashleymills | 0:2bc4b84eac04 | 14 | |
ashleymills | 0:2bc4b84eac04 | 15 | DigitalOut led1(LED1); |
ashleymills | 0:2bc4b84eac04 | 16 | DigitalOut led2(LED2); |
ashleymills | 0:2bc4b84eac04 | 17 | DigitalOut led3(LED3); |
ashleymills | 0:2bc4b84eac04 | 18 | DigitalOut led4(LED4); |
ashleymills | 0:2bc4b84eac04 | 19 | void setLeds(bool a, bool b, bool c, bool d) { |
ashleymills | 0:2bc4b84eac04 | 20 | led1 = a; |
ashleymills | 0:2bc4b84eac04 | 21 | led2 = b; |
ashleymills | 0:2bc4b84eac04 | 22 | led3 = c; |
ashleymills | 0:2bc4b84eac04 | 23 | led4 = d; |
ashleymills | 0:2bc4b84eac04 | 24 | } |
ashleymills | 0:2bc4b84eac04 | 25 | |
ashleymills | 0:2bc4b84eac04 | 26 | extern "C" void HardFault_Handler() { |
ashleymills | 0:2bc4b84eac04 | 27 | error("Hard Fault!\n"); |
ashleymills | 0:2bc4b84eac04 | 28 | } |
ashleymills | 0:2bc4b84eac04 | 29 | |
ashleymills | 0:2bc4b84eac04 | 30 | void test(void const*) { |
ashleymills | 0:2bc4b84eac04 | 31 | VodafoneK3770 modem; |
ashleymills | 0:2bc4b84eac04 | 32 | HTTPClient http; |
ashleymills | 0:2bc4b84eac04 | 33 | AdafruitThermal printer(p13,p14); |
ashleymills | 0:2bc4b84eac04 | 34 | printer.begin(); |
ashleymills | 0:2bc4b84eac04 | 35 | |
ashleymills | 0:2bc4b84eac04 | 36 | char str[512]; |
ashleymills | 0:2bc4b84eac04 | 37 | char numBuffer[20]; |
ashleymills | 0:2bc4b84eac04 | 38 | char msgBuffer[256]; |
ashleymills | 0:2bc4b84eac04 | 39 | |
ashleymills | 0:2bc4b84eac04 | 40 | //int ret = modem.connect("pp.vodafone.co.uk", "web", "web"); |
ashleymills | 0:2bc4b84eac04 | 41 | //int ret = modem.connect("internet", "web", "web"); |
ashleymills | 0:2bc4b84eac04 | 42 | int ret = OK; |
ashleymills | 0:2bc4b84eac04 | 43 | if(ret != OK) |
ashleymills | 0:2bc4b84eac04 | 44 | return; |
ashleymills | 0:2bc4b84eac04 | 45 | |
ashleymills | 0:2bc4b84eac04 | 46 | size_t numSMS; |
ashleymills | 0:2bc4b84eac04 | 47 | |
ashleymills | 0:2bc4b84eac04 | 48 | //modem.sendSM("07825608771","this is a test"); |
ashleymills | 0:2bc4b84eac04 | 49 | |
ashleymills | 0:2bc4b84eac04 | 50 | while(true) { |
ashleymills | 0:2bc4b84eac04 | 51 | DBG("Checking SM count"); |
ashleymills | 0:2bc4b84eac04 | 52 | |
ashleymills | 0:2bc4b84eac04 | 53 | if(modem.getSMCount(&numSMS)==OK) { |
ashleymills | 0:2bc4b84eac04 | 54 | DBG("getSMCount success"); |
ashleymills | 0:2bc4b84eac04 | 55 | DBG("numSMS: %d",numSMS); |
ashleymills | 0:2bc4b84eac04 | 56 | if(numSMS>0) { |
ashleymills | 0:2bc4b84eac04 | 57 | DBG("SM count > 0"); |
ashleymills | 0:2bc4b84eac04 | 58 | if(modem.getSM(numBuffer,msgBuffer,256)==OK) { |
ashleymills | 0:2bc4b84eac04 | 59 | DBG("message received"); |
ashleymills | 0:2bc4b84eac04 | 60 | DBG("num: %s",numBuffer); |
ashleymills | 0:2bc4b84eac04 | 61 | DBG("msg: %s",msgBuffer); |
ashleymills | 0:2bc4b84eac04 | 62 | |
ashleymills | 0:2bc4b84eac04 | 63 | printer.print(msgBuffer); |
ashleymills | 0:2bc4b84eac04 | 64 | printer.feed(1); |
ashleymills | 0:2bc4b84eac04 | 65 | } |
ashleymills | 0:2bc4b84eac04 | 66 | } |
ashleymills | 0:2bc4b84eac04 | 67 | |
ashleymills | 0:2bc4b84eac04 | 68 | } |
ashleymills | 0:2bc4b84eac04 | 69 | Thread::wait(5000); |
ashleymills | 0:2bc4b84eac04 | 70 | |
ashleymills | 0:2bc4b84eac04 | 71 | } |
ashleymills | 0:2bc4b84eac04 | 72 | |
ashleymills | 0:2bc4b84eac04 | 73 | // |
ashleymills | 0:2bc4b84eac04 | 74 | |
ashleymills | 0:2bc4b84eac04 | 75 | DBG("Trying to fetch page..."); |
ashleymills | 0:2bc4b84eac04 | 76 | ret = http.get("http://mbed.org/media/uploads/donatien/hello.txt", str, 128); |
ashleymills | 0:2bc4b84eac04 | 77 | if (ret == OK) { |
ashleymills | 0:2bc4b84eac04 | 78 | DBG("Page fetched successfully - read %d characters", strlen(str)); |
ashleymills | 0:2bc4b84eac04 | 79 | DBG("Result: %s", str); |
ashleymills | 0:2bc4b84eac04 | 80 | } else { |
ashleymills | 0:2bc4b84eac04 | 81 | WARN("Error - ret = %d - HTTP return code = %d", ret, http.getHTTPResponseCode()); |
ashleymills | 0:2bc4b84eac04 | 82 | } |
ashleymills | 0:2bc4b84eac04 | 83 | |
ashleymills | 0:2bc4b84eac04 | 84 | HTTPMap map; |
ashleymills | 0:2bc4b84eac04 | 85 | HTTPText text(str, 512); |
ashleymills | 0:2bc4b84eac04 | 86 | map.put("Hello", "World"); |
ashleymills | 0:2bc4b84eac04 | 87 | map.put("test", "1234"); |
ashleymills | 0:2bc4b84eac04 | 88 | DBG("Trying to post data..."); |
ashleymills | 0:2bc4b84eac04 | 89 | ret = http.post("http://httpbin.org/post", map, &text); |
ashleymills | 0:2bc4b84eac04 | 90 | if (ret == OK) { |
ashleymills | 0:2bc4b84eac04 | 91 | DBG("Executed POST successfully - read %d characters", strlen(str)); |
ashleymills | 0:2bc4b84eac04 | 92 | DBG("Result: %s", str); |
ashleymills | 0:2bc4b84eac04 | 93 | } else { |
ashleymills | 0:2bc4b84eac04 | 94 | WARN("Error - ret = %d - HTTP return code = %d", ret, http.getHTTPResponseCode()); |
ashleymills | 0:2bc4b84eac04 | 95 | } |
ashleymills | 0:2bc4b84eac04 | 96 | |
ashleymills | 0:2bc4b84eac04 | 97 | |
ashleymills | 0:2bc4b84eac04 | 98 | modem.disconnect(); |
ashleymills | 0:2bc4b84eac04 | 99 | DBG("Disconnected"); |
ashleymills | 0:2bc4b84eac04 | 100 | |
ashleymills | 0:2bc4b84eac04 | 101 | while (1) { |
ashleymills | 0:2bc4b84eac04 | 102 | Thread::wait(100); |
ashleymills | 0:2bc4b84eac04 | 103 | } |
ashleymills | 0:2bc4b84eac04 | 104 | } |
ashleymills | 0:2bc4b84eac04 | 105 | |
ashleymills | 0:2bc4b84eac04 | 106 | void keepAlive(void const*) { |
ashleymills | 0:2bc4b84eac04 | 107 | while (1) { |
ashleymills | 0:2bc4b84eac04 | 108 | led1 = !led1; |
ashleymills | 0:2bc4b84eac04 | 109 | Thread::wait(500); |
ashleymills | 0:2bc4b84eac04 | 110 | } |
ashleymills | 0:2bc4b84eac04 | 111 | } |
ashleymills | 0:2bc4b84eac04 | 112 | |
ashleymills | 0:2bc4b84eac04 | 113 | int main() { |
ashleymills | 0:2bc4b84eac04 | 114 | |
ashleymills | 0:2bc4b84eac04 | 115 | DBG_INIT(); |
ashleymills | 0:2bc4b84eac04 | 116 | /* |
ashleymills | 0:2bc4b84eac04 | 117 | VodafoneK3770 threeg; |
ashleymills | 0:2bc4b84eac04 | 118 | int ret = threeg.connect("pp.vodafone.co.uk", "web", "web"); |
ashleymills | 0:2bc4b84eac04 | 119 | if(ret==OK) { |
ashleymills | 0:2bc4b84eac04 | 120 | DBG("connection OK"); |
ashleymills | 0:2bc4b84eac04 | 121 | } |
ashleymills | 0:2bc4b84eac04 | 122 | */ |
ashleymills | 0:2bc4b84eac04 | 123 | |
ashleymills | 0:2bc4b84eac04 | 124 | Thread testTask(test, NULL, osPriorityNormal, 1024 * 4); |
ashleymills | 0:2bc4b84eac04 | 125 | keepAlive(NULL); |
ashleymills | 0:2bc4b84eac04 | 126 | |
ashleymills | 0:2bc4b84eac04 | 127 | return 0; |
ashleymills | 0:2bc4b84eac04 | 128 | } |