update llayer
This commit is contained in:
parent
d8e0dd7005
commit
e58322260f
|
@ -50,14 +50,11 @@
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
|
|
||||||
#include "dev/leds.h"
|
#include "dev/leds.h"
|
||||||
|
|
||||||
#define DEBUG DEBUG_NONE
|
#define DEBUG DEBUG_NONE
|
||||||
#include "net/ip/uip-debug.h"
|
#include "net/ip/uip-debug.h"
|
||||||
|
|
||||||
uint16_t dag_id[] = {0x1111, 0x1100, 0, 0, 0, 0, 0, 0x0011};
|
|
||||||
|
|
||||||
static uip_ipaddr_t prefix;
|
static uip_ipaddr_t prefix;
|
||||||
static uint8_t prefix_set;
|
static uint8_t prefix_set;
|
||||||
|
|
||||||
|
@ -103,7 +100,7 @@ PROCESS_THREAD(webserver_nogui_process, ev, data)
|
||||||
PROCESS_WAIT_EVENT_UNTIL(ev == tcpip_event);
|
PROCESS_WAIT_EVENT_UNTIL(ev == tcpip_event);
|
||||||
httpd_appcall(data);
|
httpd_appcall(data);
|
||||||
}
|
}
|
||||||
|
|
||||||
PROCESS_END();
|
PROCESS_END();
|
||||||
}
|
}
|
||||||
AUTOSTART_PROCESSES(&border_router_process,&webserver_nogui_process);
|
AUTOSTART_PROCESSES(&border_router_process,&webserver_nogui_process);
|
||||||
|
@ -147,7 +144,6 @@ ipaddr_add(const uip_ipaddr_t *addr)
|
||||||
static
|
static
|
||||||
PT_THREAD(generate_routes(struct httpd_state *s))
|
PT_THREAD(generate_routes(struct httpd_state *s))
|
||||||
{
|
{
|
||||||
static int i;
|
|
||||||
static uip_ds6_route_t *r;
|
static uip_ds6_route_t *r;
|
||||||
static uip_ds6_nbr_t *nbr;
|
static uip_ds6_nbr_t *nbr;
|
||||||
#if BUF_USES_STACK
|
#if BUF_USES_STACK
|
||||||
|
@ -180,7 +176,7 @@ PT_THREAD(generate_routes(struct httpd_state *s))
|
||||||
switch (nbr->state) {
|
switch (nbr->state) {
|
||||||
case NBR_INCOMPLETE: ADD(" INCOMPLETE");break;
|
case NBR_INCOMPLETE: ADD(" INCOMPLETE");break;
|
||||||
case NBR_REACHABLE: ADD(" REACHABLE");break;
|
case NBR_REACHABLE: ADD(" REACHABLE");break;
|
||||||
case NBR_STALE: ADD(" STALE");break;
|
case NBR_STALE: ADD(" STALE");break;
|
||||||
case NBR_DELAY: ADD(" DELAY");break;
|
case NBR_DELAY: ADD(" DELAY");break;
|
||||||
case NBR_PROBE: ADD(" NBR_PROBE");break;
|
case NBR_PROBE: ADD(" NBR_PROBE");break;
|
||||||
}
|
}
|
||||||
|
@ -192,7 +188,7 @@ PT_THREAD(generate_routes(struct httpd_state *s))
|
||||||
switch (nbr->state) {
|
switch (nbr->state) {
|
||||||
case NBR_INCOMPLETE: ADD(" INCOMPLETE");break;
|
case NBR_INCOMPLETE: ADD(" INCOMPLETE");break;
|
||||||
case NBR_REACHABLE: ADD(" REACHABLE");break;
|
case NBR_REACHABLE: ADD(" REACHABLE");break;
|
||||||
case NBR_STALE: ADD(" STALE");break;
|
case NBR_STALE: ADD(" STALE");break;
|
||||||
case NBR_DELAY: ADD(" DELAY");break;
|
case NBR_DELAY: ADD(" DELAY");break;
|
||||||
case NBR_PROBE: ADD(" NBR_PROBE");break;
|
case NBR_PROBE: ADD(" NBR_PROBE");break;
|
||||||
}
|
}
|
||||||
|
@ -251,7 +247,7 @@ PT_THREAD(generate_routes(struct httpd_state *s))
|
||||||
ADD("/%u (via ", r->length);
|
ADD("/%u (via ", r->length);
|
||||||
ipaddr_add(uip_ds6_route_nexthop(r));
|
ipaddr_add(uip_ds6_route_nexthop(r));
|
||||||
if(1 || (r->state.lifetime < 600)) {
|
if(1 || (r->state.lifetime < 600)) {
|
||||||
ADD(") %lus\n", r->state.lifetime);
|
ADD(") %lus\n", (unsigned long)r->state.lifetime);
|
||||||
} else {
|
} else {
|
||||||
ADD(")\n");
|
ADD(")\n");
|
||||||
}
|
}
|
||||||
|
@ -322,23 +318,30 @@ request_prefix(void)
|
||||||
void
|
void
|
||||||
set_prefix_64(uip_ipaddr_t *prefix_64)
|
set_prefix_64(uip_ipaddr_t *prefix_64)
|
||||||
{
|
{
|
||||||
|
rpl_dag_t *dag;
|
||||||
uip_ipaddr_t ipaddr;
|
uip_ipaddr_t ipaddr;
|
||||||
memcpy(&prefix, prefix_64, 16);
|
memcpy(&prefix, prefix_64, 16);
|
||||||
memcpy(&ipaddr, prefix_64, 16);
|
memcpy(&ipaddr, prefix_64, 16);
|
||||||
prefix_set = 1;
|
prefix_set = 1;
|
||||||
uip_ds6_set_addr_iid(&ipaddr, &uip_lladdr);
|
uip_ds6_set_addr_iid(&ipaddr, &uip_lladdr);
|
||||||
uip_ds6_addr_add(&ipaddr, 0, ADDR_AUTOCONF);
|
uip_ds6_addr_add(&ipaddr, 0, ADDR_AUTOCONF);
|
||||||
|
|
||||||
|
dag = rpl_set_root(RPL_DEFAULT_INSTANCE, &ipaddr);
|
||||||
|
if(dag != NULL) {
|
||||||
|
rpl_set_prefix(dag, &prefix, 64);
|
||||||
|
PRINTF("created a new RPL dag\n");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
PROCESS_THREAD(border_router_process, ev, data)
|
PROCESS_THREAD(border_router_process, ev, data)
|
||||||
{
|
{
|
||||||
static struct etimer et;
|
static struct etimer et;
|
||||||
rpl_dag_t *dag;
|
|
||||||
|
|
||||||
PROCESS_BEGIN();
|
PROCESS_BEGIN();
|
||||||
leds_off(LEDS_RED);
|
leds_off(LEDS_RED);
|
||||||
|
|
||||||
/* While waiting for the prefix to be sent through the SLIP connection, the future
|
/* While waiting for the prefix to be sent through the SLIP connection, the future
|
||||||
* border router can join an existing DAG as a parent or child, or acquire a default
|
* border router can join an existing DAG as a parent or child, or acquire a default
|
||||||
* router that will later take precedence over the SLIP fallback interface.
|
* router that will later take precedence over the SLIP fallback interface.
|
||||||
* Prevent that by turning the radio off until we are initialized as a DAG root.
|
* Prevent that by turning the radio off until we are initialized as a DAG root.
|
||||||
*/
|
*/
|
||||||
|
@ -357,7 +360,7 @@ PROCESS_THREAD(border_router_process, ev, data)
|
||||||
cpu will interfere with establishing the SLIP connection */
|
cpu will interfere with establishing the SLIP connection */
|
||||||
NETSTACK_MAC.off(1);
|
NETSTACK_MAC.off(1);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Request prefix until it has been received */
|
/* Request prefix until it has been received */
|
||||||
while(!prefix_set) {
|
while(!prefix_set) {
|
||||||
etimer_set(&et, CLOCK_SECOND);
|
etimer_set(&et, CLOCK_SECOND);
|
||||||
|
@ -365,17 +368,11 @@ PROCESS_THREAD(border_router_process, ev, data)
|
||||||
PROCESS_WAIT_EVENT_UNTIL(etimer_expired(&et));
|
PROCESS_WAIT_EVENT_UNTIL(etimer_expired(&et));
|
||||||
}
|
}
|
||||||
|
|
||||||
dag = rpl_set_root(RPL_DEFAULT_INSTANCE,(uip_ip6addr_t *)dag_id);
|
|
||||||
if(dag != NULL) {
|
|
||||||
rpl_set_prefix(dag, &prefix, 64);
|
|
||||||
PRINTF("created a new RPL dag\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Now turn the radio on, but disable radio duty cycling.
|
/* Now turn the radio on, but disable radio duty cycling.
|
||||||
* Since we are the DAG root, reception delays would constrain mesh throughbut.
|
* Since we are the DAG root, reception delays would constrain mesh throughbut.
|
||||||
*/
|
*/
|
||||||
NETSTACK_MAC.off(1);
|
NETSTACK_MAC.off(1);
|
||||||
|
|
||||||
#if DEBUG || 1
|
#if DEBUG || 1
|
||||||
print_local_addresses();
|
print_local_addresses();
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in a new issue