paparazzi-commits
[Top][All Lists]
Advanced

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

[paparazzi-commits] [5410] More CSC updates from Tobias (merging battery


From: Allen Ibara
Subject: [paparazzi-commits] [5410] More CSC updates from Tobias (merging battery monitor code into main )
Date: Tue, 17 Aug 2010 04:37:47 +0000

Revision: 5410
          http://svn.sv.gnu.org/viewvc/?view=rev&root=paparazzi&revision=5410
Author:   aibara
Date:     2010-08-17 04:37:47 +0000 (Tue, 17 Aug 2010)
Log Message:
-----------
More CSC updates from Tobias (merging battery monitor code into main)

Modified Paths:
--------------
    paparazzi3/trunk/sw/airborne/csc/csc_ap_link.c
    paparazzi3/trunk/sw/airborne/csc/csc_ap_link.h
    paparazzi3/trunk/sw/airborne/csc/csc_msg_def.h
    paparazzi3/trunk/sw/airborne/csc/csc_telemetry.h
    paparazzi3/trunk/sw/airborne/csc/mercury_csc_main.c

Modified: paparazzi3/trunk/sw/airborne/csc/csc_ap_link.c
===================================================================
--- paparazzi3/trunk/sw/airborne/csc/csc_ap_link.c      2010-08-17 04:37:37 UTC 
(rev 5409)
+++ paparazzi3/trunk/sw/airborne/csc/csc_ap_link.c      2010-08-17 04:37:47 UTC 
(rev 5410)
@@ -58,19 +58,45 @@
   csc_ap_send_msg(CSC_PRESSURE_MSG_ID, (const uint8_t *) &msg, sizeof(msg));
 }
 
-void csc_ap_link_send_baro(uint32_t pressure, uint16_t temperature, uint8_t 
status)
+void csc_ap_link_send_airspeed(float airspeed, uint8_t sensor_id)
 {
 
+  struct CscAirspeedMsg msg;
+
+  msg.airspeed = airspeed;
+  msg.sensor_addr = sensor_id;
+
+  csc_ap_send_msg(CSC_AIRSPEED_MSG_ID, (const uint8_t *) &msg, sizeof(msg));
+}
+
+
+void csc_ap_link_send_baro(uint32_t pressure, uint16_t temperature, uint8_t 
status, uint8_t sensor_addr)
+{
+
   struct CscBaroMsg msg;
 
   msg.baro_pressure = pressure;
   msg.baro_temperature = temperature;
   msg.baro_status = status;
+  msg.baro_sensor_addr = sensor_addr;
 
   csc_ap_send_msg(CSC_BARO_MSG_ID, (const uint8_t *) &msg, sizeof(msg));
 }
 
 
+void csc_ap_link_send_bat(uint16_t volts, uint16_t amps, uint8_t msgctr)
+{
+
+  struct CscBatMsg msg;
+
+  msg.volts = volts;
+  msg.amps = amps; 
+  msg.msgctr = msgctr;
+
+  csc_ap_send_msg(CSC_BAT_MSG_ID, (const uint8_t *) &msg, sizeof(msg));
+}
+
+
 // Generic function for sending can messages
 void can_write_csc(uint8_t board_id, uint8_t msg_id, const uint8_t *buf, 
uint8_t len)
 {

Modified: paparazzi3/trunk/sw/airborne/csc/csc_ap_link.h
===================================================================
--- paparazzi3/trunk/sw/airborne/csc/csc_ap_link.h      2010-08-17 04:37:37 UTC 
(rev 5409)
+++ paparazzi3/trunk/sw/airborne/csc/csc_ap_link.h      2010-08-17 04:37:47 UTC 
(rev 5410)
@@ -16,7 +16,8 @@
 void csc_ap_link_send_adc(float adc1, float adc2);
 void csc_ap_link_send_vane(float *vane_angle);
 void csc_ap_link_send_pressure(float pressure1, float pressure2);
-void csc_ap_link_send_baro(uint32_t pressure, uint16_t temp, uint8_t status);
+void csc_ap_link_send_airspeed(float airspeed, uint8_t sensor_id);
+void csc_ap_link_send_baro(uint32_t pressure, uint16_t temp, uint8_t status, 
uint8_t sensor_addr);
 void csc_ap_link_set_servo_cmd_cb(void (* cb)(struct CscServoCmd *cmd));
 void csc_ap_link_set_motor_cmd_cb(void (* cb)(struct CscMotorMsg *msg));
 void csc_ap_link_set_prop_cmd_cb(void (* cb)(struct CscPropCmd *cmd, int idx));
@@ -24,6 +25,7 @@
 void csc_ap_link_set_gpsfix_cb(void (* cb)(struct CscGPSFixMsg *msg));
 void csc_ap_link_set_gpspos_cb(void (* cb)(struct CscGPSPosMsg *msg));
 void csc_ap_link_set_gpsacc_cb(void (* cb)(struct CscGPSAccMsg *msg));
+void csc_ap_link_send_bat(uint16_t volts, uint16_t amps, uint8_t msgctr);
 
 #endif /* CSC_AP_LINK_H */
 

Modified: paparazzi3/trunk/sw/airborne/csc/csc_msg_def.h
===================================================================
--- paparazzi3/trunk/sw/airborne/csc/csc_msg_def.h      2010-08-17 04:37:37 UTC 
(rev 5409)
+++ paparazzi3/trunk/sw/airborne/csc/csc_msg_def.h      2010-08-17 04:37:47 UTC 
(rev 5410)
@@ -3,25 +3,30 @@
 
 #include "paparazzi.h"
 
-#define CSC_GPS_AXIS_IDX_X    0
-#define CSC_GPS_AXIS_IDX_Y    1
-#define CSC_GPS_AXIS_IDX_Z    2
+#define CSC_GPS_AXIS_IDX_X             0
+#define CSC_GPS_AXIS_IDX_Y             1
+#define CSC_GPS_AXIS_IDX_Z             2
 
-#define CSC_SERVO_CMD_ID      0
-#define CSC_MOTOR_CMD_ID      1
-#define CSC_PROP_CMD_ID       2
-#define CSC_MOTOR_STATUS_ID   3
-#define CSC_BOARD_STATUS_ID   4
-#define CSC_BOARD_ADCVOLTS_ID 5
-#define CSC_RC_ID            6
-#define CSC_GPS_FIX_ID       7
-#define CSC_GPS_POS_ID       8
-#define CSC_GPS_ACC_ID       9
-#define CSC_PROP2_CMD_ID       10
-#define CSC_VANE_MSG_ID       11
-#define CSC_PRESSURE_MSG_ID   12
-#define CSC_BARO_MSG_ID       13
-#define CSC_ID_COUNT          14
+typedef enum { 
+       CSC_SERVO_CMD_ID                                =  0, 
+       CSC_MOTOR_CMD_ID                                =  1, 
+       CSC_PROP_CMD_ID                                 =  2, 
+       CSC_MOTOR_STATUS_ID                     =  3, 
+       CSC_BOARD_STATUS_ID                     =  4, 
+       CSC_BOARD_ADCVOLTS_ID           =  5, 
+       CSC_RC_ID                                                               
=  6, 
+       CSC_GPS_FIX_ID                                  =  7, 
+       CSC_GPS_POS_ID                                  =  8, 
+       CSC_GPS_ACC_ID                                  =  9, 
+       CSC_PROP2_CMD_ID                                = 10, 
+       CSC_VANE_MSG_ID                                 = 11, 
+       CSC_PRESSURE_MSG_ID                     = 12, 
+       CSC_BARO_MSG_ID                                 = 13, 
+       CSC_BAT_MSG_ID                                  = 14, 
+       CSC_AIRSPEED_MSG_ID             = 15, 
+       
+       CSC_ID_COUNT
+} csc_can_msg_id;
 
 /* Received from the autopilot */
 struct CscServoCmd {
@@ -86,10 +91,29 @@
   float pressure2;
 } __attribute__((packed));
 
+/*
+struct CscAirspeedMsg {
+  float airspeed1;
+  float airspeed2;
+} __attribute__((packed));
+*/
+
+struct CscAirspeedMsg {
+  float airspeed;
+  uint8_t sensor_addr;
+} __attribute__((packed));
+
+struct CscBatMsg {
+  uint16_t volts;
+  uint16_t amps;
+  uint8_t msgctr;
+} __attribute__((packed));
+
 struct CscBaroMsg {
   uint32_t baro_pressure;
   uint16_t baro_temperature;
   uint8_t baro_status;
+  uint8_t baro_sensor_addr;
 } __attribute__((packed));
 
 #define CSC_RC_SCALE 20

Modified: paparazzi3/trunk/sw/airborne/csc/csc_telemetry.h
===================================================================
--- paparazzi3/trunk/sw/airborne/csc/csc_telemetry.h    2010-08-17 04:37:37 UTC 
(rev 5409)
+++ paparazzi3/trunk/sw/airborne/csc/csc_telemetry.h    2010-08-17 04:37:47 UTC 
(rev 5410)
@@ -32,7 +32,6 @@
 
 #include "downlink.h"
 #include "settings.h"
-#include "booz/booz2_gps.h"
 
 
 #define PERIODIC_SEND_DL_VALUE(_chan) PeriodicSendDlValue(_chan)

Modified: paparazzi3/trunk/sw/airborne/csc/mercury_csc_main.c
===================================================================
--- paparazzi3/trunk/sw/airborne/csc/mercury_csc_main.c 2010-08-17 04:37:37 UTC 
(rev 5409)
+++ paparazzi3/trunk/sw/airborne/csc/mercury_csc_main.c 2010-08-17 04:37:47 UTC 
(rev 5410)
@@ -31,6 +31,7 @@
 #include "init_hw.h"
 #include "sys_time.h"
 #include "led.h"
+
 #include "csc_vane.h"
 
 #ifdef USE_BUSS_TWI_BLMC_MOTOR
@@ -48,17 +49,22 @@
 #include "interrupt_hw.h"
 #include "uart.h"
 #include "csc_telemetry.h"
+
 #include "periodic.h"
 #include "downlink.h"
+
 #include "pwm_input.h"
 #include "csc_airspeed.h"
 #include "csc_baro.h"
+#include "csc_bat_monitor.h"
 
 #include "csc_adc.h"
+
 #include "csc_rc_spektrum.h"
 
 #include "csc_can.h"
 #include "csc_ap_link.h"
+
 static inline void on_servo_cmd(struct CscServoCmd *cmd);
 static inline void on_motor_cmd(struct CscMotorMsg *msg);
 static inline void on_prop_cmd(struct CscPropCmd *msg, int idx);
@@ -67,192 +73,201 @@
 #define CSC_STATUS_TIMEOUT (SYS_TICS_OF_SEC(0.25) / PERIODIC_TASK_PERIOD)
 #define AIRSPEED_TIMEOUT (SYS_TICS_OF_SEC(0.01) / PERIODIC_TASK_PERIOD)
 
+
 static uint32_t servo_cmd_timeout = 0;
 static uint32_t can_msg_count = 0;
 
 
 static void csc_main_init( void ) {
 
-  hw_init();
-  sys_time_init();
-  led_init();
+       hw_init();
+       sys_time_init();
+       led_init();
+       
+       actuators_init();
 
-  
-  actuators_init();
-  csc_servos_init();
-
-
+       
 #ifdef USE_UART0
-  Uart0Init();
+       Uart0Init();
 #endif
-
+       
 #ifdef USE_UART1
-  Uart1Init();
+       Uart1Init();
 #endif
 
 #ifdef SPEKTRUM_LINK
-  spektrum_init();
+       spektrum_init();
 #endif
 
 #ifdef USE_PWM_INPUT
-  pwm_input_init();
+       pwm_input_init();
 #endif
 
-  csc_ap_link_init();
-  csc_ap_link_set_servo_cmd_cb(on_servo_cmd);
-  csc_ap_link_set_motor_cmd_cb(on_motor_cmd);
-  csc_ap_link_set_prop_cmd_cb(on_prop_cmd);
 
+// be sure to call servos_init after uart1 init since they are sharing pins
+#ifdef USE_VANE_SENSOR
+       csc_servos_init();
+#endif
+
+       csc_ap_link_init();
+       csc_ap_link_set_servo_cmd_cb(on_servo_cmd);
+       csc_ap_link_set_motor_cmd_cb(on_motor_cmd);
+       csc_ap_link_set_prop_cmd_cb(on_prop_cmd);
+
 #ifdef ADC
-  csc_adc_init();
+       csc_adc_init();
 #endif
+       
+       
+#ifdef USE_I2C0
+       i2c0_init();
+#endif
 
-  // be sure to call servos_init after uart1 init since they are sharing pins
-  #ifdef USE_I2C0
-  i2c0_init();
-  #endif
+#ifdef USE_BUSS_TWI_BLMC_MOTOR
+       motors_init();
+#endif
 
-  #ifdef USE_BUSS_TWI_BLMC_MOTOR
-  motors_init();
-  #endif
-
 #ifdef USE_AIRSPEED
-  airspeed_init();
+       airspeed_init();
 #endif
-
 #ifdef USE_AIRSPEED_ETS
-  airspeed_ets_init();
+       airspeed_ets_init();
 #endif
 #ifdef USE_BARO_ETS
-  baro_ets_init();
+       baro_ets_init();
 #endif
 #ifdef USE_AMS5812
-    csc_ams5812_init();
+               csc_ams5812_init();
 #endif
 #ifdef USE_BARO_SCP
-  baro_scp_init();
+       baro_scp_init();
 #endif
 
-  int_enable();
+#ifdef USE_BAT_MONITOR
+       csc_bat_monitor_init(); 
+#endif
+       
+       int_enable(); 
+
 }
 
+static void csc_main_periodic( void )
+{
+       static uint32_t zeros[4] = {0, 0, 0, 0};
+       static uint32_t csc_loops = 0;
 
-static void csc_main_periodic( void ) {
-  static uint32_t zeros[4] = {0, 0, 0, 0};
-  static uint32_t csc_loops = 0;
+#ifdef DOWNLINK
+       PeriodicSendAp(DefaultChannel);
+#endif
 
-  #ifdef DOWNLINK
-  PeriodicSendAp(DefaultChannel);
-  #endif
-
-  #ifdef USE_VANE_SENSOR
-  csc_vane_periodic();
-  #endif
-
-  if (servo_cmd_timeout > SERVO_TIMEOUT) {
-    csc_servos_set(zeros);
-  } else {
-    servo_cmd_timeout++;
-  }
-  
-  if ((++csc_loops % CSC_STATUS_TIMEOUT) == 0) {
-    csc_ap_link_send_status(csc_loops, can_msg_count);
-  }
-#ifdef ADC
-  csc_adc_periodic();
+#ifdef USE_VANE_SENSOR
+       csc_vane_periodic();
 #endif
 
-  if ((csc_loops % AIRSPEED_TIMEOUT) == 0) {
+       if (servo_cmd_timeout > SERVO_TIMEOUT) {
+               csc_servos_set(zeros);
+       } else {
+               servo_cmd_timeout++;
+       }
+       
+       if ((++csc_loops % CSC_STATUS_TIMEOUT) == 0) {
+               csc_ap_link_send_status(csc_loops, can_msg_count);
+       }
+       
+       csc_adc_periodic();
+       
+       if ((csc_loops % AIRSPEED_TIMEOUT) == 0) {
 #ifdef USE_AIRSPEED_ETS
-    airspeed_ets_periodic();
+               airspeed_ets_periodic();
 #endif
 #ifdef USE_BARO_ETS
-    baro_ets_read();
+               baro_ets_read();
 #endif
-  } else if ((csc_loops % AIRSPEED_TIMEOUT) == 1) {
+       } else if ((csc_loops % AIRSPEED_TIMEOUT) == 1) {
 #ifdef USE_BARO_ETS
-    baro_ets_periodic();
+               baro_ets_periodic();
 #endif
 #ifdef USE_AIRSPEED_ETS
-    airspeed_ets_read();
+               airspeed_ets_read();
 #endif
 #ifdef USE_AIRSPEED
-    csc_airspeed_periodic();
+               csc_airspeed_periodic();
 #endif
 #ifdef USE_AMS5812
-    csc_ams5812_periodic();
-    csc_ap_link_send_pressure(ams5812_pressure[0], ams5812_pressure[1]);
+               csc_ams5812_periodic();
+               csc_ap_link_send_pressure(ams5812_pressure[0], 
ams5812_pressure[1]);
 #endif
-  }
+       }
 
 #ifdef USE_AIRSPEED
-  airspeed_update();
+       airspeed_update();
 #endif
+
 #ifdef USE_BARO_SCP
-  baro_scp_periodic();
-  csc_ap_link_send_baro(baro_scp_pressure, baro_scp_temperature, 
baro_scp_status);
+       baro_scp_periodic();
+       csc_ap_link_send_baro(baro_scp_pressure, baro_scp_temperature, 
baro_scp_status);
 #endif
+
+#ifdef USE_BAT_MONITOR
+       csc_bat_monitor_periodic(); 
+#endif
+
 }
 
 static void csc_main_event( void ) {
+       csc_can_event();
 
-  csc_can_event();
 #ifdef USE_BUSS_TWI_BLMC_MOTOR
-  motors_event();
+       motors_event();
 #endif
+
 #ifdef SPEKTRUM_LINK
-  spektrum_event_task();
+       spektrum_event_task();
 #endif
 }
 
-
 #define MIN_SERVO SYS_TICS_OF_USEC(1000)
 #define MAX_SERVO SYS_TICS_OF_USEC(2000)
 
 #ifdef USE_BUSS_TWI_BLMC_MOTOR
 static void on_prop_cmd(struct CscPropCmd *cmd, int idx)
 {
-  for(uint8_t i = 0; i < 4; i++)
-    motors_set_motor(i + idx * 4, cmd->speeds[i]);
-  
-  motors_commit(idx == 1);
+       for(uint8_t i = 0; i < 4; i++)
+               motors_set_motor(i + idx * 4, cmd->speeds[i]);
 
-  ++can_msg_count;
-}
+       motors_commit(idx == 1);
+
+       ++can_msg_count;
+}      
 #else
 static void on_prop_cmd(struct CscPropCmd *cmd, int idx) {}
 #endif
 
-
 static void on_servo_cmd(struct CscServoCmd *cmd)
 {
+       uint16_t* servos = (uint16_t*)(cmd);
+       uint8_t i;
 
-  uint16_t* servos = (uint16_t*)(cmd);
-  uint8_t i;
-  
-  //  uint32_t servos_checked[4];
-  for(i = 0; i < 4; i++)
-    csc_servo_normalized_set(i,servos[i]);
-  csc_servos_commit();
-  
-  servo_cmd_timeout = 0;
-  
-  ++can_msg_count;
+       //      uint32_t servos_checked[4];
+       for(i = 0; i < 4; i++) { 
+               csc_servo_normalized_set(i,servos[i]);
+       }
+       csc_servos_commit();
+       servo_cmd_timeout = 0;
+       ++can_msg_count;
 }
 
+static void on_motor_cmd(struct CscMotorMsg *msg) {}
 
-static void on_motor_cmd(struct CscMotorMsg *msg)
-{
-
-}
-
 int main( void ) {
-  csc_main_init();
-  while(1) {
-    if (sys_time_periodic())
-      csc_main_periodic();
-    csc_main_event();
-  }
-  return 0;
+       csc_main_init();
+//     Uart0PrintString("Hello");
+       while(1) {
+               if (sys_time_periodic()) {
+                       csc_main_periodic();
+               }
+               csc_main_event();
+       }
+       return 0;
 }
 




reply via email to

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