Example program for simple-mbed-client, connecting a device to mbed Device Connector.

Dependencies:   C12832 FXOS8700Q simple-mbed-client

Fork of simple-mbed-client-example by sandbox

Committer:
MACRUM
Date:
Sat Apr 15 15:15:00 2017 +0000
Revision:
44:5a1db9f98f5f
Parent:
40:6c039d073c0b
Child:
45:cc5199df4b43
Initial commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Jan Jongboom 35:4b11d20d60e9 1 #include "mbed.h"
Jan Jongboom 35:4b11d20d60e9 2 #include "security.h"
Jan Jongboom 35:4b11d20d60e9 3 #include "easy-connect.h"
Jan Jongboom 35:4b11d20d60e9 4 #include "simple-mbed-client.h"
MACRUM 44:5a1db9f98f5f 5 #include "C12832.h"
MACRUM 44:5a1db9f98f5f 6 #include "FXOS8700Q.h"
Jan Jongboom 35:4b11d20d60e9 7
MACRUM 44:5a1db9f98f5f 8 // Using Arduino pin notation
MACRUM 44:5a1db9f98f5f 9 C12832 lcd(D11, D13, D12, D7, D10);
MACRUM 44:5a1db9f98f5f 10
MACRUM 44:5a1db9f98f5f 11 I2C i2c(PTE25, PTE24);
MACRUM 44:5a1db9f98f5f 12 FXOS8700QAccelerometer acc(i2c, FXOS8700CQ_SLAVE_ADDR1);
MACRUM 44:5a1db9f98f5f 13 FXOS8700QMagnetometer mag(i2c, FXOS8700CQ_SLAVE_ADDR1);
MACRUM 44:5a1db9f98f5f 14
MACRUM 44:5a1db9f98f5f 15 Serial pc(USBTX, USBRX);
Jan Jongboom 35:4b11d20d60e9 16 SimpleMbedClient client;
Jan Jongboom 35:4b11d20d60e9 17
MACRUM 44:5a1db9f98f5f 18 DigitalOut led(LED1);
MACRUM 44:5a1db9f98f5f 19 DigitalOut blinkLed(LED2);
MACRUM 44:5a1db9f98f5f 20 InterruptIn btn(MBED_CONF_APP_BUTTON);
MACRUM 44:5a1db9f98f5f 21 Semaphore updates(0);
Jan Jongboom 35:4b11d20d60e9 22
Jan Jongboom 35:4b11d20d60e9 23 void patternUpdated(string v) {
Jan Jongboom 35:4b11d20d60e9 24 printf("New pattern: %s\n", v.c_str());
Jan Jongboom 35:4b11d20d60e9 25 }
Jan Jongboom 35:4b11d20d60e9 26
MACRUM 44:5a1db9f98f5f 27 void lcdTextUpdated(string v) {
MACRUM 44:5a1db9f98f5f 28 if (v.length() > 30) {
MACRUM 44:5a1db9f98f5f 29 v.erase(v.begin() + 30, v.end());
MACRUM 44:5a1db9f98f5f 30 }
MACRUM 44:5a1db9f98f5f 31 printf("New text is %s\r\n", v.c_str());
MACRUM 44:5a1db9f98f5f 32
MACRUM 44:5a1db9f98f5f 33 lcd.cls();
MACRUM 44:5a1db9f98f5f 34 lcd.locate(0, 3);
MACRUM 44:5a1db9f98f5f 35 lcd.printf(v.c_str());
MACRUM 44:5a1db9f98f5f 36 }
MACRUM 44:5a1db9f98f5f 37
Jan Jongboom 35:4b11d20d60e9 38 SimpleResourceInt btn_count = client.define_resource("button/0/clicks", 0, M2MBase::GET_ALLOWED);
Jan Jongboom 35:4b11d20d60e9 39 SimpleResourceString pattern = client.define_resource("led/0/pattern", "500:500:500:500:500:500:500", &patternUpdated);
Jan Jongboom 35:4b11d20d60e9 40
MACRUM 44:5a1db9f98f5f 41 SimpleResourceString lcd_text = client.define_resource("lcd/0/text",
MACRUM 44:5a1db9f98f5f 42 "Hello from the cloud", M2MBase::GET_PUT_ALLOWED, true, &lcdTextUpdated);
MACRUM 44:5a1db9f98f5f 43
Jan Jongboom 35:4b11d20d60e9 44 void fall() {
MACRUM 44:5a1db9f98f5f 45 updates.release();
Jan Jongboom 35:4b11d20d60e9 46 }
Jan Jongboom 35:4b11d20d60e9 47
MACRUM 44:5a1db9f98f5f 48 void toggleLed() {
MACRUM 44:5a1db9f98f5f 49 led = !led;
Jan Jongboom 35:4b11d20d60e9 50 }
Jan Jongboom 35:4b11d20d60e9 51
Jan Jongboom 35:4b11d20d60e9 52 void registered() {
MACRUM 44:5a1db9f98f5f 53 pc.printf("Registered\r\n");
MACRUM 44:5a1db9f98f5f 54 }
MACRUM 44:5a1db9f98f5f 55 void unregistered() {
MACRUM 44:5a1db9f98f5f 56 pc.printf("Unregistered\r\n");
Jan Jongboom 35:4b11d20d60e9 57 }
Jan Jongboom 35:4b11d20d60e9 58
MACRUM 44:5a1db9f98f5f 59 SimpleResourceInt aX = client.define_resource("accel/0/x", 0, M2MBase::GET_ALLOWED);
MACRUM 44:5a1db9f98f5f 60 SimpleResourceInt aY = client.define_resource("accel/0/y", 0, M2MBase::GET_ALLOWED);
MACRUM 44:5a1db9f98f5f 61 SimpleResourceInt aZ = client.define_resource("accel/0/z", 0, M2MBase::GET_ALLOWED);
Jan Jongboom 35:4b11d20d60e9 62
MACRUM 44:5a1db9f98f5f 63 void readAccel() {
MACRUM 44:5a1db9f98f5f 64 acc.enable();
MACRUM 44:5a1db9f98f5f 65
MACRUM 44:5a1db9f98f5f 66 motion_data_counts_t acc_data;
Jan Jongboom 38:fbbab77b54fb 67
MACRUM 44:5a1db9f98f5f 68 while (1) {
MACRUM 44:5a1db9f98f5f 69 acc.getAxis(acc_data);
Jan Jongboom 38:fbbab77b54fb 70
MACRUM 44:5a1db9f98f5f 71 aX = acc_data.x;
MACRUM 44:5a1db9f98f5f 72 aY = acc_data.y;
MACRUM 44:5a1db9f98f5f 73 aZ = acc_data.z;
MACRUM 44:5a1db9f98f5f 74
MACRUM 44:5a1db9f98f5f 75 pc.printf("ACC: X=%d Y=%d Z=%d\r\n", acc_data.x, acc_data.y, acc_data.z);
MACRUM 44:5a1db9f98f5f 76 wait_ms(2000);
Jan Jongboom 35:4b11d20d60e9 77 }
Jan Jongboom 35:4b11d20d60e9 78 }
Jan Jongboom 35:4b11d20d60e9 79
Jan Jongboom 35:4b11d20d60e9 80 int main() {
MACRUM 44:5a1db9f98f5f 81 pc.baud(115200);
Jan Jongboom 35:4b11d20d60e9 82
MACRUM 44:5a1db9f98f5f 83 lcdTextUpdated(static_cast<string>(lcd_text).c_str());
Jan Jongboom 35:4b11d20d60e9 84
MACRUM 44:5a1db9f98f5f 85 Thread accelThread;
MACRUM 44:5a1db9f98f5f 86 accelThread.start(&readAccel);
Jan Jongboom 35:4b11d20d60e9 87
MACRUM 44:5a1db9f98f5f 88 btn.fall(&fall);
Jan Jongboom 35:4b11d20d60e9 89
MACRUM 44:5a1db9f98f5f 90 Ticker t;
MACRUM 44:5a1db9f98f5f 91 t.attach(&toggleLed, 1.0f);
MACRUM 44:5a1db9f98f5f 92
Jan Jongboom 35:4b11d20d60e9 93 NetworkInterface* network = easy_connect(true);
Jan Jongboom 35:4b11d20d60e9 94 if (!network) {
Jan Jongboom 35:4b11d20d60e9 95 return 1;
Jan Jongboom 35:4b11d20d60e9 96 }
Jan Jongboom 35:4b11d20d60e9 97
MACRUM 44:5a1db9f98f5f 98 struct MbedClientOptions opts = client.get_default_options();
MACRUM 44:5a1db9f98f5f 99 opts.ServerAddress = MBED_SERVER_ADDRESS;
MACRUM 44:5a1db9f98f5f 100 opts.DeviceType = "JansAccel";
Jan Jongboom 35:4b11d20d60e9 101 bool setup = client.setup(opts, network);
Jan Jongboom 35:4b11d20d60e9 102 if (!setup) {
Jan Jongboom 35:4b11d20d60e9 103 printf("Client setup failed\n");
Jan Jongboom 35:4b11d20d60e9 104 return 1;
Jan Jongboom 35:4b11d20d60e9 105 }
MACRUM 44:5a1db9f98f5f 106
Jan Jongboom 35:4b11d20d60e9 107 client.on_registered(&registered);
MACRUM 44:5a1db9f98f5f 108 client.on_unregistered(&unregistered);
MACRUM 44:5a1db9f98f5f 109
MACRUM 44:5a1db9f98f5f 110 while (1) {
MACRUM 44:5a1db9f98f5f 111 int v = updates.wait(25000);
MACRUM 44:5a1db9f98f5f 112 if (v == 1) {
MACRUM 44:5a1db9f98f5f 113 btn_count = btn_count + 1;
MACRUM 44:5a1db9f98f5f 114 printf("Button count is now %d\n", static_cast<int>(btn_count));
MACRUM 44:5a1db9f98f5f 115 }
MACRUM 44:5a1db9f98f5f 116 //client.keep_alive();
MACRUM 44:5a1db9f98f5f 117 }
Jan Jongboom 35:4b11d20d60e9 118 }