[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[paparazzi-commits] [5679] new spektrum parser
From: |
Eric |
Subject: |
[paparazzi-commits] [5679] new spektrum parser |
Date: |
Wed, 25 Aug 2010 18:42:28 +0000 |
Revision: 5679
http://svn.sv.gnu.org/viewvc/?view=rev&root=paparazzi&revision=5679
Author: lamestllama
Date: 2010-08-25 18:42:28 +0000 (Wed, 25 Aug 2010)
Log Message:
-----------
new spektrum parser
Modified Paths:
--------------
paparazzi3/trunk/sw/airborne/booz/arch/stm32/radio_control/booz_radio_control_spektrum_arch.h
Modified:
paparazzi3/trunk/sw/airborne/booz/arch/stm32/radio_control/booz_radio_control_spektrum_arch.h
===================================================================
---
paparazzi3/trunk/sw/airborne/booz/arch/stm32/radio_control/booz_radio_control_spektrum_arch.h
2010-08-25 18:41:05 UTC (rev 5678)
+++
paparazzi3/trunk/sw/airborne/booz/arch/stm32/radio_control/booz_radio_control_spektrum_arch.h
2010-08-25 18:42:28 UTC (rev 5679)
@@ -30,73 +30,38 @@
#include RADIO_CONTROL_SPEKTRUM_MODEL_H
-#define RC_SPK_SYNC_1 0x03
+#define SPEKTRUM_CHANNELS_PER_FRAME 7
+#define MAX_SPEKTRUM_FRAMES 2
+#define MAX_SPEKTRUM_CHANNELS 16
-#define RC_SPK_STA_UNINIT 0
-#define RC_SPK_STA_GOT_SYNC_1 1
-#define RC_SPK_STA_GOT_SYNC_2 2
+extern int16_t SpektrumBuf[SPEKTRUM_CHANNELS_PER_FRAME*MAX_SPEKTRUM_FRAMES];
+extern int8_t SpektrumSigns[MAX_SPEKTRUM_CHANNELS];
-extern bool_t rc_spk_parser_status;
-extern uint8_t rc_spk_parser_idx;
-extern uint8_t rc_spk_parser_buf[RADIO_CONTROL_NB_CHANNEL*2];
+struct SpektrumStateStruct {
+ uint8_t ReSync;
+ uint8_t SpektrumTimer;
+ uint8_t Sync;
+ uint8_t ChannelCnt;
+ uint8_t FrameCnt;
+ uint8_t HighByte;
+ uint8_t SecondFrame;
+ uint16_t LostFrameCnt;
+ uint8_t RcAvailable;
+ int16_t values[SPEKTRUM_CHANNELS_PER_FRAME*MAX_SPEKTRUM_FRAMES];
+};
-#define MAX_SPK 344
+typedef struct SpektrumStateStruct SpektrumStateType;
+extern SpektrumStateType PrimarySpektrumState;
+#ifdef RADIO_CONTROL_LINK_SLAVE
+extern SpektrumStateType SecondarySpektrumState;
+#endif
-extern const int16_t rc_spk_throw[RADIO_CONTROL_NB_CHANNEL];
-#define __RcLink(dev, _x) dev##_x
-#define _RcLink(dev, _x) __RcLink(dev, _x)
-#define RcLink(_x) _RcLink(RADIO_CONTROL_LINK, _x)
+extern void _RadioControlEventImp(void (*_received_frame_handler)(void));
-#define RcLinkChAvailable() RcLink(ChAvailable())
-#define RcLinkGetCh() RcLink(Getch())
+#define RadioControlEventImp(_received_frame_handler)
_RadioControlEventImp(_received_frame_handler);
-#define RadioControlEventImp(_received_frame_handler) { \
- while (RcLinkChAvailable()) { \
- int8_t c = RcLinkGetCh(); \
- switch (rc_spk_parser_status) { \
- case RC_SPK_STA_UNINIT: \
- if (c==RC_SPK_SYNC_1) \
- rc_spk_parser_status = RC_SPK_STA_GOT_SYNC_1; \
- break; \
- case RC_SPK_STA_GOT_SYNC_1: \
- if (c==RC_SPK_SYNC_2) { \
- rc_spk_parser_status = RC_SPK_STA_GOT_SYNC_2; \
- rc_spk_parser_idx = 0; \
- } \
- else \
- rc_spk_parser_status = RC_SPK_STA_UNINIT; \
- break; \
- case RC_SPK_STA_GOT_SYNC_2: \
- rc_spk_parser_buf[rc_spk_parser_idx] = c; \
- rc_spk_parser_idx++; \
- if (rc_spk_parser_idx >= 2*RADIO_CONTROL_NB_CHANNEL) { \
- rc_spk_parser_status = RC_SPK_STA_UNINIT; \
- radio_control.frame_cpt++; \
- radio_control.time_since_last_frame = 0; \
- radio_control.status = RADIO_CONTROL_OK; \
- uint8_t i; \
- for (i=0;i<RADIO_CONTROL_NB_CHANNEL;i++) { \
- const int16_t tmp = (rc_spk_parser_buf[2*i]<<8) + \
- rc_spk_parser_buf[2*i+1]; \
- /*const int16_t chan = (tmp&0xFC00) >> 10;*/ \
- const int16_t val = (tmp&0x03FF) - 512; \
- radio_control.values[i] = val; \
- radio_control.values[i] *= rc_spk_throw[i]; \
- if (i==RADIO_CONTROL_THROTTLE) { \
- radio_control.values[i] += MAX_PPRZ; \
- radio_control.values[i] /= 2; \
- } \
- } \
- _received_frame_handler(); \
- } \
- break; \
- default: \
- rc_spk_parser_status = RC_SPK_STA_UNINIT; \
- } \
- } \
- }
#endif /* BOOZ_RADIO_CONTROL_SPEKTRUM_ARCH_H */
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [paparazzi-commits] [5679] new spektrum parser,
Eric <=