mirror of
https://github.com/cesanta/mongoose.git
synced 2026-10-23 11:44:53 +00:00
48 lines
1.6 KiB
C
48 lines
1.6 KiB
C
// Copyright (c) 2023 Cesanta Software Limited
|
|
// All rights reserved
|
|
|
|
#pragma once
|
|
|
|
#include "arch.h"
|
|
#include "net.h"
|
|
|
|
#define MG_OTA_NONE 0 // No OTA support
|
|
#define MG_OTA_STM32H5 1 // STM32 H5
|
|
#define MG_OTA_STM32H7 2 // STM32 H7
|
|
#define MG_OTA_STM32H7_DUAL_CORE 3 // STM32 H7 dual core
|
|
#define MG_OTA_STM32F 4 // STM32 F7/F4/F2
|
|
#define MG_OTA_CH32V307 100 // WCH CH32V307
|
|
#define MG_OTA_U2A 200 // Renesas U2A16, U2A8, U2A6
|
|
#define MG_OTA_RT1020 300 // IMXRT1020
|
|
#define MG_OTA_RT1050 301 // IMXRT1050
|
|
#define MG_OTA_RT1060 302 // IMXRT1060
|
|
#define MG_OTA_RT1064 303 // IMXRT1064
|
|
#define MG_OTA_RT1170 304 // IMXRT1170
|
|
#define MG_OTA_MCXN 310 // MCXN947
|
|
#define MG_OTA_RW612 320 // FRDM-RW612
|
|
#define MG_OTA_FLASH 900 // OTA via an internal flash
|
|
#define MG_OTA_ESP32 910 // ESP32 OTA implementation
|
|
#define MG_OTA_PICOSDK 920 // RP2040/2350 using Pico-SDK hardware_flash
|
|
#define MG_OTA_CUSTOM 1000 // Custom implementation
|
|
|
|
#ifndef MG_OTA
|
|
#define MG_OTA MG_OTA_NONE
|
|
#else
|
|
#ifndef MG_IRAM
|
|
#if defined(__GNUC__)
|
|
#define MG_IRAM __attribute__((noinline, section(".iram")))
|
|
#else
|
|
#define MG_IRAM
|
|
#endif // compiler
|
|
#endif // IRAM
|
|
#endif // OTA
|
|
|
|
// Firmware update API
|
|
bool mg_ota_begin(size_t new_firmware_size); // Start writing
|
|
bool mg_ota_write(const void *buf, size_t len); // Write chunk, aligned to 1k
|
|
bool mg_ota_end(void); // Stop writing
|
|
void mg_ota_url_check(struct mg_mgr *mgr,
|
|
const char *current_version,
|
|
const char *metadata_url,
|
|
void (*fn)(const char *status));
|