47 #define LONG_TIMER(et, counter, time) \
49 for (counter = 0; counter < time; counter++) { \
50 etimer_set(&et, CLOCK_SECOND); \
51 PROCESS_WAIT_EVENT_UNTIL(etimer_expired(&et)); \
55 #define DELUGE_UNICAST_CHANNEL 55
56 #define DELUGE_BROADCAST_CHANNEL 56
59 #define PAGE_COMPLETE 1
61 #define PAGE_AVAILABLE 1
65 #define S_PAGE (S_PKT * N_PKT)
72 #define T_R (CLOCK_SECOND * 2)
78 #define OBJECT_PAGE_COUNT(obj) (((obj).size + (S_PAGE - 1)) / S_PAGE)
80 #define ALL_PACKETS ((1 << N_PKT) - 1)
82 #define DELUGE_CMD_SUMMARY 1
83 #define DELUGE_CMD_REQUEST 2
84 #define DELUGE_CMD_PACKET 3
85 #define DELUGE_CMD_PROFILE 4
87 #define DELUGE_STATE_MAINTAIN 1
88 #define DELUGE_STATE_RX 2
89 #define DELUGE_STATE_TX 3
91 #define CONST_LAMBDA 2
92 #define CONST_ALPHA 0.5
95 #define ESTIMATED_TX_TIME (CLOCK_SECOND)
97 typedef uint8_t deluge_object_id_t;
99 struct deluge_msg_summary {
102 uint8_t highest_available;
103 deluge_object_id_t object_id;
106 struct deluge_msg_request {
111 deluge_object_id_t object_id;
114 struct deluge_msg_packet {
120 deluge_object_id_t object_id;
121 unsigned char payload[S_PKT];
124 struct deluge_msg_profile {
128 deluge_object_id_t object_id;
129 uint8_t version_vector[];
132 struct deluge_object {
137 uint8_t update_version;
138 struct deluge_page *pages;
139 uint8_t current_rx_page;
140 int8_t current_tx_page;
142 uint8_t current_page[S_PAGE];
145 linkaddr_t summary_from;
151 clock_time_t last_request;
152 clock_time_t last_data;
157 int deluge_disseminate(
char *file,
unsigned version);
#define PROCESS_NAME(name)
Declare the name of a process.
Header file for the Rime stack