X-Git-Url: http://git.droids-corp.org/?p=protos%2Fxbee-avr.git;a=blobdiff_plain;f=rc_proto.h;fp=rc_proto.h;h=217bb96667c00cc1be22e429316ea38e8381d133;hp=fea6c51c955da11b78e4c540f0307a6093f202f3;hb=d590ebe19bfe60a544717606a0ff2b348cc32229;hpb=4989a2c76e8fa25667663a215709f9366747fcad diff --git a/rc_proto.h b/rc_proto.h index fea6c51..217bb96 100644 --- a/rc_proto.h +++ b/rc_proto.h @@ -1,28 +1,56 @@ #ifndef RC_PROTO_H #define RC_PROTO_H -#define AXIS_NUMBER 4 - -#define RC_PROTO_TYPE_CHANNEL 0 -#define RC_PROTO_TYPE_RANGE 1 - +/* generic header */ +struct rc_proto_hdr { + uint8_t type; +} __attribute__((packed)); -/* TODO: Authenticate packet!! */ +/* send a hello message, no answer is expected from the peer */ +#define RC_PROTO_HELLO 0 +struct rc_proto_hello { + uint8_t type; + uint8_t datalen; + uint8_t data[]; +} __attribute__((packed)); -struct rc_proto_hdr { +/* send an echo request, expect an echo reply from the peer */ +#define RC_PROTO_ECHO_REQ 1 +struct rc_proto_echo_req { uint8_t type; + uint8_t datalen; + uint8_t data[]; } __attribute__((packed)); -struct rc_proto_channel { +/* reply to an echo request */ +#define RC_PROTO_ECHO_ANS 2 +struct rc_proto_echo_ans { uint8_t type; - int16_t axis[AXIS_NUMBER]; + uint8_t datalen; + uint8_t data[]; } __attribute__((packed)); -struct rc_proto_range { +/* send a power level probe to the peer */ +#define RC_PROTO_POWER_PROBE 3 +struct rc_proto_power_probe { uint8_t type; uint8_t power_level; } __attribute__((packed)); +/* send a servo command */ +#define RC_PROTO_SERVO 4 +struct rc_proto_servo { + uint8_t type; + uint8_t mask; + uint8_t seq_and_pow; /* bitfield: pow are the 3 lsb, seq the 5 msb */ +}; + +/* acknowledge a servo command */ +#define RC_PROTO_ACK 5 +struct rc_proto_ack { + uint8_t type; + uint8_t seq; +} __attribute__((packed)); void rc_proto_rx_range(int power_level);