add /s/cputemp resource
This commit is contained in:
parent
a90a6e0f65
commit
46df18ceb1
|
@ -96,10 +96,12 @@ Appendix A. Profile example
|
||||||
/* Define which resources to include to meet memory constraints. */
|
/* Define which resources to include to meet memory constraints. */
|
||||||
#define REST_RES_MODEL 1
|
#define REST_RES_MODEL 1
|
||||||
#define REST_RES_NAME 1
|
#define REST_RES_NAME 1
|
||||||
|
#define REST_RES_SW 1
|
||||||
#define REST_RES_EVENT 1
|
#define REST_RES_EVENT 1
|
||||||
#define REST_RES_LED 1
|
#define REST_RES_LED 1
|
||||||
#define REST_RES_TOGGLE 1
|
#define REST_RES_TOGGLE 1
|
||||||
#define REST_RES_BATTERY 1
|
#define REST_RES_BATTERY 1
|
||||||
|
#define REST_RES_TEMPERATURE 1
|
||||||
|
|
||||||
#include "erbium.h"
|
#include "erbium.h"
|
||||||
|
|
||||||
|
@ -112,7 +114,9 @@ Appendix A. Profile example
|
||||||
#if defined (PLATFORM_HAS_BATTERY)
|
#if defined (PLATFORM_HAS_BATTERY)
|
||||||
#include "dev/battery-sensor.h"
|
#include "dev/battery-sensor.h"
|
||||||
#endif
|
#endif
|
||||||
|
#if defined (PLATFORM_HAS_TEMPERATURE)
|
||||||
|
#include "dev/temperature-sensor.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
/* For CoAP-specific example: not required for normal RESTful Web service. */
|
/* For CoAP-specific example: not required for normal RESTful Web service. */
|
||||||
#if WITH_COAP == 3
|
#if WITH_COAP == 3
|
||||||
|
@ -173,6 +177,40 @@ model_handler(void* request, void* response, uint8_t *buffer, uint16_t preferred
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/******************************************************************************/
|
||||||
|
#if REST_RES_SW
|
||||||
|
/*
|
||||||
|
* Resources are defined by the RESOURCE macro.
|
||||||
|
* Signature: resource name, the RESTful methods it handles, and its URI path (omitting the leading slash).
|
||||||
|
*/
|
||||||
|
RESOURCE(sw, METHOD_GET, "p/sw", "title=\"Software Version\";rt=\"simple.dev.sv\"");
|
||||||
|
|
||||||
|
/*
|
||||||
|
* A handler function named [resource name]_handler must be implemented for each RESOURCE.
|
||||||
|
* A buffer for the response payload is provided through the buffer pointer. Simple resources can ignore
|
||||||
|
* preferred_size and offset, but must respect the REST_MAX_CHUNK_SIZE limit for the buffer.
|
||||||
|
* If a smaller block size is requested for CoAP, the REST framework automatically splits the data.
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
sw_handler(void* request, void* response, uint8_t *buffer, uint16_t preferred_size, int32_t *offset)
|
||||||
|
{
|
||||||
|
char message[100];
|
||||||
|
int index = 0;
|
||||||
|
int length = 0; /* |<-------->| */
|
||||||
|
|
||||||
|
/* Some data that has the length up to REST_MAX_CHUNK_SIZE. For more, see the chunk resource. */
|
||||||
|
// jSON Format
|
||||||
|
index += sprintf(message + index,"{\n \"sw\" : \"V0.8\"\n");
|
||||||
|
index += sprintf(message + index,"}\n");
|
||||||
|
|
||||||
|
length = strlen(message);
|
||||||
|
memcpy(buffer, message,length );
|
||||||
|
|
||||||
|
REST.set_header_content_type(response, REST.type.APPLICATION_JSON);
|
||||||
|
REST.set_response_payload(response, buffer, length);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/******************************************************************************/
|
/******************************************************************************/
|
||||||
#if REST_RES_NAME
|
#if REST_RES_NAME
|
||||||
/*
|
/*
|
||||||
|
@ -370,6 +408,41 @@ battery_handler(void* request, void* response, uint8_t *buffer, uint16_t preferr
|
||||||
}
|
}
|
||||||
#endif /* PLATFORM_HAS_BATTERY */
|
#endif /* PLATFORM_HAS_BATTERY */
|
||||||
|
|
||||||
|
/******************************************************************************/
|
||||||
|
#if REST_RES_TEMPERATURE && defined (PLATFORM_HAS_TEMPERATURE)
|
||||||
|
/* A simple getter example. Returns the reading from light sensor with a simple etag */
|
||||||
|
RESOURCE(temperature, METHOD_GET, "s/cputemp", "title=\"CPU Temperature\";rt=\"simple.sen.tmp\"");
|
||||||
|
void
|
||||||
|
temperature_handler(void* request, void* response, uint8_t *buffer, uint16_t preferred_size, int32_t *offset)
|
||||||
|
{
|
||||||
|
int temperature = temperature_sensor.value(0);
|
||||||
|
|
||||||
|
const uint16_t *accept = NULL;
|
||||||
|
int num = REST.get_header_accept(request, &accept);
|
||||||
|
|
||||||
|
if ((num==0) || (num && accept[0]==REST.type.TEXT_PLAIN))
|
||||||
|
{
|
||||||
|
REST.set_header_content_type(response, REST.type.TEXT_PLAIN);
|
||||||
|
snprintf((char *)buffer, REST_MAX_CHUNK_SIZE, "%d.%02d", temperature/100, temperature % 100);
|
||||||
|
|
||||||
|
REST.set_response_payload(response, (uint8_t *)buffer, strlen((char *)buffer));
|
||||||
|
}
|
||||||
|
else if (num && (accept[0]==REST.type.APPLICATION_JSON))
|
||||||
|
{
|
||||||
|
REST.set_header_content_type(response, REST.type.APPLICATION_JSON);
|
||||||
|
snprintf((char *)buffer, REST_MAX_CHUNK_SIZE, "{'temperature':%d.%02d}", temperature/100, temperature % 100);
|
||||||
|
|
||||||
|
REST.set_response_payload(response, buffer, strlen((char *)buffer));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
REST.set_response_status(response, REST.status.NOT_ACCEPTABLE);
|
||||||
|
const char *msg = "Supporting content-types text/plain and application/json";
|
||||||
|
REST.set_response_payload(response, msg, strlen(msg));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif /* PLATFORM_HAS_TEMPERATURE */
|
||||||
|
|
||||||
void
|
void
|
||||||
hw_init()
|
hw_init()
|
||||||
{
|
{
|
||||||
|
@ -408,6 +481,9 @@ PROCESS_THREAD(rest_server_example, ev, data)
|
||||||
#if REST_RES_MODEL
|
#if REST_RES_MODEL
|
||||||
rest_activate_resource(&resource_model);
|
rest_activate_resource(&resource_model);
|
||||||
#endif
|
#endif
|
||||||
|
#if REST_RES_SW
|
||||||
|
rest_activate_resource(&resource_sw);
|
||||||
|
#endif
|
||||||
#if REST_RES_NAME
|
#if REST_RES_NAME
|
||||||
rest_activate_resource(&resource_name);
|
rest_activate_resource(&resource_name);
|
||||||
#endif
|
#endif
|
||||||
|
@ -427,6 +503,10 @@ PROCESS_THREAD(rest_server_example, ev, data)
|
||||||
SENSORS_ACTIVATE(battery_sensor);
|
SENSORS_ACTIVATE(battery_sensor);
|
||||||
rest_activate_resource(&resource_battery);
|
rest_activate_resource(&resource_battery);
|
||||||
#endif
|
#endif
|
||||||
|
#if defined (PLATFORM_HAS_TEMPERATURE) && REST_RES_TEMPERATURE
|
||||||
|
SENSORS_ACTIVATE(temperature_sensor);
|
||||||
|
rest_activate_resource(&resource_temperature);
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Define application-specific events here. */
|
/* Define application-specific events here. */
|
||||||
while(1) {
|
while(1) {
|
||||||
|
|
|
@ -46,6 +46,9 @@
|
||||||
// #undef NETSTACK_CONF_RDC
|
// #undef NETSTACK_CONF_RDC
|
||||||
//#define NETSTACK_CONF_RDC nullrdc_driver
|
//#define NETSTACK_CONF_RDC nullrdc_driver
|
||||||
|
|
||||||
|
// enabel LEAF-NODE mode
|
||||||
|
//#define RPL_CONF_LEAF_ONLY 1
|
||||||
|
|
||||||
/* Increase rpl-border-router IP-buffer when using more than 64. */
|
/* Increase rpl-border-router IP-buffer when using more than 64. */
|
||||||
#undef REST_MAX_CHUNK_SIZE
|
#undef REST_MAX_CHUNK_SIZE
|
||||||
#define REST_MAX_CHUNK_SIZE 64
|
#define REST_MAX_CHUNK_SIZE 64
|
||||||
|
|
Loading…
Reference in a new issue