Example node for Yodiwo's Plegma API
Dependencies: EthernetInterface FXOS8700Q HTTPClient HTTPD MQTTS SDFileSystem YodiwoPlegma mbed-rpc mbed-rtos mbed wolfSSL
config.c@8:66d34592c1ad, 2015-09-28 (annotated)
- 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?
User | Revision | Line number | New 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 |