PROCESS_THREAD(rplstats, ev, data) { uip_ipaddr_t *addr; PROCESS_BEGIN(); etimer_set(&et_ping, 5 * CLOCK_SECOND); while(1) { uint16_t content_len; PROCESS_WAIT_EVENT(); if(etimer_expired(&et_ping)) { dag = rpl_get_any_dag(); if(dag != NULL) { PRINTF("post!\n\r"); PRINTF("prefix info, len %d\n\r", dag->prefix_info.length); PRINT6ADDR(&(dag->prefix_info.prefix)); PRINTF("\n\r"); addr = &(dag->prefix_info.prefix); /* assume 64 bit prefix for now */ sprintf(host, "[%02x%02x:%02x%02x:%02x%02x:%02x%02x::1]", ((u8_t *)addr)[0], ((u8_t *)addr)[1], ((u8_t *)addr)[2], ((u8_t *)addr)[3], ((u8_t *)addr)[4], ((u8_t *)addr)[5], ((u8_t *)addr)[6], ((u8_t *)addr)[7]); PRINTF("host: %s\n\r", host); content_len = create_rank_msg(buf); s = httpd_ws_request(HTTPD_WS_POST, host, NULL, port, path, ct_json, content_len, send_buf); while (s->state != 0) { PROCESS_PAUSE(); } first = 1; for (parent = dag->preferred_parent; parent != NULL; parent = parent->next) { content_len = create_parent_msg(buf, parent, first); s = httpd_ws_request(HTTPD_WS_POST, host, NULL, port, path, ct_json, content_len, send_buf); while (s->state != 0) { PROCESS_PAUSE(); } first = 0; } } etimer_set(&et_ping, 5 * CLOCK_SECOND); } } PROCESS_END(); }
void post_json(void) { struct httpd_ws_state *s; make_json(); //PRINTF("JSON data: %s of size: %d\n",json,strlen(json)); //PRINTF("URL: %s\n",url); s = httpd_ws_request(HTTPD_WS_POST, IP, HOST, PORT, url, http_content_type_json, strlen(json), send_json); if (s==NULL) { PRINTF("httpd_ws_request returned NULL\n"); } else { PRINTF(s->outbuf); } }