CC3000HostDriver for device TI CC3000 some changes were made due to mbed compiler and the use of void*
nvmem.h@0:9cb694f00b7b, 2013-08-02 (annotated)
- Committer:
- dflet
- Date:
- Fri Aug 02 15:06:15 2013 +0000
- Revision:
- 0:9cb694f00b7b
First commit TI CC3000HostDriver library
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
dflet | 0:9cb694f00b7b | 1 | /***************************************************************************** |
dflet | 0:9cb694f00b7b | 2 | * |
dflet | 0:9cb694f00b7b | 3 | * nvmem.h - CC3000 Host Driver Implementation. |
dflet | 0:9cb694f00b7b | 4 | * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/ |
dflet | 0:9cb694f00b7b | 5 | * |
dflet | 0:9cb694f00b7b | 6 | * Redistribution and use in source and binary forms, with or without |
dflet | 0:9cb694f00b7b | 7 | * modification, are permitted provided that the following conditions |
dflet | 0:9cb694f00b7b | 8 | * are met: |
dflet | 0:9cb694f00b7b | 9 | * |
dflet | 0:9cb694f00b7b | 10 | * Redistributions of source code must retain the above copyright |
dflet | 0:9cb694f00b7b | 11 | * notice, this list of conditions and the following disclaimer. |
dflet | 0:9cb694f00b7b | 12 | * |
dflet | 0:9cb694f00b7b | 13 | * Redistributions in binary form must reproduce the above copyright |
dflet | 0:9cb694f00b7b | 14 | * notice, this list of conditions and the following disclaimer in the |
dflet | 0:9cb694f00b7b | 15 | * documentation and/or other materials provided with the |
dflet | 0:9cb694f00b7b | 16 | * distribution. |
dflet | 0:9cb694f00b7b | 17 | * |
dflet | 0:9cb694f00b7b | 18 | * Neither the name of Texas Instruments Incorporated nor the names of |
dflet | 0:9cb694f00b7b | 19 | * its contributors may be used to endorse or promote products derived |
dflet | 0:9cb694f00b7b | 20 | * from this software without specific prior written permission. |
dflet | 0:9cb694f00b7b | 21 | * |
dflet | 0:9cb694f00b7b | 22 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
dflet | 0:9cb694f00b7b | 23 | * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
dflet | 0:9cb694f00b7b | 24 | * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
dflet | 0:9cb694f00b7b | 25 | * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
dflet | 0:9cb694f00b7b | 26 | * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
dflet | 0:9cb694f00b7b | 27 | * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
dflet | 0:9cb694f00b7b | 28 | * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
dflet | 0:9cb694f00b7b | 29 | * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
dflet | 0:9cb694f00b7b | 30 | * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
dflet | 0:9cb694f00b7b | 31 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
dflet | 0:9cb694f00b7b | 32 | * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
dflet | 0:9cb694f00b7b | 33 | * |
dflet | 0:9cb694f00b7b | 34 | *****************************************************************************/ |
dflet | 0:9cb694f00b7b | 35 | #ifndef __NVRAM_H__ |
dflet | 0:9cb694f00b7b | 36 | #define __NVRAM_H__ |
dflet | 0:9cb694f00b7b | 37 | |
dflet | 0:9cb694f00b7b | 38 | #include "cc3000_common.h" |
dflet | 0:9cb694f00b7b | 39 | |
dflet | 0:9cb694f00b7b | 40 | |
dflet | 0:9cb694f00b7b | 41 | //***************************************************************************** |
dflet | 0:9cb694f00b7b | 42 | // |
dflet | 0:9cb694f00b7b | 43 | // If building with a C++ compiler, make all of the definitions in this header |
dflet | 0:9cb694f00b7b | 44 | // have a C binding. |
dflet | 0:9cb694f00b7b | 45 | // |
dflet | 0:9cb694f00b7b | 46 | //***************************************************************************** |
dflet | 0:9cb694f00b7b | 47 | #ifdef __cplusplus |
dflet | 0:9cb694f00b7b | 48 | extern "C" { |
dflet | 0:9cb694f00b7b | 49 | #endif |
dflet | 0:9cb694f00b7b | 50 | |
dflet | 0:9cb694f00b7b | 51 | |
dflet | 0:9cb694f00b7b | 52 | //***************************************************************************** |
dflet | 0:9cb694f00b7b | 53 | // |
dflet | 0:9cb694f00b7b | 54 | //! \addtogroup nvmem_api |
dflet | 0:9cb694f00b7b | 55 | //! @{ |
dflet | 0:9cb694f00b7b | 56 | // |
dflet | 0:9cb694f00b7b | 57 | //***************************************************************************** |
dflet | 0:9cb694f00b7b | 58 | |
dflet | 0:9cb694f00b7b | 59 | /**************************************************************************** |
dflet | 0:9cb694f00b7b | 60 | ** |
dflet | 0:9cb694f00b7b | 61 | ** Definitions for File IDs |
dflet | 0:9cb694f00b7b | 62 | ** |
dflet | 0:9cb694f00b7b | 63 | ****************************************************************************/ |
dflet | 0:9cb694f00b7b | 64 | /* NVMEM file ID - system files*/ |
dflet | 0:9cb694f00b7b | 65 | #define NVMEM_NVS_FILEID (0) |
dflet | 0:9cb694f00b7b | 66 | #define NVMEM_NVS_SHADOW_FILEID (1) |
dflet | 0:9cb694f00b7b | 67 | #define NVMEM_WLAN_CONFIG_FILEID (2) |
dflet | 0:9cb694f00b7b | 68 | #define NVMEM_WLAN_CONFIG_SHADOW_FILEID (3) |
dflet | 0:9cb694f00b7b | 69 | #define NVMEM_WLAN_DRIVER_SP_FILEID (4) |
dflet | 0:9cb694f00b7b | 70 | #define NVMEM_WLAN_FW_SP_FILEID (5) |
dflet | 0:9cb694f00b7b | 71 | #define NVMEM_MAC_FILEID (6) |
dflet | 0:9cb694f00b7b | 72 | #define NVMEM_FRONTEND_VARS_FILEID (7) |
dflet | 0:9cb694f00b7b | 73 | #define NVMEM_IP_CONFIG_FILEID (8) |
dflet | 0:9cb694f00b7b | 74 | #define NVMEM_IP_CONFIG_SHADOW_FILEID (9) |
dflet | 0:9cb694f00b7b | 75 | #define NVMEM_BOOTLOADER_SP_FILEID (10) |
dflet | 0:9cb694f00b7b | 76 | #define NVMEM_RM_FILEID (11) |
dflet | 0:9cb694f00b7b | 77 | |
dflet | 0:9cb694f00b7b | 78 | /* NVMEM file ID - user files*/ |
dflet | 0:9cb694f00b7b | 79 | #define NVMEM_AES128_KEY_FILEID (12) |
dflet | 0:9cb694f00b7b | 80 | #define NVMEM_SHARED_MEM_FILEID (13) |
dflet | 0:9cb694f00b7b | 81 | |
dflet | 0:9cb694f00b7b | 82 | /* max entry in order to invalid nvmem */ |
dflet | 0:9cb694f00b7b | 83 | #define NVMEM_MAX_ENTRY (16) |
dflet | 0:9cb694f00b7b | 84 | |
dflet | 0:9cb694f00b7b | 85 | |
dflet | 0:9cb694f00b7b | 86 | //***************************************************************************** |
dflet | 0:9cb694f00b7b | 87 | // |
dflet | 0:9cb694f00b7b | 88 | //! nvmem_read |
dflet | 0:9cb694f00b7b | 89 | //! |
dflet | 0:9cb694f00b7b | 90 | //! @param ulFileId nvmem file id:\n |
dflet | 0:9cb694f00b7b | 91 | //! NVMEM_NVS_FILEID, NVMEM_NVS_SHADOW_FILEID, |
dflet | 0:9cb694f00b7b | 92 | //! NVMEM_WLAN_CONFIG_FILEID, NVMEM_WLAN_CONFIG_SHADOW_FILEID, |
dflet | 0:9cb694f00b7b | 93 | //! NVMEM_WLAN_DRIVER_SP_FILEID, NVMEM_WLAN_FW_SP_FILEID, |
dflet | 0:9cb694f00b7b | 94 | //! NVMEM_MAC_FILEID, NVMEM_FRONTEND_VARS_FILEID, |
dflet | 0:9cb694f00b7b | 95 | //! NVMEM_IP_CONFIG_FILEID, NVMEM_IP_CONFIG_SHADOW_FILEID, |
dflet | 0:9cb694f00b7b | 96 | //! NVMEM_BOOTLOADER_SP_FILEID, NVMEM_RM_FILEID, |
dflet | 0:9cb694f00b7b | 97 | //! and user files 12-15. |
dflet | 0:9cb694f00b7b | 98 | //! @param ulLength number of bytes to read |
dflet | 0:9cb694f00b7b | 99 | //! @param ulOffset ulOffset in file from where to read |
dflet | 0:9cb694f00b7b | 100 | //! @param buff output buffer pointer |
dflet | 0:9cb694f00b7b | 101 | //! |
dflet | 0:9cb694f00b7b | 102 | //! @return number of bytes read, otherwise error. |
dflet | 0:9cb694f00b7b | 103 | //! |
dflet | 0:9cb694f00b7b | 104 | //! @brief Reads data from the file referred by the ulFileId parameter. |
dflet | 0:9cb694f00b7b | 105 | //! Reads data from file ulOffset till length. Err if the file can't |
dflet | 0:9cb694f00b7b | 106 | //! be used, is invalid, or if the read is out of bounds. |
dflet | 0:9cb694f00b7b | 107 | //! |
dflet | 0:9cb694f00b7b | 108 | //***************************************************************************** |
dflet | 0:9cb694f00b7b | 109 | |
dflet | 0:9cb694f00b7b | 110 | extern signed long nvmem_read(unsigned long file_id, unsigned long length, unsigned long offset, unsigned char *buff); |
dflet | 0:9cb694f00b7b | 111 | |
dflet | 0:9cb694f00b7b | 112 | //***************************************************************************** |
dflet | 0:9cb694f00b7b | 113 | // |
dflet | 0:9cb694f00b7b | 114 | //! nvmem_write |
dflet | 0:9cb694f00b7b | 115 | //! |
dflet | 0:9cb694f00b7b | 116 | //! @param ulFileId nvmem file id:\n |
dflet | 0:9cb694f00b7b | 117 | //! NVMEM_WLAN_DRIVER_SP_FILEID, NVMEM_WLAN_FW_SP_FILEID, |
dflet | 0:9cb694f00b7b | 118 | //! NVMEM_MAC_FILEID, NVMEM_BOOTLOADER_SP_FILEID, |
dflet | 0:9cb694f00b7b | 119 | //! and user files 12-15. |
dflet | 0:9cb694f00b7b | 120 | //! @param ulLength number of bytes to write |
dflet | 0:9cb694f00b7b | 121 | //! @param ulEntryOffset offset in file to start write operation from |
dflet | 0:9cb694f00b7b | 122 | //! @param buff data to write |
dflet | 0:9cb694f00b7b | 123 | //! |
dflet | 0:9cb694f00b7b | 124 | //! @return on success 0, error otherwise. |
dflet | 0:9cb694f00b7b | 125 | //! |
dflet | 0:9cb694f00b7b | 126 | //! @brief Write data to nvmem. |
dflet | 0:9cb694f00b7b | 127 | //! writes data to file referred by the ulFileId parameter. |
dflet | 0:9cb694f00b7b | 128 | //! Writes data to file ulOffset till ulLength.The file id will be |
dflet | 0:9cb694f00b7b | 129 | //! marked invalid till the write is done. The file entry doesn't |
dflet | 0:9cb694f00b7b | 130 | //! need to be valid - only allocated. |
dflet | 0:9cb694f00b7b | 131 | //! |
dflet | 0:9cb694f00b7b | 132 | //***************************************************************************** |
dflet | 0:9cb694f00b7b | 133 | |
dflet | 0:9cb694f00b7b | 134 | extern signed long nvmem_write(unsigned long ulFileId, unsigned long ulLength, unsigned long ulEntryOffset, unsigned char *buff); |
dflet | 0:9cb694f00b7b | 135 | |
dflet | 0:9cb694f00b7b | 136 | |
dflet | 0:9cb694f00b7b | 137 | //***************************************************************************** |
dflet | 0:9cb694f00b7b | 138 | // |
dflet | 0:9cb694f00b7b | 139 | //! nvmem_set_mac_address |
dflet | 0:9cb694f00b7b | 140 | //! |
dflet | 0:9cb694f00b7b | 141 | //! @param mac mac address to be set |
dflet | 0:9cb694f00b7b | 142 | //! |
dflet | 0:9cb694f00b7b | 143 | //! @return on success 0, error otherwise. |
dflet | 0:9cb694f00b7b | 144 | //! |
dflet | 0:9cb694f00b7b | 145 | //! @brief Write MAC address to EEPROM. |
dflet | 0:9cb694f00b7b | 146 | //! mac address as appears over the air (OUI first) |
dflet | 0:9cb694f00b7b | 147 | //! |
dflet | 0:9cb694f00b7b | 148 | //***************************************************************************** |
dflet | 0:9cb694f00b7b | 149 | extern unsigned char nvmem_set_mac_address(unsigned char *mac); |
dflet | 0:9cb694f00b7b | 150 | |
dflet | 0:9cb694f00b7b | 151 | |
dflet | 0:9cb694f00b7b | 152 | //***************************************************************************** |
dflet | 0:9cb694f00b7b | 153 | // |
dflet | 0:9cb694f00b7b | 154 | //! nvmem_get_mac_address |
dflet | 0:9cb694f00b7b | 155 | //! |
dflet | 0:9cb694f00b7b | 156 | //! @param[out] mac mac address |
dflet | 0:9cb694f00b7b | 157 | //! |
dflet | 0:9cb694f00b7b | 158 | //! @return on success 0, error otherwise. |
dflet | 0:9cb694f00b7b | 159 | //! |
dflet | 0:9cb694f00b7b | 160 | //! @brief Read MAC address from EEPROM. |
dflet | 0:9cb694f00b7b | 161 | //! mac address as appears over the air (OUI first) |
dflet | 0:9cb694f00b7b | 162 | //! |
dflet | 0:9cb694f00b7b | 163 | //***************************************************************************** |
dflet | 0:9cb694f00b7b | 164 | extern unsigned char nvmem_get_mac_address(unsigned char *mac); |
dflet | 0:9cb694f00b7b | 165 | |
dflet | 0:9cb694f00b7b | 166 | |
dflet | 0:9cb694f00b7b | 167 | //***************************************************************************** |
dflet | 0:9cb694f00b7b | 168 | // |
dflet | 0:9cb694f00b7b | 169 | //! nvmem_write_patch |
dflet | 0:9cb694f00b7b | 170 | //! |
dflet | 0:9cb694f00b7b | 171 | //! @param ulFileId nvmem file id:\n |
dflet | 0:9cb694f00b7b | 172 | //! NVMEM_WLAN_DRIVER_SP_FILEID, NVMEM_WLAN_FW_SP_FILEID, |
dflet | 0:9cb694f00b7b | 173 | //! @param spLength number of bytes to write |
dflet | 0:9cb694f00b7b | 174 | //! @param spData SP data to write |
dflet | 0:9cb694f00b7b | 175 | //! |
dflet | 0:9cb694f00b7b | 176 | //! @return on success 0, error otherwise. |
dflet | 0:9cb694f00b7b | 177 | //! |
dflet | 0:9cb694f00b7b | 178 | //! @brief program a patch to a specific file ID. |
dflet | 0:9cb694f00b7b | 179 | //! The SP data is assumed to be organized in 2-dimensional. |
dflet | 0:9cb694f00b7b | 180 | //! Each line is SP_PORTION_SIZE bytes long. Actual programming is |
dflet | 0:9cb694f00b7b | 181 | //! applied in SP_PORTION_SIZE bytes portions. |
dflet | 0:9cb694f00b7b | 182 | //! |
dflet | 0:9cb694f00b7b | 183 | //***************************************************************************** |
dflet | 0:9cb694f00b7b | 184 | extern unsigned char nvmem_write_patch(unsigned long ulFileId, unsigned long spLength, const unsigned char *spData); |
dflet | 0:9cb694f00b7b | 185 | |
dflet | 0:9cb694f00b7b | 186 | |
dflet | 0:9cb694f00b7b | 187 | //***************************************************************************** |
dflet | 0:9cb694f00b7b | 188 | // |
dflet | 0:9cb694f00b7b | 189 | //! nvmem_read_sp_version |
dflet | 0:9cb694f00b7b | 190 | //! |
dflet | 0:9cb694f00b7b | 191 | //! @param[out] patchVer first number indicates package ID and the second |
dflet | 0:9cb694f00b7b | 192 | //! number indicates package build number |
dflet | 0:9cb694f00b7b | 193 | //! |
dflet | 0:9cb694f00b7b | 194 | //! @return on success 0, error otherwise. |
dflet | 0:9cb694f00b7b | 195 | //! |
dflet | 0:9cb694f00b7b | 196 | //! @brief Read patch version. read package version (WiFi FW patch, |
dflet | 0:9cb694f00b7b | 197 | //! driver-supplicant-NS patch, bootloader patch) |
dflet | 0:9cb694f00b7b | 198 | //! |
dflet | 0:9cb694f00b7b | 199 | //***************************************************************************** |
dflet | 0:9cb694f00b7b | 200 | #ifndef CC3000_TINY_DRIVER |
dflet | 0:9cb694f00b7b | 201 | extern unsigned char nvmem_read_sp_version(unsigned char* patchVer); |
dflet | 0:9cb694f00b7b | 202 | #endif |
dflet | 0:9cb694f00b7b | 203 | |
dflet | 0:9cb694f00b7b | 204 | //***************************************************************************** |
dflet | 0:9cb694f00b7b | 205 | // |
dflet | 0:9cb694f00b7b | 206 | //! nvmem_create_entry |
dflet | 0:9cb694f00b7b | 207 | //! |
dflet | 0:9cb694f00b7b | 208 | //! @param ulFileId nvmem file Id:\n |
dflet | 0:9cb694f00b7b | 209 | //! * NVMEM_AES128_KEY_FILEID: 12 |
dflet | 0:9cb694f00b7b | 210 | //! * NVMEM_SHARED_MEM_FILEID: 13 |
dflet | 0:9cb694f00b7b | 211 | //! * and fileIDs 14 and 15 |
dflet | 0:9cb694f00b7b | 212 | //! @param ulNewLen entry ulLength |
dflet | 0:9cb694f00b7b | 213 | //! |
dflet | 0:9cb694f00b7b | 214 | //! @return on success 0, error otherwise. |
dflet | 0:9cb694f00b7b | 215 | //! |
dflet | 0:9cb694f00b7b | 216 | //! @brief Create new file entry and allocate space on the NVMEM. |
dflet | 0:9cb694f00b7b | 217 | //! Applies only to user files. |
dflet | 0:9cb694f00b7b | 218 | //! Modify the size of file. |
dflet | 0:9cb694f00b7b | 219 | //! If the entry is unallocated - allocate it to size |
dflet | 0:9cb694f00b7b | 220 | //! ulNewLen (marked invalid). |
dflet | 0:9cb694f00b7b | 221 | //! If it is allocated then deallocate it first. |
dflet | 0:9cb694f00b7b | 222 | //! To just mark the file as invalid without resizing - |
dflet | 0:9cb694f00b7b | 223 | //! set ulNewLen=0. |
dflet | 0:9cb694f00b7b | 224 | //! |
dflet | 0:9cb694f00b7b | 225 | //***************************************************************************** |
dflet | 0:9cb694f00b7b | 226 | extern signed long nvmem_create_entry(unsigned long file_id, unsigned long newlen); |
dflet | 0:9cb694f00b7b | 227 | |
dflet | 0:9cb694f00b7b | 228 | |
dflet | 0:9cb694f00b7b | 229 | //***************************************************************************** |
dflet | 0:9cb694f00b7b | 230 | // |
dflet | 0:9cb694f00b7b | 231 | // Mark the end of the C bindings section for C++ compilers. |
dflet | 0:9cb694f00b7b | 232 | // |
dflet | 0:9cb694f00b7b | 233 | //***************************************************************************** |
dflet | 0:9cb694f00b7b | 234 | |
dflet | 0:9cb694f00b7b | 235 | |
dflet | 0:9cb694f00b7b | 236 | //***************************************************************************** |
dflet | 0:9cb694f00b7b | 237 | // |
dflet | 0:9cb694f00b7b | 238 | // Close the Doxygen group. |
dflet | 0:9cb694f00b7b | 239 | //! @} |
dflet | 0:9cb694f00b7b | 240 | // |
dflet | 0:9cb694f00b7b | 241 | //***************************************************************************** |
dflet | 0:9cb694f00b7b | 242 | |
dflet | 0:9cb694f00b7b | 243 | |
dflet | 0:9cb694f00b7b | 244 | #ifdef __cplusplus |
dflet | 0:9cb694f00b7b | 245 | } |
dflet | 0:9cb694f00b7b | 246 | #endif // __cplusplus |
dflet | 0:9cb694f00b7b | 247 | |
dflet | 0:9cb694f00b7b | 248 | #endif // __NVRAM_H__ |
dflet | 0:9cb694f00b7b | 249 |