sys/net/routing/etx_beaconing: Fix warnings and comment style
This commit is contained in:
parent
4562f6b824
commit
cfe657b1ee
@ -21,6 +21,7 @@
|
|||||||
#define ETX_BEACONING_H_
|
#define ETX_BEACONING_H_
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include "sixlowpan.h"
|
#include "sixlowpan.h"
|
||||||
|
#include "timex.h"
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
@ -42,7 +43,6 @@ extern "C" {
|
|||||||
#define ETX_MAX_CANDIDATE_NEIGHBORS (40)
|
#define ETX_MAX_CANDIDATE_NEIGHBORS (40)
|
||||||
#endif
|
#endif
|
||||||
//ETX Interval parameters
|
//ETX Interval parameters
|
||||||
#define MS (1000)
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* ETX_INTERVAL
|
* ETX_INTERVAL
|
||||||
@ -51,13 +51,13 @@ extern "C" {
|
|||||||
* Should be divisible through 2 (For ETX_DEF_JIT_CORRECT)
|
* Should be divisible through 2 (For ETX_DEF_JIT_CORRECT)
|
||||||
* and 5 (For ETX_MAX_JITTER) unless those values are adjusted too.
|
* and 5 (For ETX_MAX_JITTER) unless those values are adjusted too.
|
||||||
*/
|
*/
|
||||||
#define ETX_INTERVAL (1000)
|
#define ETX_INTERVAL (1ul * MS_IN_USEC)
|
||||||
#define ETX_WINDOW (10) //10 is the default value
|
#define ETX_WINDOW (10) //10 is the default value
|
||||||
#define ETX_BEST_CANDIDATES (15) //Sent only 15 candidates in a beaconing packet
|
#define ETX_BEST_CANDIDATES (15) //Sent only 15 candidates in a beaconing packet
|
||||||
#define ETX_TUPLE_SIZE (2) //1 Byte for Addr, 1 Byte for packets rec.
|
#define ETX_TUPLE_SIZE (2) //1 Byte for Addr, 1 Byte for packets rec.
|
||||||
#define ETX_PKT_REC_OFFSET (ETX_TUPLE_SIZE - 1) //Offset in a tuple of (addr,pkt_rec), will always be the last byte
|
#define ETX_PKT_REC_OFFSET (ETX_TUPLE_SIZE - 1) //Offset in a tuple of (addr,pkt_rec), will always be the last byte
|
||||||
#define ETX_IPV6_LAST_BYTE (15) //The last byte for an ipv6 address
|
#define ETX_IPV6_LAST_BYTE (15) //The last byte for an ipv6 address
|
||||||
#define ETX_MAX_JITTER (ETX_INTERVAL / 5) //The default value is 20% of ETX_INTERVAL
|
#define ETX_MAX_JITTER (ETX_INTERVAL / 5ul) //The default value is 20% of ETX_INTERVAL
|
||||||
#define ETX_JITTER_MOD (ETX_MAX_JITTER + 1) //The modulo value for jitter computation
|
#define ETX_JITTER_MOD (ETX_MAX_JITTER + 1) //The modulo value for jitter computation
|
||||||
#define ETX_DEF_JIT_CORRECT (ETX_MAX_JITTER / 2) //Default Jitter correction value (normally ETX_MAX_JITTER / 2)
|
#define ETX_DEF_JIT_CORRECT (ETX_MAX_JITTER / 2) //Default Jitter correction value (normally ETX_MAX_JITTER / 2)
|
||||||
#define ETX_CLOCK_ADJUST (52500) //Adjustment for clockthread computations to stay close/near ETX_INTERVAL
|
#define ETX_CLOCK_ADJUST (52500) //Adjustment for clockthread computations to stay close/near ETX_INTERVAL
|
||||||
|
|||||||
@ -29,6 +29,7 @@
|
|||||||
#include "vtimer.h"
|
#include "vtimer.h"
|
||||||
#include "thread.h"
|
#include "thread.h"
|
||||||
#include "transceiver.h"
|
#include "transceiver.h"
|
||||||
|
#include "timex.h"
|
||||||
|
|
||||||
#include "sixlowpan/ip.h"
|
#include "sixlowpan/ip.h"
|
||||||
#include "ieee802154_frame.h"
|
#include "ieee802154_frame.h"
|
||||||
@ -143,7 +144,7 @@ void etx_show_candidates(void)
|
|||||||
void etx_init_beaconing(ipv6_addr_t *address)
|
void etx_init_beaconing(ipv6_addr_t *address)
|
||||||
{
|
{
|
||||||
own_address = address;
|
own_address = address;
|
||||||
//set code
|
/* set code */
|
||||||
DEBUGF("ETX BEACON INIT");
|
DEBUGF("ETX BEACON INIT");
|
||||||
etx_send_buf[0] = ETX_PKT_OPTVAL;
|
etx_send_buf[0] = ETX_PKT_OPTVAL;
|
||||||
|
|
||||||
@ -158,7 +159,7 @@ void etx_init_beaconing(ipv6_addr_t *address)
|
|||||||
etx_clock_pid = thread_create(etx_clock_buf, sizeof(etx_clock_buf),
|
etx_clock_pid = thread_create(etx_clock_buf, sizeof(etx_clock_buf),
|
||||||
THREAD_PRIORITY_MAIN - 1, CREATE_STACKTEST,
|
THREAD_PRIORITY_MAIN - 1, CREATE_STACKTEST,
|
||||||
etx_clock, NULL, "etx_clock");
|
etx_clock, NULL, "etx_clock");
|
||||||
//register at transceiver
|
/* register at transceiver */
|
||||||
transceiver_register(TRANSCEIVER_CC1100, etx_radio_pid);
|
transceiver_register(TRANSCEIVER_CC1100, etx_radio_pid);
|
||||||
DEBUG("...[DONE]\n");
|
DEBUG("...[DONE]\n");
|
||||||
}
|
}
|
||||||
@ -178,7 +179,7 @@ static void *etx_beacon(void *arg)
|
|||||||
while (true) {
|
while (true) {
|
||||||
thread_sleep();
|
thread_sleep();
|
||||||
mutex_lock(&etx_mutex);
|
mutex_lock(&etx_mutex);
|
||||||
//Build etx packet
|
/* Build etx packet */
|
||||||
uint8_t p_length = 0;
|
uint8_t p_length = 0;
|
||||||
|
|
||||||
for (uint8_t i = 0; i < ETX_BEST_CANDIDATES; i++) {
|
for (uint8_t i = 0; i < ETX_BEST_CANDIDATES; i++) {
|
||||||
@ -203,7 +204,7 @@ static void *etx_beacon(void *arg)
|
|||||||
|
|
||||||
if (cur_round == ETX_WINDOW) {
|
if (cur_round == ETX_WINDOW) {
|
||||||
if (reached_window != 1) {
|
if (reached_window != 1) {
|
||||||
//first round is through
|
/* first round is through */
|
||||||
reached_window = 1;
|
reached_window = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -257,10 +258,14 @@ static void *etx_clock(void *arg)
|
|||||||
* for now.
|
* for now.
|
||||||
*/
|
*/
|
||||||
vtimer_usleep(
|
vtimer_usleep(
|
||||||
((ETX_INTERVAL - ETX_MAX_JITTER)*MS) + jittercorrection * MS + jitter * MS - ETX_CLOCK_ADJUST);
|
((ETX_INTERVAL - ETX_MAX_JITTER) * MS_IN_USEC) +
|
||||||
|
jittercorrection * MS_IN_USEC +
|
||||||
|
jitter * MS_IN_USEC - ETX_CLOCK_ADJUST);
|
||||||
|
|
||||||
//hwtimer_wait(
|
/* hwtimer_wait(HWTIMER_TICKS(
|
||||||
// HWTIMER_TICKS(((ETX_INTERVAL - ETX_MAX_JITTER)*MS) + jittercorrection*MS + jitter*MS - ETX_CLOCK_ADJUST));
|
((ETX_INTERVAL - ETX_MAX_JITTER)*MS_IN_USEC) +
|
||||||
|
jittercorrection*MS_IN_USEC +
|
||||||
|
jitter*MS_IN_USEC - ETX_CLOCK_ADJUST)); */
|
||||||
|
|
||||||
jittercorrection = (ETX_MAX_JITTER) - jitter;
|
jittercorrection = (ETX_MAX_JITTER) - jitter;
|
||||||
jitter = (uint8_t)(rand() % ETX_JITTER_MOD);
|
jitter = (uint8_t)(rand() % ETX_JITTER_MOD);
|
||||||
@ -275,12 +280,12 @@ double etx_get_metric(ipv6_addr_t *address)
|
|||||||
|
|
||||||
if (candidate != NULL) {
|
if (candidate != NULL) {
|
||||||
if (etx_count_packet_tx(candidate) > 0) {
|
if (etx_count_packet_tx(candidate) > 0) {
|
||||||
//this means the current etx_value is not outdated
|
/* this means the current etx_value is not outdated */
|
||||||
return candidate->cur_etx;
|
return candidate->cur_etx;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
//The last time I received a packet is too long ago to give a
|
/* The last time I received a packet is too long ago to give a */
|
||||||
//good estimate of the etx value
|
/* good estimate of the etx value */
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -319,11 +324,11 @@ etx_neighbor_t *etx_add_candidate(ipv6_addr_t *address)
|
|||||||
+ ETX_MAX_CANDIDATE_NEIGHBORS; candidate < end;
|
+ ETX_MAX_CANDIDATE_NEIGHBORS; candidate < end;
|
||||||
candidate++) {
|
candidate++) {
|
||||||
if (candidate->used) {
|
if (candidate->used) {
|
||||||
//skip
|
/* skip */
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
//We still have a free place add the new candidate
|
/* We still have a free place add the new candidate */
|
||||||
memset(candidate, 0, sizeof(*candidate));
|
memset(candidate, 0, sizeof(*candidate));
|
||||||
candidate->addr = *address;
|
candidate->addr = *address;
|
||||||
candidate->cur_etx = 0;
|
candidate->cur_etx = 0;
|
||||||
@ -353,7 +358,7 @@ void etx_handle_beacon(ipv6_addr_t *candidate_address)
|
|||||||
etx_neighbor_t *candidate = etx_find_candidate(candidate_address);
|
etx_neighbor_t *candidate = etx_find_candidate(candidate_address);
|
||||||
|
|
||||||
if (candidate == NULL) {
|
if (candidate == NULL) {
|
||||||
//Candidate was not found in my list, I should add it
|
/* Candidate was not found in my list, I should add it */
|
||||||
candidate = etx_add_candidate(candidate_address);
|
candidate = etx_add_candidate(candidate_address);
|
||||||
|
|
||||||
if (candidate == NULL) {
|
if (candidate == NULL) {
|
||||||
@ -363,12 +368,12 @@ void etx_handle_beacon(ipv6_addr_t *candidate_address)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//I have received 1 packet from this candidate in this round
|
/* I have received 1 packet from this candidate in this round */
|
||||||
//This value will be reset by etx_update to 0
|
/* This value will be reset by etx_update to 0 */
|
||||||
candidate->tx_cur_round = 1;
|
candidate->tx_cur_round = 1;
|
||||||
|
|
||||||
// If i find my address in this probe, update the packet_rx value for
|
/* If i find my address in this probe, update the packet_rx value for */
|
||||||
// this candidate.
|
/* this candidate. */
|
||||||
etx_probe_t *rec_pkt = etx_get_rec_buf();
|
etx_probe_t *rec_pkt = etx_get_rec_buf();
|
||||||
|
|
||||||
for (uint8_t i = 0; i < rec_pkt->length / ETX_TUPLE_SIZE; i++) {
|
for (uint8_t i = 0; i < rec_pkt->length / ETX_TUPLE_SIZE; i++) {
|
||||||
@ -384,7 +389,7 @@ void etx_handle_beacon(ipv6_addr_t *candidate_address)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//Last, update the ETX value for this candidate
|
/* Last, update the ETX value for this candidate */
|
||||||
etx_update(candidate);
|
etx_update(candidate);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -414,14 +419,14 @@ static void *etx_radio(void *arg)
|
|||||||
ieee802154_frame_read(p->data, &frame, p->length);
|
ieee802154_frame_read(p->data, &frame, p->length);
|
||||||
|
|
||||||
if (frame.payload[0] == ETX_PKT_OPTVAL) {
|
if (frame.payload[0] == ETX_PKT_OPTVAL) {
|
||||||
//copy to receive buffer
|
/* copy to receive buffer */
|
||||||
memcpy(etx_rec_buf, &frame.payload[0], frame.payload_len);
|
memcpy(etx_rec_buf, &frame.payload[0], frame.payload_len);
|
||||||
|
|
||||||
//create IPv6 address from radio packet
|
/* create IPv6 address from radio packet */
|
||||||
//we can do the cast here since rpl nodes can only have addr
|
/* we can do the cast here since rpl nodes can only have addr */
|
||||||
//up to 8 bits
|
/* up to 8 bits */
|
||||||
candidate_addr.uint8[ETX_IPV6_LAST_BYTE] = (uint8_t) p->src;
|
candidate_addr.uint8[ETX_IPV6_LAST_BYTE] = (uint8_t) p->src;
|
||||||
//handle the beacon
|
/* handle the beacon */
|
||||||
mutex_lock(&etx_mutex);
|
mutex_lock(&etx_mutex);
|
||||||
etx_handle_beacon(&candidate_addr);
|
etx_handle_beacon(&candidate_addr);
|
||||||
mutex_unlock(&etx_mutex);
|
mutex_unlock(&etx_mutex);
|
||||||
@ -433,7 +438,7 @@ static void *etx_radio(void *arg)
|
|||||||
DEBUGF("Transceiver buffer full\n");
|
DEBUGF("Transceiver buffer full\n");
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
//packet is not for me, whatever
|
/* packet is not for me, whatever */
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -450,8 +455,8 @@ void etx_update(etx_neighbor_t *candidate)
|
|||||||
double d_r;
|
double d_r;
|
||||||
|
|
||||||
if (reached_window != 1 || candidate == NULL) {
|
if (reached_window != 1 || candidate == NULL) {
|
||||||
//We will wait at least ETX_WINDOW beacons until we decide to
|
/* We will wait at least ETX_WINDOW beacons until we decide to */
|
||||||
//calculate an ETX value, so that we have a good estimate
|
/* calculate an ETX value, so that we have a good estimate */
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -506,9 +511,9 @@ static uint8_t etx_count_packet_tx(etx_neighbor_t *candidate)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
//Check if I received something for the current round
|
/* Check if I received something for the current round */
|
||||||
if (candidate->tx_cur_round == 0) {
|
if (candidate->tx_cur_round == 0) {
|
||||||
//Didn't receive a packet, zero the field and don't add
|
/* Didn't receive a packet, zero the field and don't add */
|
||||||
candidate->packets_tx[i] = 0;
|
candidate->packets_tx[i] = 0;
|
||||||
DEBUG("%d!", candidate->packets_tx[i]);
|
DEBUG("%d!", candidate->packets_tx[i]);
|
||||||
|
|
||||||
@ -517,7 +522,7 @@ static uint8_t etx_count_packet_tx(etx_neighbor_t *candidate)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
//Add 1 and set field
|
/* Add 1 and set field */
|
||||||
pkt_count = pkt_count + 1;
|
pkt_count = pkt_count + 1;
|
||||||
candidate->packets_tx[i] = 1;
|
candidate->packets_tx[i] = 1;
|
||||||
DEBUG("%d!", candidate->packets_tx[i]);
|
DEBUG("%d!", candidate->packets_tx[i]);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user