Merge branch 'master' of ssh://contiki.git.sourceforge.net/gitroot/contiki/contiki
This commit is contained in:
commit
d711887a1b
16 changed files with 216 additions and 119 deletions
|
@ -169,7 +169,7 @@ handle_incoming_data(void)
|
||||||
PRINTF("handle_incoming_data(): block_offset >= response->payload_len\n");
|
PRINTF("handle_incoming_data(): block_offset >= response->payload_len\n");
|
||||||
|
|
||||||
response->code = BAD_OPTION_4_02;
|
response->code = BAD_OPTION_4_02;
|
||||||
coap_set_payload(response, (uint8_t*)"Block out of scope", 18);
|
coap_set_payload(response, (uint8_t*)"BlockOutOfScope", 15);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -307,56 +307,80 @@ coap_set_rest_status(void *packet, unsigned int code)
|
||||||
RESOURCE(well_known_core, METHOD_GET, ".well-known/core", "");
|
RESOURCE(well_known_core, METHOD_GET, ".well-known/core", "");
|
||||||
void
|
void
|
||||||
well_known_core_handler(void* request, void* response, uint8_t *buffer, uint16_t preferred_size, int32_t *offset)
|
well_known_core_handler(void* request, void* response, uint8_t *buffer, uint16_t preferred_size, int32_t *offset)
|
||||||
{
|
|
||||||
/* Response might be NULL for non-confirmable requests. */
|
|
||||||
if (response)
|
|
||||||
{
|
{
|
||||||
size_t strpos = 0;
|
size_t strpos = 0;
|
||||||
size_t bufpos = 0;
|
size_t bufpos = 0;
|
||||||
|
size_t tmplen = 0;
|
||||||
resource_t* resource = NULL;
|
resource_t* resource = NULL;
|
||||||
|
|
||||||
for (resource = (resource_t*)list_head(rest_get_resources()); resource; resource = resource->next)
|
for (resource = (resource_t*)list_head(rest_get_resources()); resource; resource = resource->next)
|
||||||
{
|
{
|
||||||
strpos += snprintf((char *) buffer + bufpos, REST_MAX_CHUNK_SIZE - bufpos + 1,
|
PRINTF("res: /%s (%p)\npos: s%d, o%d, b%d\n", resource->url, resource, strpos, *offset, bufpos);
|
||||||
"</%s>%s%s%s",
|
|
||||||
resource->url,
|
|
||||||
resource->attributes[0] ? ";" : "",
|
|
||||||
resource->attributes,
|
|
||||||
resource->next ? "," : "" );
|
|
||||||
|
|
||||||
PRINTF("discover: %s\n", resource->url);
|
if (strpos >= *offset && bufpos < preferred_size)
|
||||||
|
|
||||||
if (strpos <= *offset)
|
|
||||||
{
|
{
|
||||||
/* Discard output before current block */
|
buffer[bufpos++] = '<';
|
||||||
PRINTF(" if %d <= %ld B\n", strpos, *offset);
|
|
||||||
PRINTF(" %s\n", buffer);
|
|
||||||
bufpos = 0;
|
|
||||||
}
|
}
|
||||||
else /* (strpos > *offset) */
|
++strpos;
|
||||||
{
|
|
||||||
/* output partly in block */
|
|
||||||
size_t len = MIN(strpos - *offset, preferred_size);
|
|
||||||
|
|
||||||
PRINTF(" el %d/%d @ %ld B\n", len, preferred_size, *offset);
|
if (strpos >= *offset && bufpos < preferred_size)
|
||||||
|
|
||||||
/* Block might start in the middle of the output; align with buffer start. */
|
|
||||||
if (bufpos == 0)
|
|
||||||
{
|
{
|
||||||
memmove(buffer, buffer+strlen((char *)buffer)-strpos+*offset, len);
|
buffer[bufpos++] = '/';
|
||||||
|
}
|
||||||
|
++strpos;
|
||||||
|
|
||||||
|
tmplen = strlen(resource->url);
|
||||||
|
if (strpos+tmplen > *offset)
|
||||||
|
{
|
||||||
|
bufpos += snprintf((char *) buffer + bufpos, preferred_size - bufpos + 1,
|
||||||
|
"%s", resource->url + ((*offset-(int32_t)strpos > 0) ? (*offset-(int32_t)strpos) : 0));
|
||||||
|
/* minimal-net requires these casts */
|
||||||
|
}
|
||||||
|
strpos += tmplen;
|
||||||
|
|
||||||
|
if (strpos >= *offset && bufpos < preferred_size)
|
||||||
|
{
|
||||||
|
buffer[bufpos++] = '>';
|
||||||
|
}
|
||||||
|
++strpos;
|
||||||
|
|
||||||
|
if (resource->attributes[0])
|
||||||
|
{
|
||||||
|
if (strpos >= *offset && bufpos < preferred_size)
|
||||||
|
{
|
||||||
|
buffer[bufpos++] = ';';
|
||||||
|
}
|
||||||
|
++strpos;
|
||||||
|
|
||||||
|
tmplen = strlen(resource->attributes);
|
||||||
|
if (strpos+tmplen > *offset)
|
||||||
|
{
|
||||||
|
bufpos += snprintf((char *) buffer + bufpos, preferred_size - bufpos + 1,
|
||||||
|
"%s", resource->attributes + (*offset-(int32_t)strpos > 0 ? *offset-(int32_t)strpos : 0));
|
||||||
|
}
|
||||||
|
strpos += tmplen;
|
||||||
}
|
}
|
||||||
|
|
||||||
bufpos = len;
|
if (resource->next)
|
||||||
PRINTF(" %s\n", buffer);
|
|
||||||
|
|
||||||
if (bufpos >= preferred_size)
|
|
||||||
{
|
{
|
||||||
|
if (strpos >= *offset && bufpos < preferred_size)
|
||||||
|
{
|
||||||
|
buffer[bufpos++] = ',';
|
||||||
|
}
|
||||||
|
++strpos;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* buffer full, but resource not completed yet; or: do not break if resource exactly fills buffer. */
|
||||||
|
if (bufpos >= preferred_size && strpos-bufpos > *offset)
|
||||||
|
{
|
||||||
|
PRINTF("res: BREAK at %s (%p)\n", resource->url, resource);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if (bufpos>0) {
|
if (bufpos>0) {
|
||||||
|
PRINTF("BUF %d: %.*s\n", bufpos, bufpos, (char *) buffer);
|
||||||
|
|
||||||
coap_set_payload(response, buffer, bufpos );
|
coap_set_payload(response, buffer, bufpos );
|
||||||
coap_set_header_content_type(response, APPLICATION_LINK_FORMAT);
|
coap_set_header_content_type(response, APPLICATION_LINK_FORMAT);
|
||||||
}
|
}
|
||||||
|
@ -365,18 +389,19 @@ well_known_core_handler(void* request, void* response, uint8_t *buffer, uint16_t
|
||||||
PRINTF("well_known_core_handler(): bufpos<=0\n");
|
PRINTF("well_known_core_handler(): bufpos<=0\n");
|
||||||
|
|
||||||
coap_set_rest_status(response, BAD_OPTION_4_02);
|
coap_set_rest_status(response, BAD_OPTION_4_02);
|
||||||
coap_set_payload(response, (uint8_t*)"Block out of scope", 18);
|
coap_set_payload(response, (uint8_t*)"BlockOutOfScope", 15);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (resource==NULL) {
|
if (resource==NULL) {
|
||||||
|
PRINTF("res: DONE\n");
|
||||||
*offset = -1;
|
*offset = -1;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
PRINTF("res: MORE at %s (%p)\n", resource->url, resource);
|
||||||
*offset += bufpos;
|
*offset += bufpos;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
/*-----------------------------------------------------------------------------------*/
|
/*-----------------------------------------------------------------------------------*/
|
||||||
PROCESS_THREAD(coap_receiver, ev, data)
|
PROCESS_THREAD(coap_receiver, ev, data)
|
||||||
{
|
{
|
||||||
|
|
|
@ -524,14 +524,14 @@ static unsigned short
|
||||||
generate_sensor_readings(void *arg)
|
generate_sensor_readings(void *arg)
|
||||||
{
|
{
|
||||||
uint16_t numprinted;
|
uint16_t numprinted;
|
||||||
uint16_t h,m,s;
|
uint16_t days,h,m,s;
|
||||||
unsigned long seconds=clock_seconds();
|
unsigned long seconds=clock_seconds();
|
||||||
// uint8_t p1;
|
|
||||||
static const char httpd_cgi_sensor0[] HTTPD_STRING_ATTR = "[Updated %d seconds ago]<br><br>";
|
static const char httpd_cgi_sensor0[] HTTPD_STRING_ATTR = "[Updated %d seconds ago]<br><br>";
|
||||||
static const char httpd_cgi_sensor1[] HTTPD_STRING_ATTR = "<em>Temperature:</em> %s<br>";
|
static const char httpd_cgi_sensor1[] HTTPD_STRING_ATTR = "<em>Temperature:</em> %s<br>";
|
||||||
static const char httpd_cgi_sensor2[] HTTPD_STRING_ATTR = "<em>Battery:</em> %s<br>";
|
static const char httpd_cgi_sensor2[] HTTPD_STRING_ATTR = "<em>Battery:</em> %s<br>";
|
||||||
// static const char httpd_cgi_sensr12[] HTTPD_STRING_ATTR = "<em>Temperature:</em> %s <em>Battery:</em> %s<br>";
|
// static const char httpd_cgi_sensr12[] HTTPD_STRING_ATTR = "<em>Temperature:</em> %s <em>Battery:</em> %s<br>";
|
||||||
static const char httpd_cgi_sensor3[] HTTPD_STRING_ATTR = "<em>Elapsed timer :</em> %02d:%02d:%02d<br>";
|
static const char httpd_cgi_sensor3[] HTTPD_STRING_ATTR = "<em>Uptime :</em> %02d:%02d:%02d<br>";
|
||||||
|
static const char httpd_cgi_sensor3d[] HTTPD_STRING_ATTR = "<em>Uptime :</em> %u days %02u:%02u:%02u<br>";
|
||||||
// static const char httpd_cgi_sensor4[] HTTPD_STRING_ATTR = "<em>Sleeping time :</em> %02d:%02d:%02d (%d%%)<br>";
|
// static const char httpd_cgi_sensor4[] HTTPD_STRING_ATTR = "<em>Sleeping time :</em> %02d:%02d:%02d (%d%%)<br>";
|
||||||
|
|
||||||
numprinted=0;
|
numprinted=0;
|
||||||
|
@ -554,17 +554,20 @@ generate_sensor_readings(void *arg)
|
||||||
|
|
||||||
numprinted+=httpd_snprintf((char *)uip_appdata+numprinted, uip_mss()-numprinted, httpd_cgi_sensor2, sensor_extvoltage);
|
numprinted+=httpd_snprintf((char *)uip_appdata+numprinted, uip_mss()-numprinted, httpd_cgi_sensor2, sensor_extvoltage);
|
||||||
// numprinted+=httpd_snprintf((char *)uip_appdata+numprinted, uip_mss()-numprinted, httpd_cgi_sensr12, sensor_temperature,sensor_extvoltage);
|
// numprinted+=httpd_snprintf((char *)uip_appdata+numprinted, uip_mss()-numprinted, httpd_cgi_sensr12, sensor_temperature,sensor_extvoltage);
|
||||||
|
|
||||||
#if RADIOSTATS
|
#if RADIOSTATS
|
||||||
/* Remember radioontime for display below - slow connection might make it report longer than cpu ontime! */
|
/* Remember radioontime for display below - slow connection might make it report longer than cpu ontime! */
|
||||||
savedradioontime = radioontime;
|
savedradioontime = radioontime;
|
||||||
#endif
|
#endif
|
||||||
h=seconds/3600;
|
h=seconds/3600;s=seconds-h*3600;m=s/60;s=s-m*60;
|
||||||
s=seconds-h*3600;
|
days=h/24;
|
||||||
m=s/60;
|
if (days == 0) {
|
||||||
s=s-m*60;
|
|
||||||
numprinted+=httpd_snprintf((char *)uip_appdata + numprinted, uip_mss() - numprinted, httpd_cgi_sensor3, h,m,s);
|
numprinted+=httpd_snprintf((char *)uip_appdata + numprinted, uip_mss() - numprinted, httpd_cgi_sensor3, h,m,s);
|
||||||
|
} else {
|
||||||
/* TODO: some gcc's have a bug with %02d format that adds a zero byte and extra chars to the end of the string.
|
h=h-days*24;
|
||||||
|
numprinted+=httpd_snprintf((char *)uip_appdata + numprinted, uip_mss() - numprinted, httpd_cgi_sensor3d, days,h,m,s);
|
||||||
|
}
|
||||||
|
/* TODO: some gcc's have a bug with %02d format that adds an extra char after the string terminator.
|
||||||
* Seen with arm-none-eabi-gcc.exe (Sourcery G++ Lite 2008q3-66) 4.3.2
|
* Seen with arm-none-eabi-gcc.exe (Sourcery G++ Lite 2008q3-66) 4.3.2
|
||||||
* Quick cosmetic fix to strip that off: */
|
* Quick cosmetic fix to strip that off: */
|
||||||
if (*(char *)(uip_appdata + numprinted-3)==0) {numprinted-=3;}
|
if (*(char *)(uip_appdata + numprinted-3)==0) {numprinted-=3;}
|
||||||
|
@ -573,14 +576,75 @@ generate_sensor_readings(void *arg)
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
if (sleepseconds) {
|
if (sleepseconds) {
|
||||||
p1=100UL*sleepseconds/seconds;
|
uint8_t p1;
|
||||||
h=sleepseconds/3600;
|
p1=100UL*sleepseconds/seconds;h=sleepseconds/3600;s=sleepseconds-h*3600;m=s/60;s=s-m*60;
|
||||||
s=sleepseconds-h*3600;
|
|
||||||
m=s/60;
|
|
||||||
s=s-m*60;
|
|
||||||
numprinted+=httpd_snprintf((char *)uip_appdata + numprinted, uip_mss() - numprinted, httpd_cgi_sensor4, h,m,s,p1);
|
numprinted+=httpd_snprintf((char *)uip_appdata + numprinted, uip_mss() - numprinted, httpd_cgi_sensor4, h,m,s,p1);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if ENERGEST_CONF_ON
|
||||||
|
{uint8_t p1,p2;
|
||||||
|
#if 0
|
||||||
|
/* Update all the timers to get current values */
|
||||||
|
for (p1=1;p1<ENERGEST_TYPE_MAX;p1++) {
|
||||||
|
if (energest_current_mode[p1]) {
|
||||||
|
ENERGEST_OFF(p1);
|
||||||
|
ENERGEST_ON(p1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
energest_flush();
|
||||||
|
#endif
|
||||||
|
static const char httpd_cgi_sensor10[] HTTPD_STRING_ATTR = "<em>Radio (ENERGEST) :</em> Tx %02u:%02u:%02u (%u.%02u%%) ";
|
||||||
|
static const char httpd_cgi_sensor11[] HTTPD_STRING_ATTR = "Tx %02u:%02u:%02u (%u.%02u%%)<br>";
|
||||||
|
s=energest_total_time[ENERGEST_TYPE_LISTEN].current/RTIMER_ARCH_SECOND;
|
||||||
|
h=s*10000/seconds;p1=h/100;p2=h-p1*100;h=s/3600;s=s-h*3600;m=s/60;s=s-m*60;
|
||||||
|
numprinted+=httpd_snprintf((char *)uip_appdata+numprinted, uip_mss()-numprinted, httpd_cgi_sensor10, h,m,s,p1,p2);
|
||||||
|
if (*(char *)(uip_appdata + numprinted-4)==0) {numprinted-=4;}
|
||||||
|
else if (*(char *)(uip_appdata + numprinted-3)==0) {numprinted-=3;}
|
||||||
|
else if (*(char *)(uip_appdata + numprinted-2)==0) {numprinted-=2;}
|
||||||
|
else if (*(char *)(uip_appdata + numprinted-1)==0) {numprinted-=1;}
|
||||||
|
s=energest_total_time[ENERGEST_TYPE_TRANSMIT].current/RTIMER_ARCH_SECOND;
|
||||||
|
h=s*10000/seconds;p1=h/100;p2=h-p1*100;h=s/3600;s=s-h*3600;m=s/60;s=s-m*60;
|
||||||
|
numprinted+=httpd_snprintf((char *)uip_appdata+numprinted, uip_mss()-numprinted, httpd_cgi_sensor11, h,m,s,p1,p2);
|
||||||
|
if (*(char *)(uip_appdata + numprinted-4)==0) {numprinted-=4;}
|
||||||
|
else if (*(char *)(uip_appdata + numprinted-3)==0) {numprinted-=3;}
|
||||||
|
else if (*(char *)(uip_appdata + numprinted-2)==0) {numprinted-=2;}
|
||||||
|
else if (*(char *)(uip_appdata + numprinted-1)==0) {numprinted-=1;}
|
||||||
|
}
|
||||||
|
#endif /* ENERGEST_CONF_ON */
|
||||||
|
|
||||||
|
#if RIMESTATS_CONF_ON
|
||||||
|
#include "net/rime/rimestats.h"
|
||||||
|
static const char httpd_cgi_sensor21[] HTTPD_STRING_ATTR = "<em>Packets (RIMESTATS) :</em> Tx=%5lu Rx=%5lu TxL=%5lu RxL=%5lu<br>";
|
||||||
|
numprinted+=httpd_snprintf((char *)uip_appdata+numprinted, uip_mss()-numprinted, httpd_cgi_sensor21,
|
||||||
|
rimestats.tx,rimestats.rx,rimestats.lltx-rimestats.tx,rimestats.llrx-rimestats.rx);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if CONTIKIMAC_CONF_COMPOWER
|
||||||
|
#include "sys/compower.h"
|
||||||
|
{uint8_t p1,p2;
|
||||||
|
extern struct compower_activity current_packet;
|
||||||
|
static const char httpd_cgi_sensor31[] HTTPD_STRING_ATTR = "<em>ContikiMAC (COMPOWER):</em> Idle Rx %02u:%02u:%02u (%u.%02u%%) ";
|
||||||
|
static const char httpd_cgi_sensor32[] HTTPD_STRING_ATTR = "Tx %02u:%02u:%02u (%u.%0u%%)<br>";
|
||||||
|
|
||||||
|
s=100UL*compower_idle_activity.listen/RTIMER_ARCH_SECOND;
|
||||||
|
h=s*100/seconds;p1=h/100;p2=h-p1*100;s/=100;h=s/3600;s=s-h*3600;m=s/60;s=s-m*60;
|
||||||
|
numprinted+=httpd_snprintf((char *)uip_appdata+numprinted, uip_mss()-numprinted, httpd_cgi_sensor31, h,m,s,p1,p2);
|
||||||
|
if (*(char *)(uip_appdata + numprinted-4)==0) {numprinted-=4;}
|
||||||
|
else if (*(char *)(uip_appdata + numprinted-3)==0) {numprinted-=3;}
|
||||||
|
else if (*(char *)(uip_appdata + numprinted-2)==0) {numprinted-=2;}
|
||||||
|
else if (*(char *)(uip_appdata + numprinted-1)==0) {numprinted-=1;}
|
||||||
|
s=100UL*compower_idle_activity.transmit/RTIMER_ARCH_SECOND;
|
||||||
|
h=s*100/seconds;p1=h/100;p2=h-p1*100;s/=100;h=s/3600;s=s-h*3600;m=s/60;s=s-m*60;
|
||||||
|
numprinted+=httpd_snprintf((char *)uip_appdata+numprinted, uip_mss()-numprinted, httpd_cgi_sensor32, h,m,s,p1,p2);
|
||||||
|
if (*(char *)(uip_appdata + numprinted-4)==0) {numprinted-=4;}
|
||||||
|
else if (*(char *)(uip_appdata + numprinted-3)==0) {numprinted-=3;}
|
||||||
|
else if (*(char *)(uip_appdata + numprinted-2)==0) {numprinted-=2;}
|
||||||
|
else if (*(char *)(uip_appdata + numprinted-1)==0) {numprinted-=1;}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
return numprinted;
|
return numprinted;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -548,7 +548,7 @@ send_packet(mac_callback_t mac_callback, void *mac_callback_ptr, struct rdc_buf_
|
||||||
#if WITH_PHASE_OPTIMIZATION
|
#if WITH_PHASE_OPTIMIZATION
|
||||||
ret = phase_wait(&phase_list, packetbuf_addr(PACKETBUF_ADDR_RECEIVER),
|
ret = phase_wait(&phase_list, packetbuf_addr(PACKETBUF_ADDR_RECEIVER),
|
||||||
CYCLE_TIME, GUARD_TIME,
|
CYCLE_TIME, GUARD_TIME,
|
||||||
mac_callback, mac_callback_ptr, buf_list, 0);
|
mac_callback, mac_callback_ptr, buf_list);
|
||||||
if(ret == PHASE_DEFERRED) {
|
if(ret == PHASE_DEFERRED) {
|
||||||
return MAC_TX_DEFERRED;
|
return MAC_TX_DEFERRED;
|
||||||
}
|
}
|
||||||
|
@ -736,7 +736,7 @@ qsend_packet(mac_callback_t sent, void *ptr)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
void
|
static void
|
||||||
qsend_list(mac_callback_t sent, void *ptr, struct rdc_buf_list *buf_list)
|
qsend_list(mac_callback_t sent, void *ptr, struct rdc_buf_list *buf_list)
|
||||||
{
|
{
|
||||||
struct rdc_buf_list *curr = buf_list;
|
struct rdc_buf_list *curr = buf_list;
|
||||||
|
@ -748,14 +748,8 @@ qsend_list(mac_callback_t sent, void *ptr, struct rdc_buf_list *buf_list)
|
||||||
}
|
}
|
||||||
/* Do not send during reception of a burst */
|
/* Do not send during reception of a burst */
|
||||||
if(we_are_receiving_burst) {
|
if(we_are_receiving_burst) {
|
||||||
queuebuf_to_packetbuf(curr->buf);
|
/* Return COLLISION so the MAC may try again later */
|
||||||
/* We try to defer, and return an error this wasn't possible */
|
mac_call_sent_callback(sent, ptr, MAC_TX_COLLISION, 1);
|
||||||
int ret = phase_wait(&phase_list, packetbuf_addr(PACKETBUF_ADDR_RECEIVER),
|
|
||||||
CYCLE_TIME, GUARD_TIME,
|
|
||||||
sent, ptr, curr, 2);
|
|
||||||
if(ret != PHASE_DEFERRED) {
|
|
||||||
mac_call_sent_callback(sent, ptr, MAC_TX_ERR, 1);
|
|
||||||
}
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
/* The receiver needs to be awoken before we send */
|
/* The receiver needs to be awoken before we send */
|
||||||
|
|
|
@ -699,7 +699,7 @@ qsend_packet(mac_callback_t sent, void *ptr)
|
||||||
mac_call_sent_callback(sent, ptr, ret, 1);
|
mac_call_sent_callback(sent, ptr, ret, 1);
|
||||||
}
|
}
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
void
|
static void
|
||||||
qsend_list(mac_callback_t sent, void *ptr, struct rdc_buf_list *buf_list)
|
qsend_list(mac_callback_t sent, void *ptr, struct rdc_buf_list *buf_list)
|
||||||
{
|
{
|
||||||
if(buf_list != NULL) {
|
if(buf_list != NULL) {
|
||||||
|
|
|
@ -726,7 +726,7 @@ send_packet(mac_callback_t sent, void *ptr)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
void
|
static void
|
||||||
send_list(mac_callback_t sent, void *ptr, struct rdc_buf_list *buf_list)
|
send_list(mac_callback_t sent, void *ptr, struct rdc_buf_list *buf_list)
|
||||||
{
|
{
|
||||||
if(buf_list != NULL) {
|
if(buf_list != NULL) {
|
||||||
|
|
|
@ -41,6 +41,7 @@
|
||||||
#include "net/mac/nullrdc-noframer.h"
|
#include "net/mac/nullrdc-noframer.h"
|
||||||
#include "net/packetbuf.h"
|
#include "net/packetbuf.h"
|
||||||
#include "net/netstack.h"
|
#include "net/netstack.h"
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
static void
|
static void
|
||||||
|
@ -55,7 +56,7 @@ send_packet(mac_callback_t sent, void *ptr)
|
||||||
mac_call_sent_callback(sent, ptr, ret, 1);
|
mac_call_sent_callback(sent, ptr, ret, 1);
|
||||||
}
|
}
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
void
|
static void
|
||||||
send_list(mac_callback_t sent, void *ptr, struct rdc_buf_list *buf_list)
|
send_list(mac_callback_t sent, void *ptr, struct rdc_buf_list *buf_list)
|
||||||
{
|
{
|
||||||
if(buf_list != NULL) {
|
if(buf_list != NULL) {
|
||||||
|
|
|
@ -201,7 +201,7 @@ send_packet(mac_callback_t sent, void *ptr)
|
||||||
mac_call_sent_callback(sent, ptr, ret, 1);
|
mac_call_sent_callback(sent, ptr, ret, 1);
|
||||||
}
|
}
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
void
|
static void
|
||||||
send_list(mac_callback_t sent, void *ptr, struct rdc_buf_list *buf_list)
|
send_list(mac_callback_t sent, void *ptr, struct rdc_buf_list *buf_list)
|
||||||
{
|
{
|
||||||
if(buf_list != NULL) {
|
if(buf_list != NULL) {
|
||||||
|
|
|
@ -167,7 +167,7 @@ phase_wait(struct phase_list *list,
|
||||||
const rimeaddr_t *neighbor, rtimer_clock_t cycle_time,
|
const rimeaddr_t *neighbor, rtimer_clock_t cycle_time,
|
||||||
rtimer_clock_t guard_time,
|
rtimer_clock_t guard_time,
|
||||||
mac_callback_t mac_callback, void *mac_callback_ptr,
|
mac_callback_t mac_callback, void *mac_callback_ptr,
|
||||||
struct rdc_buf_list *buf_list, int extra_deferment)
|
struct rdc_buf_list *buf_list)
|
||||||
{
|
{
|
||||||
struct phase *e;
|
struct phase *e;
|
||||||
// const rimeaddr_t *neighbor = packetbuf_addr(PACKETBUF_ADDR_RECEIVER);
|
// const rimeaddr_t *neighbor = packetbuf_addr(PACKETBUF_ADDR_RECEIVER);
|
||||||
|
@ -176,7 +176,7 @@ phase_wait(struct phase_list *list,
|
||||||
time for the next expected phase and setup a ctimer to switch on
|
time for the next expected phase and setup a ctimer to switch on
|
||||||
the radio just before the phase. */
|
the radio just before the phase. */
|
||||||
e = find_neighbor(list, neighbor);
|
e = find_neighbor(list, neighbor);
|
||||||
if((e != NULL) | extra_deferment) {
|
if(e != NULL) {
|
||||||
rtimer_clock_t wait, now, expected, sync;
|
rtimer_clock_t wait, now, expected, sync;
|
||||||
clock_time_t ctimewait;
|
clock_time_t ctimewait;
|
||||||
|
|
||||||
|
@ -202,14 +202,10 @@ phase_wait(struct phase_list *list,
|
||||||
if(wait < guard_time) {
|
if(wait < guard_time) {
|
||||||
wait += cycle_time;
|
wait += cycle_time;
|
||||||
}
|
}
|
||||||
if(extra_deferment) {
|
|
||||||
wait += extra_deferment * cycle_time;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
ctimewait = (CLOCK_SECOND * (wait - guard_time)) / RTIMER_ARCH_SECOND;
|
ctimewait = (CLOCK_SECOND * (wait - guard_time)) / RTIMER_ARCH_SECOND;
|
||||||
|
|
||||||
if((ctimewait > PHASE_DEFER_THRESHOLD) | extra_deferment) {
|
if(ctimewait > PHASE_DEFER_THRESHOLD) {
|
||||||
struct phase_queueitem *p;
|
struct phase_queueitem *p;
|
||||||
|
|
||||||
p = memb_alloc(&queued_packets_memb);
|
p = memb_alloc(&queued_packets_memb);
|
||||||
|
|
|
@ -76,7 +76,7 @@ void phase_init(struct phase_list *list);
|
||||||
phase_status_t phase_wait(struct phase_list *list, const rimeaddr_t *neighbor,
|
phase_status_t phase_wait(struct phase_list *list, const rimeaddr_t *neighbor,
|
||||||
rtimer_clock_t cycle_time, rtimer_clock_t wait_before,
|
rtimer_clock_t cycle_time, rtimer_clock_t wait_before,
|
||||||
mac_callback_t mac_callback, void *mac_callback_ptr,
|
mac_callback_t mac_callback, void *mac_callback_ptr,
|
||||||
struct rdc_buf_list *buf_list, int extra_deferment);
|
struct rdc_buf_list *buf_list);
|
||||||
void phase_update(const struct phase_list *list, const rimeaddr_t *neighbor,
|
void phase_update(const struct phase_list *list, const rimeaddr_t *neighbor,
|
||||||
rtimer_clock_t time, int mac_status);
|
rtimer_clock_t time, int mac_status);
|
||||||
|
|
||||||
|
|
|
@ -763,7 +763,7 @@ qsend_packet(mac_callback_t sent, void *ptr)
|
||||||
mac_call_sent_callback(sent, ptr, ret, 1);
|
mac_call_sent_callback(sent, ptr, ret, 1);
|
||||||
}
|
}
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
void
|
static void
|
||||||
qsend_list(mac_callback_t sent, void *ptr, struct rdc_buf_list *buf_list)
|
qsend_list(mac_callback_t sent, void *ptr, struct rdc_buf_list *buf_list)
|
||||||
{
|
{
|
||||||
if(buf_list != NULL) {
|
if(buf_list != NULL) {
|
||||||
|
|
|
@ -24,8 +24,7 @@ CFLAGS += -DUIP_CONF_IPV6_RPL=1
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# linker optimizations
|
# linker optimizations
|
||||||
CFLAGS += -ffunction-sections
|
SMALL=1
|
||||||
LDFLAGS += -Wl,--gc-sections,--undefined=_reset_vector__,--undefined=InterruptVectors,--undefined=_copy_data_init__,--undefined=_clear_bss_init__,--undefined=_end_of_init__
|
|
||||||
|
|
||||||
# REST framework, requires WITH_COAP
|
# REST framework, requires WITH_COAP
|
||||||
ifeq ($(WITH_COAP), 7)
|
ifeq ($(WITH_COAP), 7)
|
||||||
|
|
|
@ -34,9 +34,11 @@
|
||||||
|
|
||||||
#define SICSLOWPAN_CONF_FRAG 1
|
#define SICSLOWPAN_CONF_FRAG 1
|
||||||
|
|
||||||
#ifndef QUEUEBUF_CONF_NUM
|
/* Save some memory for the sky platform */
|
||||||
#define QUEUEBUF_CONF_NUM 6
|
#undef UIP_CONF_DS6_NBR_NBU
|
||||||
#endif
|
#define UIP_CONF_DS6_NBR_NBU 10
|
||||||
|
#undef UIP_CONF_DS6_ROUTE_NBU
|
||||||
|
#define UIP_CONF_DS6_ROUTE_NBU 10
|
||||||
|
|
||||||
/* Increase rpl-border-router IP-buffer when using 128 */
|
/* Increase rpl-border-router IP-buffer when using 128 */
|
||||||
#ifndef REST_MAX_CHUNK_SIZE
|
#ifndef REST_MAX_CHUNK_SIZE
|
||||||
|
@ -62,4 +64,6 @@
|
||||||
#define WEBSERVER_CONF_CFS_CONNS 2
|
#define WEBSERVER_CONF_CFS_CONNS 2
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#endif /* __PROJECT_RPL_WEB_CONF_H__ */
|
#endif /* __PROJECT_RPL_WEB_CONF_H__ */
|
||||||
|
|
|
@ -93,7 +93,7 @@
|
||||||
* Resources are defined by the RESOURCE macro.
|
* Resources are defined by the RESOURCE macro.
|
||||||
* Signature: resource name, the RESTful methods it handles, and its URI path (omitting the leading slash).
|
* Signature: resource name, the RESTful methods it handles, and its URI path (omitting the leading slash).
|
||||||
*/
|
*/
|
||||||
RESOURCE(helloworld, METHOD_GET, "hello", "title=\"Hello world (set length with ?len query)\";rt=\"Text\"");
|
RESOURCE(helloworld, METHOD_GET, "hello", "title=\"Hello world: ?len=0..\";rt=\"Text\"");
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* A handler function named [resource name]_handler must be implemented for each RESOURCE.
|
* A handler function named [resource name]_handler must be implemented for each RESOURCE.
|
||||||
|
@ -105,8 +105,9 @@ void
|
||||||
helloworld_handler(void* request, void* response, uint8_t *buffer, uint16_t preferred_size, int32_t *offset)
|
helloworld_handler(void* request, void* response, uint8_t *buffer, uint16_t preferred_size, int32_t *offset)
|
||||||
{
|
{
|
||||||
const char *len = NULL;
|
const char *len = NULL;
|
||||||
int length = 12; /* ------->| */
|
/* Some data that has the length up to REST_MAX_CHUNK_SIZE. For more, see the chunk resource. */
|
||||||
char *message = "Hello World! ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789?!at 86 now+2+4at 99 now100..105..110..115..120..125..130..135..140..145..150..155..160";
|
char const * const message = "Hello World! ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxy";
|
||||||
|
int length = 12; /* |<-------->| */
|
||||||
|
|
||||||
/* The query string can be retrieved by rest_get_query() or parsed for its key-value pairs. */
|
/* The query string can be retrieved by rest_get_query() or parsed for its key-value pairs. */
|
||||||
if (REST.get_query_variable(request, "len", &len)) {
|
if (REST.get_query_variable(request, "len", &len)) {
|
||||||
|
@ -124,7 +125,7 @@ helloworld_handler(void* request, void* response, uint8_t *buffer, uint16_t pref
|
||||||
}
|
}
|
||||||
|
|
||||||
/* This resource mirrors the incoming request. It shows how to access the options and how to set them for the response. */
|
/* This resource mirrors the incoming request. It shows how to access the options and how to set them for the response. */
|
||||||
RESOURCE(mirror, METHOD_GET | METHOD_POST | METHOD_PUT | METHOD_DELETE | HAS_SUB_RESOURCES, "mirror", "title=\"Returns your decoded message\";rt=\"Debug\"");
|
RESOURCE(mirror, METHOD_GET | METHOD_POST | METHOD_PUT | METHOD_DELETE, "mirror", "title=\"Returns your decoded message\";rt=\"Debug\"");
|
||||||
|
|
||||||
void
|
void
|
||||||
mirror_handler(void* request, void* response, uint8_t *buffer, uint16_t preferred_size, int32_t *offset)
|
mirror_handler(void* request, void* response, uint8_t *buffer, uint16_t preferred_size, int32_t *offset)
|
||||||
|
@ -283,7 +284,7 @@ mirror_handler(void* request, void* response, uint8_t *buffer, uint16_t preferre
|
||||||
*/
|
*/
|
||||||
RESOURCE(chunks, METHOD_GET, "chunks", "title=\"Blockwise demo\";rt=\"Data\"");
|
RESOURCE(chunks, METHOD_GET, "chunks", "title=\"Blockwise demo\";rt=\"Data\"");
|
||||||
|
|
||||||
#define CHUNKS_TOTAL 1030
|
#define CHUNKS_TOTAL 2050
|
||||||
|
|
||||||
void
|
void
|
||||||
chunks_handler(void* request, void* response, uint8_t *buffer, uint16_t preferred_size, int32_t *offset)
|
chunks_handler(void* request, void* response, uint8_t *buffer, uint16_t preferred_size, int32_t *offset)
|
||||||
|
@ -294,26 +295,35 @@ chunks_handler(void* request, void* response, uint8_t *buffer, uint16_t preferre
|
||||||
if (*offset>=CHUNKS_TOTAL)
|
if (*offset>=CHUNKS_TOTAL)
|
||||||
{
|
{
|
||||||
REST.set_response_status(response, REST.status.BAD_OPTION);
|
REST.set_response_status(response, REST.status.BAD_OPTION);
|
||||||
REST.set_response_payload(response, (uint8_t*)"Block out of scope", 18);
|
/* A block error message should not exceed the minimum block size (16). */
|
||||||
|
REST.set_response_payload(response, (uint8_t*)"BlockOutOfScope", 15);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Generate data until reaching CHUNKS_TOTAL. */
|
/* Generate data until reaching CHUNKS_TOTAL. */
|
||||||
while (strpos<REST_MAX_CHUNK_SIZE) {
|
while (strpos<preferred_size)
|
||||||
strpos += snprintf((char *)buffer+strpos, REST_MAX_CHUNK_SIZE-strpos+1, "|%ld|", *offset);
|
{
|
||||||
|
strpos += snprintf((char *)buffer+strpos, preferred_size-strpos+1, "|%ld|", *offset);
|
||||||
}
|
}
|
||||||
/* Truncate if above. */
|
|
||||||
if (*offset+strpos > CHUNKS_TOTAL)
|
/* snprintf() does not adjust return value if truncated by size. */
|
||||||
|
if (strpos > preferred_size)
|
||||||
|
{
|
||||||
|
strpos = preferred_size;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Truncate if above total size. */
|
||||||
|
if (*offset+(int32_t)strpos > CHUNKS_TOTAL)
|
||||||
{
|
{
|
||||||
strpos = CHUNKS_TOTAL - *offset;
|
strpos = CHUNKS_TOTAL - *offset;
|
||||||
}
|
}
|
||||||
|
|
||||||
REST.set_response_payload(response, buffer, strpos);
|
REST.set_response_payload(response, buffer, strpos);
|
||||||
|
|
||||||
/* Signal chunk awareness of resource to framework. */
|
/* IMPORTANT for chunk-wise resources: Signal chunk awareness to REST engine. */
|
||||||
*offset += strpos;
|
*offset += strpos;
|
||||||
|
|
||||||
/* Signal end of resource. */
|
/* Signal end of resource representation. */
|
||||||
if (*offset>=CHUNKS_TOTAL)
|
if (*offset>=CHUNKS_TOTAL)
|
||||||
{
|
{
|
||||||
*offset = -1;
|
*offset = -1;
|
||||||
|
@ -395,7 +405,7 @@ event_event_handler(resource_t *r)
|
||||||
|
|
||||||
#if defined (PLATFORM_HAS_LEDS)
|
#if defined (PLATFORM_HAS_LEDS)
|
||||||
/*A simple actuator example, depending on the color query parameter and post variable mode, corresponding led is activated or deactivated*/
|
/*A simple actuator example, depending on the color query parameter and post variable mode, corresponding led is activated or deactivated*/
|
||||||
RESOURCE(led, METHOD_POST | METHOD_PUT , "leds", "title=\"Led control (use ?color=red|green|blue and POST/PUT mode=on|off)\";rt=\"Control\"");
|
RESOURCE(led, METHOD_POST | METHOD_PUT , "leds", "title=\"LEDs: ?color=r|g|b, POST/PUT mode=on|off\";rt=\"Control\"");
|
||||||
|
|
||||||
void
|
void
|
||||||
led_handler(void* request, void* response, uint8_t *buffer, uint16_t preferred_size, int32_t *offset)
|
led_handler(void* request, void* response, uint8_t *buffer, uint16_t preferred_size, int32_t *offset)
|
||||||
|
@ -409,11 +419,11 @@ led_handler(void* request, void* response, uint8_t *buffer, uint16_t preferred_s
|
||||||
if ((len=REST.get_query_variable(request, "color", &color))) {
|
if ((len=REST.get_query_variable(request, "color", &color))) {
|
||||||
PRINTF("color %.*s\n", len, color);
|
PRINTF("color %.*s\n", len, color);
|
||||||
|
|
||||||
if (strncmp(color, "red", len)==0) {
|
if (strncmp(color, "r", len)==0) {
|
||||||
led = LEDS_RED;
|
led = LEDS_RED;
|
||||||
} else if(strncmp(color,"green", len)==0) {
|
} else if(strncmp(color,"g", len)==0) {
|
||||||
led = LEDS_GREEN;
|
led = LEDS_GREEN;
|
||||||
} else if (strncmp(color,"blue", len)==0) {
|
} else if (strncmp(color,"b", len)==0) {
|
||||||
led = LEDS_BLUE;
|
led = LEDS_BLUE;
|
||||||
} else {
|
} else {
|
||||||
success = 0;
|
success = 0;
|
||||||
|
@ -524,7 +534,6 @@ battery_handler(void* request, void* response, uint8_t *buffer, uint16_t preferr
|
||||||
}
|
}
|
||||||
#endif /* PLATFORM_HAS_BATTERY */
|
#endif /* PLATFORM_HAS_BATTERY */
|
||||||
|
|
||||||
|
|
||||||
PROCESS(rest_server_example, "Rest Server Example");
|
PROCESS(rest_server_example, "Rest Server Example");
|
||||||
AUTOSTART_PROCESSES(&rest_server_example);
|
AUTOSTART_PROCESSES(&rest_server_example);
|
||||||
|
|
||||||
|
@ -569,6 +578,7 @@ PROCESS_THREAD(rest_server_example, ev, data)
|
||||||
rest_activate_resource(&resource_led);
|
rest_activate_resource(&resource_led);
|
||||||
rest_activate_resource(&resource_toggle);
|
rest_activate_resource(&resource_toggle);
|
||||||
#endif /* PLATFORM_HAS_LEDS */
|
#endif /* PLATFORM_HAS_LEDS */
|
||||||
|
|
||||||
#if defined (PLATFORM_HAS_LIGHT)
|
#if defined (PLATFORM_HAS_LIGHT)
|
||||||
SENSORS_ACTIVATE(light_sensor);
|
SENSORS_ACTIVATE(light_sensor);
|
||||||
rest_activate_resource(&resource_light);
|
rest_activate_resource(&resource_light);
|
||||||
|
|
|
@ -47,9 +47,9 @@
|
||||||
se.sics.cooja.mspmote.SkyMoteType
|
se.sics.cooja.mspmote.SkyMoteType
|
||||||
<identifier>skyweb</identifier>
|
<identifier>skyweb</identifier>
|
||||||
<description>Rest</description>
|
<description>Rest</description>
|
||||||
<source EXPORT="discard">[CONTIKI_DIR]/examples/rest-example/rest-server-example.c</source>
|
<source EXPORT="discard">[CONTIKI_DIR]/examples/er-rest-example/rest-server-example.c</source>
|
||||||
<commands EXPORT="discard">make rest-server-example.sky TARGET=sky</commands>
|
<commands EXPORT="discard">make rest-server-example.sky TARGET=sky</commands>
|
||||||
<firmware EXPORT="copy">[CONTIKI_DIR]/examples/rest-example/rest-server-example.sky</firmware>
|
<firmware EXPORT="copy">[CONTIKI_DIR]/examples/er-rest-example/rest-server-example.sky</firmware>
|
||||||
<moteinterface>se.sics.cooja.interfaces.Position</moteinterface>
|
<moteinterface>se.sics.cooja.interfaces.Position</moteinterface>
|
||||||
<moteinterface>se.sics.cooja.interfaces.RimeAddress</moteinterface>
|
<moteinterface>se.sics.cooja.interfaces.RimeAddress</moteinterface>
|
||||||
<moteinterface>se.sics.cooja.interfaces.IPAddress</moteinterface>
|
<moteinterface>se.sics.cooja.interfaces.IPAddress</moteinterface>
|
||||||
|
@ -98,7 +98,7 @@
|
||||||
<plugin>
|
<plugin>
|
||||||
se.sics.cooja.plugins.SimControl
|
se.sics.cooja.plugins.SimControl
|
||||||
<width>259</width>
|
<width>259</width>
|
||||||
<z>1</z>
|
<z>5</z>
|
||||||
<height>179</height>
|
<height>179</height>
|
||||||
<location_x>0</location_x>
|
<location_x>0</location_x>
|
||||||
<location_y>0</location_y>
|
<location_y>0</location_y>
|
||||||
|
@ -115,21 +115,22 @@
|
||||||
<viewport>7.9849281638410705 0.0 0.0 7.9849281638410705 -133.27812697619663 -225.04752569190535</viewport>
|
<viewport>7.9849281638410705 0.0 0.0 7.9849281638410705 -133.27812697619663 -225.04752569190535</viewport>
|
||||||
</plugin_config>
|
</plugin_config>
|
||||||
<width>300</width>
|
<width>300</width>
|
||||||
<z>0</z>
|
<z>4</z>
|
||||||
<height>175</height>
|
<height>175</height>
|
||||||
<location_x>371</location_x>
|
<location_x>263</location_x>
|
||||||
<location_y>2</location_y>
|
<location_y>3</location_y>
|
||||||
</plugin>
|
</plugin>
|
||||||
<plugin>
|
<plugin>
|
||||||
se.sics.cooja.plugins.LogListener
|
se.sics.cooja.plugins.LogListener
|
||||||
<plugin_config>
|
<plugin_config>
|
||||||
<filter />
|
<filter />
|
||||||
|
<coloring />
|
||||||
</plugin_config>
|
</plugin_config>
|
||||||
<width>762</width>
|
<width>560</width>
|
||||||
<z>3</z>
|
<z>1</z>
|
||||||
<height>326</height>
|
<height>326</height>
|
||||||
<location_x>12</location_x>
|
<location_x>1</location_x>
|
||||||
<location_y>294</location_y>
|
<location_y>293</location_y>
|
||||||
</plugin>
|
</plugin>
|
||||||
<plugin>
|
<plugin>
|
||||||
se.sics.cooja.plugins.RadioLogger
|
se.sics.cooja.plugins.RadioLogger
|
||||||
|
@ -148,10 +149,10 @@
|
||||||
SerialSocketServer
|
SerialSocketServer
|
||||||
<mote_arg>0</mote_arg>
|
<mote_arg>0</mote_arg>
|
||||||
<width>422</width>
|
<width>422</width>
|
||||||
<z>5</z>
|
<z>2</z>
|
||||||
<height>74</height>
|
<height>74</height>
|
||||||
<location_x>1234</location_x>
|
<location_x>39</location_x>
|
||||||
<location_y>93</location_y>
|
<location_y>199</location_y>
|
||||||
</plugin>
|
</plugin>
|
||||||
<plugin>
|
<plugin>
|
||||||
se.sics.cooja.plugins.TimeLine
|
se.sics.cooja.plugins.TimeLine
|
||||||
|
@ -166,10 +167,10 @@
|
||||||
<zoomfactor>25.49079397896416</zoomfactor>
|
<zoomfactor>25.49079397896416</zoomfactor>
|
||||||
</plugin_config>
|
</plugin_config>
|
||||||
<width>1624</width>
|
<width>1624</width>
|
||||||
<z>4</z>
|
<z>3</z>
|
||||||
<height>252</height>
|
<height>252</height>
|
||||||
<location_x>166</location_x>
|
<location_x>4</location_x>
|
||||||
<location_y>699</location_y>
|
<location_y>622</location_y>
|
||||||
</plugin>
|
</plugin>
|
||||||
<plugin>
|
<plugin>
|
||||||
se.sics.cooja.plugins.MoteInterfaceViewer
|
se.sics.cooja.plugins.MoteInterfaceViewer
|
||||||
|
@ -178,11 +179,11 @@
|
||||||
<interface>Serial port</interface>
|
<interface>Serial port</interface>
|
||||||
<scrollpos>0,0</scrollpos>
|
<scrollpos>0,0</scrollpos>
|
||||||
</plugin_config>
|
</plugin_config>
|
||||||
<width>662</width>
|
<width>702</width>
|
||||||
<z>2</z>
|
<z>0</z>
|
||||||
<height>362</height>
|
<height>646</height>
|
||||||
<location_x>7</location_x>
|
<location_x>564</location_x>
|
||||||
<location_y>221</location_y>
|
<location_y>2</location_y>
|
||||||
</plugin>
|
</plugin>
|
||||||
</simconf>
|
</simconf>
|
||||||
|
|
||||||
|
|
|
@ -7,6 +7,9 @@ WITH_UIP6=1
|
||||||
UIP_CONF_IPV6=1
|
UIP_CONF_IPV6=1
|
||||||
CFLAGS+= -DUIP_CONF_IPV6_RPL
|
CFLAGS+= -DUIP_CONF_IPV6_RPL
|
||||||
|
|
||||||
|
#linker optimizations
|
||||||
|
SMALL=1
|
||||||
|
|
||||||
CFLAGS += -DPROJECT_CONF_H=\"project-conf.h\"
|
CFLAGS += -DPROJECT_CONF_H=\"project-conf.h\"
|
||||||
PROJECT_SOURCEFILES += slip-bridge.c
|
PROJECT_SOURCEFILES += slip-bridge.c
|
||||||
|
|
||||||
|
|
|
@ -141,7 +141,7 @@ typedef unsigned short uip_stats_t;
|
||||||
#define UIP_CONF_TCP_SPLIT 0
|
#define UIP_CONF_TCP_SPLIT 0
|
||||||
#define UIP_CONF_IP_FORWARD 0
|
#define UIP_CONF_IP_FORWARD 0
|
||||||
#define UIP_CONF_LOGGING 0
|
#define UIP_CONF_LOGGING 0
|
||||||
#define UIP_CONF_UDP_CHECKSUMS 0
|
#define UIP_CONF_UDP_CHECKSUMS 1
|
||||||
|
|
||||||
/* Not used but avoids compile errors while sicslowpan.c is being developed */
|
/* Not used but avoids compile errors while sicslowpan.c is being developed */
|
||||||
#define SICSLOWPAN_CONF_COMPRESSION SICSLOWPAN_COMPRESSION_HC06
|
#define SICSLOWPAN_CONF_COMPRESSION SICSLOWPAN_COMPRESSION_HC06
|
||||||
|
|
Loading…
Add table
Reference in a new issue