paparazzi-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[paparazzi-commits] [5059] OveroSpiLink Improvements


From: Allen Ibara
Subject: [paparazzi-commits] [5059] OveroSpiLink Improvements
Date: Thu, 15 Jul 2010 23:18:52 +0000

Revision: 5059
          http://svn.sv.gnu.org/viewvc/?view=rev&root=paparazzi&revision=5059
Author:   aibara
Date:     2010-07-15 23:18:52 +0000 (Thu, 15 Jul 2010)
Log Message:
-----------
OveroSpiLink Improvements

Use "up" and "down" instead of "in" and "out" since the latter are ambiguous 
depending on which side of the link you believe you are on.

Replace -OVERO_LINK_MSG_UNION with
OVERO_LINK_MSG_UP and OVERO_LINK_MSG_DOWN

This allows the union type to be defined once, instead of repeating the union 
boilerplate over and over again.

Defining the up and down messages independently is useful in the case where two 
airframes share one message but not the other. One can also use the same 
message for Up and Down (ala AutopilotMessageFoo for stm_test_spi_link)

Change the overo_link union too, replacing the UNION type with the new UP/DOWN 
types. This way we get type checking on up vs down message type.

For example:
msg_out = &overo_link.msg_out.uni.up;
becomes:
msg_up = &overo_link.up.msg;

Modified Paths:
--------------
    paparazzi3/trunk/conf/autopilot/lisa_passthrough.makefile
    paparazzi3/trunk/conf/autopilot/lisa_test_progs.makefile
    paparazzi3/trunk/sw/airborne/fms/fms_autopilot_msg.h
    paparazzi3/trunk/sw/airborne/fms/fms_spi_autopilot_msg.c
    paparazzi3/trunk/sw/airborne/fms/overo_test_periodic.c
    paparazzi3/trunk/sw/airborne/lisa/arch/stm32/lisa_overo_link_arch.c
    paparazzi3/trunk/sw/airborne/lisa/lisa_overo_link.h
    paparazzi3/trunk/sw/airborne/lisa/lisa_stm_passthrough_main.c
    paparazzi3/trunk/sw/airborne/lisa/stm_test_spi_link.c

Modified: paparazzi3/trunk/conf/autopilot/lisa_passthrough.makefile
===================================================================
--- paparazzi3/trunk/conf/autopilot/lisa_passthrough.makefile   2010-07-15 
20:02:35 UTC (rev 5058)
+++ paparazzi3/trunk/conf/autopilot/lisa_passthrough.makefile   2010-07-15 
23:18:52 UTC (rev 5059)
@@ -29,7 +29,7 @@
 pt.srcs += downlink.c pprz_transport.c
 
 # Link Overo
-pt.CFLAGS += -DUSE_OVERO_LINK -DOVERO_LINK_MSG_UNION=AutopilotMessagePT
+pt.CFLAGS += -DUSE_OVERO_LINK -DOVERO_LINK_MSG_UP=AutopilotMessagePTUp 
-DOVERO_LINK_MSG_DOWN=AutopilotMessagePTDown
 pt.CFLAGS += -DOVERO_LINK_LED_OK=3 -DOVERO_LINK_LED_KO=4 -DUSE_DMA1_C2_IRQ
 pt.srcs += lisa/lisa_overo_link.c lisa/arch/stm32/lisa_overo_link_arch.c
 

Modified: paparazzi3/trunk/conf/autopilot/lisa_test_progs.makefile
===================================================================
--- paparazzi3/trunk/conf/autopilot/lisa_test_progs.makefile    2010-07-15 
20:02:35 UTC (rev 5058)
+++ paparazzi3/trunk/conf/autopilot/lisa_test_progs.makefile    2010-07-15 
23:18:52 UTC (rev 5059)
@@ -757,7 +757,7 @@
 stm_test_spi_link.CFLAGS += -DUSE_UART2 -DUART2_BAUD=B57600
 stm_test_spi_link.srcs += $(SRC_ARCH)/uart_hw.c
 
-stm_test_spi_link.CFLAGS += -DUSE_OVERO_LINK 
-DOVERO_LINK_MSG_UNION=AutopilotMessageFoo1
+stm_test_spi_link.CFLAGS += -DUSE_OVERO_LINK 
-DOVERO_LINK_MSG_UP=AutopilotMessageFoo 
-DOVERO_LINK_MSG_DOWN=AutopilotMessageFoo
 stm_test_spi_link.CFLAGS += -DOVERO_LINK_LED_OK=3 -DOVERO_LINK_LED_KO=4 
-DUSE_DMA1_C2_IRQ
 stm_test_spi_link.srcs += lisa/lisa_overo_link.c 
lisa/arch/stm32/lisa_overo_link_arch.c
 

Modified: paparazzi3/trunk/sw/airborne/fms/fms_autopilot_msg.h
===================================================================
--- paparazzi3/trunk/sw/airborne/fms/fms_autopilot_msg.h        2010-07-15 
20:02:35 UTC (rev 5058)
+++ paparazzi3/trunk/sw/airborne/fms/fms_autopilot_msg.h        2010-07-15 
23:18:52 UTC (rev 5059)
@@ -19,13 +19,6 @@
   uint8_t bli;
 };
 
-union AutopilotMessageFoo1
-{
-  struct AutopilotMessageFoo up;
-  struct AutopilotMessageFoo down;
-};
-
-
 /*
  * BETH
  */
@@ -43,13 +36,6 @@
   uint8_t motor_back;
 };
 
-union AutopilotMessageBeth
-{
-  struct AutopilotMessageBethUp up;
-  struct AutopilotMessageBethDown down;
-};
-
-
 /*
  *  STM Telemetry through wifi
  */
@@ -66,12 +52,6 @@
   uint8_t data[TW_BUF_LEN];
 };
 
-union AutopilotMessageTW
-{
-  struct AutopilotMessageTWUp up;
-  struct AutopilotMessageTWDown down;
-};
-
 /*
  * Passthrough, aka biplan
  */
@@ -97,10 +77,11 @@
   uint16_t pwm_outputs_usecs[LISA_PWM_OUTPUT_NB];
 };
 
-union AutopilotMessagePT
-{
-  struct AutopilotMessagePTUp up;
-  struct AutopilotMessagePTDown down;
+/* Union for computing size of SPI transfer (largest of either up or down 
message) */
+union AutopilotMessage {
+  struct OVERO_LINK_MSG_UP msg_up;
+  struct OVERO_LINK_MSG_DOWN msg_down;
 };
 
+
 #endif /* FMS_AUTOPILOT_H */

Modified: paparazzi3/trunk/sw/airborne/fms/fms_spi_autopilot_msg.c
===================================================================
--- paparazzi3/trunk/sw/airborne/fms/fms_spi_autopilot_msg.c    2010-07-15 
20:02:35 UTC (rev 5058)
+++ paparazzi3/trunk/sw/airborne/fms/fms_spi_autopilot_msg.c    2010-07-15 
23:18:52 UTC (rev 5059)
@@ -150,7 +150,7 @@
   passthrough_down_fill(&msg_out);
 
   // SPI transcieve
-  spi_link_send(&msg_out, sizeof(union AutopilotMessagePT), &msg_in);
+  spi_link_send(&msg_out, sizeof(union AutopilotMessage), &msg_in);
 
   passthrough_up_parse(&msg_in);
 }

Modified: paparazzi3/trunk/sw/airborne/fms/overo_test_periodic.c
===================================================================
--- paparazzi3/trunk/sw/airborne/fms/overo_test_periodic.c      2010-07-15 
20:02:35 UTC (rev 5058)
+++ paparazzi3/trunk/sw/airborne/fms/overo_test_periodic.c      2010-07-15 
23:18:52 UTC (rev 5059)
@@ -66,8 +66,8 @@
 
 static void main_send_to_stm(void) {
 
-  union AutopilotMessageTW msg_in, msg_out;
-  spi_link_send(&msg_out.down, sizeof(union AutopilotMessageTW), &msg_in.up);
+  union AutopilotMessage msg_in, msg_out;
+  spi_link_send(&msg_out.down, sizeof(union AutopilotMessage), &msg_in.up);
 
   printf("spi telemetry got %d\n", msg_in.up.tw_len);
   //  for (int i=0; i<msg_in.up.tw_len; i++)

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-07-15 20:02:35 UTC (rev 5058)
+++ paparazzi3/trunk/sw/airborne/lisa/arch/stm32/lisa_overo_link_arch.c 
2010-07-15 23:18:52 UTC (rev 5059)
@@ -58,9 +58,9 @@
   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.msg_in.array;
+  DMA_InitStructure.DMA_MemoryBaseAddr = (uint32_t)overo_link.down.array;
   DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralSRC;
-  DMA_InitStructure.DMA_BufferSize = sizeof(overo_link.msg_in);
+  DMA_InitStructure.DMA_BufferSize = sizeof(overo_link.down);
   DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;
   DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;
   DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Byte;
@@ -73,7 +73,7 @@
   /* 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.msg_out.array;
+  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);

Modified: paparazzi3/trunk/sw/airborne/lisa/lisa_overo_link.h
===================================================================
--- paparazzi3/trunk/sw/airborne/lisa/lisa_overo_link.h 2010-07-15 20:02:35 UTC 
(rev 5058)
+++ paparazzi3/trunk/sw/airborne/lisa/lisa_overo_link.h 2010-07-15 23:18:52 UTC 
(rev 5059)
@@ -12,13 +12,13 @@
 struct LisaOveroLink {
        volatile uint8_t status;
        union {
-               union OVERO_LINK_MSG_UNION uni;
-               uint8_t array[sizeof(union OVERO_LINK_MSG_UNION)];
-       } msg_in;
+               struct OVERO_LINK_MSG_UP msg;
+               uint8_t array[sizeof(union AutopilotMessage)];
+       } up;
        union {
-               union OVERO_LINK_MSG_UNION uni;
-               uint8_t array[sizeof(union OVERO_LINK_MSG_UNION)];
-       } msg_out;
+               struct OVERO_LINK_MSG_DOWN msg;
+               uint8_t array[sizeof(union AutopilotMessage)];
+       } down;
        uint8_t timeout;
 };
 

Modified: paparazzi3/trunk/sw/airborne/lisa/lisa_stm_passthrough_main.c
===================================================================
--- paparazzi3/trunk/sw/airborne/lisa/lisa_stm_passthrough_main.c       
2010-07-15 20:02:35 UTC (rev 5058)
+++ paparazzi3/trunk/sw/airborne/lisa/lisa_stm_passthrough_main.c       
2010-07-15 23:18:52 UTC (rev 5059)
@@ -79,34 +79,34 @@
 }
 
 static inline void main_on_overo_msg_received(void) {
-       struct AutopilotMessagePTUp *msg_out = &overo_link.msg_out.uni.up;
-       struct AutopilotMessagePTDown *msg_in = &overo_link.msg_in.uni.down;
+       struct AutopilotMessagePTUp *msg_up = &overo_link.up.msg;
+       struct AutopilotMessagePTDown *msg_down = &overo_link.down.msg;
 
-       msg_out->gyro.x = booz_imu.gyro.p;
-       msg_out->gyro.y = booz_imu.gyro.q;
-       msg_out->gyro.z = booz_imu.gyro.r;
+       msg_up->gyro.x = booz_imu.gyro.p;
+       msg_up->gyro.y = booz_imu.gyro.q;
+       msg_up->gyro.z = booz_imu.gyro.r;
 
-       msg_out->accel.x = booz_imu.accel.x;
-       msg_out->accel.y = booz_imu.accel.y;
-       msg_out->accel.z = booz_imu.accel.z;
+       msg_up->accel.x = booz_imu.accel.x;
+       msg_up->accel.y = booz_imu.accel.y;
+       msg_up->accel.z = booz_imu.accel.z;
 
-       msg_out->mag.x = booz_imu.mag.x;
-       msg_out->mag.y = booz_imu.mag.y;
-       msg_out->mag.z = booz_imu.mag.z;
+       msg_up->mag.x = booz_imu.mag.x;
+       msg_up->mag.y = booz_imu.mag.y;
+       msg_up->mag.z = booz_imu.mag.z;
 
-       msg_out->rc_pitch = radio_control.values[RADIO_CONTROL_PITCH];
-       msg_out->rc_roll = radio_control.values[RADIO_CONTROL_ROLL];
-       msg_out->rc_yaw = radio_control.values[RADIO_CONTROL_YAW];
-       msg_out->rc_thrust = radio_control.values[RADIO_CONTROL_THROTTLE];
-       msg_out->rc_mode = radio_control.values[RADIO_CONTROL_MODE];
-       msg_out->rc_kill = radio_control.values[RADIO_CONTROL_KILL];
-       msg_out->rc_gear = radio_control.values[RADIO_CONTROL_GEAR];
-       msg_out->rc_aux3 = radio_control.values[RADIO_CONTROL_AUX3];
-       msg_out->rc_aux4 = radio_control.values[RADIO_CONTROL_AUX4];
-       msg_out->rc_status = radio_control.status;
+       msg_up->rc_pitch = radio_control.values[RADIO_CONTROL_PITCH];
+       msg_up->rc_roll = radio_control.values[RADIO_CONTROL_ROLL];
+       msg_up->rc_yaw = radio_control.values[RADIO_CONTROL_YAW];
+       msg_up->rc_thrust = radio_control.values[RADIO_CONTROL_THROTTLE];
+       msg_up->rc_mode = radio_control.values[RADIO_CONTROL_MODE];
+       msg_up->rc_kill = radio_control.values[RADIO_CONTROL_KILL];
+       msg_up->rc_gear = radio_control.values[RADIO_CONTROL_GEAR];
+       msg_up->rc_aux3 = radio_control.values[RADIO_CONTROL_AUX3];
+       msg_up->rc_aux4 = radio_control.values[RADIO_CONTROL_AUX4];
+       msg_up->rc_status = radio_control.status;
 
        for (int i = 0; i < LISA_PWM_OUTPUT_NB; i++)
-         booz_actuators_pwm_values[i] = msg_in->pwm_outputs_usecs[i];
+         booz_actuators_pwm_values[i] = msg_down->pwm_outputs_usecs[i];
        booz_actuators_pwm_commit();
 }
 

Modified: paparazzi3/trunk/sw/airborne/lisa/stm_test_spi_link.c
===================================================================
--- paparazzi3/trunk/sw/airborne/lisa/stm_test_spi_link.c       2010-07-15 
20:02:35 UTC (rev 5058)
+++ paparazzi3/trunk/sw/airborne/lisa/stm_test_spi_link.c       2010-07-15 
23:18:52 UTC (rev 5059)
@@ -73,6 +73,6 @@
 
 static inline void on_overo_msg_received(void) {
 
-  memcpy(overo_link.msg_out, overo_link.msg_in, sizeof(struct 
AutopilotMessageFoo));
+  memcpy(overo_link.up, overo_link.down, sizeof(struct AutopilotMessageFoo));
 
 }




reply via email to

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