MBED_DEMOS / Mbed 2 deprecated mbed_mqtt_endpoint_ublox_ethernet

Dependencies:   C027 C12832 EthernetInterface StatusReporter LM75B MQTT-ansond endpoint_core endpoint_mqtt mbed-rtos mbed

Files at this revision

API Documentation at this revision

Comitter:
ansond
Date:
Wed Feb 26 18:59:08 2014 +0000
Parent:
6:34c07e145caa
Child:
8:45f9a920e82c
Commit message:
updates

Changed in this revision

HTTPTransport.cpp Show annotated file Show diff for this revision Revisions of this file
HTTPTransport.h Show annotated file Show diff for this revision Revisions of this file
MBEDEndpoint.cpp Show annotated file Show diff for this revision Revisions of this file
MQTTTransport.cpp Show annotated file Show diff for this revision Revisions of this file
MQTTTransport.h Show annotated file Show diff for this revision Revisions of this file
endpoint_core.lib Show annotated file Show diff for this revision Revisions of this file
splitstring.lib Show annotated file Show diff for this revision Revisions of this file
--- a/HTTPTransport.cpp	Wed Feb 26 07:22:34 2014 +0000
+++ b/HTTPTransport.cpp	Wed Feb 26 18:59:08 2014 +0000
@@ -22,7 +22,7 @@
  HTTPClient _http;
  
  // default constructor
- HTTPTransport::HTTPTransport(ErrorHandler *error_handler) : Transport(error_handler) {
+ HTTPTransport::HTTPTransport(ErrorHandler *error_handler,void *endpoint) : Transport(error_handler,endpoint) {
      this->m_http = &_http;
      this->m_connected = true;
  }
--- a/HTTPTransport.h	Wed Feb 26 07:22:34 2014 +0000
+++ b/HTTPTransport.h	Wed Feb 26 18:59:08 2014 +0000
@@ -30,7 +30,7 @@
         HTTPClient *m_http;
         
     public:
-        HTTPTransport(ErrorHandler *error_handler);
+        HTTPTransport(ErrorHandler *error_handler,void *endpoint);
         virtual ~HTTPTransport();
 
         bool httpGet(char *url,char *result,int result_length);
--- a/MBEDEndpoint.cpp	Wed Feb 26 07:22:34 2014 +0000
+++ b/MBEDEndpoint.cpp	Wed Feb 26 18:59:08 2014 +0000
@@ -28,6 +28,9 @@
  // Emulated Actions we can act on
  #include "EmulatedLightDimmerAction.h"
  #include "EmulatedLightSwitchAction.h"
+ 
+ // shutdown endpoint reference
+ extern void closedown(int code);
   
  // default constructor
  MBEDEndpoint::MBEDEndpoint(ErrorHandler *error_handler,EthernetInterface *ethernet) {
@@ -41,7 +44,7 @@
      if (success) success = this->initializeTransports();
      if (success) success = this->initializeLights();
      if (success) this->logger()->turnLEDGreen();
-     if (!success) this->logger()->turnLEDRed();
+     if (!success) closedown(2);
  }
  
  // default destructor
@@ -98,7 +101,6 @@
      if (this->m_transports[index] == NULL) {
           this->logger()->log("Initializing %s Transport...", key);
           this->m_transports[index] = transport;
-          transport->setEndpoint(this);
           if (this->m_transports[index] != NULL) success = this->m_transports[index]->connect();
       }
       else {
@@ -114,12 +116,12 @@
       
       if (success == true) {
         // MQTT Initialization
-        success = this->initializeTransport(MQTT_TRANSPORT,"MQTT",new MQTTTransport(this->m_error_handler));
+        success = this->initializeTransport(MQTT_TRANSPORT,"MQTT",new MQTTTransport(this->m_error_handler,this));
       }
       
       if (success == true) {
           // HTTP Initialization
-          success = this->initializeTransport(HTTP_TRANSPORT,"HTTP",new HTTPTransport(this->m_error_handler));
+          success = this->initializeTransport(HTTP_TRANSPORT,"HTTP",new HTTPTransport(this->m_error_handler,this));
       }
       return success;
  }
--- a/MQTTTransport.cpp	Wed Feb 26 07:22:34 2014 +0000
+++ b/MQTTTransport.cpp	Wed Feb 26 18:59:08 2014 +0000
@@ -21,8 +21,8 @@
  // Endpoint Support
  #include "MBEDEndpoint.h"
  
- // string splitter support
- #include "Splitter.h"
+ // splitstring support
+ #include "splitstring.h"
  
  // our transmitt instance 
  MQTTTransport *instance =  NULL;
@@ -36,10 +36,10 @@
  PubSubClient _mqtt(MQTT_HOSTNAME,MQTT_HOSTPORT,_mqtt_message_handler);
   
  // default constructor
- MQTTTransport::MQTTTransport(ErrorHandler *error_handler) : Transport(error_handler) {
+ MQTTTransport::MQTTTransport(ErrorHandler *error_handler,void *endpoint) : Transport(error_handler,endpoint) {
      this->m_mqtt = NULL;
      instance = this;
-     this->m_map = new MBEDToIOCResourceMap();
+     this->m_map = new MBEDToIOCResourceMap(error_handler);
  }
  
  // default destructor
@@ -65,49 +65,44 @@
  
  // process a MQTT Message
  void MQTTTransport::processMessage(char *message_name,char *payload, unsigned int len) {
-     char *message_type = NULL;
-     char *message_verb = NULL;
-     char *message_value = NULL;
-     char *message_opt = NULL;
-     char *endpoint_name = NULL;
+     char *message_type = "";
+     char *message_verb = "";
+     char *message_value = "";
+     char *message_opt = "";
+     
+     bool enable = true;
      
      // get our endpoint
      MBEDEndpoint *endpoint = (MBEDEndpoint *)this->getEndpoint();
-
-     char buffer[129];
-     memset(buffer,0,129);
-     memcpy(buffer,payload,len);
+     char *endpoint_name = endpoint->getEndpointName();
      
      // DEBUG
-     this->logger()->pause("MQTT Message: %s length=%d endpoint_name=%s",buffer,len,message_name);
-     
-     // split the string by the delimiter
-     this->logger()->pause("DOUG1");
-     Splitter *splitter = new Splitter(buffer,':',this->logger());
-     this->logger()->pause("DOUG2");
-     char** data = splitter->split();
-     this->logger()->pause("DOUG3");
-     int count = splitter->size(data);
-     this->logger()->pause("DOUG4");
-               
-     // get our endpoint name
-     this->logger()->pause("DOUG5");
-     endpoint_name = endpoint->getEndpointName();
-     
-     // format of the MQTT message:   message_type:verb|Parameter_X:value|keyword:optional_data
-     if (count > 0) message_type  = data[0];
-     if (count > 1) message_verb  = data[1];
-     if (count > 2) message_value = data[2];
-     if (count > 3) message_opt   = data[3];
-               
-     // DEBUG
-     this->logger()->log("Type: %s Name: %s Verb: %s Value: %s",message_type,message_name,message_verb,message_value);
-     
+     this->logger()->pause("MQTT Message: %s length=%d endpoint_name=%s",payload,len,message_name);
+
      // only respond if its for our node
-     if (false && strcmp(endpoint_name,message_name) == 0) {
+     if (enable && strcmp(endpoint_name,message_name) == 0) {
          // DEBUG
          this->logger()->log("Message: %s bound for %s... processing...",payload,endpoint_name);
-         
+                  
+         // format of the MQTT message:   message_type:verb|Parameter_X:value|keyword:optional_data        
+         splitstring *tmp = new splitstring(payload); 
+         this->logger()->pause("DOUG1");  
+         vector<string> data = tmp->split(':');    
+         this->logger()->pause("DOUG2");
+         if (data.size() > 0) message_type  = (char *)data[0].c_str();
+         this->logger()->pause("DOUG3");
+         if (data.size() > 1) message_verb  = (char *)data[1].c_str();
+         this->logger()->pause("DOUG4");
+         if (data.size() > 2) message_value = (char *)data[2].c_str();
+         this->logger()->pause("DOUG5");
+         if (data.size() > 3) message_opt   = (char *)data[3].c_str();
+         this->logger()->pause("DOUG6");
+               
+         // DEBUG
+         this->logger()->log("Type: %s Name: %s Verb: %s Value: %s",message_type,message_name,message_verb,message_value);
+               
+         return;
+            
          // load endpoints
          if (message_type != NULL && strcmp(message_type,"Endpoint") == 0) {
              if (message_name != NULL && strcmp(message_name,"all") == 0) {
@@ -175,17 +170,17 @@
                  }
              }
          }
+         
+         // clean up the array
+         //if (data != NULL) splitter->clear(data);
+     
+         // clean up
+         //if (splitter != NULL) delete splitter;
      }
      else {
          // message not bound for our node
          this->logger()->log("MQTT Message: %s not for us: %s... ignoring...",payload,endpoint_name);
-     }
-     
-     // clean up the array
-     if (data != NULL) splitter->clear(data);
-     
-     // clean up
-     if (splitter != NULL) delete splitter;
+     }     
  }
  
  void MQTTTransport::sendResourceValue(char *endpoint_name,char *parameter_name,char *value) {
@@ -221,16 +216,19 @@
                  else {
                      this->logger()->log("MQTT Subscribe: Topic: %s FAILED",MQTT_IOC_TOPIC);
                      this->logger()->turnLEDRed();
+                     this->m_connected = false;
                  }
              }
              else {
                  this->logger()->log("MQTT Connect: ID: %s FAILED",id);
                  this->logger()->turnLEDRed();
+                 this->m_connected = false;
              }
          }
          else {
              this->logger()->log("MQTT Unable to allocate new instance");
              this->logger()->turnLEDRed();
+             this->m_connected = false;
          }
      }
      else {
--- a/MQTTTransport.h	Wed Feb 26 07:22:34 2014 +0000
+++ b/MQTTTransport.h	Wed Feb 26 18:59:08 2014 +0000
@@ -35,7 +35,7 @@
         char                  m_endpoint_name[LIGHT_NAME_LEN+1];
         
     public:
-        MQTTTransport(ErrorHandler *error_handler);
+        MQTTTransport(ErrorHandler *error_handler,void *endpoint);
         virtual ~MQTTTransport();
        
         void processMessage(char *message_name,char *payload, unsigned int len);
--- a/endpoint_core.lib	Wed Feb 26 07:22:34 2014 +0000
+++ b/endpoint_core.lib	Wed Feb 26 18:59:08 2014 +0000
@@ -1,1 +1,1 @@
-http://mbed.org/users/ansond/code/endpoint_core/#0e62467605e9
+http://mbed.org/users/ansond/code/endpoint_core/#f2dbbd852e08
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/splitstring.lib	Wed Feb 26 18:59:08 2014 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/ansond/code/splitstring/#8b94fff26053