Contiki 3.x
res_reboot.c
1 /**
2  * Reboot ressource.
3  * Get returns reboot count.
4  * Post reboots the node.
5  */
6 #include "er-server.h"
7 #include <stdlib.h>
8 #include <string.h>
9 #include "rest-engine.h"
10 #include "watchdog.h"
11 #include "ms-io.h"
12 
13 #define DEBUG_ON
14 #include "debug.h"
15 
16 static void res_get_handler(void* request, void* response, uint8_t *buffer, uint16_t preferred_size, int32_t *offset) {
17  uint16_t reboots;
18  // Max value of uint16_t is 5 chars + 1 null terminator
19  char message[6];
20 
21  if (!ms_get_reboot(&reboots)) {
22  REST.set_response_status(response, REST.status.SERVICE_UNAVAILABLE);
23  return;
24  }
25 
26  int length = snprintf(message, sizeof(message), "%u", reboots);
27  memcpy(buffer, message, length);
28 
29  REST.set_header_content_type(response, REST.type.TEXT_PLAIN);
30  REST.set_response_payload(response, buffer, length);
31 }
32 
33 static void res_post_handler(void *request, void *response, uint8_t *buffer, uint16_t preferred_size, int32_t *offset) {
35 }
36 
37 RESOURCE(res_reboot, "Reboot the node", res_get_handler, res_post_handler, NULL, NULL);
An abstraction layer for RESTful Web services (Erbium).
void watchdog_reboot(void)
Keeps control until the WDT throws a reset signal.
Definition: watchdog.c:43
#define NULL
The null pointer.
RESOURCE(res_routes,"Routes", res_get_handler, NULL, NULL, NULL)
Route resource.