summaryrefslogtreecommitdiff
path: root/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/examples/JsonConfigFile
diff options
context:
space:
mode:
authorkrolyxon <me@krolyxon.com>2026-06-08 23:10:46 +0530
committerkrolyxon <me@krolyxon.com>2026-06-08 23:10:46 +0530
commit3120783000d0025b183b0397acaa8b769499eb38 (patch)
tree1c4f93be213f1b1d48f59e554562d847b4e7c25e /.pio/libdeps/esp32-s3-n16r8/ArduinoJson/examples/JsonConfigFile
Initial gh-pages firmware hosting
Diffstat (limited to '.pio/libdeps/esp32-s3-n16r8/ArduinoJson/examples/JsonConfigFile')
-rw-r--r--.pio/libdeps/esp32-s3-n16r8/ArduinoJson/examples/JsonConfigFile/JsonConfigFile.ino152
1 files changed, 152 insertions, 0 deletions
diff --git a/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/examples/JsonConfigFile/JsonConfigFile.ino b/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/examples/JsonConfigFile/JsonConfigFile.ino
new file mode 100644
index 0000000..0709a6c
--- /dev/null
+++ b/.pio/libdeps/esp32-s3-n16r8/ArduinoJson/examples/JsonConfigFile/JsonConfigFile.ino
@@ -0,0 +1,152 @@
+// ArduinoJson - https://arduinojson.org
+// Copyright © 2014-2026, Benoit BLANCHON
+// MIT License
+//
+// This example shows how to store your project configuration in a file.
+// It uses the SD library but can be easily modified for any other file-system.
+//
+// The file contains a JSON document with the following content:
+// {
+// "hostname": "examples.com",
+// "port": 2731
+// }
+//
+// To run this program, you need an SD card connected to the SPI bus as follows:
+// * MOSI <-> pin 11
+// * MISO <-> pin 12
+// * CLK <-> pin 13
+// * CS <-> pin 4
+//
+// https://arduinojson.org/v7/example/config/
+
+#include <ArduinoJson.h>
+#include <SD.h>
+#include <SPI.h>
+
+// Our configuration structure.
+struct Config {
+ char hostname[64];
+ int port;
+};
+
+const char* filename = "/config.txt"; // <- SD library uses 8.3 filenames
+Config config; // <- global configuration object
+
+// Loads the configuration from a file
+void loadConfiguration(const char* filename, Config& config) {
+ // Open file for reading
+ File file = SD.open(filename);
+
+ // Allocate a temporary JsonDocument
+ JsonDocument doc;
+
+ // Deserialize the JSON document
+ DeserializationError error = deserializeJson(doc, file);
+ if (error)
+ Serial.println(F("Failed to read file, using default configuration"));
+
+ // Copy values from the JsonDocument to the Config
+ config.port = doc["port"] | 2731;
+ strlcpy(config.hostname, // <- destination
+ doc["hostname"] | "example.com", // <- source
+ sizeof(config.hostname)); // <- destination's capacity
+
+ // Close the file (Curiously, File's destructor doesn't close the file)
+ file.close();
+}
+
+// Saves the configuration to a file
+void saveConfiguration(const char* filename, const Config& config) {
+ // Delete existing file, otherwise the configuration is appended to the file
+ SD.remove(filename);
+
+ // Open file for writing
+ File file = SD.open(filename, FILE_WRITE);
+ if (!file) {
+ Serial.println(F("Failed to create file"));
+ return;
+ }
+
+ // Allocate a temporary JsonDocument
+ JsonDocument doc;
+
+ // Set the values in the document
+ doc["hostname"] = config.hostname;
+ doc["port"] = config.port;
+
+ // Serialize JSON to file
+ if (serializeJson(doc, file) == 0) {
+ Serial.println(F("Failed to write to file"));
+ }
+
+ // Close the file
+ file.close();
+}
+
+// Prints the content of a file to the Serial
+void printFile(const char* filename) {
+ // Open file for reading
+ File file = SD.open(filename);
+ if (!file) {
+ Serial.println(F("Failed to read file"));
+ return;
+ }
+
+ // Extract each characters by one by one
+ while (file.available()) {
+ Serial.print((char)file.read());
+ }
+ Serial.println();
+
+ // Close the file
+ file.close();
+}
+
+void setup() {
+ // Initialize serial port
+ Serial.begin(9600);
+ while (!Serial)
+ continue;
+
+ // Initialize SD library
+ const int chipSelect = 4;
+ while (!SD.begin(chipSelect)) {
+ Serial.println(F("Failed to initialize SD library"));
+ delay(1000);
+ }
+
+ // Should load default config if run for the first time
+ Serial.println(F("Loading configuration..."));
+ loadConfiguration(filename, config);
+
+ // Create configuration file
+ Serial.println(F("Saving configuration..."));
+ saveConfiguration(filename, config);
+
+ // Dump config file
+ Serial.println(F("Print config file..."));
+ printFile(filename);
+}
+
+void loop() {
+ // not used in this example
+}
+
+// Performance issue?
+// ------------------
+//
+// File is an unbuffered stream, which is not optimal for ArduinoJson.
+// See: https://arduinojson.org/v7/how-to/improve-speed/
+
+// See also
+// --------
+//
+// https://arduinojson.org/ contains the documentation for all the functions
+// used above. It also includes an FAQ that will help you solve any
+// serialization or deserialization problem.
+//
+// The book "Mastering ArduinoJson" contains a case study of a project that has
+// a complex configuration with nested members.
+// Contrary to this example, the project in the book uses the SPIFFS filesystem.
+// Learn more at https://arduinojson.org/book/
+// Use the coupon code TWENTY for a 20% discount ❤❤❤❤❤