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:
155:582462821bd7
Parent:
154:6e60f310ab78
Child:
184:b73d6c976063
diff -r 6e60f310ab78 -r 582462821bd7 Preferences.cpp
--- a/Preferences.cpp	Thu Apr 03 00:50:36 2014 +0000
+++ b/Preferences.cpp	Mon Apr 07 03:14:54 2014 +0000
@@ -26,7 +26,7 @@
  // default constructor
  Preferences::Preferences(ErrorHandler *error_handler) : BaseClass(error_handler,NULL) {
      this->m_num_preferences = 0;
-#ifndef _ENDPOINT_UBLOX_PLATFORM    
+#ifndef _ENDPOINT_UBLOX_PLATFORM  
      this->initialize();
 #endif
  }
@@ -37,19 +37,18 @@
  
  // initialize the preferences from the preferences file
  bool Preferences::initialize() {
+     bool success = true;
+                       
      char name[PREFERENCE_NAME_LEN+1];
      char value[PREFERENCE_VALUE_LEN+1];
      char buffer[PREFERENCE_NAME_LEN + PREFERENCE_VALUE_LEN + 10];
-     bool success = true;
-                
+
      // initialize the memory buffers and count
      for(int i=0;i<MAX_NUM_PREFERENCES;++i) {
-         this->logger()->log("DOUG 1: index=%d",i);
          memset(this->m_preferences[i].name,0,PREFERENCE_NAME_LEN+1);
-         this->logger()->log("DOUG 2: index=%d",i);
          memset(this->m_preferences[i].value,0,PREFERENCE_VALUE_LEN+1);
      }
-    
+   
      // initialize temp buffers
      memset(name,0,PREFERENCE_NAME_LEN+1);
      memset(value,0,PREFERENCE_VALUE_LEN+1);
@@ -111,7 +110,7 @@
  }
  
  // integer preference with defaults
- int Preferences::getIntPreference(char *name,int def_value) {\
+ int Preferences::getIntPreference(char *name,int def_value) {
      int int_value = def_value;
      char buffer[PREFERENCE_VALUE_LEN+1];
      memset(buffer,0,PREFERENCE_VALUE_LEN+1);
@@ -135,31 +134,33 @@
  char *Preferences::getPreference(char *name,char *buffer,int buffer_length,char *def_value) {
      char *value = NULL;
      
-     // clean the buffer
-     memset(buffer,0,buffer_length);
-     
-     // DEBUG
-     //this->logger()->log("GET: %s  DEFAULT: %s  BUFFER_LEN=%d",name,def_value,buffer_length);
-     
-     // get our index
-     int index = this->indexOfPreference(name);
-     if (index >= 0) {
-         // fill with our value
-         strncpy(buffer,this->m_preferences[index].value,this->min(buffer_length,strlen(this->m_preferences[index].value)));
-         value = buffer;
-         //this->logger()->log("Preference GET: %s=%s",name,value);
-     }
-     else {
-         // fill with the default
-         if (def_value != NULL) {
-             strncpy(buffer,def_value,this->min(buffer_length,strlen(def_value)));
+     if (buffer != NULL && buffer_length > 0) {
+         // clean the buffer
+         memset(buffer,0,buffer_length);
+         
+         // DEBUG
+         //this->logger()->log("GET: %s  DEFAULT: %s  BUFFER_LEN=%d",name,def_value,buffer_length);
+         
+         // get our index
+         int index = this->indexOfPreference(name);
+         if (index >= 0) {
+             // fill with our value
+             strncpy(buffer,this->m_preferences[index].value,this->min(buffer_length,strlen(this->m_preferences[index].value)));
              value = buffer;
-             //this->logger()->log("Using Defaults for %s=%s",name,value);
+             //this->logger()->log("Preference GET: %s=%s",name,value);
          }
          else {
-             // no defaults
-             //this->logger()->log("No default for GET: %s",name);
-             value = buffer;
+             // fill with the default
+             if (def_value != NULL) {
+                 strncpy(buffer,def_value,this->min(buffer_length,strlen(def_value)));
+                 value = buffer;
+                 //this->logger()->log("Using Defaults for %s=%s",name,value);
+             }
+             else {
+                 // no defaults
+                 //this->logger()->log("No default for GET: %s",name);
+                 value = buffer;
+             }
          }
      }
      
@@ -173,8 +174,7 @@
      int index = -1;
      
      // parameter check
-     if (name != NULL && strlen(name) > 0) {
-         
+     if (name != NULL && strlen(name) > 0 && this->m_num_preferences > 0) {
          // loop until we find the name.. then stop and record its index
          for(int i=0;i<this->m_num_preferences && !found;++i) {
              if (strcmp(name,this->m_preferences[i].name) == 0) {