1 /** 2 * 3 * \file 4 * 5 * \brief WINC Driver Common API Declarations. 6 * 7 * Copyright (c) 2016-2017 Atmel Corporation. All rights reserved. 8 * 9 * \asf_license_start 10 * 11 * \page License 12 * 13 * Redistribution and use in source and binary forms, with or without 14 * modification, are permitted provided that the following conditions are met: 15 * 16 * 1. Redistributions of source code must retain the above copyright notice, 17 * this list of conditions and the following disclaimer. 18 * 19 * 2. Redistributions in binary form must reproduce the above copyright notice, 20 * this list of conditions and the following disclaimer in the documentation 21 * and/or other materials provided with the distribution. 22 * 23 * 3. The name of Atmel may not be used to endorse or promote products derived 24 * from this software without specific prior written permission. 25 * 26 * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED 27 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 28 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE 29 * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR 30 * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 31 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 32 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 33 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 34 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 35 * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 36 * POSSIBILITY OF SUCH DAMAGE. 37 * 38 * \asf_license_stop 39 * 40 */ 41 42 #ifndef _NM_COMMON_H_ 43 #define _NM_COMMON_H_ 44 45 #include "bsp/include/nm_bsp.h" 46 #include "common/include/nm_debug.h" 47 48 /**@defgroup CommonDefines CommonDefines 49 * @ingroup WlanDefines 50 */ 51 /**@{*/ 52 #define M2M_TIME_OUT_DELAY 10000 53 54 /*states*/ 55 #define M2M_SUCCESS ((sint8)0) 56 #define M2M_ERR_SEND ((sint8)-1) 57 #define M2M_ERR_RCV ((sint8)-2) 58 #define M2M_ERR_MEM_ALLOC ((sint8)-3) 59 #define M2M_ERR_TIME_OUT ((sint8)-4) 60 #define M2M_ERR_INIT ((sint8)-5) 61 #define M2M_ERR_BUS_FAIL ((sint8)-6) 62 #define M2M_NOT_YET ((sint8)-7) 63 #define M2M_ERR_FIRMWARE ((sint8)-8) 64 #define M2M_SPI_FAIL ((sint8)-9) 65 #define M2M_ERR_FIRMWARE_bURN ((sint8)-10) 66 #define M2M_ACK ((sint8)-11) 67 #define M2M_ERR_FAIL ((sint8)-12) 68 #define M2M_ERR_FW_VER_MISMATCH ((sint8)-13) 69 #define M2M_ERR_SCAN_IN_PROGRESS ((sint8)-14) 70 #define M2M_ERR_INVALID_ARG ((sint8)-15) 71 #define M2M_ERR_INVALID ((sint8)-16) 72 73 /*i2c MAASTER ERR*/ 74 #define I2C_ERR_LARGE_ADDRESS 0xE1UL /*the address exceed the max addressing mode in i2c flash*/ 75 #define I2C_ERR_TX_ABRT 0xE2UL /*NO ACK from slave*/ 76 #define I2C_ERR_OVER_SIZE 0xE3UL /**/ 77 #define ERR_PREFIX_NMIS 0xE4UL /*wrong first four byte in flash NMIS*/ 78 #define ERR_FIRMEWARE_EXCEED_SIZE 0xE5UL /*Total size of firmware exceed the max size 256k*/ 79 /**/ 80 #define PROGRAM_START 0x26961735UL 81 #define BOOT_SUCCESS 0x10add09eUL 82 #define BOOT_START 0x12345678UL 83 84 85 #define NBIT31 (0x80000000) 86 #define NBIT30 (0x40000000) 87 #define NBIT29 (0x20000000) 88 #define NBIT28 (0x10000000) 89 #define NBIT27 (0x08000000) 90 #define NBIT26 (0x04000000) 91 #define NBIT25 (0x02000000) 92 #define NBIT24 (0x01000000) 93 #define NBIT23 (0x00800000) 94 #define NBIT22 (0x00400000) 95 #define NBIT21 (0x00200000) 96 #define NBIT20 (0x00100000) 97 #define NBIT19 (0x00080000) 98 #define NBIT18 (0x00040000) 99 #define NBIT17 (0x00020000) 100 #define NBIT16 (0x00010000) 101 #define NBIT15 (0x00008000) 102 #define NBIT14 (0x00004000) 103 #define NBIT13 (0x00002000) 104 #define NBIT12 (0x00001000) 105 #define NBIT11 (0x00000800) 106 #define NBIT10 (0x00000400) 107 #define NBIT9 (0x00000200) 108 #define NBIT8 (0x00000100) 109 #define NBIT7 (0x00000080) 110 #define NBIT6 (0x00000040) 111 #define NBIT5 (0x00000020) 112 #define NBIT4 (0x00000010) 113 #define NBIT3 (0x00000008) 114 #define NBIT2 (0x00000004) 115 #define NBIT1 (0x00000002) 116 #define NBIT0 (0x00000001) 117 118 #define M2M_MAX(A,B) ((A) > (B) ? (A) : (B)) 119 #define M2M_SEL(x,m1,m2,m3) ((x>1)?((x>2)?(m3):(m2)):(m1)) 120 #define WORD_ALIGN(val) (((val) & 0x03) ? ((val) + 4 - ((val) & 0x03)) : (val)) 121 122 123 124 #define DATA_PKT_OFFSET 4 125 126 #ifndef BIG_ENDIAN 127 #define BYTE_0(word) ((uint8)(((word) >> 0 ) & 0x000000FFUL)) 128 #define BYTE_1(word) ((uint8)(((word) >> 8 ) & 0x000000FFUL)) 129 #define BYTE_2(word) ((uint8)(((word) >> 16) & 0x000000FFUL)) 130 #define BYTE_3(word) ((uint8)(((word) >> 24) & 0x000000FFUL)) 131 #else 132 #define BYTE_0(word) ((uint8)(((word) >> 24) & 0x000000FFUL)) 133 #define BYTE_1(word) ((uint8)(((word) >> 16) & 0x000000FFUL)) 134 #define BYTE_2(word) ((uint8)(((word) >> 8 ) & 0x000000FFUL)) 135 #define BYTE_3(word) ((uint8)(((word) >> 0 ) & 0x000000FFUL)) 136 #endif 137 138 /**@}*/ 139 #ifdef __cplusplus 140 extern "C" { 141 #endif 142 NMI_API void m2m_memcpy(uint8* pDst,uint8* pSrc,uint32 sz); 143 NMI_API void m2m_memset(uint8* pBuf,uint8 val,uint32 sz); 144 NMI_API uint16 m2m_strlen(uint8 * pcStr); 145 NMI_API sint8 m2m_memcmp(uint8 *pu8Buff1,uint8 *pu8Buff2 ,uint32 u32Size); 146 NMI_API uint8 m2m_strncmp(uint8 *pcS1, uint8 *pcS2, uint16 u16Len); 147 NMI_API uint8 * m2m_strstr(uint8 *pcIn, uint8 *pcStr); 148 NMI_API uint8 m2m_checksum(uint8* buf, int sz); 149 150 #ifdef __cplusplus 151 } 152 #endif 153 #endif /*_NM_COMMON_H_*/ 154