Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

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

‎libraries/Preferences/src/Preferences.cpp‎

Lines changed: 7 additions & 3 deletions
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)

AltStyle によって変換されたページ (->オリジナル) /