Adafruit thermal receipt printer connected to a Vodafone K3770 dongle.

Committer:
ashleymills
Date:
Wed May 23 12:59:00 2012 +0000
Revision:
0:2bc4b84eac04

        

Who changed what in which revision?

UserRevisionLine numberNew 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 }