Core Base Classes for the Light Endpoints

Dependencies:   BufferedSerial

Dependents:   mbed_mqtt_endpoint_ublox_ethernet mbed_mqtt_endpoint_ublox_cellular mbed_nsp_endpoint_ublox_cellular mbed_nsp_endpoint_ublox_ethernet ... more

Revision:
47:fa96ddc36f04
Parent:
43:361a61395588
Child:
85:8af3f3101ba3
--- a/MBEDToIOCResourceMap.cpp	Sat Mar 01 16:10:08 2014 +0000
+++ b/MBEDToIOCResourceMap.cpp	Sat Mar 01 17:01:46 2014 +0000
@@ -22,12 +22,13 @@
  MBEDToIOCResourceMap::MBEDToIOCResourceMap(ErrorHandler *error_handler) {
      this->m_error_handler = error_handler;
      for(int i=0;i<NUM_MAPPINGS;++i) this->m_map[i] = NULL;
+     this->m_count = 0;
      this->createMap();
  }
  
  // destructor
  MBEDToIOCResourceMap::~MBEDToIOCResourceMap() {
-     for(int i=0;i<NUM_MAPPINGS;++i)
+     for(int i=0;i<this->m_count;++i)
         if (this->m_map[i] != NULL) delete this->m_map[i];
  }
  
@@ -40,7 +41,7 @@
      char *ioc_name = NULL;
           
      // lookup the IOC name and map it to an MBED (NSP) name
-     for(int i=0;i<NUM_MAPPINGS && !found && this->m_map[i] != NULL;++i) {
+     for(int i=0;i<this->m_count && !found && this->m_map[i] != NULL && mbed_name != NULL;++i) {
          if (strcmp(this->m_map[i]->mbedName(),mbed_name) == 0) {
              found = true;
              ioc_name = this->m_map[i]->iocName();
@@ -58,7 +59,7 @@
      char *actual_ioc_name = this->convertFromNickName(ioc_name);
      
      // lookup the IOC name and map it to an MBED (NSP) name
-     for(int i=0;i<NUM_MAPPINGS && !found && this->m_map[i] != NULL;++i) {
+     for(int i=0;i<this->m_count && !found && this->m_map[i] != NULL && ioc_name != NULL;++i) {
          if (strcmp(this->m_map[i]->iocName(),actual_ioc_name) == 0) {
              found = true;
              mbed_name = this->m_map[i]->mbedName();
@@ -72,8 +73,8 @@
      char *actual_name = ioc_name;
      bool found = false;
 
-     for(int i=0;i<NUM_MAPPINGS && !found && this->m_map[i] != NULL;++i) {
-         if (strcmp(this->m_map[i]->iocNickName(),ioc_name) == 0) {
+     for(int i=0;i<this->m_count && !found && this->m_map[i] != NULL && ioc_name != NULL;++i) {
+         if (this->m_map[i]->iocNickName() != NULL && strcmp(this->m_map[i]->iocNickName(),ioc_name) == 0) {
              found = true;
              actual_name = this->m_map[i]->iocName();
          }
@@ -84,24 +85,23 @@
  
  // create our map - this MUST match the Resource Mapping found in the gateway mapping database
  void MBEDToIOCResourceMap::createMap() {
-     int i = 0;
-     this->m_map[i++] = new MapEntry("Property_1","/dev/addldata");
-     this->m_map[i++] = new MapEntry("Property_2","/dev/location");
-     this->m_map[i++] = new MapEntry("Property_3","/dev/bat");
-     this->m_map[i++] = new MapEntry("Property_4","/sen/I");
-     this->m_map[i++] = new MapEntry("Property_5","/nw/ipaddr");
-     this->m_map[i++] = new MapEntry("Property_6","/lt/0/dim","Dimming");
-     this->m_map[i++] = new MapEntry("Property_7","/nw/eripaddr");
-     this->m_map[i++] = new MapEntry("Property_8","/lt/0/on","EndpointStatus");
-     this->m_map[i++] = new MapEntry("Property_9","/dev/mdl");
-     this->m_map[i++] = new MapEntry("Property_10","/gps/int");
-     this->m_map[i++] = new MapEntry("Property_11","/gps/fix");
-     this->m_map[i++] = new MapEntry("Property_12","/nw/pipaddr");
-     this->m_map[i++] = new MapEntry("Property_13","/nw/prssi");
-     this->m_map[i++] = new MapEntry("Property_14","/sen/temp");
-     this->m_map[i++] = new MapEntry("Property_15","/sen/V");
-     this->m_map[i++] = new MapEntry("LOCATION","/gps/loc");
+     this->m_map[this->m_count++] = new MapEntry("Property_1","/dev/addldata");
+     this->m_map[this->m_count++] = new MapEntry("Property_2","/dev/location");
+     this->m_map[this->m_count++] = new MapEntry("Property_3","/dev/bat");
+     this->m_map[this->m_count++] = new MapEntry("Property_4","/sen/I");
+     this->m_map[this->m_count++] = new MapEntry("Property_5","/nw/ipaddr");
+     this->m_map[this->m_count++] = new MapEntry("Property_6","/lt/0/dim","Dimming");
+     this->m_map[this->m_count++] = new MapEntry("Property_7","/nw/eripaddr");
+     this->m_map[this->m_count++] = new MapEntry("Property_8","/lt/0/on","EndpointStatus");
+     this->m_map[this->m_count++] = new MapEntry("Property_9","/dev/mdl");
+     this->m_map[this->m_count++] = new MapEntry("Property_10","/gps/int");
+     this->m_map[this->m_count++] = new MapEntry("Property_11","/gps/fix");
+     this->m_map[this->m_count++] = new MapEntry("Property_12","/nw/pipaddr");
+     this->m_map[this->m_count++] = new MapEntry("Property_13","/nw/prssi");
+     this->m_map[this->m_count++] = new MapEntry("Property_14","/sen/temp");
+     this->m_map[this->m_count++] = new MapEntry("Property_15","/sen/V");
+     this->m_map[this->m_count++] = new MapEntry("LOCATION","/gps/loc");
      
      // DEBUG
-     this->logger()->log("Installed %d Resource Mappings.",i);
+     this->logger()->log("Installed %d Resource Mappings.",this->m_count);
  }
\ No newline at end of file