189 lines
7.2 KiB
C
189 lines
7.2 KiB
C
/*******************************************************************************
|
|
WINC Flash Interface.
|
|
|
|
File Name:
|
|
m2m_flash.h
|
|
|
|
Summary:
|
|
WINC Flash Interface
|
|
|
|
Description:
|
|
WINC Flash Interface
|
|
|
|
*******************************************************************************/
|
|
|
|
//DOM-IGNORE-BEGIN
|
|
/*******************************************************************************
|
|
* Copyright (C) 2021 Microchip Technology Inc. and its subsidiaries.
|
|
*
|
|
* Subject to your compliance with these terms, you may use Microchip software
|
|
* and any derivatives exclusively with Microchip products. It is your
|
|
* responsibility to comply with third party license terms applicable to your
|
|
* use of third party software (including open source software) that may
|
|
* accompany Microchip software.
|
|
*
|
|
* THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER
|
|
* EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED
|
|
* WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A
|
|
* PARTICULAR PURPOSE.
|
|
*
|
|
* IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE,
|
|
* INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND
|
|
* WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS
|
|
* BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE
|
|
* FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN
|
|
* ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY,
|
|
* THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE.
|
|
*******************************************************************************/
|
|
// DOM-IGNORE-END
|
|
|
|
/**@defgroup FLASHAPI Flash
|
|
*/
|
|
|
|
#ifndef __M2M_FLASH_H__
|
|
#define __M2M_FLASH_H__
|
|
|
|
/*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*
|
|
INCLUDES
|
|
*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*/
|
|
#include "nm_common.h"
|
|
#include "m2m_types.h"
|
|
|
|
/**@defgroup FlashEnums Enumeration/Typedefs
|
|
* @ingroup FLASHAPI
|
|
* @{*/
|
|
|
|
/*!
|
|
@enum tenuWincFlashRegion
|
|
|
|
@brief The regions of WINC flash available for accessing.
|
|
*/
|
|
typedef enum
|
|
{
|
|
/*! Access to the entire flash address space. */
|
|
WINC_FLASH_REGION_RAW,
|
|
/*! Access to the active firmware region. */
|
|
WINC_FLASH_REGION_FIRMWARE_ACTIVE,
|
|
/*! Access to the inactive firmware region. */
|
|
WINC_FLASH_REGION_FIRMWARE_INACTIVE,
|
|
/*! Access to PLL table region. Erase is not supported for this region. */
|
|
WINC_FLASH_REGION_PLL_TABLE,
|
|
/*! Access to gain table region. Erase is not supported for this region. */
|
|
WINC_FLASH_REGION_GAIN_TABLE,
|
|
/*! Access to PLL and gain tables region. Erase is supported for this region. */
|
|
WINC_FLASH_REGION_PLL_AND_GAIN_TABLES,
|
|
/*! Access to TLS root certificate region. */
|
|
WINC_FLASH_REGION_ROOT_CERTS,
|
|
/*! Access to TLS local certificate region. */
|
|
WINC_FLASH_REGION_LOCAL_CERTS,
|
|
/*! Access to connection parameters region. */
|
|
WINC_FLASH_REGION_CONN_PARAM,
|
|
/*! Access to HTTP files region. This region is also erased/written by erase/write of firmware regions. */
|
|
WINC_FLASH_REGION_HTTP_FILES,
|
|
/*! Number of regions. */
|
|
WINC_FLASH_NUM_REGIONS
|
|
} tenuWincFlashRegion;
|
|
|
|
/**@}
|
|
*/
|
|
|
|
/*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*
|
|
FUNCTION PROTOTYPES
|
|
*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*/
|
|
/** \defgroup FLASHFUNCTIONS Functions
|
|
* @ingroup FLASHAPI
|
|
*/
|
|
/**@{*/
|
|
|
|
/*!
|
|
@fn \
|
|
int8_t m2m_flash_erase_sector(tenuWincFlashRegion enuRegion, uint8_t u8StartSector, uint8_t u8NumSectors);
|
|
|
|
@brief Erase one or more sectors within a WINC flash region.
|
|
|
|
@param [in] enuRegion
|
|
Region of flash in which to erase.
|
|
@param [in] u8StartSector
|
|
Sector offset (within region) of first sector to erase.
|
|
@param [in] u8NumSectors
|
|
Number of sectors to erase.
|
|
|
|
@return M2M_SUCCESS - The erase completed successfully.
|
|
M2M_ERR_INVALID_ARG - The parameters were invalid.
|
|
M2M_ERR_FAIL - The request encountered an error.
|
|
|
|
@pre The WINC must have been initialised but must not be running. This can be done via
|
|
@ref m2m_wifi_init_hold, @ref m2m_wifi_reinit_hold or @ref m2m_wifi_download_mode.
|
|
|
|
*/
|
|
int8_t m2m_flash_erase_sector(tenuWincFlashRegion enuRegion, uint8_t u8StartSector, uint8_t u8NumSectors);
|
|
|
|
/*!
|
|
@fn \
|
|
int8_t m2m_flash_write(tenuWincFlashRegion enuRegion, void *pvBuffer, uint32_t u32Offset, uint32_t u32Size);
|
|
|
|
@brief Write the number of bytes specified to a WINC flash location.
|
|
|
|
@param [in] enuRegion
|
|
Region of flash in which to write.
|
|
@param [in] pvBuffer
|
|
Pointer to buffer containing the data to write.
|
|
@param [in] u32Offset
|
|
Byte offset (within region) of write location.
|
|
@param [in] u32Size
|
|
Number of bytes to write.
|
|
|
|
@return M2M_SUCCESS - The write completed successfully.
|
|
M2M_ERR_INVALID_ARG - The parameters were invalid.
|
|
M2M_ERR_FAIL - The request encountered an error.
|
|
|
|
@pre The WINC must have been initialised but must not be running. This can be done via
|
|
@ref m2m_wifi_init_hold, @ref m2m_wifi_reinit_hold or @ref m2m_wifi_download_mode.
|
|
|
|
@warning The write operation does not erase the flash device first, therefore the user
|
|
must ensure the flash region has been erased first.
|
|
*/
|
|
int8_t m2m_flash_write(tenuWincFlashRegion enuRegion, void *pvBuffer, uint32_t u32Offset, uint32_t u32Size);
|
|
|
|
/*!
|
|
@fn \
|
|
int8_t m2m_flash_read(tenuWincFlashRegion enuRegion, void *pvBuffer, uint32_t u32Offset, uint32_t u32Size);
|
|
|
|
@brief Read the number of bytes specified from a WINC flash location.
|
|
|
|
@param [in] enuRegion
|
|
Region of flash from which to read.
|
|
@param [out] pvBuffer
|
|
Pointer to buffer to populate with the data being read.
|
|
@param [in] u32Offset
|
|
Byte offset (within region) of read location.
|
|
@param [in] u32Size
|
|
Number of bytes to read.
|
|
|
|
@return M2M_SUCCESS - The read completed successfully.
|
|
M2M_ERR_INVALID_ARG - The parameters were invalid.
|
|
M2M_ERR_FAIL - The request encountered an error.
|
|
|
|
@pre The WINC must have been initialised but must not be running. This can be done via
|
|
@ref m2m_wifi_init_hold, @ref m2m_wifi_reinit_hold or @ref m2m_wifi_download_mode.
|
|
*/
|
|
int8_t m2m_flash_read(tenuWincFlashRegion enuRegion, void *pvBuffer, uint32_t u32Offset, uint32_t u32Size);
|
|
|
|
/*!
|
|
@fn \
|
|
int8_t m2m_flash_switch_firmware(void);
|
|
|
|
@brief Switch the active and inactive firmware images.
|
|
|
|
@return M2M_SUCCESS - The firmware switch completed successfully.
|
|
M2M_ERR_FAIL - The request encountered an error.
|
|
|
|
@pre The WINC must have been initialised but must not be running. This can be done via
|
|
@ref m2m_wifi_init_hold, @ref m2m_wifi_reinit_hold or @ref m2m_wifi_download_mode.
|
|
|
|
*/
|
|
int8_t m2m_flash_switch_firmware(void);
|
|
|
|
/**@}*/
|
|
#endif /* __M2M_FLASH_H__ */
|