#include "cmdline.h"
#include "callout.h"
#include "rc_proto.h"
+#include "spi_servo.h"
#include "main.h"
struct xbeeboard xbeeboard;
static int parse_xmit_status(struct xbee_ctx *ctx,
struct xbee_xmit_status_hdr *frame, unsigned len)
{
+ (void)len;
+
if (ctx == NULL) {
printf_P(PSTR("no context\r\n"));
return -1;
unsigned len)
{
char atcmd_str[3];
- struct xbee_atcmd_pgm *cmd_pgm;
+ const struct xbee_atcmd *cmd_pgm;
struct xbee_atcmd cmd;
union {
uint8_t u8;
int xbee_recv_data(struct xbee_recv_hdr *recvframe, unsigned len)
{
- int datalen = len - sizeof(*recvframe);
+ unsigned int datalen;
struct rc_proto_hdr *rch = (struct rc_proto_hdr *) &recvframe->data;
+ if (len < sizeof(*recvframe))
+ return -1;
+
+ datalen = len - sizeof(*recvframe);
if (datalen < sizeof(struct rc_proto_hdr))
return -1;
switch (rch->type) {
- case RC_PROTO_TYPE_CHANNEL:
+ case RC_PROTO_TYPE_CHANNEL: {
+ struct rc_proto_channel *rcc =
+ (struct rc_proto_channel *) recvframe->data;
+ int16_t val;
if (datalen != sizeof(struct rc_proto_channel))
return -1;
+ val = ntohs(rcc->axis[0]);
+ val >>= 6;
+ val += 512;
+ spi_servo_set(0, val);
break;
+ }
case RC_PROTO_TYPE_RANGE: {
struct rc_proto_range *rcr =
(struct rc_proto_range *) recvframe->data;
{
struct xbee_ctx *ctx = arg;
+ (void)cm;
+ (void)clt;
+
printf_P(PSTR("Timeout\r\n"));
/* restart command line */
TIMSK1 = 0;
TIMSK2 = 0;
TIMSK3 = 0;
- TIMSK4 = 0;
- TIMSK5 = 0;
EIMSK = 0;
UCSR0B = 0;
UCSR1B = 0;
- UCSR2B = 0;
- UCSR3B = 0;
SPCR = 0;
TWCR = 0;
ACSR = 0;
ADCSRA = 0;
- EIND = 1;
- __asm__ __volatile__ ("ldi r31,0xf8\n");
- __asm__ __volatile__ ("ldi r30,0x00\n");
- __asm__ __volatile__ ("eijmp\n");
+ /* XXX */
+ /* __asm__ __volatile__ ("ldi r31,0xf8\n"); */
+ /* __asm__ __volatile__ ("ldi r30,0x00\n"); */
+ /* __asm__ __volatile__ ("eijmp\n"); */
#endif
}
{
static uint8_t a = 0;
+ (void)cm;
+ (void)clt;
+ (void)dummy;
+
#ifdef USE_USB
if (a & 1)
LEDs_SetAllLEDs(0);
static void increment_ms(void *dummy)
{
+ (void)dummy;
global_ms++;
}
LEDs_SetAllLEDs(LEDMASK_USB_NOTREADY);
#else
uart_init();
+ uart_register_rx_event(CMDLINE_UART, emergency);
#endif
fdevopen(cmdline_dev_send, cmdline_dev_recv);
1000L / SCHEDULER_UNIT,
LED_PRIO);
cmdline_init();
+ spi_servo_init();
#ifndef USE_USB
/* in usb mode, it's done in usb callback */
printf_P(PSTR("\r\n"));