fix compilation with latest aversive
[protos/xbee-avr.git] / rc_proto.c
1 #include <aversive.h>
2 #include <aversive/queue.h>
3
4 #include <stdint.h>
5
6 #include <uart.h>
7
8 #include <scheduler.h>
9 #include <clock_time.h>
10 #include <parse.h>
11 #include <rdline.h>
12 #include <timer.h>
13
14 #include "xbee_proto.h"
15 #include "callout.h"
16 #include "rc_proto.h"
17 #include "main.h"
18
19
20
21
22 struct power_levels {
23         int ttl;
24         int power_db;
25 };
26
27 struct power_levels power_levels[MAX_POWER_LEVEL];
28
29 static int set_power_level(void *frame, unsigned len, void *arg)
30 {
31         struct xbee_atresp_hdr *atresp = (struct xbee_atresp_hdr *)frame;
32         int level = (intptr_t)arg;
33         uint8_t db;
34
35         /* XXX check if this test is correct */
36         if (len < sizeof(struct xbee_atresp_hdr) + sizeof(uint8_t))
37                 return -1;
38
39         db = atresp->data[0];
40         power_levels[level].power_db = db;
41         power_levels[level].ttl = 2;
42         return 0;
43 }
44
45 void rc_proto_rx_range(int power_level)
46 {
47         xbeeapp_send_atcmd("DB", NULL, 0, 0,
48                            set_power_level, (void *)(intptr_t)power_level);
49
50 }
51
52