Example node for Yodiwo's Plegma API

Dependencies:   EthernetInterface FXOS8700Q HTTPClient HTTPD MQTTS SDFileSystem YodiwoPlegma mbed-rpc mbed-rtos mbed wolfSSL

Committer:
mitsarionas
Date:
Mon Sep 28 09:13:43 2015 +0000
Revision:
8:66d34592c1ad
Parent:
5:1ef168357347
using published HTTPClient

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mitsarionas 5:1ef168357347 1 #include <string.h>
mitsarionas 5:1ef168357347 2 #include <stdio.h>
mitsarionas 5:1ef168357347 3 #include <errno.h>
mitsarionas 5:1ef168357347 4 #include <stdbool.h>
mitsarionas 5:1ef168357347 5 #include "jsmn.h"
mitsarionas 5:1ef168357347 6 #include "config.h"
mitsarionas 5:1ef168357347 7
mitsarionas 5:1ef168357347 8 int read_config(Yodiwo_Tools_APIGenerator_CNodeYConfig_t *config, char *filename)
mitsarionas 5:1ef168357347 9 {
mitsarionas 5:1ef168357347 10 FILE *f;
mitsarionas 5:1ef168357347 11 int size;
mitsarionas 5:1ef168357347 12 char *buf;
mitsarionas 5:1ef168357347 13 int r;
mitsarionas 5:1ef168357347 14 f = fopen(filename, "r");
mitsarionas 5:1ef168357347 15 if (f == NULL) {
mitsarionas 5:1ef168357347 16 return -1;
mitsarionas 5:1ef168357347 17 }
mitsarionas 5:1ef168357347 18 fseek(f, 0L, SEEK_END);
mitsarionas 5:1ef168357347 19 size = ftell(f);
mitsarionas 5:1ef168357347 20 fseek(f, 0L, SEEK_SET);
mitsarionas 5:1ef168357347 21
mitsarionas 5:1ef168357347 22 buf = (char *)malloc(sizeof(char) * (size + 10));
mitsarionas 5:1ef168357347 23 if (buf == NULL) {
mitsarionas 5:1ef168357347 24 r = -ENOMEM;
mitsarionas 5:1ef168357347 25 goto exit;
mitsarionas 5:1ef168357347 26 }
mitsarionas 5:1ef168357347 27 size = fread(buf, 1, size, f);
mitsarionas 5:1ef168357347 28 buf[size] = '\0';
mitsarionas 5:1ef168357347 29 fclose(f);
mitsarionas 5:1ef168357347 30 f = NULL;
mitsarionas 5:1ef168357347 31 r = Yodiwo_Tools_APIGenerator_CNodeYConfig_FromJson(buf, size, config);
mitsarionas 5:1ef168357347 32 exit:
mitsarionas 5:1ef168357347 33 free(buf);
mitsarionas 5:1ef168357347 34 if (f != NULL)
mitsarionas 5:1ef168357347 35 fclose(f);
mitsarionas 5:1ef168357347 36 return (r < 0) ? r : 0;
mitsarionas 5:1ef168357347 37 }
mitsarionas 5:1ef168357347 38
mitsarionas 5:1ef168357347 39 int write_config(Yodiwo_Tools_APIGenerator_CNodeYConfig_t *config, char *filename)
mitsarionas 5:1ef168357347 40 {
mitsarionas 5:1ef168357347 41 FILE *f;
mitsarionas 5:1ef168357347 42 char *buf;
mitsarionas 5:1ef168357347 43 int r;
mitsarionas 5:1ef168357347 44 f = fopen(filename, "w");
mitsarionas 5:1ef168357347 45 if (f == NULL) {
mitsarionas 5:1ef168357347 46 return -1;
mitsarionas 5:1ef168357347 47 }
mitsarionas 5:1ef168357347 48 buf = (char *)malloc(2048); //TODO: proper
mitsarionas 5:1ef168357347 49 if (buf == NULL) {
mitsarionas 5:1ef168357347 50 r = -ENOMEM;
mitsarionas 5:1ef168357347 51 goto exit;
mitsarionas 5:1ef168357347 52 }
mitsarionas 5:1ef168357347 53 r = Yodiwo_Tools_APIGenerator_CNodeYConfig_ToJson(buf, 2048, config);
mitsarionas 5:1ef168357347 54 if (r < 0)
mitsarionas 5:1ef168357347 55 goto exit;
mitsarionas 5:1ef168357347 56 fwrite(buf, r - 1, 1, f);
mitsarionas 5:1ef168357347 57 exit:
mitsarionas 5:1ef168357347 58 free(buf);
mitsarionas 5:1ef168357347 59 fclose(f);
mitsarionas 5:1ef168357347 60 return (r < 0) ? r : 0;
mitsarionas 5:1ef168357347 61 }
mitsarionas 5:1ef168357347 62