Example node for Yodiwo's Plegma API
Dependencies: EthernetInterface FXOS8700Q HTTPClient HTTPD MQTTS SDFileSystem YodiwoPlegma mbed-rpc mbed-rtos mbed wolfSSL
main.cpp
- Committer:
- mitsarionas
- Date:
- 2015-09-04
- Revision:
- 2:b7489c070d1f
- Parent:
- 0:00797f1ebe04
- Child:
- 3:11b767300d32
File content as of revision 2:b7489c070d1f:
#include "mbed.h" #include "rtos.h" #include "EthernetInterface.h" #include "MQTTEthernet.h" #include "MQTTClient.h" #include "HTTPD.h" //#include "HTTPServer.h" //#include "LocalFileSystem.h" #include "SDFileSystem.h" // SD File System functions #include "FsHandler.h" #include "RpcHandler.h" #include "pairing_backend.h" #include "pairing_http_handler.h" #include "config.h" #define DAT0 PTE3 // MOSI #define CMD PTE1 // MISO #define CLK PTE2 // SCLK #define CD PTE4 // CS EthernetInterface eth; DigitalOut led1(LED1); InterruptIn sw2(SW2); uint32_t button_pressed; Thread *thread2; //HTTPServer server; extern HTTPD *httpd; // Instantiate a local file system handler named 'local' which will be used later to access files on the mbed. //LocalFileSystem local("local"); SDFileSystem sd(DAT0, CMD, CLK, CD, "sd"); // MOSI, MISO, SCLK, CS //Serial pc(USBTX, USBRX); // Virtual COM Port //MQTTEthernet ipstack; MQTTSocket ipstack; //MQTT::Client<MQTTEthernet, Countdown> *client; config_t configuration; extern pairing_context pairing_state; void pairing_done(char *nodeKey, char *secretKey); void sw2_press(void) { thread2->signal_set(0x1); } void led_thread(void const *argument) { while (true) { led1 = !led1; Thread::wait(1000); } } void button_thread(void const *argument) { while (true) { Thread::signal_wait(0x1); button_pressed++; } } void callback_pairing (int id); int main() { Thread thread(led_thread); // thread2 = new Thread(button_thread); eth.init(); eth.connect(); printf("IP Address is %s\n", eth.getIPAddress()); int r = read_config(&configuration, "/sd/config.json"); printf("read config returned: %d\n", r); printf("p: %p %p\n", configuration.nodeKey, configuration.nodeSecret); printf("...: %d %d\n", configuration.nodeKey[0], configuration.nodeKey[1]); if (!configuration.nodeKey) { printf("not paired, launching HTTP server for pairing\n"); start_pairing_http_server(ð, 80, pairing_done); } else { printf("found NodeKey: %s, proceeding to connection\n", configuration.nodeKey); } ipstack = MQTTSocket(); // client = new MQTT::Client<MQTTEthernet, Countdown>(ipstack); // eth.disconnect(); button_pressed = 0; sw2.fall(&sw2_press); while (true) { Thread::wait(5000); // printf("SW2 was pressed (last 5 seconds): %d \n", button_pressed); fflush(stdout); // button_pressed = 0; } } void pairing_done(char *nodeKey, char *secretKey) { printf("pairing done!\n"); printf("NokeKey: %s\n", nodeKey); printf("SecretKey: %s\n", secretKey); configuration.nodeKey = nodeKey; configuration.nodeSecret = secretKey; int r = write_config(&configuration, "/sd/config.json"); if (r < 0) { printf("error writing config to file\n"); } else { printf("successfully written new config to file\n"); } }