Skip to content

Commit 914d0d3

Browse files
AP_Periph: fix build with latest master and bump version to v1.14
1 parent b77e7c8 commit 914d0d3

File tree

5 files changed

+79
-20
lines changed

5 files changed

+79
-20
lines changed

AP_Periph/AP_Periph.cpp

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -164,7 +164,7 @@ void AP_Periph_FW::init()
164164
#endif
165165

166166
if (gps.get_type(0) != AP_GPS::GPS_Type::GPS_TYPE_NONE && enable_gps) {
167-
gps.init(serial_manager);
167+
gps.init();
168168
} else {
169169
#ifdef GPIO_USART1_RX
170170
// setup gpio passthrough
@@ -178,8 +178,6 @@ void AP_Periph_FW::init()
178178
}
179179

180180
#ifdef I2C_SLAVE_ENABLED
181-
i2c_event_handle.set_source(&i2c_event_source);
182-
i2c_event_handle.register_event(1);
183181
i2c_setup();
184182
#endif
185183

AP_Periph/AP_Periph.h

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@
2121

2222
#include <AP_RTC/JitterCorrection.h>
2323
#include <AP_HAL/CANIface.h>
24-
#include <AP_HAL_ChibiOS/EventSource.h>
2524
#include <AP_SerialManager/AP_SerialManager.h>
2625
#include <ch.h>
2726
#include <AP_DroneCAN/AP_Canard_iface.h>
@@ -181,9 +180,6 @@ class AP_Periph_FW {
181180
uint8_t i2c2_transfer_address;
182181
uint8_t i2c2_transfer_direction;
183182
bool _setup_ser_i2c_mode;
184-
185-
HAL_EventHandle i2c_event_handle;
186-
ChibiOS::EventSource i2c_event_source;
187183
#endif
188184

189185
static AP_Periph_FW *_singleton;
@@ -366,6 +362,8 @@ namespace AP
366362
extern AP_Periph_FW periph;
367363

368364
extern "C" {
365+
void can_vprintf(uint8_t severity, const char *fmt, va_list arg);
366+
void can_printf_severity(uint8_t severity, const char *fmt, ...) FMT_PRINTF(2,3);
369367
void can_printf(const char *fmt, ...) FMT_PRINTF(1,2);
370368
}
371369

AP_Periph/can.cpp

Lines changed: 55 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -706,14 +706,64 @@ void AP_Periph_FW::can_update()
706706

707707

708708
// printf to CAN LogMessage for debugging
709-
void can_printf(const char *fmt, ...)
709+
void can_vprintf(uint8_t severity, const char *fmt, va_list ap)
710+
{
711+
// map MAVLink levels to CAN levels
712+
uint8_t level = UAVCAN_PROTOCOL_DEBUG_LOGLEVEL_DEBUG;
713+
switch (severity) {
714+
case MAV_SEVERITY_DEBUG:
715+
level = UAVCAN_PROTOCOL_DEBUG_LOGLEVEL_DEBUG;
716+
break;
717+
case MAV_SEVERITY_INFO:
718+
level = UAVCAN_PROTOCOL_DEBUG_LOGLEVEL_INFO;
719+
break;
720+
case MAV_SEVERITY_NOTICE:
721+
case MAV_SEVERITY_WARNING:
722+
level = UAVCAN_PROTOCOL_DEBUG_LOGLEVEL_WARNING;
723+
break;
724+
case MAV_SEVERITY_ERROR:
725+
case MAV_SEVERITY_CRITICAL:
726+
case MAV_SEVERITY_ALERT:
727+
case MAV_SEVERITY_EMERGENCY:
728+
level = UAVCAN_PROTOCOL_DEBUG_LOGLEVEL_ERROR;
729+
break;
730+
}
731+
732+
const uint8_t packet_count_max = 4; // how many packets we're willing to break up an over-sized string into
733+
const uint8_t packet_data_max = 90; // max single debug string length = sizeof(uavcan_protocol_debug_LogMessage.text.data)
734+
uint8_t buffer_data[packet_count_max*packet_data_max] {};
735+
736+
// strip off any negative return errors by treating result as 0
737+
uint32_t char_count = MAX(vsnprintf((char*)buffer_data, sizeof(buffer_data), fmt, ap), 0);
738+
739+
// send multiple uavcan_protocol_debug_LogMessage packets if the fmt string is too long.
740+
uint16_t buffer_offset = 0;
741+
for (uint8_t i=0; i<packet_count_max && char_count > 0; i++) {
742+
uavcan_protocol_debug_LogMessage pkt {};
743+
pkt.level.value = level;
744+
pkt.text.len = MIN(char_count, sizeof(pkt.text.data));
745+
char_count -= pkt.text.len;
746+
747+
memcpy(pkt.text.data, &buffer_data[buffer_offset], pkt.text.len);
748+
buffer_offset += pkt.text.len;
749+
periph.dronecan->log_pub.broadcast(pkt);
750+
}
751+
}
752+
753+
// printf to CAN LogMessage for debugging, with severity
754+
void can_printf_severity(uint8_t severity, const char *fmt, ...)
710755
{
711-
uavcan_protocol_debug_LogMessage pkt {};
712756
va_list ap;
713757
va_start(ap, fmt);
714-
uint32_t n = vsnprintf((char*)pkt.text.data, sizeof(pkt.text.data), fmt, ap);
758+
can_vprintf(severity, fmt, ap);
715759
va_end(ap);
716-
pkt.text.len = MIN(n, sizeof(pkt.text.data));
760+
}
717761

718-
periph.dronecan->log_pub.broadcast(pkt);
762+
// printf to CAN LogMessage for debugging, with DEBUG level
763+
void can_printf(const char *fmt, ...)
764+
{
765+
va_list ap;
766+
va_start(ap, fmt);
767+
can_vprintf(MAV_SEVERITY_DEBUG, fmt, ap);
768+
va_end(ap);
719769
}

AP_Periph/version.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
#define FORCE_VERSION_H_INCLUDE
2+
#include "AP_Periph.h"
23
#include "version.h"
3-
#include <AP_Common/AP_FWVersionDefine.h>
4-
#undef FORCE_VERSION_H_INCLUDE
4+
#undef FORCE_VERSION_H_INCLUDE

AP_Periph/version.h

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,28 @@
11
#pragma once
2-
#include <GCS_MAVLink/GCS_MAVLink.h>
32

4-
#define THISFIRMWARE "GNSSPeriph V1.13"
3+
#ifndef FORCE_VERSION_H_INCLUDE
4+
#error version.h should never be included directly. You probably want to include AP_Common/AP_FWVersion.h
5+
#endif
6+
7+
#include "ap_version.h"
8+
#include <AP_HAL/AP_HAL.h>
9+
10+
#define THISFIRMWARE "GNSSPeriph V1.14.0"
11+
12+
// defines needed due to lack of GCS includes
13+
#ifndef HAVE_ENUM_FIRMWARE_VERSION_TYPE
14+
#define FIRMWARE_VERSION_TYPE_DEV 0
15+
#define FIRMWARE_VERSION_TYPE_BETA 255
16+
#define FIRMWARE_VERSION_TYPE_OFFICIAL 255
17+
#endif
518

619
// the following line is parsed by the autotest scripts
7-
#define FIRMWARE_VERSION 1,0,0,FIRMWARE_VERSION_TYPE_DEV
20+
#define FIRMWARE_VERSION 1,14,0,FIRMWARE_VERSION_TYPE_DEV
821

922
#define FW_MAJOR 1
10-
#define FW_MINOR 13
23+
#define FW_MINOR 14
1124
#define FW_PATCH 0
1225
#define FW_TYPE FIRMWARE_VERSION_TYPE_DEV
1326

14-
15-
27+
#include <AP_Common/AP_FWVersionDefine.h>
28+
#include <AP_CheckFirmware/AP_CheckFirmwareDefine.h>

0 commit comments

Comments
 (0)