52 #define PRINTF(...) printf(__VA_ARGS__)
59 recv_from_uc(
struct unicast_conn *uc,
const linkaddr_t *from)
61 register struct stunicast_conn *c = (
struct stunicast_conn *)uc;
62 PRINTF(
"%d.%d: stunicast: recv_from_uc from %d.%d\n",
64 from->u8[0], from->u8[1]);
65 if(c->u->recv !=
NULL) {
71 sent_by_uc(
struct unicast_conn *uc,
int status,
int num_tx)
73 register struct stunicast_conn *c = (
struct stunicast_conn *)uc;
74 PRINTF(
"%d.%d: stunicast: recv_from_uc from %d.%d\n",
76 packetbuf_addr(PACKETBUF_ADDR_SENDER)->u8[0],
77 packetbuf_addr(PACKETBUF_ADDR_SENDER)->u8[1]);
78 if(c->u->sent !=
NULL) {
79 c->u->sent(c, status, num_tx);
83 static const struct unicast_callbacks stunicast = {recv_from_uc,
87 stunicast_open(
struct stunicast_conn *c, uint16_t channel,
88 const struct stunicast_callbacks *u)
90 unicast_open(&c->c, channel, &stunicast);
95 stunicast_close(
struct stunicast_conn *c)
102 stunicast_receiver(
struct stunicast_conn *c)
110 struct stunicast_conn *c = ptr;
112 PRINTF(
"%d.%d: stunicast: resend to %d.%d\n",
114 c->receiver.u8[0], c->receiver.u8[1]);
116 queuebuf_to_packetbuf(c->buf);
117 unicast_send(&c->c, &c->receiver);
126 stunicast_set_timer(
struct stunicast_conn *c, clock_time_t t)
132 stunicast_send_stubborn(
struct stunicast_conn *c,
const linkaddr_t *receiver,
133 clock_time_t rxmittime)
136 queuebuf_free(c->buf);
138 c->buf = queuebuf_new_from_packetbuf();
145 PRINTF(
"%d.%d: stunicast_send_stubborn to %d.%d\n",
147 c->receiver.u8[0],c->receiver.u8[1]);
148 unicast_send(&c->c, &c->receiver);
158 stunicast_send(
struct stunicast_conn *c,
const linkaddr_t *receiver)
160 PRINTF(
"%d.%d: stunicast_send to %d.%d\n",
162 receiver->u8[0], receiver->u8[1]);
163 return unicast_send(&c->c, receiver);
167 stunicast_cancel(
struct stunicast_conn *c)
171 queuebuf_free(c->buf);
linkaddr_t linkaddr_node_addr
The Rime address of the node.
#define NULL
The null pointer.
Header file for the Rime stack
void linkaddr_copy(linkaddr_t *dest, const linkaddr_t *src)
Copy a Rime address.
void ctimer_set(struct ctimer *c, clock_time_t t, void(*f)(void *), void *ptr)
Set a callback timer.
void ctimer_stop(struct ctimer *c)
Stop a pending callback timer.
Stubborn unicast header file
#define CLOCK_SECOND
A second, measured in system clock time.