@@ -162,8 +162,9 @@ size_t Preferences::putBool(const char* key, const bool value) {
162
162
size_t Preferences::putString (const char * key, const char * value) {
163
163
string res = " " ;
164
164
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);
167
168
}
168
169
}
169
170
return 0 ;
@@ -307,9 +308,11 @@ bool Preferences::getBool(const char* key, const bool defaultValue) {
307
308
size_t Preferences::getString (const char * key, char * value, const size_t maxLen) {
308
309
string res = " " ;
309
310
if (key != nullptr && strlen (key) > 0 && value != nullptr ) {
311
+ modem.read_using_size ();
310
312
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
312
314
strncpy (value, res.c_str (), res.length ());
315
+ value[res.length ()] = ' \0 ' ;
313
316
return res.length ();
314
317
}
315
318
}
@@ -320,6 +323,7 @@ size_t Preferences::getString(const char* key, char* value, const size_t maxLen)
320
323
String Preferences::getString (const char * key, const String defaultValue) {
321
324
string res = " " ;
322
325
if (key != nullptr && strlen (key) > 0 ) {
326
+ modem.read_using_size ();
323
327
if (modem.write (string (PROMPT (_PREF_GET)), res, " %s%s,%d,%s\r\n " , CMD_WRITE (_PREF_GET), key, PT_STR, defaultValue.c_str ())) {
324
328
return String (res.c_str ());
325
329
}
0 commit comments