249 lines
7.2 KiB
C
249 lines
7.2 KiB
C
/**
|
|
*
|
|
* \file
|
|
*
|
|
* \brief This module contains WINC3400 BSP APIs declarations.
|
|
*
|
|
* Copyright (c) 2017-2018 Microchip Technology Inc. and its subsidiaries.
|
|
*
|
|
* \asf_license_start
|
|
*
|
|
* \page License
|
|
*
|
|
* 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.
|
|
*
|
|
* \asf_license_stop
|
|
*
|
|
*/
|
|
|
|
/**@defgroup nm_bsp BSP
|
|
*/
|
|
|
|
/**@defgroup BSPDefine Defines
|
|
* @ingroup nm_bsp
|
|
* @{
|
|
*/
|
|
#ifndef _NM_BSP_H_
|
|
#define _NM_BSP_H_
|
|
|
|
#define NMI_API
|
|
/*!<
|
|
* Attribute used to define memory section to map Functions in host memory.
|
|
*/
|
|
|
|
#include "winc3400_config.h"
|
|
#define CONST const
|
|
|
|
#ifndef NULL
|
|
#define NULL ((void*)0)
|
|
#endif
|
|
/*!<
|
|
* Void Pointer to '0' in case of NULL is not defined.
|
|
*/
|
|
|
|
|
|
#define BSP_MIN(x,y) ((x)>(y)?(y):(x))
|
|
/*!<
|
|
* Computes the minimum of \b x and \b y.
|
|
*/
|
|
|
|
//@}
|
|
|
|
/**@defgroup DataT Enumeration/Typedefs
|
|
* @ingroup nm_bsp
|
|
* @{
|
|
*/
|
|
|
|
/*!
|
|
* Used for code portability.
|
|
*/
|
|
|
|
/*!
|
|
* @typedef void (*tpfNmBspIsr) (void);
|
|
* @brief Pointer to function.\n
|
|
* Used as a data type of ISR function registered by \ref nm_bsp_register_isr
|
|
* @return None
|
|
*/
|
|
typedef void (*tpfNmBspIsr)(void);
|
|
|
|
/*!
|
|
* @ingroup DataTypes
|
|
* @typedef unsigned char uint8;
|
|
* @brief Range of values between 0 to 255
|
|
*/
|
|
typedef unsigned char uint8;
|
|
|
|
/*!
|
|
* @ingroup DataTypes
|
|
* @typedef unsigned short uint16;
|
|
* @brief Range of values between 0 to 65535
|
|
*/
|
|
typedef unsigned short uint16;
|
|
|
|
/*!
|
|
* @ingroup Data Types
|
|
* @typedef unsigned long uint32;
|
|
* @brief Range of values between 0 to 4294967295
|
|
*/
|
|
typedef unsigned long uint32;
|
|
|
|
|
|
/*!
|
|
* @ingroup Data Types
|
|
* @typedef signed char sint8;
|
|
* @brief Range of values between -128 to 127
|
|
*/
|
|
typedef signed char sint8;
|
|
|
|
/*!
|
|
* @ingroup DataTypes
|
|
* @typedef signed short sint16;
|
|
* @brief Range of values between -32768 to 32767
|
|
*/
|
|
typedef signed short sint16;
|
|
|
|
/*!
|
|
* @ingroup DataTypes
|
|
* @typedef signed long sint32;
|
|
* @brief Range of values between -2147483648 to 2147483647
|
|
*/
|
|
|
|
typedef signed long sint32;
|
|
//@}
|
|
|
|
#ifndef CORTUS_APP
|
|
|
|
|
|
#ifdef __cplusplus
|
|
extern "C"{
|
|
#endif
|
|
|
|
/** \defgroup BSPAPI Functions
|
|
* @ingroup nm_bsp
|
|
* @{
|
|
*/
|
|
|
|
/*!
|
|
* @fn sint8 nm_bsp_init(void);
|
|
* Initialization for BSP such as Reset and Chip Enable Pins for WINC, delays, register ISR, enable/disable IRQ for WINC, ...etc. You must use this function in the head of your application to
|
|
* enable WINC and Host Driver to communicate with each other.
|
|
* @note Implementation of this function is host dependent.
|
|
* @warning Omission will lead to unavailability of host communication.\n
|
|
*
|
|
* @return The function returns @ref M2M_SUCCESS for successful operations and a negative value otherwise.
|
|
|
|
*/
|
|
sint8 nm_bsp_init(void);
|
|
/*!
|
|
* @fn sint8 nm_bsp_deinit(void);
|
|
* De-initialization for BSP (\e Board \e Support \e Package)
|
|
* @pre Initialize \ref nm_bsp_init first
|
|
* @note Implementation of this function is host dependent.
|
|
* @warning Omission may lead to unknown behavior in case of soft reset.\n
|
|
* @see nm_bsp_init
|
|
* @return The function returns @ref M2M_SUCCESS for successful operations and a negative value otherwise.
|
|
|
|
*/
|
|
sint8 nm_bsp_deinit(void);
|
|
/*!
|
|
* @fn void nm_bsp_reset(void);
|
|
* Resetting NMC1500 SoC by setting CHIP_EN and RESET_N signals low, then after specific delay the function will put CHIP_EN high then RESET_N high,
|
|
* for the timing between signals please review the WINC data-sheet
|
|
* @pre Initialize \ref nm_bsp_init first
|
|
* @note Implementation of this function is host dependent and called by HIF layer.
|
|
* @see nm_bsp_init
|
|
* @return None
|
|
|
|
*/
|
|
void nm_bsp_reset(void);
|
|
/*!
|
|
* @fn void nm_bsp_sleep(uint32);
|
|
* Sleep in units of milliseconds.\n
|
|
* This function is used by HIF Layer as required in various situations.
|
|
* @brief
|
|
* @param [in] u32TimeMsec
|
|
* Time unit in milliseconds
|
|
* @pre Initialize \ref nm_bsp_init first
|
|
* @warning Maximum value must nor exceed 4294967295 milliseconds which is equal to 4294967.295 seconds.\n
|
|
* @note Implementation of this function is host dependent.
|
|
* @see nm_bsp_init
|
|
* @return None
|
|
*/
|
|
void nm_bsp_sleep(uint32 u32TimeMsec);
|
|
/*!
|
|
* @fn void nm_bsp_register_isr(tpfNmBspIsr);
|
|
* Register ISR (Interrupt Service Routine) in the initialization of HIF (Host Interface) Layer.
|
|
* When the interrupt trigger the BSP layer should call the pfisr function once inside the interrupt.
|
|
* @param [in] pfIsr
|
|
* Pointer to ISR handler in HIF
|
|
* @warning Make sure that ISR for IRQ pin for WINC is disabled by default in your implementation.
|
|
* @note Implementation of this function is host dependent and called by HIF layer.
|
|
* @see tpfNmBspIsr
|
|
* @return None
|
|
|
|
*/
|
|
void nm_bsp_register_isr(tpfNmBspIsr pfIsr);
|
|
/*!
|
|
* @fn void nm_bsp_interrupt_ctrl(uint8);
|
|
* Synchronous enable/disable interrupts function
|
|
* @brief Enable/Disable interrupts
|
|
* @param [in] u8Enable
|
|
* '0' disable interrupts. '1' enable interrupts
|
|
* @see tpfNmBspIsr
|
|
* @note Implementation of this function is host dependent and called by HIF layer.
|
|
* @return None
|
|
|
|
*/
|
|
void nm_bsp_interrupt_ctrl(uint8 u8Enable);
|
|
/**@}*/
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif
|
|
|
|
/**
|
|
* @addtogroup BSPDefine
|
|
* @{
|
|
*/
|
|
|
|
#ifdef _NM_BSP_BIG_END
|
|
/*! Switch endianness of 32bit word (In the case that Host is BE) */
|
|
#define NM_BSP_B_L_32(x) \
|
|
((((x) & 0x000000FF) << 24) + \
|
|
(((x) & 0x0000FF00) << 8) + \
|
|
(((x) & 0x00FF0000) >> 8) + \
|
|
(((x) & 0xFF000000) >> 24))
|
|
/*! Switch endianness of 16bit word (In the case that Host is BE) */
|
|
#define NM_BSP_B_L_16(x) \
|
|
((((x) & 0x00FF) << 8) + \
|
|
(((x) & 0xFF00) >> 8))
|
|
#else
|
|
/*! Retain endianness of 32bit word (In the case that Host is LE) */
|
|
#define NM_BSP_B_L_32(x) (x)
|
|
/*! Retain endianness of 16bit word (In the case that Host is LE) */
|
|
#define NM_BSP_B_L_16(x) (x)
|
|
#endif
|
|
|
|
/**@}
|
|
*/
|
|
|
|
#endif /*_NM_BSP_H_*/
|