diff --git a/conf/airframes/ardrone2_raw.xml b/conf/airframes/ardrone2_raw.xml index 81fa62f74b..29a86dda84 100644 --- a/conf/airframes/ardrone2_raw.xml +++ b/conf/airframes/ardrone2_raw.xml @@ -9,7 +9,7 @@ - + diff --git a/conf/airframes/ardrone2_sdk.xml b/conf/airframes/ardrone2_sdk.xml index b9bc1f7e91..c7bb880258 100644 --- a/conf/airframes/ardrone2_sdk.xml +++ b/conf/airframes/ardrone2_sdk.xml @@ -13,7 +13,7 @@ - + diff --git a/conf/firmwares/subsystems/rotorcraft/telemetry_udp.makefile b/conf/firmwares/subsystems/rotorcraft/telemetry_udp.makefile new file mode 100644 index 0000000000..fa355be53b --- /dev/null +++ b/conf/firmwares/subsystems/rotorcraft/telemetry_udp.makefile @@ -0,0 +1,8 @@ + +# Udp telemetry + +ap.CFLAGS += -DDOWNLINK -DDOWNLINK_DEVICE=Udp +ap.CFLAGS += -DDOWNLINK_TRANSPORT=PprzTransport -DDATALINK=UDP +ap.srcs += subsystems/datalink/downlink.c subsystems/datalink/udp.c subsystems/datalink/pprz_transport.c +ap.srcs += $(SRC_FIRMWARE)/datalink.c $(SRC_FIRMWARE)/telemetry.c +ap.srcs += fms/fms_network.c diff --git a/conf/firmwares/subsystems/rotorcraft/telemetry_wifi.makefile b/conf/firmwares/subsystems/rotorcraft/telemetry_wifi.makefile deleted file mode 100644 index 3cfa8950a4..0000000000 --- a/conf/firmwares/subsystems/rotorcraft/telemetry_wifi.makefile +++ /dev/null @@ -1,8 +0,0 @@ - -# Wifi telemetry - -ap.CFLAGS += -DDOWNLINK -DDOWNLINK_DEVICE=Wifi -ap.CFLAGS += -DDOWNLINK_TRANSPORT=WifiTransport -DDATALINK=WIFI -ap.srcs += subsystems/datalink/downlink.c subsystems/datalink/wifi.c -ap.srcs += $(SRC_FIRMWARE)/datalink.c $(SRC_FIRMWARE)/telemetry.c -ap.srcs += fms/fms_network.c diff --git a/sw/airborne/firmwares/rotorcraft/main.c b/sw/airborne/firmwares/rotorcraft/main.c index ea34087224..544073e355 100644 --- a/sw/airborne/firmwares/rotorcraft/main.c +++ b/sw/airborne/firmwares/rotorcraft/main.c @@ -38,8 +38,8 @@ #include "subsystems/datalink/datalink.h" #include "subsystems/settings.h" #include "subsystems/datalink/xbee.h" -#if DATALINK == WIFI -#include "subsystems/datalink/wifi.h" +#if DATALINK == UDP +#include "subsystems/datalink/udp.h" #endif #include "subsystems/commands.h" @@ -163,8 +163,8 @@ STATIC_INLINE void main_init( void ) { xbee_init(); #endif -#if DATALINK == WIFI - wifi_init(); +#if DATALINK == UDP + udp_init(); #endif // register the timers for the periodic functions diff --git a/sw/airborne/subsystems/datalink/datalink.h b/sw/airborne/subsystems/datalink/datalink.h index 8d9ed92f02..1259ba9ff1 100644 --- a/sw/airborne/subsystems/datalink/datalink.h +++ b/sw/airborne/subsystems/datalink/datalink.h @@ -45,7 +45,7 @@ /** Datalink kinds */ #define PPRZ 1 #define XBEE 2 -#define WIFI 3 +#define UDP 3 EXTERN bool_t dl_msg_available; /** Flag provided to control calls to ::dl_parse_msg. NOT used in this module*/ @@ -87,10 +87,10 @@ EXTERN void dl_parse_msg(void); DlCheckAndParse(); \ } -#elif defined DATALINK && DATALINK == WIFI +#elif defined DATALINK && DATALINK == UDP #define DatalinkEvent() { \ - WifiCheckAndParse(); \ + UdpCheckAndParse(); \ DlCheckAndParse(); \ } diff --git a/sw/airborne/subsystems/datalink/downlink.h b/sw/airborne/subsystems/datalink/downlink.h index c6a1bac215..39883053b6 100644 --- a/sw/airborne/subsystems/datalink/downlink.h +++ b/sw/airborne/subsystems/datalink/downlink.h @@ -46,7 +46,7 @@ #endif #else /** SITL */ -#include "subsystems/datalink/wifi.h" +#include "subsystems/datalink/udp.h" #include "subsystems/datalink/pprz_transport.h" #include "subsystems/datalink/xbee.h" #include "subsystems/datalink/w5100.h" diff --git a/sw/airborne/subsystems/datalink/pprz_transport.h b/sw/airborne/subsystems/datalink/pprz_transport.h index 850b472893..10138a0726 100644 --- a/sw/airborne/subsystems/datalink/pprz_transport.h +++ b/sw/airborne/subsystems/datalink/pprz_transport.h @@ -65,7 +65,7 @@ extern uint8_t ck_a, ck_b; #define PprzTransportTrailer(_dev) { \ PprzTransportPut1Byte(_dev, ck_a); \ PprzTransportPut1Byte(_dev, ck_b); \ - PprzTransportSendMessage(_dev) \ + PprzTransportSendMessage(_dev); \ } #define PprzTransportPutUint8(_dev, _byte) { \ diff --git a/sw/airborne/subsystems/datalink/wifi.c b/sw/airborne/subsystems/datalink/udp.c similarity index 94% rename from sw/airborne/subsystems/datalink/wifi.c rename to sw/airborne/subsystems/datalink/udp.c index efa78cbc7d..9d9a717490 100644 --- a/sw/airborne/subsystems/datalink/wifi.c +++ b/sw/airborne/subsystems/datalink/udp.c @@ -20,7 +20,7 @@ * */ -#include "subsystems/datalink/wifi.h" +#include "subsystems/datalink/udp.h" #include "fms/fms_network.h" #include @@ -45,22 +45,22 @@ uint16_t udp_buffer_id; uint8_t ck_a, ck_b; struct FmsNetwork* network; -void wifi_init( void ) { +void udp_init( void ) { network = network_new(LINK_HOST, LINK_PORT, DATALINK_PORT, FMS_NETWORK_BROADCAST); udp_buffer_id = 0; } -void wifi_transmit( uint8_t data ) { +void udp_transmit( uint8_t data ) { udp_buffer[udp_buffer_id] = data; udp_buffer_id++; } -void wifi_send( void ) { +void udp_send( void ) { network_write(network, udp_buffer, udp_buffer_id); udp_buffer_id =0; } -void wifi_receive( void ) { +void udp_receive( void ) { //First check if it isn't already having a message if(dl_msg_available == TRUE) { return; diff --git a/sw/airborne/subsystems/datalink/udp.h b/sw/airborne/subsystems/datalink/udp.h new file mode 100644 index 0000000000..0d869ba79a --- /dev/null +++ b/sw/airborne/subsystems/datalink/udp.h @@ -0,0 +1,50 @@ +/* +* Copyright (C) 2012-2013 Freek van Tienen and Dino Hensen +* +* This file is part of paparazzi. +* +* paparazzi is free software; you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation; either version 2, or (at your option) +* any later version. +* +* paparazzi is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with paparazzi; see the file COPYING. If not, write to +* the Free Software Foundation, 59 Temple Place - Suite 330, +* Boston, MA 02111-1307, USA. +* +*/ + +/* Udp ethernet connection over UDP */ + +#ifndef UDP_TELEM_H +#define UDP_TELEM_H + +#include "subsystems/datalink/datalink.h" +#include "generated/airframe.h" + +//#include "subsystems/datalink/transport.h" +#include "subsystems/datalink/pprz_transport.h" + +#define STX 0x99 + +void udp_init( void ); +void udp_transmit( uint8_t data ); +void udp_send( void ); +void udp_receive( void ); + +#define UdpInit() udp_init() +#define UdpCheckFreeSpace(_x) (TRUE) +#define UdpTransmit(_x) udp_transmit(_x) +#define UdpSendMessage() udp_send() + +#define UdpCheckAndParse() { \ + udp_receive(); \ + } + +#endif /* UDP_TELEM_H */ diff --git a/sw/airborne/subsystems/datalink/wifi.h b/sw/airborne/subsystems/datalink/wifi.h deleted file mode 100644 index 5b03475086..0000000000 --- a/sw/airborne/subsystems/datalink/wifi.h +++ /dev/null @@ -1,132 +0,0 @@ -/* -* Copyright (C) 2012-2013 Freek van Tienen and Dino Hensen -* -* This file is part of paparazzi. -* -* paparazzi is free software; you can redistribute it and/or modify -* it under the terms of the GNU General Public License as published by -* the Free Software Foundation; either version 2, or (at your option) -* any later version. -* -* paparazzi is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* You should have received a copy of the GNU General Public License -* along with paparazzi; see the file COPYING. If not, write to -* the Free Software Foundation, 59 Temple Place - Suite 330, -* Boston, MA 02111-1307, USA. -* -*/ - -/* Wifi ethernet connection over UDP */ - -#ifndef WIFI_TELEM_H -#define WIFI_TELEM_H - -#include "subsystems/datalink/datalink.h" -#include "generated/airframe.h" - -#include "subsystems/datalink/transport.h" - -#define STX 0x99 - -void wifi_init( void ); -void wifi_transmit( uint8_t data ); -void wifi_send( void ); -void wifi_receive( void ); - -#define WifiInit() wifi_init() -#define WifiCheckFreeSpace(_x) (TRUE) -#define WifiTransmit(_x) wifi_transmit(_x) -#define WifiSendMessage() wifi_send() - -#define WifiTransportSizeOf(_dev, _x) (_x+4) -#define WifiTransportCheckFreeSpace(_dev, x) TransportLink(_dev, CheckFreeSpace(x)) -#define WifiTransportPut1Byte(_dev, x) TransportLink(_dev, Transmit(x)) -#define WifiTransportSendMessage(_dev) TransportLink(_dev, SendMessage()) - -#define WifiTransportPutUint8(_dev, _byte) { \ - ck_a += _byte; \ - ck_b += ck_a; \ - WifiTransportPut1Byte(_dev, _byte); \ - } - -#define WifiTransportPut1ByteByAddr(_dev, _byte) { \ - uint8_t _x = *(_byte); \ - WifiTransportPutUint8(_dev, _x); \ - } - -#define WifiTransportPut2Bytes(_dev, _x) { \ - uint16_t x16 = _x; \ - WifiTransportPut1Byte(_dev, x16>>8); \ - WifiTransportPut1Byte(_dev, x16 & 0xff); \ - } - -#define WifiTransportPut2ByteByAddr(_dev, _byte) { \ - WifiTransportPut1ByteByAddr(_dev, _byte); \ - WifiTransportPut1ByteByAddr(_dev, (const uint8_t*)_byte+1); \ - } - -#define WifiTransportPut4ByteByAddr(_dev, _byte) { \ - WifiTransportPut2ByteByAddr(_dev, _byte); \ - WifiTransportPut2ByteByAddr(_dev, (const uint8_t*)_byte+2); \ - } - -#ifdef __IEEE_BIG_ENDIAN // From machine/ieeefp.h -#define WifiTransportPutDoubleByAddr(_dev, _byte) { \ - WifiTransportPut4ByteByAddr(_dev, (const uint8_t*)_byte+4); \ - WifiTransportPut4ByteByAddr(_dev, (const uint8_t*)_byte); \ - } -#else -#define WifiTransportPutDoubleByAddr(_dev, _byte) { \ - WifiTransportPut4ByteByAddr(_dev, (const uint8_t*)_byte); \ - WifiTransportPut4ByteByAddr(_dev, (const uint8_t*)_byte+4); \ - } -#endif - - -#define WifiTransportPutInt8ByAddr(_dev, _x) WifiTransportPut1ByteByAddr(_dev, _x) -#define WifiTransportPutUint8ByAddr(_dev, _x) WifiTransportPut1ByteByAddr(_dev, (const uint8_t*)_x) -#define WifiTransportPutInt16ByAddr(_dev, _x) WifiTransportPut2ByteByAddr(_dev, (const uint8_t*)_x) -#define WifiTransportPutUint16ByAddr(_dev, _x) WifiTransportPut2ByteByAddr(_dev, (const uint8_t*)_x) -#define WifiTransportPutInt32ByAddr(_dev, _x) WifiTransportPut4ByteByAddr(_dev, (const uint8_t*)_x) -#define WifiTransportPutUint32ByAddr(_dev, _x) WifiTransportPut4ByteByAddr(_dev, (const uint8_t*)_x) -#define WifiTransportPutFloatByAddr(_dev, _x) WifiTransportPut4ByteByAddr(_dev, (const uint8_t*)_x) -#define WifiTransportPutNamedUint8(_dev, _name, _byte) WifiTransportPutUint8(_dev, _byte) - -#define WifiTransportPutArray(_dev, _put, _n, _x) { \ - uint8_t _i; \ - WifiTransportPutUint8(_dev, _n); \ - for(_i = 0; _i < _n; _i++) { \ - _put(_dev, &_x[_i]); \ - } \ - } - -#define WifiTransportPutInt16Array(_dev, _n, _x) WifiTransportPutArray(_dev, WifiTransportPutInt16ByAddr, _n, _x) - -#define WifiTransportPutUint16Array(_dev, _n, _x) WifiTransportPutArray(_dev, WifiTransportPutUint16ByAddr, _n, _x) -#define WifiTransportPutUint8Array(_dev, _n, _x) WifiTransportPutArray(_dev, WifiTransportPutUint8ByAddr, _n, _x) -#define WifiTransportPutFloatArray(_dev, _n, _x) WifiTransportPutArray(_dev, WifiTransportPutFloatByAddr, _n, _x) -#define WifiTransportPutDoubleArray(_dev, _n, _x) WifiTransportPutArray(_dev, WifiTransportPutDoubleByAddr, _n, _x) - - -#define WifiTransportHeader(_dev, payload_len) { \ - WifiTransportPut1Byte(_dev, STX); \ - uint8_t msg_len = WifiTransportSizeOf(_dev, payload_len); \ - WifiTransportPut1Byte(_dev, msg_len); \ - ck_a = msg_len; ck_b = msg_len; \ - } - -#define WifiTransportTrailer(_dev) { \ - WifiTransportPut1Byte(_dev, ck_a); \ - WifiTransportPut1Byte(_dev, ck_b); \ - WifiTransportSendMessage(_dev); \ - } - -#define WifiCheckAndParse() { \ - wifi_receive(); \ - } - -#endif /* WIFI_TELEM_H */