MAXREFDES143#: DeepCover Embedded Security in IoT Authenticated Sensing & Notification

Dependencies:   MaximInterface mbed

The MAXREFDES143# is an Internet of Things (IoT) embedded security reference design, built to protect an industrial sensing node by means of authentication and notification to a web server. The hardware includes a peripheral module representing a protected sensor node monitoring operating temperature and remaining life of a filter (simulated through ambient light sensing) and an mbed shield representing a controller node responsible for monitoring one or more sensor nodes. The design is hierarchical with each controller node communicating data from connected sensor nodes to a web server that maintains a centralized log and dispatches notifications as necessary. The mbed shield contains a Wi-Fi module, a DS2465 coprocessor with 1-Wire® master function, an LCD, LEDs, and pushbuttons. The protected sensor node contains a DS28E15 authenticator, a DS7505 temperature sensor, and a MAX44009 light sensor. The mbed shield communicates to a web server by the onboard Wi-Fi module and to the protected sensor node with I2C and 1-Wire. The MAXREFDES143# is equipped with a standard shield connector for immediate testing using an mbed board such as the MAX32600MBED#. The simplicity of this design enables rapid integration into any star-topology IoT network requiring the heightened security with low overhead provided by the SHA-256 symmetric-key algorithm.

More information about the MAXREFDES143# is available on the Maxim Integrated website.

Files at this revision

API Documentation at this revision

Comitter:
IanBenzMaxim
Date:
Thu Jan 26 18:00:02 2017 -0600
Parent:
29:590a7561318b
Child:
31:7b10bcb3e0fc
Commit message:
Removed unused functionality from ESP8266.

Changed in this revision

ESP8266.cpp Show annotated file Show diff for this revision Revisions of this file
ESP8266.hpp Show annotated file Show diff for this revision Revisions of this file
SensorNode.cpp Show annotated file Show diff for this revision Revisions of this file
WebServerInterface.cpp Show annotated file Show diff for this revision Revisions of this file
--- a/ESP8266.cpp	Thu Jan 26 16:55:23 2017 -0600
+++ b/ESP8266.cpp	Thu Jan 26 18:00:02 2017 -0600
@@ -36,8 +36,6 @@
 #include "Timer.h"
 #include "wait_api.h"
 
-ESP8266* ESP8266::defaultInstance = NULL;
-
 static inline void disableRecvData()
 {
   __disable_irq();
@@ -48,17 +46,6 @@
   __enable_irq();
 }
 
-void ESP8266::setDefaultInstance(ESP8266 * const instance)
-{
-  if (instance != NULL)
-    defaultInstance = instance;
-}
-
-ESP8266** ESP8266::getDefaultInstance()
-{
-  return &defaultInstance;
-}
-
 ESP8266::ESP8266(const PinName tx, const PinName rx, const PinName rst, const PinName CH_PD, const int baud, mbed::Serial * debugMsgIntf)
   : AT_intf(tx, rx), resetPin(rst), powerDownPin(CH_PD), debugMsg(debugMsgIntf), parseRecvReset(false)
 {
@@ -70,15 +57,6 @@
     resetPin = 1;
   // Power down device at startup due to high current demand
   setPowered(false);
-  
-  if (defaultInstance == NULL)
-    defaultInstance = this;
-}
-
-ESP8266::~ESP8266()
-{
-  if (defaultInstance == this)
-    defaultInstance = NULL;
 }
 
 void ESP8266::reset()
--- a/ESP8266.hpp	Thu Jan 26 16:55:23 2017 -0600
+++ b/ESP8266.hpp	Thu Jan 26 18:00:02 2017 -0600
@@ -108,12 +108,6 @@
     std::ostringstream cmdStream;
   };
   
-  /// @{
-  /// Default instance support for use with mbed Sockets.
-  static void setDefaultInstance(ESP8266 * const instance);
-  static ESP8266** getDefaultInstance();
-  /// @}
-  
   /// @param tx Transmit pin from mbed to ESP8266.
   /// @param rx Receive pin from ESP8266 to mbed.
   /// @param rst Reset pin on ESP8266.
@@ -121,7 +115,6 @@
   /// @param baud Baud rate that the ESP8266 is using.
   /// @param debugMsgIntf Optional serial interface for debugging messages.
   ESP8266(const PinName tx, const PinName rx, const PinName rst, const PinName CH_PD, const int baud, mbed::Serial * debugMsgIntf = NULL);
-  ~ESP8266();
   
   /// Reset the ESP8266 via the hardware reset pin.
   void reset();
@@ -184,9 +177,7 @@
   /// Clear all received data from the buffer.
   void clearRecvData();
   
-private:
-  static ESP8266 * defaultInstance; ///< Default instance support for use with mbed Sockets.
-  
+private:  
   mbed::Serial AT_intf;
   mbed::DigitalOut resetPin;
   mutable mbed::DigitalOut powerDownPin; ///< @note Mark as mutable for use in powered().
--- a/SensorNode.cpp	Thu Jan 26 16:55:23 2017 -0600
+++ b/SensorNode.cpp	Thu Jan 26 18:00:02 2017 -0600
@@ -62,7 +62,7 @@
 }
 
 SensorNode::SensorNode(mbed::I2C & i2c, uint8_t ds7505_i2c_addr, uint8_t max44009_i2c_addr, DS2465 & ds2465)
-  : m_initialLux(1),ds2465(ds2465), selector(ds2465), ds28e15(selector), ds7505(i2c, ds7505_i2c_addr), max44009(i2c, max44009_i2c_addr)
+  : m_initialLux(1), ds2465(ds2465), selector(ds2465), ds28e15(selector), ds7505(i2c, ds7505_i2c_addr), max44009(i2c, max44009_i2c_addr)
 {
   if (!rngInitialized)
   {
--- a/WebServerInterface.cpp	Thu Jan 26 16:55:23 2017 -0600
+++ b/WebServerInterface.cpp	Thu Jan 26 18:00:02 2017 -0600
@@ -42,8 +42,8 @@
 
 using OneWire::ISha256MacCoproc;
 
-const char WebServerInterface::wifiSsid[] = "TWS iPhone";
-const char WebServerInterface::wifiPassword[] = "maxim1234";
+const char WebServerInterface::wifiSsid[] = "WifiSsid";
+const char WebServerInterface::wifiPassword[] = "WifiPassword";
 const char WebServerInterface::serverAddress[] = "www.mxim-security.us";
 const unsigned int WebServerInterface::serverPort = 80;
 const char WebServerInterface::serverPostPath[] = "/post.php";