|
- /*******************************************************************************
- 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__ */
|