48 #define PRINTF(...) printf(__VA_ARGS__)
63 #ifdef RIME_CONF_BROADCAST_ANNOUNCEMENT_CHANNEL
64 #define BROADCAST_ANNOUNCEMENT_CHANNEL RIME_CONF_BROADCAST_ANNOUNCEMENT_CHANNEL
66 #define BROADCAST_ANNOUNCEMENT_CHANNEL 2
69 #ifdef RIME_CONF_BROADCAST_ANNOUNCEMENT_BUMP_TIME
70 #define BROADCAST_ANNOUNCEMENT_BUMP_TIME RIME_CONF_BROADCAST_ANNOUNCEMENT_BUMP_TIME
72 #define BROADCAST_ANNOUNCEMENT_BUMP_TIME CLOCK_SECOND * 32 / NETSTACK_RDC_CHANNEL_CHECK_RATE
75 #ifdef RIME_CONF_BROADCAST_ANNOUNCEMENT_MIN_TIME
76 #define BROADCAST_ANNOUNCEMENT_MIN_TIME RIME_CONF_BROADCAST_ANNOUNCEMENT_MIN_TIME
78 #define BROADCAST_ANNOUNCEMENT_MIN_TIME CLOCK_SECOND * 60
81 #ifdef RIME_CONF_BROADCAST_ANNOUNCEMENT_MAX_TIME
82 #define BROADCAST_ANNOUNCEMENT_MAX_TIME RIME_CONF_BROADCAST_ANNOUNCEMENT_MAX_TIME
84 #define BROADCAST_ANNOUNCEMENT_MAX_TIME CLOCK_SECOND * 3600UL
92 rime_sniffer_add(
struct rime_sniffer *s)
98 rime_sniffer_remove(
struct rime_sniffer *s)
106 struct rime_sniffer *s;
110 c = chameleon_parse();
113 if(s->input_callback !=
NULL) {
140 broadcast_announcement_init(BROADCAST_ANNOUNCEMENT_CHANNEL,
141 BROADCAST_ANNOUNCEMENT_BUMP_TIME,
142 BROADCAST_ANNOUNCEMENT_MIN_TIME,
143 BROADCAST_ANNOUNCEMENT_MAX_TIME);
147 packet_sent(
void *ptr,
int status,
int num_tx)
149 struct channel *c = ptr;
150 struct rime_sniffer *s;
154 PRINTF(
"rime: collision after %d tx\n", num_tx);
157 PRINTF(
"rime: noack after %d tx\n", num_tx);
160 PRINTF(
"rime: sent after %d tx\n", num_tx);
163 PRINTF(
"rime: error %d after %d tx\n", status, num_tx);
168 if(s->output_callback !=
NULL) {
169 s->output_callback(status);
173 abc_sent(c, status, num_tx);
177 rime_output(
struct channel *c)
180 if(chameleon_create(c)) {
183 NETSTACK_MAC.send(packet_sent, c);