Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Release 7.1.0 #9767

Merged
merged 24 commits into from
Apr 1, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
dbd1ed1
IFLIGHT_2RAW_H743
DzikuVx Dec 4, 2023
dde9aab
Target update
DzikuVx Jan 2, 2024
a6dd963
Merge tag '7.0.0' into dzikuvx-iflight-2raw-h743
DzikuVx Jan 2, 2024
363d071
Target updates for iFlight Blitz H7 Pro
DzikuVx Jan 9, 2024
a3308fb
Revert "Target update"
DzikuVx Jan 17, 2024
2729b6d
Revert "Target updates for iFlight Blitz H7 Pro"
DzikuVx Jan 17, 2024
68412e6
Revert "Revert "Target updates for iFlight Blitz H7 Pro""
DzikuVx Jan 17, 2024
7bd1f27
Minor readme update
DzikuVx Mar 22, 2024
cf402d4
Merge pull request #9818 from TUNERC-Aria/add-TUNERCF405
DzikuVx Mar 23, 2024
07706c5
magless navigation PSA
DzikuVx Mar 23, 2024
5bfcc7c
Revert "Show a timeout for in flight rearming"
MrD-RC Mar 24, 2024
915d3b3
Merge pull request #9846 from iNavFlight/revert-9769-MrD_Show-OSD-mes…
DzikuVx Mar 24, 2024
4a24018
Add target to use second gyro, instead of first gyro
mmosca Mar 24, 2024
f84f2ed
Fix gyro alignment
mmosca Mar 24, 2024
79cd891
Oops... My board was flipped, not the gyro.
mmosca Mar 24, 2024
2f6c56a
Add missing outputs for SKYSTARSHD2
MrD-RC Mar 24, 2024
5b631f4
Merge pull request #9848 from iNavFlight/mmosca-mambah743-altgyro
mmosca Mar 24, 2024
31fee94
Merge pull request #9851 from iNavFlight/MrD_Add-missing-outputs-to-S…
DzikuVx Mar 25, 2024
85ec0a9
Revert "Merge pull request #9438 from dronecontrol-ru/baro_alt_vario"
DzikuVx Mar 26, 2024
edee2e8
Merge pull request #9858 from iNavFlight/dzikuvx-revert-baro-alt-vario
DzikuVx Mar 26, 2024
9c01b83
FOXEERF722DUAL enable 5V power by default
sensei-hacker Mar 26, 2024
59a6ee6
Merge pull request #9860 from sensei-hacker/FOXEERF722DUAL_5v_7.1
DzikuVx Mar 27, 2024
aa85436
Merge pull request #9869 from iNavFlight/dzikuvx-iflight-2raw-h743
DzikuVx Mar 29, 2024
f0a1680
Merge remote-tracking branch 'origin/master' into release_7.1.0
DzikuVx Apr 1, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions docs/boards/MAMBAH743_2022B.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,8 @@

Contrary to what the documentation suggests, VTX power is actually on USER2.

# Dual Gyros

INAV 7.1 changed the default gyro of the board from the gyro on SPI4 back to the one on SPI1. A new tagrt ```MAMBAH743_2022B_GYRO2``` was added to use gyro on SPI4, in case you suspect an issue with the gyro on SPI1, you can switch to the gyro on SPI4 by using the new target.


36 changes: 27 additions & 9 deletions readme.md
Original file line number Diff line number Diff line change
@@ -1,18 +1,39 @@
# INAV - navigation capable flight controller

# PSA
# F411 PSA

> INAV no longer accepts targets based on STM32 F411 MCU.

> INAV 7 is the last INAV official release available for F411 based flight controllers. The next milestone, INAV 8 will not be available for F411 boards.

![INAV](http://static.rcgroups.net/forums/attachments/6/1/0/3/7/6/a9088858-102-inav.png)

# PosHold, Navigation and RTH without compass PSA

Attention all drone pilots and enthusiasts,

Are you ready to take your flights to new heights with INAV 7.1? We've got some important information to share with you.

INAV 7.1 brings an exciting update to navigation capabilities. Now, you can soar through the skies, navigate waypoints, and even return to home without relying on a compass. Yes, you heard that right! But before you launch into the air, there's something crucial to consider.

While INAV 7.1 may not require a compass for basic navigation functions, we strongly advise you to install one for optimal flight performance. Here's why:

🛰️ Better Flight Precision: A compass provides essential data for accurate navigation, ensuring smoother and more precise flight paths.

🌐 Enhanced Reliability: With a compass onboard, your drone can maintain stability even in challenging environments, low speeds and strong wind.

🚀 Minimize Risks: Although INAV 7.1 can get you where you need to go without a compass, flying without one may result in a bumpier ride and increased risk of drift or inaccurate positioning.

Remember, safety and efficiency are paramount when operating drones. By installing a compass, you're not just enhancing your flight experience, but also prioritizing safety for yourself and those around you.

So, before you take off on your next adventure, make sure to equip your drone with a compass. It's the smart choice for smoother flights and better navigation.

Fly safe, fly smart with INAV 7.1 and a compass by your side!

# INAV Community

* [INAV Discord Server](https://discord.gg/peg2hhbYwN)
* [INAV Official on Facebook](https://www.facebook.com/groups/INAVOfficial)
* [INAV Official on Telegram](https://t.me/INAVFlight)

## Features

Expand All @@ -22,14 +43,15 @@
* Outstanding performance out of the box
* Position Hold, Altitude Hold, Return To Home and Waypoint Missions
* Excellent support for fixed wing UAVs: airplanes, flying wings
* Blackbox flight recorder logging
* Advanced gyro filtering
* Fully configurable mixer that allows to run any hardware you want: multirotor, fixed wing, rovers, boats and other experimental devices
* Multiple sensor support: GPS, Pitot tube, sonar, lidar, temperature, ESC with BlHeli_32 telemetry
* Logic Conditions, Global Functions and Global Variables: you can program INAV with a GUI
* SmartAudio and IRC Tramp VTX support
* Blackbox flight recorder logging
* Telemetry: SmartPort, FPort, MAVlink, LTM, CRSF
* Multi-color RGB LED Strip support
* Advanced gyro filtering
* Logic Conditions, Global Functions and Global Variables: you can program INAV with a GUI
* On Screen Display (OSD) - both character and pixel style
* And many more!

For a list of features, changes and some discussion please review consult the releases [page](https://github.com/iNavFlight/inav/releases) and the documentation.
Expand All @@ -52,10 +74,6 @@ Command line tools (`blackbox_decode`, `blackbox_render`) for Blackbox log conve

Users of EdgeTX and OpenTX radios (Taranis, Horus, Jumper, Radiomaster, Nirvana) can use INAV OpenTX Telemetry Widget screen. Software and installation instruction are available here: [https://github.com/iNavFlight/OpenTX-Telemetry-Widget](https://github.com/iNavFlight/OpenTX-Telemetry-Widget)

### INAV magnetometer alignment helper

[INAV Magnetometer Alignment helper](https://kernel-machine.github.io/INavMagAlignHelper/) allows to align INAV magnetometer despite position and orientation. This simplifies the process of INAV setup on multirotors with tilted GPS modules.

### OSD layout Copy, Move, or Replace helper tool

[Easy INAV OSD switcher tool](https://www.mrd-rc.com/tutorials-tools-and-testing/useful-tools/inav-osd-switcher-tool/) allows you to easily switch your OSD layouts around in INAV. Choose the from and to OSD layouts, and the method of transfering the layouts.
Expand Down
16 changes: 2 additions & 14 deletions src/main/fc/fc_core.c
Original file line number Diff line number Diff line change
Expand Up @@ -499,18 +499,6 @@ bool emergencyArmingUpdate(bool armingSwitchIsOn, bool forceArm)
return counter >= EMERGENCY_ARMING_MIN_ARM_COUNT;
}

uint16_t emergencyInFlightRearmTimeMS(void)
{
uint16_t rearmMS = 0;

if (STATE(IN_FLIGHT_EMERG_REARM)) {
timeMs_t currentTimeMs = millis();
rearmMS = (uint16_t)((US2MS(lastDisarmTimeUs) + EMERGENCY_INFLIGHT_REARM_TIME_WINDOW_MS) - currentTimeMs);
}

return rearmMS;
}

bool emergInflightRearmEnabled(void)
{
/* Emergency rearm allowed within 5s timeout period after disarm if craft still flying */
Expand Down Expand Up @@ -884,6 +872,7 @@ static void applyThrottleTiltCompensation(void)

void taskMainPidLoop(timeUs_t currentTimeUs)
{

cycleTime = getTaskDeltaTime(TASK_SELF);
dT = (float)cycleTime * 0.000001f;

Expand All @@ -902,8 +891,7 @@ void taskMainPidLoop(timeUs_t currentTimeUs)
}
}

if (armTime > 1 * USECS_PER_SEC) {
// reset in flight emerg rearm flag 1 sec after arming once it's served its purpose
if (armTime > 1 * USECS_PER_SEC) { // reset in flight emerg rearm flag 1 sec after arming once it's served its purpose
DISABLE_STATE(IN_FLIGHT_EMERG_REARM);
}

Expand Down
2 changes: 0 additions & 2 deletions src/main/fc/fc_core.h
Original file line number Diff line number Diff line change
Expand Up @@ -41,9 +41,7 @@ timeUs_t getLastDisarmTimeUs(void);
void tryArm(void);
disarmReason_t getDisarmReason(void);

uint16_t emergencyInFlightRearmTimeMS(void);
bool emergencyArmingUpdate(bool armingSwitchIsOn, bool forceArm);
bool emergInflightRearmEnabled(void);

bool areSensorsCalibrating(void);
float getFlightTime(void);
Expand Down
45 changes: 14 additions & 31 deletions src/main/io/osd.c
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,6 @@
#include <string.h>
#include <ctype.h>
#include <math.h>
#include <inttypes.h>

#include "platform.h"

Expand Down Expand Up @@ -4672,16 +4671,8 @@ static void osdShowStats(bool isSinglePageStatsCompatible, uint8_t page)
displayWrite(osdDisplayPort, statValuesX + multiValueLengthOffset, top++, buff);
}

uint16_t rearmMs = (emergInflightRearmEnabled()) ? emergencyInFlightRearmTimeMS() : 0;

if (savingSettings == true) {
displayWrite(osdDisplayPort, statNameX, top++, OSD_MESSAGE_STR(OSD_MSG_SAVING_SETTNGS));
} else if (rearmMs > 0) { // Show rearming time if settings not actively being saved. Ignore the settings saved message if rearm available.
char emReArmMsg[23];
tfp_sprintf(emReArmMsg, "** REARM PERIOD: ");
tfp_sprintf(emReArmMsg + strlen(emReArmMsg), "%02d", (uint8_t)MS2S(rearmMs));
strcat(emReArmMsg, " **\0");
displayWrite(osdDisplayPort, statNameX, top++, OSD_MESSAGE_STR(emReArmMsg));
} else if (notify_settings_saved > 0) {
if (millis() > notify_settings_saved) {
notify_settings_saved = 0;
Expand Down Expand Up @@ -4981,10 +4972,9 @@ static void osdRefresh(timeUs_t currentTimeUs)
}

bool statsSinglePageCompatible = (osdDisplayPort->rows >= OSD_STATS_SINGLE_PAGE_MIN_ROWS);
static uint8_t statsCurrentPage = 0;
static timeMs_t statsRefreshTime = 0;
static bool statsDisplayed = false;
static bool statsAutoPagingEnabled = true;
static uint8_t statsCurrentPage = 0;
static bool statsDisplayed = false;
static bool statsAutoPagingEnabled = true;

// Detect arm/disarm
if (armState != ARMING_FLAG(ARMED)) {
Expand Down Expand Up @@ -5052,24 +5042,25 @@ static void osdRefresh(timeUs_t currentTimeUs)
// Alternate screens for multi-page stats.
// Also, refreshes screen at swap interval for single-page stats.
if (OSD_ALTERNATING_CHOICES((osdConfig()->stats_page_auto_swap_time * 1000), 2)) {
if (statsCurrentPage == 0)
if (statsCurrentPage == 0) {
osdShowStats(statsSinglePageCompatible, statsCurrentPage);
statsCurrentPage = 1;
}
} else {
if (statsCurrentPage == 1)
if (statsCurrentPage == 1) {
osdShowStats(statsSinglePageCompatible, statsCurrentPage);
statsCurrentPage = 0;
}
}
} else {
// Process manual page change events for multi-page stats.
if (manualPageUpRequested)
if (manualPageUpRequested) {
osdShowStats(statsSinglePageCompatible, 1);
statsCurrentPage = 1;
else if (manualPageDownRequested)
} else if (manualPageDownRequested) {
osdShowStats(statsSinglePageCompatible, 0);
statsCurrentPage = 0;
}

// Only refresh the stats every 1/4 of a second.
if (statsRefreshTime <= millis()) {
statsRefreshTime = millis() + 250;
osdShowStats(statsSinglePageCompatible, statsCurrentPage);
}
}
}

Expand Down Expand Up @@ -5426,16 +5417,9 @@ textAttributes_t osdGetSystemMessage(char *buff, size_t buff_size, bool isCenter
}

/* Messages that are shown regardless of Arming state */
uint16_t rearmMs = (emergInflightRearmEnabled()) ? emergencyInFlightRearmTimeMS() : 0;

if (savingSettings == true) {
messages[messageCount++] = OSD_MESSAGE_STR(OSD_MSG_SAVING_SETTNGS);
} else if (rearmMs > 0) { // Show rearming time if settings not actively being saved. Ignore the settings saved message if rearm available.
char emReArmMsg[23];
tfp_sprintf(emReArmMsg, "** REARM PERIOD: ");
tfp_sprintf(emReArmMsg + strlen(emReArmMsg), "%02d", (uint8_t)MS2S(rearmMs));
strcat(emReArmMsg, " **\0");
messages[messageCount++] = OSD_MESSAGE_STR(emReArmMsg);
} else if (notify_settings_saved > 0) {
if (millis() > notify_settings_saved) {
notify_settings_saved = 0;
Expand All @@ -5444,7 +5428,6 @@ textAttributes_t osdGetSystemMessage(char *buff, size_t buff_size, bool isCenter
}
}


if (messageCount > 0) {
message = messages[OSD_ALTERNATING_CHOICES(systemMessageCycleTime(messageCount, messages), messageCount)];
if (message == failsafeInfoMessage) {
Expand Down
2 changes: 0 additions & 2 deletions src/main/rx/crsf.h
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,6 @@ enum {
CRSF_FRAME_GPS_PAYLOAD_SIZE = 15,
CRSF_FRAME_VARIO_SENSOR_PAYLOAD_SIZE = 2,
CRSF_FRAME_BATTERY_SENSOR_PAYLOAD_SIZE = 8,
CRSF_FRAME_BAROVARIO_SENSOR_PAYLOAD_SIZE = 4,
CRSF_FRAME_LINK_STATISTICS_PAYLOAD_SIZE = 10,
CRSF_FRAME_RC_CHANNELS_PAYLOAD_SIZE = 22, // 11 bits per channel * 16 channels = 22 bytes.
CRSF_FRAME_ATTITUDE_PAYLOAD_SIZE = 6,
Expand Down Expand Up @@ -87,7 +86,6 @@ typedef enum {
CRSF_FRAMETYPE_GPS = 0x02,
CRSF_FRAMETYPE_VARIO_SENSOR = 0x07,
CRSF_FRAMETYPE_BATTERY_SENSOR = 0x08,
CRSF_FRAMETYPE_BAROVARIO_SENSOR = 0x09,
CRSF_FRAMETYPE_LINK_STATISTICS = 0x14,
CRSF_FRAMETYPE_RC_CHANNELS_PACKED = 0x16,
CRSF_FRAMETYPE_ATTITUDE = 0x1E,
Expand Down
31 changes: 31 additions & 0 deletions src/main/target/FOXEERF722DUAL/config.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
/*
* This file is part of Cleanflight.
*
* Cleanflight is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Cleanflight is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Cleanflight. If not, see <http://www.gnu.org/licenses/>.
*/

#include <stdint.h>

#include "platform.h"

#include "fc/fc_msp_box.h"

#if defined(FOXEERF722V2)
#include "io/piniobox.h"

void targetConfiguration(void)
{
pinioBoxConfigMutable()->permanentId[0] = BOX_PERMANENT_ID_USER1;
}
#endif
1 change: 1 addition & 0 deletions src/main/target/FOXEERF722DUAL/target.c
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
#include "drivers/timer.h"
#include "drivers/sensor.h"
#include "drivers/pwm_mapping.h"
#include "drivers/pinio.h"

BUSDEV_REGISTER_SPI_TAG(busdev_mpu6000, DEVHW_MPU6000, MPU6000_SPI_BUS, MPU6000_CS_PIN, NONE, 0, DEVFLAGS_NONE, IMU_MPU6000_ALIGN);
#if defined(FOXEERF722DUAL)
Expand Down
10 changes: 10 additions & 0 deletions src/main/target/FOXEERF722DUAL/target.h
Original file line number Diff line number Diff line change
Expand Up @@ -147,3 +147,13 @@
#define TARGET_IO_PORTC 0xffff
#define TARGET_IO_PORTD (BIT(2))


// *************** PINIO ***************************
#if defined(FOXEERF722V2)
#define USE_PINIO
#define USE_PINIOBOX
#define PINIO1_PIN PC6 // Enable GPS power
#define PINIO1_FLAGS PINIO_FLAGS_INVERTED
#endif


1 change: 1 addition & 0 deletions src/main/target/IFLIGHT_2RAW_H743/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
target_stm32h743xi(IFLIGHT_2RAW_H743)
31 changes: 31 additions & 0 deletions src/main/target/IFLIGHT_2RAW_H743/config.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
/*
* This file is part of Cleanflight.
*
* Cleanflight is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Cleanflight is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Cleanflight. If not, see <http://www.gnu.org/licenses/>.
*/

#include <stdint.h>

#include "platform.h"

#include "fc/fc_msp_box.h"
#include "fc/config.h"

#include "io/piniobox.h"

void targetConfiguration(void)
{
pinioBoxConfigMutable()->permanentId[0] = BOX_PERMANENT_ID_USER1;
pinioBoxConfigMutable()->permanentId[1] = BOX_PERMANENT_ID_USER2;
}
49 changes: 49 additions & 0 deletions src/main/target/IFLIGHT_2RAW_H743/target.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
/*
* This file is part of INAV.
*
* INAV is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* INAV is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with INAV. If not, see <http://www.gnu.org/licenses/>.
*/

#include <stdint.h>

#include "platform.h"

#include "drivers/bus.h"
#include "drivers/io.h"
#include "drivers/pwm_mapping.h"
#include "drivers/timer.h"
#include "drivers/pinio.h"
#include "drivers/sensor.h"

timerHardware_t timerHardware[] = {
DEF_TIM(TIM3, CH3, PB0, TIM_USE_OUTPUT_AUTO, 0, 0), // S1
DEF_TIM(TIM3, CH4, PB1, TIM_USE_OUTPUT_AUTO, 0, 1), // S2

DEF_TIM(TIM5, CH1, PA0, TIM_USE_OUTPUT_AUTO, 0, 2), // S3
DEF_TIM(TIM5, CH2, PA1, TIM_USE_OUTPUT_AUTO, 0, 3), // S4
DEF_TIM(TIM5, CH3, PA2, TIM_USE_OUTPUT_AUTO, 0, 4), // S5
DEF_TIM(TIM5, CH4, PA3, TIM_USE_OUTPUT_AUTO, 0, 5), // S6

DEF_TIM(TIM4, CH1, PD12, TIM_USE_OUTPUT_AUTO, 0, 6), // S7
DEF_TIM(TIM4, CH2, PD13, TIM_USE_OUTPUT_AUTO, 0, 7), // S8
DEF_TIM(TIM4, CH3, PD14, TIM_USE_OUTPUT_AUTO, 0, 0), // S9
DEF_TIM(TIM4, CH4, PD15, TIM_USE_OUTPUT_AUTO, 0, 0), // S10 DMA_NONE

DEF_TIM(TIM15, CH1, PE5, TIM_USE_OUTPUT_AUTO, 0, 0), // S11
DEF_TIM(TIM15, CH2, PE6, TIM_USE_OUTPUT_AUTO, 0, 0), // S12 DMA_NONE

DEF_TIM(TIM1, CH1, PA8, TIM_USE_LED, 0, 9), // LED_2812
};

const int timerHardwareCount = sizeof(timerHardware) / sizeof(timerHardware[0]);
Loading
Loading