1
0
Fork 0
mirror of https://github.com/iNavFlight/inav.git synced 2025-07-24 00:35:34 +03:00

Add bootloader and firmware update API (#5728)

* Add F765XG MCU support

* Add bootloader and update system

* Fix linker files
This commit is contained in:
Michel Pastor 2020-07-20 22:46:15 +02:00 committed by GitHub
parent 707133c4db
commit 6f76bd5ad9
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
55 changed files with 2103 additions and 98 deletions

View file

@ -60,6 +60,7 @@
#include "fc/controlrate_profile.h"
#include "fc/fc_msp.h"
#include "fc/fc_msp_box.h"
#include "fc/firmware_update.h"
#include "fc/rc_adjustments.h"
#include "fc/rc_controls.h"
#include "fc/rc_modes.h"
@ -2835,9 +2836,10 @@ static mspResult_e mspFcProcessInCommand(uint16_t cmdMSP, sbuf_t *src)
break;
case MSP2_INAV_SELECT_BATTERY_PROFILE:
if (!ARMING_FLAG(ARMED)) {
if (sbufReadU8Safe(&tmp_u8, src))
if (!ARMING_FLAG(ARMED) && sbufReadU8Safe(&tmp_u8, src)) {
setConfigBatteryProfileAndWriteEEPROM(tmp_u8);
} else {
return MSP_RESULT_ERROR;
}
break;
@ -2861,6 +2863,32 @@ static mspResult_e mspFcProcessInCommand(uint16_t cmdMSP, sbuf_t *src)
break;
#endif
#ifdef MSP_FIRMWARE_UPDATE
case MSP2_INAV_FWUPDT_PREPARE:
if (!firmwareUpdatePrepare(sbufReadU32(src))) {
return MSP_RESULT_ERROR;
}
break;
case MSP2_INAV_FWUPDT_STORE:
if (!firmwareUpdateStore(sbufPtr(src), sbufBytesRemaining(src))) {
return MSP_RESULT_ERROR;
}
break;
case MSP2_INAV_FWUPDT_EXEC:
firmwareUpdateExec(sbufReadU8(src));
return MSP_RESULT_ERROR; // will only be reached if the update is not ready
break;
case MSP2_INAV_FWUPDT_ROLLBACK_PREPARE:
if (!firmwareUpdateRollbackPrepare()) {
return MSP_RESULT_ERROR;
}
break;
case MSP2_INAV_FWUPDT_ROLLBACK_EXEC:
firmwareUpdateRollbackExec();
return MSP_RESULT_ERROR; // will only be reached if the rollback is not ready
break;
#endif
default:
return MSP_RESULT_ERROR;
}