paparazzi-commits
[Top][All Lists]
Advanced

[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));
-
-}
-




reply via email to

[Prev in Thread] Current Thread [Next in Thread]