- if (cmd.flags & XBEE_ATCMD_F_PARAM_U8 && len == sizeof(uint8_t))
- printf_P(PSTR("<%s> is 0x%x (%d)\r\n"), atcmd_str, result->u8,
- result->u8);
- else if (cmd.flags & XBEE_ATCMD_F_PARAM_U16 && len == sizeof(uint16_t))
- printf_P(PSTR("<%s> is 0x%x (%d)\r\n"),
- atcmd_str,
- ntohs(result->u16), ntohs(result->u16));
- else if (cmd.flags & XBEE_ATCMD_F_PARAM_U32 && len == sizeof(uint32_t))
- printf_P(PSTR("<%s> is 0x%"PRIx32" (%"PRIu32")\r\n"),
- atcmd_str,
- ntohl(result->u32), ntohs(result->u32));
- else if (cmd.flags & XBEE_ATCMD_F_PARAM_S16 && len == sizeof(int16_t))
- printf_P(PSTR("<%s> is %d\r\n"), atcmd_str, ntohs(result->s16));
- else if (len == 0)
- printf_P(PSTR("no data, status ok\r\n"));
- else
- hexdump("atcmd answer", frame->data, len);
-
-
- return 0;
-}
-
-
-int xbee_recv_data(struct xbee_recv_hdr *recvframe, unsigned len)
-{
- 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) {
-#if 0
- 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;
-
- if (datalen != sizeof(struct rc_proto_range))
- return -1;
-
- if (rcr->power_level >= MAX_POWER_LEVEL)
- return -1;
-
- rc_proto_rx_range(rcr->power_level);
-
- break;
- }
-#endif
- case RC_PROTO_HELLO: {
- struct rc_proto_hello *rch =
- (struct rc_proto_hello *) recvframe->data;