44 #include "collect-view.h"
50 collect_view_construct_message(
struct collect_view_data_msg *msg,
51 const linkaddr_t *parent,
53 uint16_t current_rtmetric,
54 uint16_t num_neighbors,
55 uint16_t beacon_interval)
57 static unsigned long last_cpu, last_lpm, last_transmit, last_listen;
58 unsigned long cpu, lpm, transmit, listen;
61 msg->len =
sizeof(
struct collect_view_data_msg) / sizeof(uint16_t);
63 #if TIMESYNCH_CONF_ENABLED
66 msg->timesynch_time = 0;
71 cpu = energest_type_time(ENERGEST_TYPE_CPU) - last_cpu;
72 lpm = energest_type_time(ENERGEST_TYPE_LPM) - last_lpm;
73 transmit = energest_type_time(ENERGEST_TYPE_TRANSMIT) - last_transmit;
74 listen = energest_type_time(ENERGEST_TYPE_LISTEN) - last_listen;
78 while(cpu >= 65536ul || lpm >= 65536ul ||
79 transmit >= 65536ul || listen >= 65536ul) {
88 msg->transmit = transmit;
91 last_cpu = energest_type_time(ENERGEST_TYPE_CPU);
92 last_lpm = energest_type_time(ENERGEST_TYPE_LPM);
93 last_transmit = energest_type_time(ENERGEST_TYPE_TRANSMIT);
94 last_listen = energest_type_time(ENERGEST_TYPE_LISTEN);
96 memcpy(&msg->parent, &parent->u8[LINKADDR_SIZE - 2], 2);
97 msg->parent_etx = parent_etx;
98 msg->current_rtmetric = current_rtmetric;
99 msg->num_neighbors = num_neighbors;
100 msg->beacon_interval = beacon_interval;
102 memset(msg->sensors, 0,
sizeof(msg->sensors));
103 collect_view_arch_read_sensors(msg);
Header file for a simple time synchronization mechanism
Header file for the Rime stack
rtimer_clock_t timesynch_time(void)
Get the current time-synchronized time.
CCIF clock_time_t clock_time(void)
Get the current clock time.
Header file for the Contiki radio neighborhood management