[fix][datalink] fix w5100, elif in datalink now also works in sim when DATALINK is not defined.

indentation in 5100
This commit is contained in:
Felix Ruess
2012-11-08 15:11:01 +01:00
parent c708ce0bc0
commit 9348957573
3 changed files with 53 additions and 52 deletions
+14 -13
View File
@@ -67,25 +67,26 @@ EXTERN void dl_parse_msg(void);
} \ } \
} }
#if DATALINK == PPRZ #if defined DATALINK && DATALINK == PPRZ
#define DatalinkEvent() { \ #define DatalinkEvent() { \
PprzCheckAndParse(PPRZ_UART, pprz_tp); \ PprzCheckAndParse(PPRZ_UART, pprz_tp); \
DlCheckAndParse(); \ DlCheckAndParse(); \
} }
#elif DATALINK == XBEE #elif defined DATALINK && DATALINK == XBEE
#define DatalinkEvent() { \ #define DatalinkEvent() { \
XBeeCheckAndParse(XBEE_UART, xbee_tp); \ XBeeCheckAndParse(XBEE_UART, xbee_tp); \
DlCheckAndParse(); \ DlCheckAndParse(); \
} }
#elif DATALINK == W5100 #elif defined DATALINK && DATALINK == W5100
#define DatalinkEvent() { \
W5100CheckAndParse(W5100, w5100_tp); \ #define DatalinkEvent() { \
DlCheckAndParse(); \ W5100CheckAndParse(W5100, w5100_tp); \
} DlCheckAndParse(); \
}
#else #else
@@ -42,7 +42,6 @@
#include "sim_uart.h" #include "sim_uart.h"
#include "subsystems/datalink/pprz_transport.h" #include "subsystems/datalink/pprz_transport.h"
#include "subsystems/datalink/xbee.h" #include "subsystems/datalink/xbee.h"
#include "subsystems/datalink/w5100.h"
#else /* SIM_UART */ #else /* SIM_UART */
/** Software In The Loop simulation uses IVY bus directly as the transport layer */ /** Software In The Loop simulation uses IVY bus directly as the transport layer */
#include "ivy_transport.h" #include "ivy_transport.h"
+39 -38
View File
@@ -65,6 +65,7 @@ extern struct w5100_periph chip0;
//extern uint8_t ck_a, ck_b; //extern uint8_t ck_a, ck_b;
void w5100_init( void ); void w5100_init( void );
void w5100_transmit( uint8_t data ); void w5100_transmit( uint8_t data );
uint16_t w5100_receive( uint8_t *buf, uint16_t len ); uint16_t w5100_receive( uint8_t *buf, uint16_t len );
void w5100_send( void ); void w5100_send( void );
@@ -87,43 +88,43 @@ bool_t w5100_ch_available( void );
#define W5100TransportPut1Byte(_dev, x) TransportLink(_dev, Transmit(x)) #define W5100TransportPut1Byte(_dev, x) TransportLink(_dev, Transmit(x))
#define W5100TransportSendMessage(_dev) TransportLink(_dev, SendMessage()) #define W5100TransportSendMessage(_dev) TransportLink(_dev, SendMessage())
#define W5100TransportPutUint8(_dev, _byte) { \ #define W5100TransportPutUint8(_dev, _byte) { \
ck_a += _byte; \ ck_a += _byte; \
ck_b += ck_a; \ ck_b += ck_a; \
W5100TransportPut1Byte(_dev, _byte); \ W5100TransportPut1Byte(_dev, _byte); \
} }
#define W5100TransportPut1ByteByAddr(_dev, _byte) { \ #define W5100TransportPut1ByteByAddr(_dev, _byte) { \
uint8_t _x = *(_byte); \ uint8_t _x = *(_byte); \
W5100TransportPutUint8(_dev, _x); \ W5100TransportPutUint8(_dev, _x); \
} }
#define W5100TransportPut2Bytes(_dev, _x) { \ #define W5100TransportPut2Bytes(_dev, _x) { \
uint16_t x16 = _x; \ uint16_t x16 = _x; \
W5100TransportPut1Byte(_dev, x16>>8); \ W5100TransportPut1Byte(_dev, x16>>8); \
W5100TransportPut1Byte(_dev, x16 & 0xff); \ W5100TransportPut1Byte(_dev, x16 & 0xff); \
} }
#define W5100TransportPut2ByteByAddr(_dev, _byte) { \ #define W5100TransportPut2ByteByAddr(_dev, _byte) { \
W5100TransportPut1ByteByAddr(_dev, _byte); \ W5100TransportPut1ByteByAddr(_dev, _byte); \
W5100TransportPut1ByteByAddr(_dev, (const uint8_t*)_byte+1); \ W5100TransportPut1ByteByAddr(_dev, (const uint8_t*)_byte+1); \
} }
#define W5100TransportPut4ByteByAddr(_dev, _byte) { \ #define W5100TransportPut4ByteByAddr(_dev, _byte) { \
W5100TransportPut2ByteByAddr(_dev, _byte); \ W5100TransportPut2ByteByAddr(_dev, _byte); \
W5100TransportPut2ByteByAddr(_dev, (const uint8_t*)_byte+2); \ W5100TransportPut2ByteByAddr(_dev, (const uint8_t*)_byte+2); \
} }
#ifdef __IEEE_BIG_ENDIAN // From machine/ieeefp.h #ifdef __IEEE_BIG_ENDIAN // From machine/ieeefp.h
#define W5100TransportPutDoubleByAddr(_dev, _byte) { \ #define W5100TransportPutDoubleByAddr(_dev, _byte) { \
W5100TransportPut4ByteByAddr(_dev, (const uint8_t*)_byte+4); \ W5100TransportPut4ByteByAddr(_dev, (const uint8_t*)_byte+4); \
W5100TransportPut4ByteByAddr(_dev, (const uint8_t*)_byte); \ W5100TransportPut4ByteByAddr(_dev, (const uint8_t*)_byte); \
} }
#else #else
#define W5100TransportPutDoubleByAddr(_dev, _byte) { \ #define W5100TransportPutDoubleByAddr(_dev, _byte) { \
W5100TransportPut4ByteByAddr(_dev, (const uint8_t*)_byte); \ W5100TransportPut4ByteByAddr(_dev, (const uint8_t*)_byte); \
W5100TransportPut4ByteByAddr(_dev, (const uint8_t*)_byte+4); \ W5100TransportPut4ByteByAddr(_dev, (const uint8_t*)_byte+4); \
} }
#endif #endif
@@ -249,15 +250,15 @@ static inline void w5100_read_buffer( struct w5100_transport *t ) {
#define W5100Buffer(_dev) TransportLink(_dev,ChAvailable()) #define W5100Buffer(_dev) TransportLink(_dev,ChAvailable())
#define W5100CheckAndParse(_dev,_trans) { \ #define W5100CheckAndParse(_dev,_trans) { \
if (W5100Buffer(_dev)) { \ if (W5100Buffer(_dev)) { \
w5100_read_buffer( &(_trans) ); \ w5100_read_buffer( &(_trans) ); \
if (_trans.trans.msg_received) { \ if (_trans.trans.msg_received) { \
w5100_parse_payload(&(_trans)); \ w5100_parse_payload(&(_trans)); \
_trans.trans.msg_received = FALSE; \ _trans.trans.msg_received = FALSE; \
} \ } \
} \ } \
} }
#endif /* W5100_TELEM_H */ #endif /* W5100_TELEM_H */