[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[paparazzi-commits] [5306] enabled crc on overo/stm32 spi link
From: |
antoine drouin |
Subject: |
[paparazzi-commits] [5306] enabled crc on overo/stm32 spi link |
Date: |
Wed, 11 Aug 2010 10:29:25 +0000 |
Revision: 5306
http://svn.sv.gnu.org/viewvc/?view=rev&root=paparazzi&revision=5306
Author: poine
Date: 2010-08-11 10:29:24 +0000 (Wed, 11 Aug 2010)
Log Message:
-----------
enabled crc on overo/stm32 spi link
Modified Paths:
--------------
paparazzi3/trunk/sw/airborne/lisa/arch/stm32/lisa_overo_link_arch.c
paparazzi3/trunk/sw/airborne/lisa/lisa_overo_link.c
paparazzi3/trunk/sw/airborne/lisa/lisa_overo_link.h
paparazzi3/trunk/sw/airborne/lisa/stm_test_spi_link.c
Added Paths:
-----------
paparazzi3/trunk/sw/airborne/lisa/arch/stm32/lisa_overo_link_arch.h
Removed Paths:
-------------
paparazzi3/trunk/sw/airborne/lisa/arch/stm32/lisa_overo_link_crc_arch.c
paparazzi3/trunk/sw/airborne/lisa/arch/stm32/lisa_overo_link_crc_arch.h
paparazzi3/trunk/sw/airborne/lisa/lisa_overo_link_crc.c
paparazzi3/trunk/sw/airborne/lisa/lisa_overo_link_crc.h
paparazzi3/trunk/sw/airborne/lisa/stm_test_spi_link_crc.c
Modified: paparazzi3/trunk/sw/airborne/lisa/arch/stm32/lisa_overo_link_arch.c
===================================================================
--- paparazzi3/trunk/sw/airborne/lisa/arch/stm32/lisa_overo_link_arch.c
2010-08-11 01:06:44 UTC (rev 5305)
+++ paparazzi3/trunk/sw/airborne/lisa/arch/stm32/lisa_overo_link_arch.c
2010-08-11 10:29:24 UTC (rev 5306)
@@ -23,17 +23,20 @@
GPIO_Init(GPIOA, &GPIO_InitStructure);
/* SPI_SLAVE configuration
--------------------------------------------------*/
SPI_InitTypeDef SPI_InitStructure;
- SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex;
- SPI_InitStructure.SPI_Mode = SPI_Mode_Slave;
- SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;
- SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low;
- SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge;
- SPI_InitStructure.SPI_NSS = SPI_NSS_Hard;
- SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_4;
- SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;
- SPI_InitStructure.SPI_CRCPolynomial = 7;
+ SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex;
+ SPI_InitStructure.SPI_Mode = SPI_Mode_Slave;
+ SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;
+ SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low;
+ SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge;
+ SPI_InitStructure.SPI_NSS = SPI_NSS_Hard;
+ SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_2;
+ SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;
+ SPI_InitStructure.SPI_CRCPolynomial = 0x31;
SPI_Init(SPI1, &SPI_InitStructure);
+
+ SPI_CalculateCRC(SPI1, ENABLE);
/* Enable SPI_SLAVE */
+ // SPI_Cmd(SPI1, DISABLE); why that ?
SPI_Cmd(SPI1, ENABLE);
/* Configure DMA1 channel2 IRQ Channel */
@@ -48,48 +51,62 @@
/* setup DMA for first transfert */
overo_link_arch_prepare_next_transfert();
-
}
void overo_link_arch_prepare_next_transfert(void) {
/* SPI_SLAVE_Rx_DMA_Channel configuration
------------------------------------*/
- DMA_InitTypeDef DMA_InitStructure;
DMA_DeInit(DMA1_Channel2);
- DMA_InitStructure.DMA_PeripheralBaseAddr = (uint32_t)(SPI1_BASE+0x0C);
- DMA_InitStructure.DMA_MemoryBaseAddr = (uint32_t)overo_link.down.array;
- DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralSRC;
- DMA_InitStructure.DMA_BufferSize = sizeof(union AutopilotMessage);
- DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;
- DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;
- DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Byte;
- DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_Byte;
- DMA_InitStructure.DMA_Mode = DMA_Mode_Normal;
- DMA_InitStructure.DMA_Priority = DMA_Priority_VeryHigh;
- DMA_InitStructure.DMA_M2M = DMA_M2M_Disable;
- DMA_Init(DMA1_Channel2, &DMA_InitStructure);
+ const DMA_InitTypeDef DMA_InitStructure_rx = {
+ .DMA_PeripheralBaseAddr = (uint32_t)(SPI1_BASE+0x0C),
+ .DMA_MemoryBaseAddr = (uint32_t)overo_link.down.array,
+ .DMA_DIR = DMA_DIR_PeripheralSRC,
+ .DMA_BufferSize = sizeof(union AutopilotMessage),
+ .DMA_PeripheralInc = DMA_PeripheralInc_Disable,
+ .DMA_MemoryInc = DMA_MemoryInc_Enable,
+ .DMA_PeripheralDataSize = DMA_PeripheralDataSize_Byte,
+ .DMA_MemoryDataSize = DMA_MemoryDataSize_Byte,
+ .DMA_Mode = DMA_Mode_Normal,
+ .DMA_Priority = DMA_Priority_VeryHigh,
+ .DMA_M2M = DMA_M2M_Disable
+ };
+ DMA_Init(DMA1_Channel2, &DMA_InitStructure_rx);
/* SPI_SLAVE_Tx_DMA_Channel configuration
------------------------------------*/
DMA_DeInit(DMA1_Channel3);
- DMA_InitStructure.DMA_PeripheralBaseAddr = (uint32_t)(SPI1_BASE+0x0C);
- DMA_InitStructure.DMA_MemoryBaseAddr = (uint32_t)overo_link.up.array;
- DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralDST;
- DMA_InitStructure.DMA_Priority = DMA_Priority_Medium;
- DMA_Init(DMA1_Channel3, &DMA_InitStructure);
-
+ const DMA_InitTypeDef DMA_InitStructure_tx = {
+ .DMA_PeripheralBaseAddr = (uint32_t)(SPI1_BASE+0x0C),
+ .DMA_MemoryBaseAddr = (uint32_t)overo_link.up.array,
+ .DMA_DIR = DMA_DIR_PeripheralDST,
+ .DMA_BufferSize = sizeof(union AutopilotMessage),
+ .DMA_PeripheralInc = DMA_PeripheralInc_Disable,
+ .DMA_MemoryInc = DMA_MemoryInc_Enable,
+ .DMA_PeripheralDataSize = DMA_PeripheralDataSize_Byte,
+ .DMA_MemoryDataSize = DMA_MemoryDataSize_Byte,
+ .DMA_Mode = DMA_Mode_Normal,
+ .DMA_Priority = DMA_Priority_Medium,
+ .DMA_M2M = DMA_M2M_Disable
+ };
+ DMA_Init(DMA1_Channel3, &DMA_InitStructure_tx);
+
/* Enable SPI_1 Rx request */
SPI_I2S_DMACmd(SPI1, SPI_I2S_DMAReq_Rx, ENABLE);
/* Enable DMA1 Channel2 */
DMA_Cmd(DMA1_Channel2, ENABLE);
- /* Enable SPI_1 Rx request */
+ /* Enable SPI_1 Tx request */
SPI_I2S_DMACmd(SPI1, SPI_I2S_DMAReq_Tx, ENABLE);
/* Enable DMA1 Channel3 */
DMA_Cmd(DMA1_Channel3, ENABLE);
/* Enable DMA1 Channel2 Transfer Complete interrupt */
DMA_ITConfig(DMA1_Channel2, DMA_IT_TC, ENABLE);
-
+
+ /* resets CRC module */
+ SPI_Cmd(SPI1, DISABLE);
+ SPI_CalculateCRC(SPI1, DISABLE);
+ SPI_CalculateCRC(SPI1, ENABLE);
+ SPI_Cmd(SPI1, ENABLE);
}
void dma1_c2_irq_handler(void) {
Copied: paparazzi3/trunk/sw/airborne/lisa/arch/stm32/lisa_overo_link_arch.h
(from rev 5300,
paparazzi3/trunk/sw/airborne/lisa/arch/stm32/lisa_overo_link_crc_arch.h)
===================================================================
--- paparazzi3/trunk/sw/airborne/lisa/arch/stm32/lisa_overo_link_arch.h
(rev 0)
+++ paparazzi3/trunk/sw/airborne/lisa/arch/stm32/lisa_overo_link_arch.h
2010-08-11 10:29:24 UTC (rev 5306)
@@ -0,0 +1,49 @@
+#ifndef LISA_OVERO_LINK_ARCH_H
+#define LISA_OVERO_LINK_ARCH_H
+
+#include <stm32/spi.h>
+
+
+#define OveroLinkEvent(_data_received_handler, _crc_failed_handler) { \
+ if (overo_link.status == DATA_AVAILABLE) { \
+ overo_link.timeout = 0; \
+ /* FIXME : we should probably add a limit here and do something */\
+ /* radical in case we exceed it */ \
+ while(SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_RXNE)==RESET); \
+ while(SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_BSY)==SET); \
+ uint8_t foo __attribute__ ((unused)) = SPI_I2S_ReceiveData(SPI1); \
+ if((SPI_I2S_GetFlagStatus(SPI1, SPI_FLAG_CRCERR)) == RESET) { \
+ LED_TOGGLE(OVERO_LINK_LED_OK); \
+ LED_OFF(OVERO_LINK_LED_KO); \
+ _data_received_handler(); \
+ }
\
+ else { \
+ LED_OFF(OVERO_LINK_LED_OK); \
+ LED_ON(OVERO_LINK_LED_KO); \
+ _crc_failed_handler(); \
+ /* wait until we're not selected - same thing, we would */ \
+ /* probably want a limit here */ \
+ while (!GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_4)); \
+ uint8_t foo2 __attribute__ ((unused)) = SPI_I2S_ReceiveData(SPI1); \
+ SPI_I2S_DeInit(SPI1); \
+ SPI_Cmd(SPI1, DISABLE); \
+ SPI_InitTypeDef SPI_InitStructure; \
+ SPI_InitStructure.SPI_Direction =
SPI_Direction_2Lines_FullDuplex; \
+ SPI_InitStructure.SPI_Mode = SPI_Mode_Slave; \
+ SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b; \
+ SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low; \
+ SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge; \
+ SPI_InitStructure.SPI_NSS = SPI_NSS_Hard; \
+ SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_2; \
+ SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB; \
+ SPI_InitStructure.SPI_CRCPolynomial = 0x31; \
+ SPI_Init(SPI1, &SPI_InitStructure); \
+ SPI_CalculateCRC(SPI1, ENABLE); \
+ SPI_Cmd(SPI1, ENABLE); \
+ }
\
+ overo_link_arch_prepare_next_transfert();
\
+ overo_link.status = IDLE;
\
+ } \
+ }
+
+#endif /* LISA_OVERO_LINK_ARCH_H */
Deleted: paparazzi3/trunk/sw/airborne/lisa/arch/stm32/lisa_overo_link_crc_arch.c
===================================================================
--- paparazzi3/trunk/sw/airborne/lisa/arch/stm32/lisa_overo_link_crc_arch.c
2010-08-11 01:06:44 UTC (rev 5305)
+++ paparazzi3/trunk/sw/airborne/lisa/arch/stm32/lisa_overo_link_crc_arch.c
2010-08-11 10:29:24 UTC (rev 5306)
@@ -1,125 +0,0 @@
-#include "lisa/lisa_overo_link_crc.h"
-#include "led.h"
-
-#include <stm32/rcc.h>
-#include <stm32/gpio.h>
-#include <stm32/flash.h>
-#include <stm32/misc.h>
-#include <stm32/spi.h>
-#include <stm32/dma.h>
-
-#include "my_debug_servo.h"
-
-void (* overo_link_handler)(void);
-
-void dma1_c2_irq_handler(void);
-
-void overo_link_arch_init(void) {
-
- overo_link_handler = NULL;
-
- /* Enable SPI_1 DMA clock
---------------------------------------------------*/
- RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE);
- /* Enable SPI1 Periph clock
-------------------------------------------------*/
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1, ENABLE);
- /* Configure GPIOs: NSS, SCK, MISO and MOSI
--------------------------------*/
- GPIO_InitTypeDef GPIO_InitStructure;
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 |
GPIO_Pin_7;
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
- GPIO_Init(GPIOA, &GPIO_InitStructure);
- /* SPI_SLAVE configuration
--------------------------------------------------*/
- SPI_InitTypeDef SPI_InitStructure;
- SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex;
- SPI_InitStructure.SPI_Mode = SPI_Mode_Slave;
- SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;
- SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low;
- SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge;
- SPI_InitStructure.SPI_NSS = SPI_NSS_Hard;
- SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_2;
- SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;
- SPI_InitStructure.SPI_CRCPolynomial = 0x31; /* fuchsto: was 7 (reset) */
- SPI_Init(SPI1, &SPI_InitStructure);
-
- SPI_CalculateCRC(SPI1, ENABLE);
-
- /* Enable SPI_SLAVE */
- SPI_Cmd(SPI1, DISABLE);
- SPI_Cmd(SPI1, ENABLE);
-
- /* Configure DMA1 channel2 IRQ Channel */
- NVIC_InitTypeDef NVIC_init_struct = {
- .NVIC_IRQChannel = DMA1_Channel2_IRQn,
- .NVIC_IRQChannelPreemptionPriority = 0,
- .NVIC_IRQChannelSubPriority = 0,
- .NVIC_IRQChannelCmd = ENABLE
- };
- NVIC_Init(&NVIC_init_struct);
-
- /* setup DMA for first transfert */
- overo_link_arch_prepare_next_transfert(1);
-
-}
-
-
-void overo_link_arch_prepare_next_transfert(unsigned char init) {
-
-
- /* SPI_SLAVE_Rx_DMA_Channel configuration
------------------------------------*/
- DMA_InitTypeDef DMA_InitStructure;
- DMA_DeInit(DMA1_Channel2);
- DMA_InitStructure.DMA_PeripheralBaseAddr = (uint32_t)(SPI1_BASE+0x0C);
- DMA_InitStructure.DMA_MemoryBaseAddr = (uint32_t)overo_link.down.array;
- DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralSRC;
- DMA_InitStructure.DMA_BufferSize = sizeof(union AutopilotMessage);
- DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;
- DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;
- DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Byte;
- DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_Byte;
- DMA_InitStructure.DMA_Mode = DMA_Mode_Normal;
- DMA_InitStructure.DMA_Priority = DMA_Priority_VeryHigh;
- DMA_InitStructure.DMA_M2M = DMA_M2M_Disable;
- DMA_Init(DMA1_Channel2, &DMA_InitStructure);
-
- /* SPI_SLAVE_Tx_DMA_Channel configuration
------------------------------------*/
- DMA_DeInit(DMA1_Channel3);
- DMA_InitStructure.DMA_PeripheralBaseAddr = (uint32_t)(SPI1_BASE+0x0C);
- DMA_InitStructure.DMA_MemoryBaseAddr = (uint32_t)overo_link.up.array;
- DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralDST;
- DMA_InitStructure.DMA_BufferSize = sizeof(union AutopilotMessage);
- DMA_InitStructure.DMA_Priority = DMA_Priority_Medium;
-
- DMA_Init(DMA1_Channel3, &DMA_InitStructure);
-
- /* Enable SPI_1 Rx request */
- SPI_I2S_DMACmd(SPI1, SPI_I2S_DMAReq_Rx, ENABLE);
- /* Enable SPI_1 Rx request */
- SPI_I2S_DMACmd(SPI1, SPI_I2S_DMAReq_Tx, ENABLE);
- /* Enable DMA1 Channel3 */
-
- DMA_Cmd(DMA1_Channel3, ENABLE);
- /* Enable DMA1 Channel2 */
- DMA_Cmd(DMA1_Channel2, ENABLE);
-
- /* Enable DMA1 Channel2 Transfer Complete interrupt */
- DMA_ITConfig(DMA1_Channel2, DMA_IT_TC, ENABLE);
-
- /* resets CRC module */
- SPI_Cmd(SPI1, DISABLE);
- SPI_CalculateCRC(SPI1, DISABLE);
- SPI_CalculateCRC(SPI1, ENABLE);
- SPI_Cmd(SPI1, ENABLE);
-
-}
-
-void dma1_c2_irq_handler(void) {
-
- DMA_ITConfig(DMA1_Channel2, DMA_IT_TC, DISABLE);
-
- overo_link.status = DATA_AVAILABLE;
-
-
-}
-
-
-
Deleted: paparazzi3/trunk/sw/airborne/lisa/arch/stm32/lisa_overo_link_crc_arch.h
===================================================================
--- paparazzi3/trunk/sw/airborne/lisa/arch/stm32/lisa_overo_link_crc_arch.h
2010-08-11 01:06:44 UTC (rev 5305)
+++ paparazzi3/trunk/sw/airborne/lisa/arch/stm32/lisa_overo_link_crc_arch.h
2010-08-11 10:29:24 UTC (rev 5306)
@@ -1,49 +0,0 @@
-#ifndef LISA_OVERO_LINK_ARCH_H
-#define LISA_OVERO_LINK_ARCH_H
-
-#include <stm32/spi.h>
-
-
-#define OveroLinkEvent(_data_received_handler, _crc_failed_handler) { \
- if (overo_link.status == DATA_AVAILABLE) { \
- overo_link.timeout = 0; \
- /* FIXME : we should probably add a limit here and do something */\
- /* radical in case we exceed it */ \
- while(SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_RXNE)==RESET); \
- while(SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_BSY)==SET); \
- uint8_t foo __attribute__ ((unused)) = SPI_I2S_ReceiveData(SPI1); \
- if((SPI_I2S_GetFlagStatus(SPI1, SPI_FLAG_CRCERR)) == RESET) { \
- LED_TOGGLE(OVERO_LINK_LED_OK); \
- LED_OFF(OVERO_LINK_LED_KO); \
- _data_received_handler(); \
- }
\
- else { \
- LED_OFF(OVERO_LINK_LED_OK); \
- LED_ON(OVERO_LINK_LED_KO); \
- _crc_failed_handler(); \
- /* wait until we're not selected - same thing, we would */ \
- /* probably want a limit here */ \
- while (!GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_4)); \
- uint8_t foo __attribute__ ((unused)) = SPI_I2S_ReceiveData(SPI1); \
- SPI_I2S_DeInit(SPI1); \
- SPI_Cmd(SPI1, DISABLE); \
- SPI_InitTypeDef SPI_InitStructure; \
- SPI_InitStructure.SPI_Direction =
SPI_Direction_2Lines_FullDuplex; \
- SPI_InitStructure.SPI_Mode = SPI_Mode_Slave; \
- SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b; \
- SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low; \
- SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge; \
- SPI_InitStructure.SPI_NSS = SPI_NSS_Hard; \
- SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_2; \
- SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB; \
- SPI_InitStructure.SPI_CRCPolynomial = 0x31; /* fuchsto: was 7
(reset) */ \
- SPI_Init(SPI1, &SPI_InitStructure); \
- SPI_CalculateCRC(SPI1, ENABLE); \
- SPI_Cmd(SPI1, ENABLE); \
- }
\
- overo_link_arch_prepare_next_transfert(0); \
- overo_link.status = IDLE;
\
- } \
- }
-
-#endif /* LISA_OVERO_LINK_ARCH_H */
Modified: paparazzi3/trunk/sw/airborne/lisa/lisa_overo_link.c
===================================================================
--- paparazzi3/trunk/sw/airborne/lisa/lisa_overo_link.c 2010-08-11 01:06:44 UTC
(rev 5305)
+++ paparazzi3/trunk/sw/airborne/lisa/lisa_overo_link.c 2010-08-11 10:29:24 UTC
(rev 5306)
@@ -4,9 +4,20 @@
void overo_link_init(void) {
overo_link.status = IDLE;
+ overo_link.timeout = OVERO_LINK_TIMEOUT-1;
+ overo_link.msg_cnt = 0;
+ overo_link.crc_err_cnt = 0;
overo_link_arch_init();
}
+
+
+
+
+
+
+
+
#ifdef USE_OVERO_LINK_TELEMETRY
#include <string.h>
Modified: paparazzi3/trunk/sw/airborne/lisa/lisa_overo_link.h
===================================================================
--- paparazzi3/trunk/sw/airborne/lisa/lisa_overo_link.h 2010-08-11 01:06:44 UTC
(rev 5305)
+++ paparazzi3/trunk/sw/airborne/lisa/lisa_overo_link.h 2010-08-11 10:29:24 UTC
(rev 5306)
@@ -19,7 +19,9 @@
struct OVERO_LINK_MSG_DOWN msg;
uint8_t array[sizeof(union AutopilotMessage)];
} down;
- uint8_t timeout;
+ uint8_t timeout;
+ uint32_t msg_cnt;
+ uint32_t crc_err_cnt;
};
extern struct LisaOveroLink overo_link;
@@ -31,18 +33,8 @@
extern void overo_link_arch_init(void);
extern void overo_link_arch_prepare_next_transfert(void);
+#include "lisa_overo_link_arch.h"
-#define OveroLinkEvent(_data_received_handler) { \
- if (overo_link.status == DATA_AVAILABLE) { \
- overo_link.timeout = 0; \
- LED_TOGGLE(OVERO_LINK_LED_OK); \
- LED_OFF(OVERO_LINK_LED_KO); \
- _data_received_handler(); \
- overo_link_arch_prepare_next_transfert(); \
- overo_link.status = IDLE; \
- } \
- }
-
#define OveroLinkPeriodic(_timeout_handler) { \
if (overo_link.timeout < OVERO_LINK_TIMEOUT) \
overo_link.timeout++; \
@@ -56,6 +48,18 @@
} \
}
+#if 0
+#define OveroLinkEvent(_data_received_handler) { \
+ if (overo_link.status == DATA_AVAILABLE) { \
+ overo_link.timeout = 0; \
+ LED_TOGGLE(OVERO_LINK_LED_OK); \
+ LED_OFF(OVERO_LINK_LED_KO); \
+ _data_received_handler(); \
+ overo_link_arch_prepare_next_transfert(); \
+ overo_link.status = IDLE; \
+ } \
+ }
+#endif
/*
Deleted: paparazzi3/trunk/sw/airborne/lisa/lisa_overo_link_crc.c
===================================================================
--- paparazzi3/trunk/sw/airborne/lisa/lisa_overo_link_crc.c 2010-08-11
01:06:44 UTC (rev 5305)
+++ paparazzi3/trunk/sw/airborne/lisa/lisa_overo_link_crc.c 2010-08-11
10:29:24 UTC (rev 5306)
@@ -1,9 +0,0 @@
-#include "lisa/lisa_overo_link_crc.h"
-
-struct LisaOveroLink overo_link;
-
-void overo_link_init(void) {
- overo_link.status = IDLE;
- overo_link_arch_init();
-}
-
Deleted: paparazzi3/trunk/sw/airborne/lisa/lisa_overo_link_crc.h
===================================================================
--- paparazzi3/trunk/sw/airborne/lisa/lisa_overo_link_crc.h 2010-08-11
01:06:44 UTC (rev 5305)
+++ paparazzi3/trunk/sw/airborne/lisa/lisa_overo_link_crc.h 2010-08-11
10:29:24 UTC (rev 5306)
@@ -1,63 +0,0 @@
-#ifndef LISA_OVERO_LINK_H
-#define LISA_OVERO_LINK_H
-
-#include <inttypes.h>
-
-#include "fms/fms_autopilot_msg.h"
-
-enum LisaOveroLinkStatus {IDLE, BUSY, DATA_AVAILABLE, LOST, CRC_ERROR};
-
-#define OVERO_LINK_TIMEOUT 10
-
-struct LisaOveroLink {
- volatile uint8_t status;
- union {
- struct OVERO_LINK_MSG_UP msg;
- uint8_t array[sizeof(union AutopilotMessage)];
- } up;
- union {
- struct OVERO_LINK_MSG_DOWN msg;
- uint8_t array[sizeof(union AutopilotMessage)];
- } down;
- uint8_t timeout;
-};
-
-extern struct LisaOveroLink overo_link;
-
-extern void overo_link_init(void);
-extern void overo_link_periodic(void);
-
-/* implemented by underlying architecture code */
-extern void overo_link_arch_init(void);
-extern void overo_link_arch_prepare_next_transfert(unsigned char init);
-
-extern void (* overo_link_handler)(void);
-
-#define SetOveroLinkHandler(fun) { \
- overo_link_handler = (fun); \
- }
-
-#define DisableOveroLinkHandler() { \
- overo_link_handler = 0; \
- }
-
-
-#define OveroLinkPeriodic(_timeout_handler) { \
- if (overo_link.timeout < OVERO_LINK_TIMEOUT) \
- overo_link.timeout++; \
- else { \
- if (overo_link.status != LOST) { \
- overo_link.status = LOST; \
- LED_OFF(OVERO_LINK_LED_OK); \
- LED_ON(OVERO_LINK_LED_KO); \
- _timeout_handler(); \
- } \
- } \
- }
-
-#include "lisa_overo_link_crc_arch.h"
-
-#endif /* LISA_OVERO_LINK_H */
-
-
-
Modified: paparazzi3/trunk/sw/airborne/lisa/stm_test_spi_link.c
===================================================================
--- paparazzi3/trunk/sw/airborne/lisa/stm_test_spi_link.c 2010-08-11
01:06:44 UTC (rev 5305)
+++ paparazzi3/trunk/sw/airborne/lisa/stm_test_spi_link.c 2010-08-11
10:29:24 UTC (rev 5306)
@@ -31,9 +31,13 @@
#include "sys_time.h"
#include "lisa/lisa_overo_link.h"
+#include "my_debug_servo.h"
+
+
static inline void main_periodic( void );
static inline void main_event( void );
-static inline void on_overo_msg_received(void);
+static inline void on_overo_link_msg_received(void);
+static inline void on_overo_link_crc_err(void);
static inline void on_overo_link_lost(void);
int main(void) {
@@ -41,6 +45,7 @@
hw_init();
sys_time_init();
overo_link_init();
+ DEBUG_SERVO1_INIT();
while (1) {
if (sys_time_periodic())
@@ -62,7 +67,7 @@
static inline void main_event( void ) {
- OveroLinkEvent(on_overo_msg_received);
+ OveroLinkEvent(on_overo_link_msg_received, on_overo_link_crc_err);
}
@@ -71,8 +76,15 @@
}
-static inline void on_overo_msg_received(void) {
+static inline void on_overo_link_msg_received(void) {
+
+ DEBUG_S1_TOGGLE();
- memcpy(&overo_link.up.msg, &overo_link.down.msg, sizeof(struct
AutopilotMessageFoo));
+ memcpy(&overo_link.up.msg, &overo_link.down.msg,
+ sizeof(union AutopilotMessage));
+
+}
+static inline void on_overo_link_crc_err(void) {
+
}
Deleted: paparazzi3/trunk/sw/airborne/lisa/stm_test_spi_link_crc.c
===================================================================
--- paparazzi3/trunk/sw/airborne/lisa/stm_test_spi_link_crc.c 2010-08-11
01:06:44 UTC (rev 5305)
+++ paparazzi3/trunk/sw/airborne/lisa/stm_test_spi_link_crc.c 2010-08-11
10:29:24 UTC (rev 5306)
@@ -1,93 +0,0 @@
-/*
- * $Id$
- *
- * Copyright (C) 2009 Antoine Drouin <address@hidden>
- *
- * 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.
- */
-
-#include <string.h>
-
-#include BOARD_CONFIG
-#include "init_hw.h"
-#include "sys_time.h"
-#include "lisa/lisa_overo_link_crc.h"
-#include "fms/fms_autopilot_msg.h"
-
-#include "my_debug_servo.h"
-
-static inline void main_periodic( void );
-static inline void main_event( void );
-static inline void on_overo_msg_received(void);
-static inline void on_overo_link_crc_err(void);
-static inline void on_overo_link_lost(void);
-
-
-int main(void) {
-
- hw_init();
- sys_time_init();
- overo_link_init();
- DEBUG_SERVO1_INIT();
- DEBUG_SERVO2_INIT();
-
- while (1) {
- if (sys_time_periodic()) {
- main_periodic();
- }
- main_event();
- }
- return 0;
-}
-
-
-static inline void main_periodic( void ) {
- OveroLinkPeriodic(on_overo_link_lost);
- RunOnceEvery(10,{ LED_PERIODIC();});
-}
-
-static inline void main_event( void ) {
- OveroLinkEvent(on_overo_msg_received, on_overo_link_crc_err);
-}
-
-
-static inline void on_overo_link_lost(void) {
-
- DEBUG_S3_TOGGLE();
-
-}
-
-static inline void on_overo_msg_received(void) {
-
- DEBUG_S1_TOGGLE();
- memcpy(&overo_link.up.msg,
- &overo_link.down.msg,
- sizeof(union AutopilotMessage));
-
-}
-
-
-static inline void on_overo_link_crc_err(void) {
-
- DEBUG_S2_TOGGLE();
- // memcpy(&overo_link.up.msg,
- // &overo_link.down.msg,
- // sizeof(union AutopilotMessage));
-
-}
-
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [paparazzi-commits] [5306] enabled crc on overo/stm32 spi link,
antoine drouin <=