Frank Vannieuwkerke / CC3000_Hostdriver

Dependencies:   NVIC_set_all_priorities

Dependents:   CC3000_Simple_Socket Wi-Go_IOT_Demo

Committer:
frankvnk
Date:
Fri Nov 29 13:20:07 2013 +0000
Revision:
13:e1ab6b5ab826
Parent:
7:875e62bb780c
update CC3000_MAXIMAL_RX_SIZE

Who changed what in which revision?

UserRevisionLine numberNew contents of line
frankvnk 0:c44f0314d6ec 1 /*****************************************************************************
frankvnk 0:c44f0314d6ec 2 *
frankvnk 0:c44f0314d6ec 3 * nvmem.h - CC3000 Host Driver Implementation.
frankvnk 0:c44f0314d6ec 4 * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
frankvnk 0:c44f0314d6ec 5 *
frankvnk 0:c44f0314d6ec 6 * Redistribution and use in source and binary forms, with or without
frankvnk 0:c44f0314d6ec 7 * modification, are permitted provided that the following conditions
frankvnk 0:c44f0314d6ec 8 * are met:
frankvnk 0:c44f0314d6ec 9 *
frankvnk 0:c44f0314d6ec 10 * Redistributions of source code must retain the above copyright
frankvnk 0:c44f0314d6ec 11 * notice, this list of conditions and the following disclaimer.
frankvnk 0:c44f0314d6ec 12 *
frankvnk 0:c44f0314d6ec 13 * Redistributions in binary form must reproduce the above copyright
frankvnk 0:c44f0314d6ec 14 * notice, this list of conditions and the following disclaimer in the
frankvnk 0:c44f0314d6ec 15 * documentation and/or other materials provided with the
frankvnk 0:c44f0314d6ec 16 * distribution.
frankvnk 0:c44f0314d6ec 17 *
frankvnk 0:c44f0314d6ec 18 * Neither the name of Texas Instruments Incorporated nor the names of
frankvnk 0:c44f0314d6ec 19 * its contributors may be used to endorse or promote products derived
frankvnk 0:c44f0314d6ec 20 * from this software without specific prior written permission.
frankvnk 0:c44f0314d6ec 21 *
frankvnk 0:c44f0314d6ec 22 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
frankvnk 0:c44f0314d6ec 23 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
frankvnk 0:c44f0314d6ec 24 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
frankvnk 0:c44f0314d6ec 25 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
frankvnk 0:c44f0314d6ec 26 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
frankvnk 0:c44f0314d6ec 27 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
frankvnk 0:c44f0314d6ec 28 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
frankvnk 0:c44f0314d6ec 29 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
frankvnk 0:c44f0314d6ec 30 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
frankvnk 0:c44f0314d6ec 31 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
frankvnk 0:c44f0314d6ec 32 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
frankvnk 0:c44f0314d6ec 33 *
frankvnk 0:c44f0314d6ec 34 *****************************************************************************/
frankvnk 0:c44f0314d6ec 35 #ifndef __NVRAM_H__
frankvnk 0:c44f0314d6ec 36 #define __NVRAM_H__
frankvnk 0:c44f0314d6ec 37
frankvnk 6:d733efcc2c56 38 #include "cc3000_spi_hci.h"
frankvnk 0:c44f0314d6ec 39
frankvnk 5:854f9b13a0f9 40 //*****************************************************************************
frankvnk 5:854f9b13a0f9 41 //
frankvnk 5:854f9b13a0f9 42 //! \addtogroup nvmem
frankvnk 5:854f9b13a0f9 43 //! @{
frankvnk 5:854f9b13a0f9 44 //
frankvnk 5:854f9b13a0f9 45 //*****************************************************************************
frankvnk 0:c44f0314d6ec 46
frankvnk 0:c44f0314d6ec 47 /** CC3000 Host driver - NVMEM
frankvnk 0:c44f0314d6ec 48 *
frankvnk 0:c44f0314d6ec 49 */
frankvnk 4:d8255a5aad46 50
frankvnk 0:c44f0314d6ec 51 #ifdef __cplusplus
frankvnk 0:c44f0314d6ec 52 extern "C" {
frankvnk 0:c44f0314d6ec 53 #endif
frankvnk 0:c44f0314d6ec 54
frankvnk 0:c44f0314d6ec 55 //*****************************************************************************
frankvnk 0:c44f0314d6ec 56 //
frankvnk 4:d8255a5aad46 57 // Prototypes for the structures for APIs.
frankvnk 0:c44f0314d6ec 58 //
frankvnk 0:c44f0314d6ec 59 //*****************************************************************************
frankvnk 0:c44f0314d6ec 60
frankvnk 4:d8255a5aad46 61 #define NVMEM_READ_PARAMS_LEN (12)
frankvnk 4:d8255a5aad46 62 #define NVMEM_CREATE_PARAMS_LEN (8)
frankvnk 4:d8255a5aad46 63 #define NVMEM_WRITE_PARAMS_LEN (16)
frankvnk 4:d8255a5aad46 64
frankvnk 4:d8255a5aad46 65
frankvnk 0:c44f0314d6ec 66 /****************************************************************************
frankvnk 0:c44f0314d6ec 67 **
frankvnk 0:c44f0314d6ec 68 ** Definitions for File IDs
frankvnk 0:c44f0314d6ec 69 **
frankvnk 0:c44f0314d6ec 70 ****************************************************************************/
frankvnk 7:875e62bb780c 71 /* --------------------------------------------------------- EEPROM FAT table ---------------------------------------------------------
frankvnk 7:875e62bb780c 72
frankvnk 7:875e62bb780c 73 File ID Offset File Size Used Size Parameter
frankvnk 7:875e62bb780c 74 # ID address (bytes) (bytes)
frankvnk 7:875e62bb780c 75 --------------------------------------------------------------------------------------------------------------------------------------
frankvnk 7:875e62bb780c 76 0 NVMEM_NVS_FILEID 0x50 0x1A0 0x1A RF Calibration results table(generated automatically by TX Bip)
frankvnk 7:875e62bb780c 77 1 NVMEM_NVS_SHADOW_FILEID 0x1F0 0x1A0 0x1A NVS Shadow
frankvnk 7:875e62bb780c 78 2 NVMEM_WLAN_CONFIG_FILEID 0x390 0x1000 0x64 WLAN configuration
frankvnk 7:875e62bb780c 79 3 NVMEM_WLAN_CONFIG_SHADOW_FILEID 0x1390 0x1000 0x64 WLAN configuration shadow
frankvnk 7:875e62bb780c 80 4 NVMEM_WLAN_DRIVER_SP_FILEID 0x2390 0x2000 variable WLAN Driver ROM Patches
frankvnk 7:875e62bb780c 81 5 NVMEM_WLAN_FW_SP_FILEID 0x4390 0x2000 variable WLAN FW Patches
frankvnk 7:875e62bb780c 82 6 NVMEM_MAC_FILEID 0x6390 0x10 0x10 6 bytes of MAC address
frankvnk 7:875e62bb780c 83 7 NVMEM_FRONTEND_VARS_FILEID 0x63A0 0x10 0x10 Frontend Vars
frankvnk 7:875e62bb780c 84 8 NVMEM_IP_CONFIG_FILEID 0x63B0 0x40 0x40 IP configuration
frankvnk 7:875e62bb780c 85 9 NVMEM_IP_CONFIG_SHADOW_FILEID 0x63F0 0x40 0x40 IP configuration shadow
frankvnk 7:875e62bb780c 86 10 NVMEM_BOOTLOADER_SP_FILEID 0x6430 0x400 variable Bootloader Patches
frankvnk 7:875e62bb780c 87 11 NVMEM_RM_FILEID 0x6830 0x200 0x7F Radio parameters
frankvnk 7:875e62bb780c 88 12 NVMEM_AES128_KEY_FILEID 0x6A30 0x10 0x10 AES128 key file
frankvnk 7:875e62bb780c 89 13 NVMEM_SHARED_MEM_FILEID 0x6A40 0x50 0x44 Host-CC3000 shared memory file
frankvnk 7:875e62bb780c 90 14 NVMEM_USER_FILE_1_FILEID 0x6A90 variable variable 1st user file
frankvnk 7:875e62bb780c 91 15 NVMEM_USER_FILE_2_FILEID variable variable variable 2nd user file
frankvnk 7:875e62bb780c 92 */
frankvnk 0:c44f0314d6ec 93 /* NVMEM file ID - system files*/
frankvnk 0:c44f0314d6ec 94 #define NVMEM_NVS_FILEID (0)
frankvnk 1:bbcaf0b2f367 95 #define NVMEM_NVS_SHADOW_FILEID (1)
frankvnk 0:c44f0314d6ec 96 #define NVMEM_WLAN_CONFIG_FILEID (2)
frankvnk 1:bbcaf0b2f367 97 #define NVMEM_WLAN_CONFIG_SHADOW_FILEID (3)
frankvnk 1:bbcaf0b2f367 98 #define NVMEM_WLAN_DRIVER_SP_FILEID (4)
frankvnk 1:bbcaf0b2f367 99 #define NVMEM_WLAN_FW_SP_FILEID (5)
frankvnk 0:c44f0314d6ec 100 #define NVMEM_MAC_FILEID (6)
frankvnk 1:bbcaf0b2f367 101 #define NVMEM_FRONTEND_VARS_FILEID (7)
frankvnk 1:bbcaf0b2f367 102 #define NVMEM_IP_CONFIG_FILEID (8)
frankvnk 1:bbcaf0b2f367 103 #define NVMEM_IP_CONFIG_SHADOW_FILEID (9)
frankvnk 1:bbcaf0b2f367 104 #define NVMEM_BOOTLOADER_SP_FILEID (10)
frankvnk 1:bbcaf0b2f367 105 #define NVMEM_RM_FILEID (11)
frankvnk 0:c44f0314d6ec 106
frankvnk 0:c44f0314d6ec 107 /* NVMEM file ID - user files*/
frankvnk 1:bbcaf0b2f367 108 #define NVMEM_AES128_KEY_FILEID (12)
frankvnk 1:bbcaf0b2f367 109 #define NVMEM_SHARED_MEM_FILEID (13)
frankvnk 1:bbcaf0b2f367 110 #define NVMEM_USER_FILE_1_FILEID (14)
frankvnk 1:bbcaf0b2f367 111 #define NVMEM_USER_FILE_2_FILEID (15)
frankvnk 0:c44f0314d6ec 112
frankvnk 0:c44f0314d6ec 113 /* max entry in order to invalid nvmem */
frankvnk 0:c44f0314d6ec 114 #define NVMEM_MAX_ENTRY (16)
frankvnk 0:c44f0314d6ec 115
frankvnk 0:c44f0314d6ec 116
frankvnk 4:d8255a5aad46 117 /**
frankvnk 4:d8255a5aad46 118 * Read 'length' data at offset 'ulOffset' from nvmem to file 'ulFileId'.
frankvnk 5:854f9b13a0f9 119 * @param ulFileId Possible nvmem file id values:\n
frankvnk 5:854f9b13a0f9 120 * NVMEM_NVS_FILEID, NVMEM_NVS_SHADOW_FILEID,\n
frankvnk 5:854f9b13a0f9 121 * NVMEM_WLAN_CONFIG_FILEID, NVMEM_WLAN_CONFIG_SHADOW_FILEID,\n
frankvnk 5:854f9b13a0f9 122 * NVMEM_WLAN_DRIVER_SP_FILEID, NVMEM_WLAN_FW_SP_FILEID,\n
frankvnk 5:854f9b13a0f9 123 * NVMEM_MAC_FILEID, NVMEM_FRONTEND_VARS_FILEID,\n
frankvnk 5:854f9b13a0f9 124 * NVMEM_IP_CONFIG_FILEID, NVMEM_IP_CONFIG_SHADOW_FILEID,\n
frankvnk 5:854f9b13a0f9 125 * NVMEM_BOOTLOADER_SP_FILEID, NVMEM_RM_FILEID,\n
frankvnk 5:854f9b13a0f9 126 * and user files 12-15.\n
frankvnk 4:d8255a5aad46 127 * @param ulLength number of bytes to read
frankvnk 4:d8255a5aad46 128 * @param ulOffset ulOffset in file from where to read
frankvnk 4:d8255a5aad46 129 * @param buff output buffer pointer
frankvnk 5:854f9b13a0f9 130 * @return number of bytes read, otherwise error.\n
frankvnk 5:854f9b13a0f9 131 * Error conditions : file can't be used\n
frankvnk 5:854f9b13a0f9 132 * file is invalid\n
frankvnk 5:854f9b13a0f9 133 * read out of bounds. \n
frankvnk 4:d8255a5aad46 134 */
frankvnk 0:c44f0314d6ec 135 extern signed long nvmem_read(unsigned long file_id, unsigned long length, unsigned long offset, unsigned char *buff);
frankvnk 0:c44f0314d6ec 136
frankvnk 4:d8255a5aad46 137 /**
frankvnk 4:d8255a5aad46 138 * Write 'length' data at offset 'ulOffset' from file 'ulFileId' to nvmem.
frankvnk 5:854f9b13a0f9 139 * The file id is marked as invalid until writing is ended.\n
frankvnk 5:854f9b13a0f9 140 * The file entry doesn't need to be valid - only allocated.\n
frankvnk 5:854f9b13a0f9 141 * @param ulFileId Possible nvmem file id values:\n
frankvnk 5:854f9b13a0f9 142 * NVMEM_WLAN_DRIVER_SP_FILEID, NVMEM_WLAN_FW_SP_FILEID,\n
frankvnk 5:854f9b13a0f9 143 * NVMEM_MAC_FILEID, NVMEM_BOOTLOADER_SP_FILEID,\n
frankvnk 5:854f9b13a0f9 144 * and user files 12-15.\n
frankvnk 4:d8255a5aad46 145 * @param ulLength number of bytes to write
frankvnk 4:d8255a5aad46 146 * @param ulEntryOffset offset in file to start write operation from
frankvnk 4:d8255a5aad46 147 * @param buff data to write
frankvnk 4:d8255a5aad46 148 *
frankvnk 4:d8255a5aad46 149 * @return 0 on success, error otherwise.
frankvnk 4:d8255a5aad46 150 */
frankvnk 0:c44f0314d6ec 151 extern signed long nvmem_write(unsigned long ulFileId, unsigned long ulLength, unsigned long ulEntryOffset, unsigned char *buff);
frankvnk 0:c44f0314d6ec 152
frankvnk 0:c44f0314d6ec 153
frankvnk 4:d8255a5aad46 154 /**
frankvnk 4:d8255a5aad46 155 * Write the MAC address to EEPROM (OUI first)
frankvnk 4:d8255a5aad46 156 * @param mac mac address to be set
frankvnk 4:d8255a5aad46 157 * @return 0 on success, error otherwise.
frankvnk 4:d8255a5aad46 158 */
frankvnk 1:bbcaf0b2f367 159 extern unsigned char nvmem_set_mac_address(unsigned char *mac);
frankvnk 0:c44f0314d6ec 160
frankvnk 0:c44f0314d6ec 161
frankvnk 4:d8255a5aad46 162 /**
frankvnk 4:d8255a5aad46 163 * Read the MAC address from EEPROM (OUI first)
frankvnk 4:d8255a5aad46 164 * @param[out] mac mac address
frankvnk 4:d8255a5aad46 165 *
frankvnk 4:d8255a5aad46 166 * @return on success 0, error otherwise.
frankvnk 4:d8255a5aad46 167 */
frankvnk 1:bbcaf0b2f367 168 extern unsigned char nvmem_get_mac_address(unsigned char *mac);
frankvnk 0:c44f0314d6ec 169
frankvnk 0:c44f0314d6ec 170
frankvnk 4:d8255a5aad46 171 /**
frankvnk 4:d8255a5aad46 172 * Write patch code to a specific file ID. Each write contains SP_PORTION_SIZE bytes.
frankvnk 5:854f9b13a0f9 173 * @param ulFileId Possible nvmem file id values:\n
frankvnk 5:854f9b13a0f9 174 * NVMEM_WLAN_DRIVER_SP_FILEID, NVMEM_WLAN_FW_SP_FILEID,\n
frankvnk 4:d8255a5aad46 175 * @param spLength number of bytes to write
frankvnk 4:d8255a5aad46 176 * @param spData SP data to write
frankvnk 4:d8255a5aad46 177 *
frankvnk 4:d8255a5aad46 178 * @return 0 on success, error otherwise.
frankvnk 4:d8255a5aad46 179 */
frankvnk 1:bbcaf0b2f367 180 extern unsigned char nvmem_write_patch(unsigned long ulFileId, unsigned long spLength, const unsigned char *spData);
frankvnk 0:c44f0314d6ec 181
frankvnk 4:d8255a5aad46 182 /**
frankvnk 5:854f9b13a0f9 183 * Read the patch version.
frankvnk 5:854f9b13a0f9 184 * Read package version (WiFi FW patch, driver-supplicant-NS patch, bootloader patch)\n
frankvnk 4:d8255a5aad46 185 * @param[out] patchVer first number indicates package ID and the second number indicates package build number
frankvnk 4:d8255a5aad46 186 * @return 0 on success, error otherwise.
frankvnk 4:d8255a5aad46 187 */
frankvnk 6:d733efcc2c56 188 #ifndef CC3000_TINY_DRIVER
frankvnk 1:bbcaf0b2f367 189 extern unsigned char nvmem_read_sp_version(unsigned char* patchVer);
frankvnk 0:c44f0314d6ec 190 #endif
frankvnk 0:c44f0314d6ec 191
frankvnk 4:d8255a5aad46 192 /**
frankvnk 4:d8255a5aad46 193 * Create a new file entry and allocate space in NVMEM.
frankvnk 5:854f9b13a0f9 194 * Applies only to user files.\n
frankvnk 5:854f9b13a0f9 195 * Modify the size of file.\n
frankvnk 5:854f9b13a0f9 196 * If the entry is unallocated - allocate it to size ulNewLen (marked invalid).\n
frankvnk 5:854f9b13a0f9 197 * If it is allocated then deallocate it first.\n
frankvnk 5:854f9b13a0f9 198 * To just mark the file as invalid without resizing - set ulNewLen=0.\n
frankvnk 5:854f9b13a0f9 199 * @param ulFileId Possible nvmem file Ids:\n
frankvnk 5:854f9b13a0f9 200 * * NVMEM_AES128_KEY_FILEID: 12\n
frankvnk 5:854f9b13a0f9 201 * * NVMEM_SHARED_MEM_FILEID: 13\n
frankvnk 5:854f9b13a0f9 202 * * and fileIDs 14 and 15\n
frankvnk 4:d8255a5aad46 203 * @param ulNewLen entry ulLength
frankvnk 4:d8255a5aad46 204 *
frankvnk 4:d8255a5aad46 205 * @return 0 on success, error otherwise.
frankvnk 4:d8255a5aad46 206 */
frankvnk 0:c44f0314d6ec 207 extern signed long nvmem_create_entry(unsigned long file_id, unsigned long newlen);
frankvnk 0:c44f0314d6ec 208
frankvnk 0:c44f0314d6ec 209
frankvnk 0:c44f0314d6ec 210
frankvnk 0:c44f0314d6ec 211 #ifdef __cplusplus
frankvnk 0:c44f0314d6ec 212 }
frankvnk 0:c44f0314d6ec 213 #endif // __cplusplus
frankvnk 0:c44f0314d6ec 214
frankvnk 5:854f9b13a0f9 215 //*****************************************************************************
frankvnk 5:854f9b13a0f9 216 //
frankvnk 5:854f9b13a0f9 217 // Close the Doxygen group.
frankvnk 5:854f9b13a0f9 218 //! @}
frankvnk 5:854f9b13a0f9 219 //
frankvnk 5:854f9b13a0f9 220 //*****************************************************************************
frankvnk 5:854f9b13a0f9 221
frankvnk 0:c44f0314d6ec 222 #endif // __NVRAM_H__
frankvnk 0:c44f0314d6ec 223
frankvnk 0:c44f0314d6ec 224
frankvnk 6:d733efcc2c56 225
frankvnk 6:d733efcc2c56 226
frankvnk 6:d733efcc2c56 227