Maxim Integrated / Mbed OS MAXREFDES155#

Dependencies:   MaximInterface

Revision:
0:33d4e66780c0
Child:
2:50d5ecf99275
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/CC3100_transport.cpp	Fri Feb 24 11:23:12 2017 -0600
@@ -0,0 +1,106 @@
+/*******************************************************************************
+* Copyright (C) 2017 Maxim Integrated Products, Inc., All Rights Reserved.
+*
+* Permission is hereby granted, free of charge, to any person obtaining a
+* copy of this software and associated documentation files (the "Software"),
+* to deal in the Software without restriction, including without limitation
+* the rights to use, copy, modify, merge, publish, distribute, sublicense,
+* and/or sell copies of the Software, and to permit persons to whom the
+* Software is furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included
+* in all copies or substantial portions of the Software.
+*
+* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+* IN NO EVENT SHALL MAXIM INTEGRATED BE LIABLE FOR ANY CLAIM, DAMAGES
+* OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+* OTHER DEALINGS IN THE SOFTWARE.
+*
+* Except as contained in this notice, the name of Maxim Integrated
+* Products, Inc. shall not be used except as stated in the Maxim Integrated
+* Products, Inc. Branding Policy.
+*
+* The mere transfer of this software does not imply any licenses
+* of trade secrets, proprietary technology, copyrights, patents,
+* trademarks, maskwork rights, or any other form of intellectual
+* property whatsoever. Maxim Integrated Products, Inc. retains all
+* ownership rights.
+*******************************************************************************/
+
+#include <sstream>
+#include <cstring>
+#include <InterruptIn.h>
+#include <DigitalOut.h>
+#include "CC3100.hpp"
+#include "CC3100_transport.h"
+#include "CC3100_pins.h"
+
+static const SlFd_t invalidFd = NULL;
+
+static mbed::InterruptIn irq(HOST_INTR_PIN);
+static mbed::DigitalOut nHIB(nHIB_PIN, 0);
+
+static SL_P_EVENT_HANDLER pIrqEventHandler = NULL;
+static void* pIrqEventHandlerValue = NULL;
+
+SlFd_t sl_IfOpen(const char *ifName, unsigned long flags)
+{    
+    SlFd_t fd = invalidFd;
+    if (ifName != NULL)
+    {
+        std::string ifNameString(ifName);
+        std::istringstream ifNameStream(ifNameString);
+        ifNameStream >> fd;
+    }
+    return fd;
+}
+
+int sl_IfClose(SlFd_t fd)
+{
+    return 0; // Success
+}
+
+int sl_IfRead(SlFd_t fd, unsigned char *pBuff, int len)
+{
+    if (fd == invalidFd)
+        return 0; // Failure
+    std::memset(pBuff, 0xFF, len);
+    static_cast<CC3100::SPI *>(fd)->transfer(pBuff, len, pBuff);
+    return len; // Success
+}
+
+int sl_IfWrite(SlFd_t fd, const unsigned char *pBuff, int len)
+{
+    if (fd == invalidFd)
+        return 0; // Failure
+    static_cast<CC3100::SPI *>(fd)->transfer(pBuff, len, NULL);
+    return len; // Success
+}
+
+int sl_IfRegIntHdlr(SL_P_EVENT_HANDLER InterruptHdl , void* pValue)
+{
+    pIrqEventHandler = InterruptHdl;
+    pIrqEventHandlerValue = pValue;
+    return 0; // Success
+}
+
+static void interruptHandler(void)
+{
+    if (pIrqEventHandler != NULL)
+        pIrqEventHandler(pIrqEventHandlerValue);
+}
+
+void sl_DeviceEnable(void)
+{
+    irq.rise(&interruptHandler);
+    nHIB = 1;
+}
+
+void sl_DeviceDisable(void)
+{
+    irq.rise(NULL);
+    nHIB = 0;
+}