diff --git a/sw/airborne/lisa/arch/stm32/lisa_overo_link_arch.c b/sw/airborne/lisa/arch/stm32/lisa_overo_link_arch.c index e98f75207a..2675afd7b3 100644 --- a/sw/airborne/lisa/arch/stm32/lisa_overo_link_arch.c +++ b/sw/airborne/lisa/arch/stm32/lisa_overo_link_arch.c @@ -92,11 +92,11 @@ void overo_link_arch_prepare_next_transfert(void) { } - void dma1_c2_irq_handler(void) { DMA_ITConfig(DMA1_Channel2, DMA_IT_TC, DISABLE); overo_link.status = DATA_AVAILABLE; + } diff --git a/sw/airborne/lisa/lisa_overo_link.c b/sw/airborne/lisa/lisa_overo_link.c index 6e89a8d27b..170753b4da 100644 --- a/sw/airborne/lisa/lisa_overo_link.c +++ b/sw/airborne/lisa/lisa_overo_link.c @@ -3,7 +3,7 @@ struct LisaOveroLink overo_link; void overo_link_init(void) { - overo_link.status = LOST; + overo_link.status = IDLE; overo_link_arch_init(); } diff --git a/sw/airborne/lisa/lisa_overo_link.h b/sw/airborne/lisa/lisa_overo_link.h index 884e79caf6..94ed7602c2 100644 --- a/sw/airborne/lisa/lisa_overo_link.h +++ b/sw/airborne/lisa/lisa_overo_link.h @@ -10,7 +10,7 @@ enum LisaOveroLinkStatus {IDLE, BUSY, DATA_AVAILABLE, LOST}; #define OVERO_LINK_TIMEOUT 10 struct LisaOveroLink { - uint8_t status; + volatile uint8_t status; uint8_t msg_in[sizeof(union OVERO_LINK_MSG_UNION)]; uint8_t msg_out[sizeof(union OVERO_LINK_MSG_UNION)]; uint8_t timeout; diff --git a/sw/airborne/lisa/stm_test_spi_link.c b/sw/airborne/lisa/stm_test_spi_link.c index e1a1888557..8cc07e7acc 100644 --- a/sw/airborne/lisa/stm_test_spi_link.c +++ b/sw/airborne/lisa/stm_test_spi_link.c @@ -43,12 +43,11 @@ int main(void) { hw_init(); sys_time_init(); overo_link_init(); - - while (1) { + while (1) { if (sys_time_periodic()) main_periodic(); - + main_event(); } return 0; @@ -56,23 +55,17 @@ int main(void) { static inline void main_periodic( void ) { - // LED_TOGGLE(1); - - // uart2_transmit('a'); - // uart2_transmit('b'); - // uart2_transmit('b'); - // uart2_transmit('\n'); OveroLinkPeriodic(on_overo_link_lost); + RunOnceEvery(10,{ LED_PERIODIC();}); + } static inline void main_event( void ) { + OveroLinkEvent(on_overo_msg_received); - // send previously received msg - memcpy(overo_link.msg_out, &my_msg, sizeof(my_msg)); - // store newly received message - memcpy(&my_msg, overo_link.msg_in, sizeof(my_msg)); + } @@ -82,5 +75,6 @@ static inline void on_overo_link_lost(void) { static inline void on_overo_msg_received(void) { + memcpy(overo_link.msg_out, overo_link.msg_in, sizeof(struct AutopilotMessageFoo)); }