[Mavlink] Added battery status and mode menus. Synced mavlink library with official repository.

This commit is contained in:
pienk@planet.nl
2013-05-20 21:41:16 +00:00
parent a2aa7c62c2
commit 59fdea8ee5
227 changed files with 3774 additions and 29629 deletions
+31 -4
View File
@@ -14,6 +14,7 @@
* - Michal Hlavinka
* - Pat Mackenzie
* - Philip Moss
* - Rienk de Jong
* - Rob Thomson
* - Romolo Manfredini <romolo.manfredini@gmail.com>
* - Thomas Husterer
@@ -56,7 +57,7 @@ mavlink_system_t mavlink_system = { 7, MAV_COMP_ID_MISSIONPLANNER, 0, 0, 0, 0 };
// Mavlink message decoded Status Text
#define PARAM_NB_REPEAT 10
#define LEN_STATUSTEXT 15
#define LEN_STATUSTEXT 20
static char mav_statustext[LEN_STATUSTEXT];
static int8_t mav_heartbeat = 0;
static int8_t mav_heartbeat_recv = 0;
@@ -144,6 +145,7 @@ void MAVLINK_Init(void) {
* characters are used. To get the full message you can use the commented
* funtion below.
*/
static inline void REC_MAVLINK_MSG_ID_STATUSTEXT(const mavlink_message_t* msg) {
uint8_t temp = mavlink_msg_statustext_get_severity(msg);
_MAV_RETURN_char_array(msg, mav_statustext, LEN_STATUSTEXT, 1);
@@ -158,26 +160,46 @@ static inline void REC_MAVLINK_MSG_ID_STATUSTEXT(const mavlink_message_t* msg) {
* \todo Add battery remaining variable in telemetry_data struct for estimated
* remaining battery. Decoding funtion allready in place.
*/
static inline void REC_MAVLINK_MSG_ID_SYS_STATUS(const mavlink_message_t* msg) {
// mavlink_sys_status_t sys_status;
// mavlink_msg_sys_status_decode(msg, &sys_status);
telemetry_data.vbat = mavlink_msg_sys_status_get_voltage_battery(msg) / 100; // Voltage * 10
int8_t temp = mavlink_msg_sys_status_get_battery_remaining(msg);
telemetry_data.ibat = mavlink_msg_sys_status_get_current_battery(msg) / 10;
telemetry_data.rem_bat = mavlink_msg_sys_status_get_battery_remaining(msg);
#ifdef MAVLINK_PARAMS
telemetry_data.vbat_low = (getMavlinParamsValue(BATT_MONITOR) > 0)
&& (((float) telemetry_data.vbat / 10.0) < getMavlinParamsValue(LOW_VOLT)) && (telemetry_data.vbat > 50);
#else
telemetry_data.vbat_low = (telemetry_data.rem_bat < 10);
#endif
}
/*! \brief Recive rc channels
*
*/
static inline void REC_MAVLINK_MSG_ID_RC_CHANNELS_RAW(const mavlink_message_t* msg) {
telemetry_data.rc_rssi = (mavlink_msg_rc_channels_raw_get_rssi(msg) * 100) / 255;
}
/*! \brief Arducopter specific radio message
*
*/
static inline void REC_MAVLINK_MSG_ID_RADIO(const mavlink_message_t* msg) {
telemetry_data.pc_rssi = (mavlink_msg_radio_get_rssi(msg) * 100) / 255;
// telemetry_data.pc_rssi = mavlink_msg_radio_get_rssi(msg);
}
/*! \brief Hardbeat message
* \todo Fix hartbeat * on display title see \link telemetryWakeup telemetryWakeup \endlink
* and \link mav_title mav_title \endlink.
*/
static inline void REC_MAVLINK_MSG_ID_HEARTBEAT(const mavlink_message_t* msg) {
telemetry_data.mode = mavlink_msg_heartbeat_get_base_mode(msg);
telemetry_data.custom_mode = mavlink_msg_heartbeat_get_custom_mode(msg);
telemetry_data.status = mavlink_msg_heartbeat_get_system_status(msg);
telemetry_data.active = (telemetry_data.mode & MAV_MODE_FLAG_SAFETY_ARMED) ? true : false;
mav_heartbeat = 3; // 450ms display '*'
mav_heartbeat_recv = 1;
}
@@ -362,6 +384,11 @@ static inline void handleMessage(mavlink_message_t* p_rxmsg) {
REC_MAVLINK_MSG_ID_SYS_STATUS(p_rxmsg);
watch_mav_req_start_data_stream = 20;
break;
case MAVLINK_MSG_ID_RC_CHANNELS_RAW:
REC_MAVLINK_MSG_ID_RC_CHANNELS_RAW(p_rxmsg);
break;
case MAVLINK_MSG_ID_RADIO:
REC_MAVLINK_MSG_ID_RADIO(p_rxmsg);
case MAVLINK_MSG_ID_HIL_CONTROLS:
REC_MAVLINK_MSG_ID_HIL_CONTROLS(p_rxmsg);
break;
+46 -3
View File
@@ -1,5 +1,23 @@
/*
* Authors - Gerard Valade <gerard.valade@gmail.com>
* Authors (alphabetical order)
* - Andre Bernet <bernet.andre@gmail.com>
* - Andreas Weitl
* - Bertrand Songis <bsongis@gmail.com>
* - Bryan J. Rentoul (Gruvin) <gruvin@gmail.com>
* - Cameron Weeks <th9xer@gmail.com>
* - Erez Raviv
* - Gabriel Birkus
* - Gerard Valade <gerard.valade@gmail.com>
* - Jean-Pierre Parisy
* - Karl Szmutny
* - Michael Blandford
* - Michal Hlavinka
* - Pat Mackenzie
* - Philip Moss
* - Rienk de Jong
* - Rob Thomson
* - Romolo Manfredini <romolo.manfredini@gmail.com>
* - Thomas Husterer
*
* Adapted from mavlink for ardupilot
*
@@ -30,7 +48,7 @@ extern mavlink_system_t mavlink_system;
extern void SERIAL_start_uart_send();
extern void SERIAL_end_uart_send();
extern void SERIAL_send_uart_bytes(uint8_t * buf, uint16_t len);
extern void SERIAL_send_uart_bytes(const uint8_t * buf, uint16_t len);
#define MAVLINK_START_UART_SEND(chan,len) SERIAL_start_uart_send()
#define MAVLINK_END_UART_SEND(chan,len) SERIAL_end_uart_send()
@@ -44,6 +62,24 @@ extern void SERIAL_send_uart_bytes(uint8_t * buf, uint16_t len);
#define ERROR_MAV_ACTION_NB 99
// Auto Pilot modes
// ----------------
#define AP_STABILIZE 0 // hold level position
#define AP_ACRO 1 // rate control
#define AP_ALT_HOLD 2 // AUTO control
#define AP_AUTO 3 // AUTO control
#define AP_GUIDED 4 // AUTO control
#define AP_LOITER 5 // Hold a single location
#define AP_RTL 6 // AUTO control
#define AP_CIRCLE 7 // AUTO control
#define AP_POSITION 8 // AUTO control
#define AP_LAND 9 // AUTO control
#define AP_OF_LOITER 10 // Hold a single location using optical flow
// sensor
#define AP_TOY_A 11 // THOR Enum for Toy mode
#define AP_TOY_M 12 // THOR Enum for Toy mode
#define AP_NUM_MODES 13
/*
* Type definitions
*/
@@ -103,11 +139,18 @@ typedef struct Telemetry_Data_ {
uint8_t status; ///< System status flag, see MAV_STATUS ENUM
uint16_t packet_drop;
uint8_t mode;
uint32_t custom_mode;
bool active;
uint8_t nav_mode;
uint8_t rcv_control_mode; ///< System mode, see MAV_MODE ENUM in mavlink/include/mavlink_types.h
uint16_t load; ///< Maximum usage in percent of the mainloop time, (0%: 0, 100%: 1000) should be always below 1000
uint8_t vbat; ///< Battery voltage, in millivolts (1 = 1 millivolt)
uint8_t vbat_low;
uint8_t ibat; ///< Battery voltage, in millivolts (1 = 1 millivolt)
uint8_t rem_bat; ///< Battery voltage, in millivolts (1 = 1 millivolt)
bool vbat_low;
uint8_t rc_rssi;
uint8_t pc_rssi;
uint8_t debug;