|
- /*******************************************************************************
- File Name:
- m2m_hif.h
-
- Summary:
- This module contains M2M host interface API definitions.
-
- Description:
- This module contains M2M host interface API definitions.
- *******************************************************************************/
-
- //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
-
- #ifndef _M2M_HIF_
- #define _M2M_HIF_
-
- /*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*
- INCLUDES
- *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*/
-
- #include "nm_common.h"
-
- /*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*
- MACROS
- *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*/
-
- #define M2M_HIF_MAX_PACKET_SIZE (1600 - 4)
- /*!< Maximum size of the buffer could be transferred between Host and Firmware.
- */
-
- #define M2M_HIF_HDR_OFFSET (sizeof(tstrHifHdr) + 4)
-
-
- /**
- * @struct tstrHifHdr
- * @brief Structure to hold HIF header
- */
- typedef struct
- {
- uint8_t u8Gid; /*!< Group ID */
- uint8_t u8Opcode; /*!< OP code */
- uint16_t u16Length; /*!< Payload length */
- } tstrHifHdr;
-
- #ifdef __cplusplus
- extern "C" {
- #endif
-
- /*!
- @typedef typedef void (*tpfHifCallBack)(uint8_t u8OpCode, uint16_t u16DataSize, uint32_t u32Addr);
- @brief used to point to Wi-Fi call back function depend on Arduino project or other projects.
- @param [in] u8OpCode
- HIF Opcode type.
- @param [in] u16DataSize
- HIF data length.
- @param [in] u32Addr
- HIF address.
- @param [in] grp
- HIF group type.
- */
- typedef void (*tpfHifCallBack)(uint8_t u8OpCode, uint16_t u16DataSize, uint32_t u32Addr);
- /**
- * @fn int8_t hif_init(void *arg);
- * @brief
- To initialize HIF layer.
- * @param [in] arg
- * Pointer to the arguments.
- * @return
- The function shall return ZERO for successful operation and a negative value otherwise.
- */
- int8_t hif_init(void *arg);
- /**
- * @fn int8_t hif_deinit(void *arg);
- * @brief
- To Deinitialize HIF layer.
- * @param [in] arg
- * Pointer to the arguments.
- * @return
- The function shall return ZERO for successful operation and a negative value otherwise.
- */
- int8_t hif_deinit(void *arg);
- /**
- * @fn int8_t hif_check_compatibility(uint16_t u16HifInfo);
- * @brief
- * To check the compatibility of an image with the current driver.
- * @param [in] u16HifInfo
- * HIF info of image to be checked.
- * @return The function shall return ZERO for compatible image and a negative value otherwise.
- */
- int8_t hif_check_compatibility(uint16_t u16HifInfo);
- /**
- * @fn int8_t hif_enable_access(void);
- * @brief
- * To enable access to HIF layer, based on HIF level of Firmware.
- * This function reads HIF level directly from a register written by Firmware.
- * @return The function shall return ZERO for full match operation and a negative value if operation is restricted.
- */
- int8_t hif_enable_access(void);
- /**
- * @fn int8_t hif_check_code(uint8_t u8Gid, uint8_t u8OpCode);
- * @brief
- * To check that a particular hif message is supported with the current driver/firmware pair.
- * @param [in] u8Gid
- * Group ID.
- * @param [in] u8Opcode
- * Operation ID.
- * @return The function shall return ZERO for support and a negative value otherwise.
- */
- int8_t hif_check_code(uint8_t u8Gid, uint8_t u8OpCode);
- /**
- * @fn int8_t hif_send(uint8_t u8Gid, uint8_t u8Opcode, uint8_t *pu8CtrlBuf, uint16_t u16CtrlBufSize,
- uint8_t *pu8DataBuf, uint16_t u16DataSize, uint16_t u16DataOffset)
- * @brief Send packet using host interface.
-
- * @param [in] u8Gid
- * Group ID.
- * @param [in] u8Opcode
- * Operation ID.
- * @param [in] pu8CtrlBuf
- * Pointer to the Control buffer.
- * @param [in] u16CtrlBufSize
- Control buffer size.
- * @param [in] u16DataOffset
- Packet Data offset.
- * @param [in] pu8DataBuf
- * Packet buffer Allocated by the caller.
- * @param [in] u16DataSize
- Packet buffer size (including the HIF header).
- * @return The function shall return ZERO for successful operation and a negative value otherwise.
- */
- int8_t hif_send(uint8_t u8Gid, uint8_t u8Opcode, uint8_t *pu8CtrlBuf, uint16_t u16CtrlBufSize,
- uint8_t *pu8DataBuf, uint16_t u16DataSize, uint16_t u16DataOffset);
- /**
- * @fn hif_receive
- * @brief Host interface interrupt service routine
- * @param [in] u32Addr
- * Receive start address
- * @param [out] pu8Buf
- * Pointer to receive buffer. Allocated by the caller
- * @param [in] u16Sz
- * Receive buffer size
- * @param [in] isDone
- * If you don't need any more packets send True otherwise send false
- * @return
- The function shall return ZERO for successful operation and a negative value otherwise.
- */
-
- int8_t hif_receive(uint32_t u32Addr, uint8_t *pu8Buf, uint16_t u16Sz, uint8_t isDone);
- /**
- * @fn hif_register_cb
- * @brief
- To set Callback function for every Component.
-
- * @param [in] u8Grp
- * Group to which the Callback function should be set.
-
- * @param [in] fn
- * function to be set to the specified group.
- * @return
- The function shall return ZERO for successful operation and a negative value otherwise.
- */
- int8_t hif_register_cb(uint8_t u8Grp, tpfHifCallBack fn);
- /**
- * @fn int8_t hif_chip_sleep(void);
- * @brief
- To make the chip sleep.
- * @return
- The function shall return ZERO for successful operation and a negative value otherwise.
- */
- int8_t hif_chip_sleep(void);
- /**
- * @fn int8_t hif_chip_wake(void);
- * @brief
- To Wakeup the chip.
- * @return
- The function shall return ZERO for successful operation and a negative value otherwise.
- */
-
- int8_t hif_chip_wake(void);
- /*!
- @fn \
- void hif_set_sleep_mode(uint8_t u8Pstype);
-
- @brief
- Set the sleep mode of the HIF layer.
-
- @param [in] u8Pstype
- Sleep mode.
-
- @return
- The function SHALL return 0 for success and a negative value otherwise.
- */
-
- void hif_set_sleep_mode(uint8_t u8Pstype);
- /*!
- @fn \
- uint8_t hif_get_sleep_mode(void);
-
- @brief
- Get the sleep mode of the HIF layer.
-
- @return
- The function SHALL return the sleep mode of the HIF layer.
- */
-
- uint8_t hif_get_sleep_mode(void);
-
- /**
- * @fn hif_handle_isr(void)
- * @brief
- Handle interrupt received from WINC3400 firmware.
- * @return
- The function SHALL return 0 for success and a negative value otherwise.
- */
- int8_t hif_handle_isr(void);
-
- #ifdef __cplusplus
- }
- #endif
- #endif
|