@@ -162,8 +162,9 @@ size_t Preferences::putBool(const char* key, const bool value) {
162162size_t Preferences::putString (const char * key, const char * value) {
163163 string res = " " ;
164164 if (key != nullptr && strlen (key) > 0 && value != nullptr && strlen (value) > 0 ) {
165- if (modem.write (string (PROMPT (_PREF_PUT)), res, " %s%s,%d,%s\r\n " , CMD_WRITE (_PREF_PUT), key, PT_STR, value)) {
166- return atoi (res.c_str ());
165+ modem.write_nowait (string (PROMPT (_PREF_PUT)), res, " %s%s,%d,%d\r\n " , CMD_WRITE (_PREF_PUT), key, PT_STR, strlen (value));
166+ if (modem.passthrough ((uint8_t *)value, strlen (value))) {
167+ return strlen (value);
167168 }
168169 }
169170 return 0 ;
@@ -307,9 +308,11 @@ bool Preferences::getBool(const char* key, const bool defaultValue) {
307308size_t Preferences::getString (const char * key, char * value, const size_t maxLen) {
308309 string res = " " ;
309310 if (key != nullptr && strlen (key) > 0 && value != nullptr ) {
311+ modem.read_using_size ();
310312 if (modem.write (string (PROMPT (_PREF_GET)), res, " %s%s,%d\r\n " , CMD_WRITE (_PREF_GET), key, PT_STR)) {
311- if (res.length () < maxLen) {
313+ if (res.length ()+ 1 < maxLen) { // take into account \0 at the end
312314 strncpy (value, res.c_str (), res.length ());
315+ value[res.length ()] = ' \0 ' ;
313316 return res.length ();
314317 }
315318 }
@@ -320,6 +323,7 @@ size_t Preferences::getString(const char* key, char* value, const size_t maxLen)
320323String Preferences::getString (const char * key, const String defaultValue) {
321324 string res = " " ;
322325 if (key != nullptr && strlen (key) > 0 ) {
326+ modem.read_using_size ();
323327 if (modem.write (string (PROMPT (_PREF_GET)), res, " %s%s,%d,%s\r\n " , CMD_WRITE (_PREF_GET), key, PT_STR, defaultValue.c_str ())) {
324328 return String (res.c_str ());
325329 }
0 commit comments