JsonNode* oCharBool(const char* key, bool b) { JsonNode* oRet = json_mkobject(); json_append_member(oRet, key, json_mkbool(b)); return oRet; }
static void createMessage(int id, int unit, double temperature, double humidity) { ninjablocks_weather->message = json_mkobject(); json_append_member(ninjablocks_weather->message, "id", json_mknumber(id, 0)); json_append_member(ninjablocks_weather->message, "unit", json_mknumber(unit, 0)); json_append_member(ninjablocks_weather->message, "temperature", json_mknumber(temperature/100, 2)); json_append_member(ninjablocks_weather->message, "humidity", json_mknumber(humidity, 0)); }
void xbmcCreateMessage(char *server, int port, char *action, char *media) { xbmc->message = json_mkobject(); JsonNode *code = json_mkobject(); json_append_member(code, "action", json_mkstring(action)); json_append_member(code, "media", json_mkstring(media)); json_append_member(code, "server", json_mkstring(server)); json_append_member(code, "port", json_mknumber(port)); json_append_member(xbmc->message, "message", code); json_append_member(xbmc->message, "origin", json_mkstring("receiver")); json_append_member(xbmc->message, "protocol", json_mkstring(xbmc->id)); pilight.broadcast(xbmc->id, xbmc->message); json_delete(xbmc->message); xbmc->message = NULL; }
JsonNode* oCharChar(const char* key, const char* val) { JsonNode* oRet = json_mkobject(); json_append_member(oRet, key, json_mkstring(val)); return oRet; }
static int log_failure_fmt_msg(pool *p, const unsigned char *fmt, const char *event_name, char **msg, size_t *msg_len, int flags) { int res; char errstr[256], *json = NULL; void *obj = NULL; obj = json_mkobject(); res = log_failure_mkmsg(flags, p, fmt, obj, log_failure_mkjson); if (!json_check(obj, errstr)) { pr_log_debug(DEBUG3, MOD_LOG_FAILURE_VERSION ": JSON structural problems: %s", errstr); errno = EINVAL; json_delete(obj); return -1; } json = json_encode(obj); pr_trace_msg(trace_channel, 3, "generated JSON payload: %s", json); *msg_len = strlen(json); *msg = palloc(p, *payload_len); memcpy(*payload, json, *payload_len); /* To avoid a memory leak via malloc(3), we have to explicitly call free(3) * on the returned JSON string. Which is why we duplicate it out of the * given memory pool, for use outside of this function. */ free(json); json_delete(obj); return 0; }
int config_write(int level, const char *media) { logprintf(LOG_STACK, "%s(...)", __FUNCTION__); struct JsonNode *root = json_mkobject(); FILE *fp; sort_list(0); struct config_t *listeners = config; while(listeners) { if(listeners->sync) { struct JsonNode *child = listeners->sync(level, media); if(child != NULL) { json_append_member(root, listeners->name, child); } } listeners = listeners->next; } /* Overwrite config file with proper format */ if(!(fp = fopen(configfile, "w+"))) { logprintf(LOG_ERR, "cannot write config file: %s", configfile); return EXIT_FAILURE; } fseek(fp, 0L, SEEK_SET); char *content = json_stringify(root, "\t"); fwrite(content, sizeof(char), strlen(content), fp); fclose(fp); json_free(content); json_delete(root); return EXIT_SUCCESS; }
void csv_output(JsonNode *json, output_type otype, JsonNode *fields) { JsonNode *node, *inttypes; JsonNode *arr, *one, *j; short virgin = 1; /* Prime the inttypes object with types we consider "integer" */ inttypes = json_mkobject(); json_append_member(inttypes, "batt", json_mkbool(1)); json_append_member(inttypes, "vel", json_mkbool(1)); json_append_member(inttypes, "cog", json_mkbool(1)); json_append_member(inttypes, "tst", json_mkbool(1)); json_append_member(inttypes, "alt", json_mkbool(1)); json_append_member(inttypes, "dist", json_mkbool(1)); json_append_member(inttypes, "trip", json_mkbool(1)); arr = json_find_member(json, "locations"); json_foreach(one, arr) { /* Headings */ if (virgin) { virgin = !virgin; if (fields) { json_foreach(node, fields) { printf("%s%c", node->string_, (node->next) ? ',' : '\n'); } } else { json_foreach(j, one) { if (j->key) printf("%s%c", j->key, (j->next) ? ',' : '\n'); } } }
void append_card_to_object(JsonNode *obj, char *user, char *device) { char path[BUFSIZ], path1[BUFSIZ], *cardfile = NULL; JsonNode *card; if (!user || !*user) return; snprintf(path, BUFSIZ, "%s/cards/%s/%s/%s-%s.json", STORAGEDIR, user, device, user, device); if (access(path, R_OK) == 0) { cardfile = path; } else { snprintf(path1, BUFSIZ, "%s/cards/%s/%s.json", STORAGEDIR, user, user); if (access(path1, R_OK) == 0) { cardfile = path1; } } card = json_mkobject(); if (cardfile && json_copy_from_file(card, cardfile) == TRUE) { json_copy_to_object(obj, card, FALSE); } json_delete(card); }
JsonNode* oCharDouble(const char* key, double val) { JsonNode* oRet = json_mkobject(); json_append_member(oRet, key, json_mknumber(val)); return oRet; }
static JsonNode *line_to_location(char *line) { JsonNode *json, *o, *j; char *ghash; char tstamp[64], *bp; double lat, lon; long tst; snprintf(tstamp, 21, "%s", line); if ((bp = strchr(line, '{')) == NULL) return (NULL); if ((json = json_decode(bp)) == NULL) { return (NULL); } if ((j = json_find_member(json, "_type")) == NULL) { json_delete(json); return (NULL); } if (j->tag != JSON_STRING || strcmp(j->string_, "location") != 0) { json_delete(json); return (NULL); } o = json_mkobject(); if (json_copy_to_object(o, json, FALSE) == FALSE) { json_delete(o); json_delete(json); return (NULL); } json_delete(json); /* Done with this -- we've copied it. */ lat = lon = 0.0; if ((j = json_find_member(o, "lat")) != NULL) { lat = j->number_; } if ((j = json_find_member(o, "lon")) != NULL) { lon = j->number_; } if ((ghash = geohash_encode(lat, lon, geohash_prec())) != NULL) { json_append_member(o, "ghash", json_mkstring(ghash)); get_geo(o, ghash); free(ghash); } json_append_member(o, "isorcv", json_mkstring(tstamp)); tst = 0L; if ((j = json_find_member(o, "tst")) != NULL) { tst = j->number_; } json_append_member(o, "isotst", json_mkstring(isotime(tst))); return (o); }
int registry_set_string(const char *key, char *value) { logprintf(LOG_STACK, "%s(...)", __FUNCTION__); if(registry == NULL) { registry = json_mkobject(); } return registry_set_value_recursive(registry, key, (void *)value, 0, JSON_STRING); }
void relayCreateMessage(int gpio, int state) { relay->message = json_mkobject(); json_append_member(relay->message, "gpio", json_mknumber(gpio)); if(state == 1) json_append_member(relay->message, "state", json_mkstring("on")); else json_append_member(relay->message, "state", json_mkstring("off")); }
static void arctechSwOldCreateMessage(int id, int unit, int state) { arctech_switch_old->message = json_mkobject(); json_append_member(arctech_switch_old->message, "id", json_mknumber(id, 0)); json_append_member(arctech_switch_old->message, "unit", json_mknumber(unit, 0)); if(state == 1) json_append_member(arctech_switch_old->message, "state", json_mkstring("on")); else json_append_member(arctech_switch_old->message, "state", json_mkstring("off")); }
void clarusSwCreateMessage(char *id, int unit, int state) { clarus_switch->message = json_mkobject(); json_append_member(clarus_switch->message, "id", json_mkstring(id)); json_append_member(clarus_switch->message, "unit", json_mknumber(unit)); if(state == 2) json_append_member(clarus_switch->message, "state", json_mkstring("on")); else json_append_member(clarus_switch->message, "state", json_mkstring("off")); }
void conradRSLCnCreateMessage(int id, int state) { conrad_rsl_contact->message = json_mkobject(); json_append_member(conrad_rsl_contact->message, "id", json_mknumber(id)); if(state == 1) { json_append_member(conrad_rsl_contact->message, "state", json_mkstring("opened")); } else { json_append_member(conrad_rsl_contact->message, "state", json_mkstring("closed")); } }
static void parseCode(void) { int binary[RAW_LENGTH/2]; int temp1 = 0, temp2 = 0, temp3 = 0; int humi1 = 0, humi2 = 0; int id = 0, battery = 0; int channel = 0; int i = 0, x = 0; double humi_offset = 0.0, temp_offset = 0.0; double temperature = 0.0, humidity = 0.0; for(x=1;x<tfa->rawlen-2;x+=2) { if(tfa->raw[x] > AVG_PULSE_LENGTH*PULSE_MULTIPLIER) { binary[i++] = 1; } else { binary[i++] = 0; } } id = binToDecRev(binary, 2, 9); channel = binToDecRev(binary, 12, 13) + 1; temp1 = binToDecRev(binary, 14, 17); temp2 = binToDecRev(binary, 18, 21); temp3 = binToDecRev(binary, 22, 25); /* Convert F to C */ temperature = (int)((float)(((((temp3*256) + (temp2*16) + (temp1))*10) - 9000) - 3200) * ((float)5/(float)9)); humi1 = binToDecRev(binary, 26, 29); humi2 = binToDecRev(binary, 30, 33); humidity = ((humi1)+(humi2*16)); if(binToDecRev(binary, 34, 35) > 1) { battery = 0; } else { battery = 1; } struct settings_t *tmp = settings; while(tmp) { if(fabs(tmp->id-id) < EPSILON && fabs(tmp->channel-channel) < EPSILON) { humi_offset = tmp->humi; temp_offset = tmp->temp; break; } tmp = tmp->next; } temperature += temp_offset; humidity += humi_offset; tfa->message = json_mkobject(); json_append_member(tfa->message, "id", json_mknumber(id, 0)); json_append_member(tfa->message, "temperature", json_mknumber(temperature/100, 2)); json_append_member(tfa->message, "humidity", json_mknumber(humidity, 2)); json_append_member(tfa->message, "battery", json_mknumber(battery, 0)); json_append_member(tfa->message, "channel", json_mknumber(channel, 0)); }
static void createMessage(int id, int unit, int state) { arctech_screen_old->message = json_mkobject(); json_append_member(arctech_screen_old->message, "id", json_mknumber(id, 0)); json_append_member(arctech_screen_old->message, "unit", json_mknumber(unit, 0)); if(state == 1) json_append_member(arctech_screen_old->message, "state", json_mkstring("up")); else json_append_member(arctech_screen_old->message, "state", json_mkstring("down")); }
static void x10CreateMessage(char *id, int state) { x10->message = json_mkobject(); json_append_member(x10->message, "id", json_mkstring(id)); if(state == 0) { json_append_member(x10->message, "state", json_mkstring("on")); } else { json_append_member(x10->message, "state", json_mkstring("off")); } }
int registry_set_number(const char *key, double value, int decimals) { logprintf(LOG_STACK, "%s(...)", __FUNCTION__); if(registry == NULL) { registry = json_mkobject(); } void *p = (void *)&value; return registry_set_value_recursive(registry, key, p, decimals, JSON_NUMBER); }
static void selectremoteCreateMessage(int id, int state) { selectremote->message = json_mkobject(); json_append_member(selectremote->message, "id", json_mknumber(id, 0)); if(state == 1) { json_append_member(selectremote->message, "state", json_mkstring("on")); } else { json_append_member(selectremote->message, "state", json_mkstring("off")); } }
void sartanoCreateMessage(int id, int unit, int state) { sartano.message = json_mkobject(); json_append_member(sartano.message, "id", json_mknumber(id)); json_append_member(sartano.message, "unit", json_mknumber(unit)); if(state == 1) json_append_member(sartano.message, "state", json_mkstring("on")); else json_append_member(sartano.message, "state", json_mkstring("off")); }
static void genScreenCreateMessage(int id, int state) { generic_screen->message = json_mkobject(); json_append_member(generic_screen->message, "id", json_mknumber(id)); if(state == 1) { json_append_member(generic_screen->message, "state", json_mkstring("up")); } else { json_append_member(generic_screen->message, "state", json_mkstring("down")); } }
void genSwitchCreateMessage(int id, int state) { generic_switch->message = json_mkobject(); json_append_member(generic_switch->message, "id", json_mknumber(id)); if(state == 1) { json_append_member(generic_switch->message, "state", json_mkstring("on")); } else { json_append_member(generic_switch->message, "state", json_mkstring("off")); } }
void impulsCreateMessage(int systemcode, int programcode, int state) { impuls->message = json_mkobject(); json_append_member(impuls->message, "systemcode", json_mknumber(systemcode)); json_append_member(impuls->message, "programcode", json_mknumber(programcode)); if(state == 1) { json_append_member(impuls->message, "state", json_mkstring("on")); } else { json_append_member(impuls->message, "state", json_mkstring("off")); } }
static void createMessage(int systemcode, int unitcode, int state) { pollin->message = json_mkobject(); json_append_member(pollin->message, "systemcode", json_mknumber(systemcode, 0)); json_append_member(pollin->message, "unitcode", json_mknumber(unitcode, 0)); if(state == 0) { json_append_member(pollin->message, "state", json_mkstring("on")); } else { json_append_member(pollin->message, "state", json_mkstring("off")); } }
static void rev3CreateMessage(int id, int unit, int state) { rev3_switch->message = json_mkobject(); json_append_member(rev3_switch->message, "id", json_mknumber(id)); json_append_member(rev3_switch->message, "unit", json_mknumber(unit)); if(state == 1) { json_append_member(rev3_switch->message, "state", json_mkstring("on")); } else { json_append_member(rev3_switch->message, "state", json_mkstring("off")); } }
static void elroHECreateMessage(int systemcode, int unitcode, int state) { elro_he->message = json_mkobject(); json_append_member(elro_he->message, "systemcode", json_mknumber(systemcode)); json_append_member(elro_he->message, "unitcode", json_mknumber(unitcode)); if(state == 0) { json_append_member(elro_he->message, "state", json_mkstring("on")); } else { json_append_member(elro_he->message, "state", json_mkstring("off")); } }
static void createMessage(int systemcode, int programcode, int state) { rsl366->message = json_mkobject(); json_append_member(rsl366->message, "systemcode", json_mknumber(systemcode, 0)); json_append_member(rsl366->message, "programcode", json_mknumber(programcode, 0)); if(state == 1) { json_append_member(rsl366->message, "state", json_mkstring("on")); } else { json_append_member(rsl366->message, "state", json_mkstring("off")); } }
void genWeatherCreateMessage(int id, int temperature, int humidity) { generic_weather->message = json_mkobject(); json_append_member(generic_weather->message, "id", json_mknumber(id)); if(temperature > -999) { json_append_member(generic_weather->message, "temperature", json_mknumber(temperature)); } if(humidity > -999) { json_append_member(generic_weather->message, "humidity", json_mknumber(humidity)); } }
void arctechSwCreateMessage(int id, int unit, int state, int all) { arctech_switch.message = json_mkobject(); json_append_member(arctech_switch.message, "id", json_mknumber(id)); json_append_member(arctech_switch.message, "unit", json_mknumber(unit)); if(all == 1) json_append_member(arctech_switch.message, "all", json_mknumber(all)); if(state == 1) json_append_member(arctech_switch.message, "state", json_mkstring("on")); else json_append_member(arctech_switch.message, "state", json_mkstring("off")); }