diff options
| author | Yuval Adam <yuv.adm@gmail.com> | 2014-08-08 14:42:07 +0300 |
|---|---|---|
| committer | Yuval Adam <yuv.adm@gmail.com> | 2014-08-08 14:42:07 +0300 |
| commit | a6163888f3c56123b1db313743c6147ba498732c (patch) | |
| tree | ff7d15d991d1d09ba6cbc0cec80924f57445bfdd /third_party/exosite/exosite_meta.c | |
| parent | c3e4c9a25c2910d2d66d52215b3406b13d5b23d5 (diff) | |
Add third_party libs
Diffstat (limited to 'third_party/exosite/exosite_meta.c')
| -rw-r--r-- | third_party/exosite/exosite_meta.c | 189 |
1 files changed, 189 insertions, 0 deletions
diff --git a/third_party/exosite/exosite_meta.c b/third_party/exosite/exosite_meta.c new file mode 100644 index 0000000..91b7755 --- /dev/null +++ b/third_party/exosite/exosite_meta.c @@ -0,0 +1,189 @@ +/*****************************************************************************
+*
+* exosite_meta.c - Exosite meta information handler.
+* Copyright (c) 2013, Exosite LLC
+* All rights reserved.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are met:
+*
+* * Redistributions of source code must retain the above copyright notice,
+* this list of conditions and the following disclaimer.
+* * Redistributions in binary form must reproduce the above copyright
+* notice, this list of conditions and the following disclaimer in the
+* documentation and/or other materials provided with the distribution.
+* * Neither the name of Exosite LLC nor the names of its contributors may
+* be used to endorse or promote products derived from this software
+* without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+* POSSIBILITY OF SUCH DAMAGE.
+*
+*****************************************************************************/
+
+#include "exosite_meta.h"
+#include "drivers/exosite_hal_lwip.h"
+#include <string.h>
+//#include <inc/common.h>
+
+// external functions
+// externs
+// local functions
+// exported functions
+// local defines
+// globals
+
+/*****************************************************************************
+*
+* exosite_meta_init
+*
+* \param int reset : 1 - reset meta data
+*
+* \return None
+*
+* \brief Does whatever we need to do to initialize the NV meta structure
+*
+*****************************************************************************/
+void exosite_meta_init(int reset)
+{
+ char strBuf[META_MARK_SIZE];
+
+ exoHAL_EnableMeta(); //turn on the necessary hardware / peripherals
+
+ //check our meta mark - if it isn't there, we wipe the meta structure
+ exosite_meta_read((unsigned char *)strBuf, META_MARK_SIZE, META_MARK);
+ if (strncmp(strBuf, EXOMARK, META_MARK_SIZE) || reset)
+ exosite_meta_defaults();
+
+ return;
+}
+
+
+/*****************************************************************************
+*
+* exosite_meta_defaults
+*
+* \param None
+*
+* \return None
+*
+* \brief Writes default meta values to NV memory. Erases existing meta
+* information!
+*
+*****************************************************************************/
+void exosite_meta_defaults(void)
+{
+ const unsigned char meta_server_ip[6] = {173,255,209,28,0,80};
+
+ exoHAL_EraseMeta(); //erase the information currently in meta
+ exosite_meta_write((unsigned char *)meta_server_ip, 6, META_SERVER); //store server IP
+ exosite_meta_write((unsigned char *)EXOMARK, META_MARK_SIZE, META_MARK); //store exosite mark
+
+ return;
+}
+
+
+/*****************************************************************************
+*
+* exosite_meta_write
+*
+* \param write_buffer - string buffer containing info to write to meta;
+* srcBytes - size of string in bytes; element - item from
+* MetaElements enum.
+*
+* \return None
+*
+* \brief Writes specific meta information to meta memory
+*
+*****************************************************************************/
+void exosite_meta_write(unsigned char * write_buffer, unsigned short srcBytes, unsigned char element)
+{
+ exosite_meta * meta_info = 0;
+
+ //TODO - do not write if the data already there is identical...
+
+ switch (element) {
+ case META_CIK:
+ if (srcBytes > META_CIK_SIZE) return;
+ exoHAL_WriteMetaItem(write_buffer, srcBytes, (int)meta_info->cik); //store CIK
+ break;
+ case META_SERVER:
+ if (srcBytes > META_SERVER_SIZE) return;
+ exoHAL_WriteMetaItem(write_buffer, srcBytes, (int)meta_info->server); //store server IP
+ break;
+ case META_MARK:
+ if (srcBytes > META_MARK_SIZE) return;
+ exoHAL_WriteMetaItem(write_buffer, srcBytes, (int)meta_info->mark); //store exosite mark
+ break;
+ case META_UUID:
+ if (srcBytes > META_UUID_SIZE) return;
+ exoHAL_WriteMetaItem(write_buffer, srcBytes, (int)meta_info->uuid); //store UUID
+ break;
+ case META_MFR:
+ if (srcBytes > META_MFR_SIZE) return;
+ exoHAL_WriteMetaItem(write_buffer, srcBytes, (int)meta_info->mfr); //store manufacturing info
+ break;
+ case META_NONE:
+ default:
+ break;
+ }
+
+ return;
+}
+
+
+/*****************************************************************************
+*
+* exosite_meta_read
+*
+* \param read_buffer - string buffer to receive element data; destBytes -
+* size of buffer in bytes; element - item from MetaElements enum.
+*
+* \return None
+*
+* \brief Writes specific meta information to meta memory
+*
+*****************************************************************************/
+void exosite_meta_read(unsigned char * read_buffer, unsigned short destBytes, unsigned char element)
+{
+ exosite_meta * meta_info = 0;
+
+ switch (element) {
+ case META_CIK:
+ if (destBytes < META_CIK_SIZE) return;
+ exoHAL_ReadMetaItem(read_buffer, META_CIK_SIZE, (int)meta_info->cik); //read CIK
+ break;
+ case META_SERVER:
+ if (destBytes < META_SERVER_SIZE) return;
+ exoHAL_ReadMetaItem(read_buffer, META_SERVER_SIZE, (int)meta_info->server); //read server IP
+ break;
+ case META_MARK:
+ if (destBytes < META_MARK_SIZE) return;
+ exoHAL_ReadMetaItem(read_buffer, META_MARK_SIZE, (int)meta_info->mark); //read exosite mark
+ break;
+ case META_UUID:
+ if (destBytes < META_UUID_SIZE) return;
+ exoHAL_ReadMetaItem(read_buffer, META_UUID_SIZE, (int)meta_info->uuid); //read provisioning UUID
+ break;
+ case META_MFR:
+ if (destBytes < META_MFR_SIZE) return;
+ exoHAL_ReadMetaItem(read_buffer, META_MFR_SIZE, (int)meta_info->mfr); //read manufacturing info
+ break;
+ case META_NONE:
+ default:
+ break;
+ }
+
+ return;
+}
+
+
|
