/*******************************************************************/ EVENT_RESOURCE(resource_sensors_dr1199, /* name */ "obs;title=\"All_DR1199_sensors\"", /* attributes */ get_sensors_dr1199_handler, /* GET handler */ NULL, /* POST handler */ NULL, /* PUT handler */ NULL, /* DELETE handler */ event_sensors_dr1199_handler); /* event handler */ static void get_sensors_dr1199_handler(void *request, void *response, uint8_t *buffer, uint16_t preferred_size, int32_t *offset) { unsigned int accept = -1; REST.get_header_accept(request, &accept); if(accept == -1 || accept == REST.type.APPLICATION_JSON) { content_len = 0; CONTENT_PRINTF("{\"DR1199\":["); CONTENT_PRINTF("{\"Switch\":\"0x%X\"},", button_sensor.value(0)); CONTENT_PRINTF("{\"Pot\":\"%d\"}", pot_sensor.value(0)); CONTENT_PRINTF("]}"); REST.set_header_content_type(response, REST.type.APPLICATION_JSON); REST.set_response_payload(response, (uint8_t *)content, content_len); } }
static void put_post_led_toggle_handler(void *request, void *response, uint8_t *buffer, uint16_t preferred_size, int32_t *offset) { static int led_state = 0; const uint8_t *request_content; int request_content_len; unsigned int accept = -1; /* Given the way the LEDs are connected to the DIO ports, the LEDs are controlled via direct DIO access. */ content_len = 0; switch(led_state) { case (0): ctimer_stop(&ct); leds_set(LEDS_GREEN); /* Only LEDS_GREEN on */ CONTENT_PRINTF("Message from resource: Green LED on"); led_state = 1; break; case (1): leds_set(LEDS_RED); /* Only LEDS_RED on */ CONTENT_PRINTF("Message from resource: Red LED on"); led_state = 2; break; case (2): leds_set(0); /* All LEDS off */ CONTENT_PRINTF("Message from resource: All LEDs off"); led_state = 3; break; case 3: /* Both leds toggle */ CONTENT_PRINTF("Message from resource: LEDs toggle"); ctimer_restart(&ct); led_state = 0; default: break; } /* Return message */ REST.get_header_accept(request, &accept); if(accept == -1 || accept == REST.type.TEXT_PLAIN) { REST.set_header_content_type(response, REST.type.TEXT_PLAIN); REST.set_response_payload(response, (uint8_t *)content, content_len); } }
/*****************************************************************************/ EVENT_RESOURCE(resource_coap_rx_uart1, /* name */ "obs;title=\"rx_uart1\"", /* attributes */ get_coap_rx_uart1_handler, /* GET handler */ NULL, /* POST handler */ NULL, /* PUT handler */ NULL, /* DELETE handler */ event_coap_rx_uart1_handler); /* event handler */ static void get_coap_rx_uart1_handler(void *request, void *response, uint8_t *buffer, uint16_t preferred_size, int32_t *offset) { unsigned int accept = -1; REST.get_header_accept(request, &accept); if(accept == -1 || accept == REST.type.TEXT_PLAIN) { content_len = 0; CONTENT_PRINTF("%s", rx_buf); REST.set_header_content_type(response, REST.type.TEXT_PLAIN); REST.set_response_payload(response, (uint8_t *)content, content_len); } }
static void get_pot_handler(void *request, void *response, uint8_t *buffer, uint16_t preferred_size, int32_t *offset) { content_len = 0; unsigned int accept = -1; REST.get_header_accept(request, &accept); if(accept == -1 || accept == REST.type.TEXT_PLAIN) { CONTENT_PRINTF("%d", pot_sensor.value(0)); REST.set_header_content_type(response, REST.type.TEXT_PLAIN); REST.set_response_payload(response, (uint8_t *)content, content_len); } }
static void get_last_rssi_handler(void *request, void *response, uint8_t *buffer, uint16_t preferred_size, int32_t *offset) { int last_rssi_level; unsigned int accept = -1; REST.get_header_accept(request, &accept); if(accept == -1 || accept == REST.type.TEXT_PLAIN) { content_len = 0; NETSTACK_RADIO.get_value(RADIO_PARAM_LAST_RSSI, &last_rssi_level); CONTENT_PRINTF("%d", last_rssi_level); REST.set_header_content_type(response, REST.type.TEXT_PLAIN); REST.set_response_payload(response, (uint8_t *)content, content_len); } }