- Resolve variable may be uninitialised error when compiling for ESP32.
- Exclude definition of clock_gettime for HAL_BOARD_ESP32
- Use #if not #ifdef for AP_DDS_GOAL_PUB_ENABLED
- Format #endif AP_DDS_GOAL_PUB_ENABLED
- Use #if not #ifdef for AP_DDS_STATUS_PUB_ENABLED
- Enclose rx_dynamic_transforms_topic declaration in #if ... #endif
- Enclose quaternion initializer in #if ... #endif
- AP_DDS_GOAL_PUB_ENABLED must also have AP_SCRIPTING_ENABLED
Signed-off-by: Rhys Mainwaring <rhys.mainwaring@me.com>
AP_DDS: configuration fixes
Signed-off-by: Rhys Mainwaring <rhys.mainwaring@me.com>
- FreeRTOS task functions must not return or exit.
- vTaskDelete(NULL) deletes the calling task.
Signed-off-by: Rhys Mainwaring <rhys.mainwaring@me.com>
Explain more thoroughly how the test works using lessons learned from
studying the compiled bytecode and function data.
Tested that it still fails after reverting the patches in PR #27652.
Update README.md: add bluetooth introduction to features
Co-authored-by: Henry Wurzburg <hwurzburg@yahoo.com>
Update README.md: fix description about SERIAL8
Co-authored-by: Henry Wurzburg <hwurzburg@yahoo.com>
Update README.md: fix description about RC
Co-authored-by: Henry Wurzburg <hwurzburg@yahoo.com>
Update README.md: add description about "LED" pin
Co-authored-by: Henry Wurzburg <hwurzburg@yahoo.com>
Update README.md: fix description about Loading Firmware
Co-authored-by: Henry Wurzburg <hwurzburg@yahoo.com>
Update README.md: fix description about update firmware
Co-authored-by: Henry Wurzburg <hwurzburg@yahoo.com>
remove defaults.parm and defined default params in hwdef file
Update README.md: fix description about osd
Co-authored-by: Henry Wurzburg <hwurzburg@yahoo.com>
remove parameter define about serial4
Update README.md: add a section about BlueTooth
Update README.md: uses internal esc
Co-authored-by: Henry Wurzburg <hwurzburg@yahoo.com>
Update README.md: introduction about RC input
Co-authored-by: Henry Wurzburg <hwurzburg@yahoo.com>
Update README.md: introduction about PWM groups
Co-authored-by: Henry Wurzburg <hwurzburg@yahoo.com>
remove defaults.parm and defined default params in hwdef file
EXPECT_DELAY_MS was used in direct contravention of the comment so it
must be okay. Even when it wasn't and the comment was accurate,
expecting a delay off the main thread never worked properly anyway.
This reverts commit 8dabd6cefc.
Setting up expected delays from a non-main thread never worked properly
due to the redundant main thread check, and isn't used today.
The delays will be canceled on return by the EXPECT_DELAY_MS(3000)
destructor at the start of the function. The current behavior will
unexpectedly cancel delays from higher levels up the stack and is likely
not what was intended.
Each of the six available timers now handles two consecutive PWM output
channels. This also implements support for changing the group PWM
frequency in a similar manner to the ChibiOS HAL.
Enabling/disabling the timer would apply the setting to whole groups of
channels. Fix to poke the comparator so that the setting only applies to
the particular channel.
Conveniently, though not necessarily intentionally, this avoids
truncating the output pulse and causing unexpected reactions from
servos. This also preserves the old behavior.
If you over allocate the number of analog channels this results in a
crash. It's easy to trigger this if you have voltage only monitors as we
still eat up a current input channel, regarless of if we use it. There
are only 16 channels at this time on ChibiOS, so if you have 9 voltage
only battery monitors you are out.
This PR improves that situation by only allocating channels when needed,
and in the case where we run out we now set a ConfigError, which on a
flight controller is much more friendly then a instant segfault the
moment we read a battery monitor. NOTE: on AP_Periph this takes the
node off the bus, rather then just sitting in the bootloader. This was
consideted acceptable as the current behaviour was to segfault and then
sit in the bootloader, unless you made new firmware that limited the
number of channels allocated it wasn't possible to recover in this
situation anyways.
We're using a value off the wire before it has been validated. That value is used to limit indexing into a buffer, and that buffer isn't big enough to handle all possible "bad" values that index could take on. Note that "read" here returns int16_t....
This makes SIM_ENGINE_FAIL work a little more intuitively, since it is
usually used to simulate a complete failure.
Also, drive-by fix of the SIM_ENGINE_MUL documentation.
kills heavy peripherals
../../libraries/AP_Quicktune/AP_Quicktune.cpp: In member function 'void AP_Quicktune::update(bool)':
../../libraries/AP_Quicktune/AP_Quicktune.cpp:177:32: error: 'vehicle' is not a member of 'AP'
177 | const auto &vehicle = *AP::vehicle();
| ^~~~~~~
compilation terminated due to -Wfatal-errors.
[ 688/1225] Compiling libraries/AP_TemperatureSensor/AP_TemperatureSensor_TSYS03.cpp
Waf: Leaving directory `/home/pbarker/rc/ardupilot/build/CubeOrange-periph-heavy'
CubeNode was trying to check a parameter which doesn't exist
../../libraries/AP_Airspeed/Airspeed_Calibration.cpp: In member function 'void AP_Airspeed::send_airspeed_calibration(const Vector3f&)':
../../libraries/AP_Airspeed/Airspeed_Calibration.cpp:179:23: error: 'class AP_Airspeed_Params' has no member named 'autocal'
179 | if (!param[i].autocal && !calibration_enabled) {
| ^~~~~~~
compilation terminated due to -Wfatal-errors.
We are hoping to pull more target calculations into the frontend.
Having these non-private threatens for calculations to move into the separate backends instead, so privatise them
../../libraries/AC_Avoidance/AC_Avoidance_Logging.cpp: In member function 'void AP_OABendyRuler::Write_OABendyRuler(uint8_t, bool, float, float, bool, float, const Location&, const Location&) const':
../../libraries/AC_Avoidance/AC_Avoidance_Logging.cpp:23:46: error: 'ahrs' is not a member of 'AP'
23 | yaw : (uint16_t)wrap_360(AP::ahrs().yaw_sensor * 0.01f),
| ^~~~
compilation terminated due to -Wfatal-errors.
the AP_CANManager::log_text() gets called from debug logging in
AP_DroneCAN. It is a method on a common AP_CANManager object which is
shared by multiple AP_DroneCAN threads.
if two threads call the debug log messages at the same time then we
can end up with _log_pos greater than LOG_BUFFER_SIZE (1024) and
overwrite past the end of the buffer
in the crash_dump we have for this case the next piece of memory was
hal.can[0], and the overwrite of the buffer had corrupted the
MessageRam_ structurre in the ChibiOS CAN interface code. That led to
a hardfault on receive of a CAN message
Note that this issue only happens if CAN_LOGLEVEL is set to greater
than zero, and the default is zero. So users can avoid the bug by
checking they have not changed CAN_LOGLEVEL.
Also, this is likely an issue that only happens on startup, as once
the two AP_DroneCAN threads are fully running they have the same
thread priority so can't pre-empt each other. During startup some
messages are sent from the main thread which has a different priority
to the AP_DroneCAN threads, and can thus trigger this issue
the automatic min-alt fence should not auto-enable based on altitude
if the fence has been manually disabled. This is needed to allow for a
manual landing by disabling the fence before descending
the _auto_enable_mask was try to make AUX function overrides disable
the FENCE_AUTOENABLE functionality. This isn't the right bevaviour,
both the aux function and the auto-enable should be edge triggered,
with last function taking effect
we should only add fence types to the no auto-enable mask if the
enable actually changed that type of fence. This fixes the case where
the user has both FENCE_AUTOENABLE=3 and RCn_OPTION=11. The disable
triggered by the init of the aux function was preventing the fence
from auto-enabling
this supports logging of all bxCAN and CANFD frames, which helps with
debugging tricky CAN support issues and for the development of new CAN
driver lua scripts
Ensures it gets cleaned with `./waf clean`. Users will hopefully delete
and not be confused by the old one as it will now show up as an
untracked file.
if the user arms within 30s of startup then stop the re-init of the
sensors. This can give less accurate frequency as the sample rate may
not have settled yet, but it is better than doing init of the filters
while the vehicle may be flying
also fix a 32 bit millis wrap
Issue introduced in https://github.com/ArduPilot/ardupilot/pull/27370
and partially fixed in https://github.com/ArduPilot/ardupilot/pull/27762,
though evidently not properly tested.
Failing to track the maximum can result in dangerously low values being
calculated for `ATC_ACCEL_[RPY]_MAX` and the vehicle becoming unflyable.
Make the variable a reference so that the maximum value is preserved
between function calls.