#ifndef __OTA_MESH_FLASH_
#define __OTA_MESH_FLASH_
#include "ota_flash.h"
#ifndef CFG_OTA_MESH
#error "unsupported OTA_mesh config, please check micro:CFG_OTA_MESH!"
#else
#if(CFG_FLASH >= 512)
#define OTAFM_APP_RAMRUN_ADDR 0x11017000 //108K bytes
#define OTAFM_APP_XIP_ADDR 0x11032000 //120K bytes
#define OTAFM_FW_OTA_ADDR 0x11050000 //256K bytes
#define OTAFM_FW_OTA_INFO_SZ 0x1000 //size of ota info, 4K
#define OTAFM_FW_OTA_DATA_OFFSET 0x2000
#define OTAFM_FW_OTA_DATA_ADDR (OTAFM_FW_OTA_ADDR + OTAFM_FW_OTA_DATA_OFFSET)
#endif
#define OTAFM_DEV_FLG_USED 0
#define OTAFM_DEV_FLG_UNINIT 0xff
#define OTAFM_DEV_FLG_INVALID 0x80
#define OTAFM_DEV_FLG_READY 0xfe
#define OTAFM_DEV_FLG_OTAING 0xfc
#define OTAFM_DEV_FLG_COMPLETED 0xf8
#define OTAFM_DEV_FLG_FAILED 0xec
typedef struct{
uint16_t dev_type;
uint16_t index;
uint8_t dev_addr[6];
}otafmesh_dev_t;
int otafm_write_partition(uint32 addr, uint32_t* p_sect, uint32_t size);
int otafm_write_boot_sector(uint32_t* p_sect, uint32_t size, uint32_t offset);
int otafm_dev_add(otafmesh_dev_t* pdev);
int otafm_dev_pull(otafmesh_dev_t* pdev);
int otafm_dev_clear(otafmesh_dev_t* pdev);
int otafm_fw_load(ota_fw_t* pfw);
int otafm_fw_execute(void);
int otafm_format(void);
#endif //CFG_FLASH
#endif //__OTA_MESH_FLASH_