Example #1
0
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();
}
Example #2
0
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);
	}
}