X-Git-Url: http://git.droids-corp.org/?p=protos%2Fxbee-avr.git;a=blobdiff_plain;f=rc_proto.c;h=56e8ad60333b398e8f0c3637082ab0e510450d2d;hp=22b6f28464c72df6758d551eea48eed262718666;hb=4d9670d6245cc381313a3ff41dd80f6596a266c8;hpb=c17da94fafe8e0fa1a467f0c8fb7922fec8386e5 diff --git a/rc_proto.c b/rc_proto.c index 22b6f28..56e8ad6 100644 --- a/rc_proto.c +++ b/rc_proto.c @@ -78,22 +78,21 @@ void rc_proto_rx_power_probe(int power_level) } /* send a hello message */ -// XXX iovec for xbee ? int8_t rc_proto_send_hello(uint64_t addr, void *data, uint8_t data_len) { - struct { - struct rc_proto_echo_req hdr; - char buf[XBEE_MAX_FRAME_LEN - sizeof(struct rc_proto_echo_req)]; - } frame; + struct rc_proto_echo_req hdr; + struct xbee_msg msg; - if (data_len > sizeof(frame.buf)) - return -1; + hdr.type = RC_PROTO_HELLO; + hdr.datalen = data_len; + + msg.iovlen = 2; + msg.iov[0].buf = &hdr; + msg.iov[0].len = sizeof(hdr); + msg.iov[1].buf = data; + msg.iov[1].len = data_len; - frame.hdr.type = RC_PROTO_HELLO; - frame.hdr.datalen = data_len; - memcpy(frame.buf, data, data_len); - return xbeeapp_send_msg(addr, &frame, - data_len + sizeof(struct rc_proto_echo_req), 1); + return xbeeapp_send_msg(addr, &msg, 1); }