Skip to content

Commit 30ba157

Browse files
andreagilardonipennam
authored andcommitted
[preferences] improving string get and put
1 parent 0f3333b commit 30ba157

File tree

1 file changed

+7
-3
lines changed

1 file changed

+7
-3
lines changed

Diff for: libraries/Preferences/src/Preferences.cpp

+7-3
Original file line numberDiff line numberDiff line change
@@ -162,8 +162,9 @@ size_t Preferences::putBool(const char* key, const bool value) {
162162
size_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) {
307308
size_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)
320323
String 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

Comments
 (0)