Skip to content

Commit c81d76f

Browse files
authored
Merge pull request #100 from pennam/unor4-ota
Uno R4 WiFi OTA update
2 parents 5101023 + 25e1043 commit c81d76f

File tree

15 files changed

+638
-7
lines changed

15 files changed

+638
-7
lines changed

.github/workflows/compile-examples.yml

+2
Original file line numberDiff line numberDiff line change
@@ -86,10 +86,12 @@ jobs:
8686
fqbn: "arduino:renesas_uno:unor4wifi"
8787
additional-sketch-paths: |
8888
- libraries/WiFiS3
89+
- libraries/OTAUpdate
8990
- board:
9091
fqbn: "arduino-git:renesas:unor4wifi"
9192
additional-sketch-paths: |
9293
- libraries/WiFiS3
94+
- libraries/OTAUpdate
9395
9496
steps:
9597
- name: Checkout repository

libraries/OTAUpdate/.unor4_only

Whitespace-only changes.
+113
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,113 @@
1+
/*
2+
OTA
3+
4+
This sketch demonstrates how to make an OTA Update on the UNO R4 WiFi.
5+
Upload the sketch and wait for the invasion!
6+
7+
*/
8+
9+
10+
#include "WiFiS3.h"
11+
#include "OTAUpdate.h"
12+
#include "root_ca.h"
13+
#include "arduino_secrets.h"
14+
15+
char ssid[] = SECRET_SSID; // your network SSID (name)
16+
char pass[] = SECRET_PASS; // your network password (use for WPA, or use as key for WEP)
17+
18+
int status = WL_IDLE_STATUS;
19+
20+
OTAUpdate ota;
21+
static char const OTA_FILE_LOCATION[] = "https://downloads.arduino.cc/ota/UNOR4WIFI_Animation.ota";
22+
23+
/* -------------------------------------------------------------------------- */
24+
void setup() {
25+
/* -------------------------------------------------------------------------- */
26+
//Initialize serial and wait for port to open:
27+
Serial.begin(115200);
28+
while (!Serial) {
29+
; // wait for serial port to connect. Needed for native USB port only
30+
}
31+
32+
// check for the Wi-Fi module:
33+
if (WiFi.status() == WL_NO_MODULE) {
34+
Serial.println("Communication with Wi-Fi module failed!");
35+
// don't continue
36+
while (true);
37+
}
38+
39+
String fv = WiFi.firmwareVersion();
40+
if (fv < WIFI_FIRMWARE_LATEST_VERSION) {
41+
Serial.println("Please upgrade the firmware");
42+
}
43+
44+
// attempt to connect to Wi-Fi network:
45+
while (status != WL_CONNECTED) {
46+
Serial.print("Attempting to connect to SSID: ");
47+
Serial.println(ssid);
48+
// Connect to WPA/WPA2 network. Change this line if using open or WEP network:
49+
status = WiFi.begin(ssid, pass);
50+
51+
// wait 1 seconds for connection:
52+
delay(1000);
53+
}
54+
55+
printWiFiStatus();
56+
57+
OTAUpdate::Error ret = OTAUpdate::Error::None;
58+
ret = ota.begin("/update.bin");
59+
if(ret != OTAUpdate::Error::None) {
60+
Serial.println("ota.begin() error: ");
61+
Serial.println((int)ret);
62+
return;
63+
}
64+
ret = ota.setCACert(root_ca);
65+
if(ret != OTAUpdate::Error::None) {
66+
Serial.println("ota.setCACert() error: ");
67+
Serial.println((int)ret);
68+
return;
69+
}
70+
if(ota.download(OTA_FILE_LOCATION, "/update.bin") <= 0) {
71+
Serial.println("ota.download() error: ");
72+
Serial.println((int)ret);
73+
return;
74+
}
75+
ret = ota.verify();
76+
if(ret != OTAUpdate::Error::None) {
77+
Serial.println("ota.verify() error: ");
78+
Serial.println((int)ret);
79+
return;
80+
}
81+
82+
ret = ota.update("/update.bin");
83+
if(ret != OTAUpdate::Error::None) {
84+
Serial.println("ota.update() error: ");
85+
Serial.println((int)ret);
86+
return;
87+
}
88+
}
89+
90+
/* -------------------------------------------------------------------------- */
91+
void loop() {
92+
/* -------------------------------------------------------------------------- */
93+
delay(1000);
94+
}
95+
96+
/* -------------------------------------------------------------------------- */
97+
void printWiFiStatus() {
98+
/* -------------------------------------------------------------------------- */
99+
// print the SSID of the network you're attached to:
100+
Serial.print("SSID: ");
101+
Serial.println(WiFi.SSID());
102+
103+
// print your board's IP address:
104+
IPAddress ip = WiFi.localIP();
105+
Serial.print("IP Address: ");
106+
Serial.println(ip);
107+
108+
// print the received signal strength:
109+
long rssi = WiFi.RSSI();
110+
Serial.print("signal strength (RSSI):");
111+
Serial.print(rssi);
112+
Serial.println(" dBm");
113+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
#define SECRET_SSID ""
2+
#define SECRET_PASS ""
+88
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
const char* root_ca = \
2+
/* Baltimore CyberTrust Root */
3+
"-----BEGIN CERTIFICATE-----\n" \
4+
"MIIDdzCCAl+gAwIBAgIEAgAAuTANBgkqhkiG9w0BAQUFADBaMQswCQYDVQQGEwJJRTESMBAGA1UE\n" \
5+
"ChMJQmFsdGltb3JlMRMwEQYDVQQLEwpDeWJlclRydXN0MSIwIAYDVQQDExlCYWx0aW1vcmUgQ3li\n" \
6+
"ZXJUcnVzdCBSb290MB4XDTAwMDUxMjE4NDYwMFoXDTI1MDUxMjIzNTkwMFowWjELMAkGA1UEBhMC\n" \
7+
"SUUxEjAQBgNVBAoTCUJhbHRpbW9yZTETMBEGA1UECxMKQ3liZXJUcnVzdDEiMCAGA1UEAxMZQmFs\n" \
8+
"dGltb3JlIEN5YmVyVHJ1c3QgUm9vdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKME\n" \
9+
"uyKrmD1X6CZymrV51Cni4eiVgLGw41uOKymaZN+hXe2wCQVt2yguzmKiYv60iNoS6zjrIZ3AQSsB\n" \
10+
"UnuId9Mcj8e6uYi1agnnc+gRQKfRzMpijS3ljwumUNKoUMMo6vWrJYeKmpYcqWe4PwzV9/lSEy/C\n" \
11+
"G9VwcPCPwBLKBsua4dnKM3p31vjsufFoREJIE9LAwqSuXmD+tqYF/LTdB1kC1FkYmGP1pWPgkAx9\n" \
12+
"XbIGevOF6uvUA65ehD5f/xXtabz5OTZydc93Uk3zyZAsuT3lySNTPx8kmCFcB5kpvcY67Oduhjpr\n" \
13+
"l3RjM71oGDHweI12v/yejl0qhqdNkNwnGjkCAwEAAaNFMEMwHQYDVR0OBBYEFOWdWTCCR1jMrPoI\n" \
14+
"VDaGezq1BE3wMBIGA1UdEwEB/wQIMAYBAf8CAQMwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEB\n" \
15+
"BQUAA4IBAQCFDF2O5G9RaEIFoN27TyclhAO992T9Ldcw46QQF+vaKSm2eT929hkTI7gQCvlYpNRh\n" \
16+
"cL0EYWoSihfVCr3FvDB81ukMJY2GQE/szKN+OMY3EU/t3WgxjkzSswF07r51XgdIGn9w/xZchMB5\n" \
17+
"hbgF/X++ZRGjD8ACtPhSNzkE1akxehi/oCr0Epn3o0WC4zxe9Z2etciefC7IpJ5OCBRLbf1wbWsa\n" \
18+
"Y71k5h+3zvDyny67G7fyUIhzksLi4xaNmjICq44Y3ekQEe5+NauQrz4wlHrQMz2nZQ/1/I6eYs9H\n" \
19+
"RCwBXbsdtTLSR9I4LtD+gdwyah617jzV/OeBHRnDJELqYzmp\n" \
20+
"-----END CERTIFICATE-----\n" \
21+
/* Amazon Root CA 1 */
22+
"-----BEGIN CERTIFICATE-----\n" \
23+
"MIIDQTCCAimgAwIBAgITBmyfz5m/jAo54vB4ikPmljZbyjANBgkqhkiG9w0BAQsFADA5MQswCQYD\n" \
24+
"VQQGEwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6b24gUm9vdCBDQSAxMB4XDTE1\n" \
25+
"MDUyNjAwMDAwMFoXDTM4MDExNzAwMDAwMFowOTELMAkGA1UEBhMCVVMxDzANBgNVBAoTBkFtYXpv\n" \
26+
"bjEZMBcGA1UEAxMQQW1hem9uIFJvb3QgQ0EgMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC\n" \
27+
"ggEBALJ4gHHKeNXjca9HgFB0fW7Y14h29Jlo91ghYPl0hAEvrAIthtOgQ3pOsqTQNroBvo3bSMgH\n" \
28+
"FzZM9O6II8c+6zf1tRn4SWiw3te5djgdYZ6k/oI2peVKVuRF4fn9tBb6dNqcmzU5L/qwIFAGbHrQ\n" \
29+
"gLKm+a/sRxmPUDgH3KKHOVj4utWp+UhnMJbulHheb4mjUcAwhmahRWa6VOujw5H5SNz/0egwLX0t\n" \
30+
"dHA114gk957EWW67c4cX8jJGKLhD+rcdqsq08p8kDi1L93FcXmn/6pUCyziKrlA4b9v7LWIbxcce\n" \
31+
"VOF34GfID5yHI9Y/QCB/IIDEgEw+OyQmjgSubJrIqg0CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB\n" \
32+
"/zAOBgNVHQ8BAf8EBAMCAYYwHQYDVR0OBBYEFIQYzIU07LwMlJQuCFmcx7IQTgoIMA0GCSqGSIb3\n" \
33+
"DQEBCwUAA4IBAQCY8jdaQZChGsV2USggNiMOruYou6r4lK5IpDB/G/wkjUu0yKGX9rbxenDIU5PM\n" \
34+
"CCjjmCXPI6T53iHTfIUJrU6adTrCC2qJeHZERxhlbI1Bjjt/msv0tadQ1wUsN+gDS63pYaACbvXy\n" \
35+
"8MWy7Vu33PqUXHeeE6V/Uq2V8viTO96LXFvKWlJbYK8U90vvo/ufQJVtMVT8QtPHRh8jrdkPSHCa\n" \
36+
"2XV4cdFyQzR1bldZwgJcJmApzyMZFo6IQ6XU5MsI+yMRQ+hDKXJioaldXgjUkK642M4UwtBV8ob2\n" \
37+
"xJNDd2ZhwLnoQdeXeGADbkpyrqXRfboQnoZsG4q5WTP468SQvvG5\n" \
38+
"-----END CERTIFICATE-----\n" \
39+
/* Amazon Root CA 2 */
40+
"-----BEGIN CERTIFICATE-----\n" \
41+
"MIIFQTCCAymgAwIBAgITBmyf0pY1hp8KD+WGePhbJruKNzANBgkqhkiG9w0BAQwFADA5MQswCQYD\n" \
42+
"VQQGEwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6b24gUm9vdCBDQSAyMB4XDTE1\n" \
43+
"MDUyNjAwMDAwMFoXDTQwMDUyNjAwMDAwMFowOTELMAkGA1UEBhMCVVMxDzANBgNVBAoTBkFtYXpv\n" \
44+
"bjEZMBcGA1UEAxMQQW1hem9uIFJvb3QgQ0EgMjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoC\n" \
45+
"ggIBAK2Wny2cSkxKgXlRmeyKy2tgURO8TW0G/LAIjd0ZEGrHJgw12MBvIITplLGbhQPDW9tK6Mj4\n" \
46+
"kHbZW0/jTOgGNk3Mmqw9DJArktQGGWCsN0R5hYGCrVo34A3MnaZMUnbqQ523BNFQ9lXg1dKmSYXp\n" \
47+
"N+nKfq5clU1Imj+uIFptiJXZNLhSGkOQsL9sBbm2eLfq0OQ6PBJTYv9K8nu+NQWpEjTj82R0Yiw9\n" \
48+
"AElaKP4yRLuH3WUnAnE72kr3H9rN9yFVkE8P7K6C4Z9r2UXTu/Bfh+08LDmG2j/e7HJV63mjrdvd\n" \
49+
"fLC6HM783k81ds8P+HgfajZRRidhW+mez/CiVX18JYpvL7TFz4QuK/0NURBs+18bvBt+xa47mAEx\n" \
50+
"kv8LV/SasrlX6avvDXbR8O70zoan4G7ptGmh32n2M8ZpLpcTnqWHsFcQgTfJU7O7f/aS0ZzQGPSS\n" \
51+
"btqDT6ZjmUyl+17vIWR6IF9sZIUVyzfpYgwLKhbcAS4y2j5L9Z469hdAlO+ekQiG+r5jqFoz7Mt0\n" \
52+
"Q5X5bGlSNscpb/xVA1wf+5+9R+vnSUeVC06JIglJ4PVhHvG/LopyboBZ/1c6+XUyo05f7O0oYtlN\n" \
53+
"c/LMgRdg7c3r3NunysV+Ar3yVAhU/bQtCSwXVEqY0VThUWcI0u1ufm8/0i2BWSlmy5A5lREedCf+\n" \
54+
"3euvAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQWBBSw\n" \
55+
"DPBMMPQFWAJI/TPlUq9LhONmUjANBgkqhkiG9w0BAQwFAAOCAgEAqqiAjw54o+Ci1M3m9Zh6O+oA\n" \
56+
"A7CXDpO8Wqj2LIxyh6mx/H9z/WNxeKWHWc8w4Q0QshNabYL1auaAn6AFC2jkR2vHat+2/XcycuUY\n" \
57+
"+gn0oJMsXdKMdYV2ZZAMA3m3MSNjrXiDCYZohMr/+c8mmpJ5581LxedhpxfL86kSk5Nrp+gvU5LE\n" \
58+
"YFiwzAJRGFuFjWJZY7attN6a+yb3ACfAXVU3dJnJUH/jWS5E4ywl7uxMMne0nxrpS10gxdr9HIcW\n" \
59+
"xkPo1LsmmkVwXqkLN1PiRnsn/eBG8om3zEK2yygmbtmlyTrIQRNg91CMFa6ybRoVGld45pIq2WWQ\n" \
60+
"gj9sAq+uEjonljYE1x2igGOpm/HlurR8FLBOybEfdF849lHqm/osohHUqS0nGkWxr7JOcQ3AWEbW\n" \
61+
"aQbLU8uz/mtBzUF+fUwPfHJ5elnNXkoOrJupmHN5fLT0zLm4BwyydFy4x2+IoZCn9Kr5v2c69BoV\n" \
62+
"Yh63n749sSmvZ6ES8lgQGVMDMBu4Gon2nL2XA46jCfMdiyHxtN/kHNGfZQIG6lzWE7OE76KlXIx3\n" \
63+
"KadowGuuQNKotOrN8I1LOJwZmhsoVLiJkO/KdYE+HvJkJMcYr07/R54H9jVlpNMKVv/1F2Rs76gi\n" \
64+
"JUmTtt8AF9pYfl3uxRuw0dFfIRDH+fO6AgonB8Xx1sfT4PsJYGw=\n" \
65+
"-----END CERTIFICATE-----\n" \
66+
/* Amazon Root CA 3 */
67+
"-----BEGIN CERTIFICATE-----\n" \
68+
"MIIBtjCCAVugAwIBAgITBmyf1XSXNmY/Owua2eiedgPySjAKBggqhkjOPQQDAjA5MQswCQYDVQQG\n" \
69+
"EwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6b24gUm9vdCBDQSAzMB4XDTE1MDUy\n" \
70+
"NjAwMDAwMFoXDTQwMDUyNjAwMDAwMFowOTELMAkGA1UEBhMCVVMxDzANBgNVBAoTBkFtYXpvbjEZ\n" \
71+
"MBcGA1UEAxMQQW1hem9uIFJvb3QgQ0EgMzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABCmXp8ZB\n" \
72+
"f8ANm+gBG1bG8lKlui2yEujSLtf6ycXYqm0fc4E7O5hrOXwzpcVOho6AF2hiRVd9RFgdszflZwjr\n" \
73+
"Zt6jQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQWBBSrttvXBp43\n" \
74+
"rDCGB5Fwx5zEGbF4wDAKBggqhkjOPQQDAgNJADBGAiEA4IWSoxe3jfkrBqWTrBqYaGFy+uGh0Psc\n" \
75+
"eGCmQ5nFuMQCIQCcAu/xlJyzlvnrxir4tiz+OpAUFteMYyRIHN8wfdVoOw==\n" \
76+
"-----END CERTIFICATE-----\n" \
77+
/* Amazon Root CA 4 */
78+
"-----BEGIN CERTIFICATE-----\n" \
79+
"MIIB8jCCAXigAwIBAgITBmyf18G7EEwpQ+Vxe3ssyBrBDjAKBggqhkjOPQQDAzA5MQswCQYDVQQG\n" \
80+
"EwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6b24gUm9vdCBDQSA0MB4XDTE1MDUy\n" \
81+
"NjAwMDAwMFoXDTQwMDUyNjAwMDAwMFowOTELMAkGA1UEBhMCVVMxDzANBgNVBAoTBkFtYXpvbjEZ\n" \
82+
"MBcGA1UEAxMQQW1hem9uIFJvb3QgQ0EgNDB2MBAGByqGSM49AgEGBSuBBAAiA2IABNKrijdPo1MN\n" \
83+
"/sGKe0uoe0ZLY7Bi9i0b2whxIdIA6GO9mif78DluXeo9pcmBqqNbIJhFXRbb/egQbeOc4OO9X4Ri\n" \
84+
"83BkM6DLJC9wuoihKqB1+IGuYgbEgds5bimwHvouXKNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNV\n" \
85+
"HQ8BAf8EBAMCAYYwHQYDVR0OBBYEFNPsxzplbszh2naaVvuc84ZtV+WBMAoGCCqGSM49BAMDA2gA\n" \
86+
"MGUCMDqLIfG9fhGt0O9Yli/W651+kI0rz2ZVwyzjKKlwCkcO8DdZEv8tmZQoTipPNU0zWgIxAOp1\n" \
87+
"AE47xDqUEpHJWEadIRNyp4iciuRMStuW1KyLa2tJElMzrdfkviT8tQp21KW8EA==\n" \
88+
"-----END CERTIFICATE-----\n";
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,133 @@
1+
/*
2+
OTA
3+
4+
This sketch demonstrates how to make the UNO R4 WiFi self-update its Wi-Fi module
5+
firmware via OTA. Upload the Sketch and wait for Serial detach. After the update
6+
the new Wi-Fi firmware version will be 98.98.98
7+
8+
WARNING: running this sketch will load a test Wi-Fi firmware version on the UNO R4
9+
WiFi module. To restore a production firmware use the Arduino Firmware Uploader or
10+
the update packages available here:
11+
12+
https://github.com/arduino/uno-r4-wifi-usb-bridge/releases
13+
14+
*/
15+
16+
17+
#include "WiFiS3.h"
18+
#include "OTAUpdate.h"
19+
#include "root_ca.h"
20+
#include "arduino_secrets.h"
21+
22+
char ssid[] = SECRET_SSID; // your network SSID (name)
23+
char pass[] = SECRET_PASS; // your network password (use for WPA, or use as key for WEP)
24+
25+
int status = WL_IDLE_STATUS;
26+
27+
OTAUpdate ota;
28+
static char const OTA_FILE_LOCATION[] = "https://downloads.arduino.cc/ota/UNOR4USBBridge.ino.ota";
29+
30+
/* -------------------------------------------------------------------------- */
31+
void setup() {
32+
/* -------------------------------------------------------------------------- */
33+
//Initialize serial and wait for port to open:
34+
Serial.begin(115200);
35+
while (!Serial) {
36+
; // wait for serial port to connect. Needed for native USB port only
37+
}
38+
39+
// check for the Wi-Fi module:
40+
if (WiFi.status() == WL_NO_MODULE) {
41+
Serial.println("Communication with Wi-Fi module failed!");
42+
// don't continue
43+
while (true);
44+
}
45+
46+
String fv = WiFi.firmwareVersion();
47+
if (fv < WIFI_FIRMWARE_LATEST_VERSION) {
48+
Serial.println("Please upgrade the firmware");
49+
}
50+
51+
Serial.print("Current Wi-Fi firmware version: ");
52+
Serial.println(fv);
53+
54+
// attempt to connect to Wi-Fi network:
55+
while (status != WL_CONNECTED) {
56+
Serial.print("Attempting to connect to SSID: ");
57+
Serial.println(ssid);
58+
// Connect to WPA/WPA2 network. Change this line if using open or WEP network:
59+
status = WiFi.begin(ssid, pass);
60+
61+
// wait 1 seconds for connection:
62+
delay(1000);
63+
}
64+
65+
printWiFiStatus();
66+
67+
OTAUpdate::Error ret = OTAUpdate::Error::None;
68+
ret = ota.begin();
69+
if(ret != OTAUpdate::Error::None) {
70+
Serial.println("ota.begin() error: ");
71+
Serial.println((int)ret);
72+
return;
73+
}
74+
ret = ota.setCACert(root_ca);
75+
if(ret != OTAUpdate::Error::None) {
76+
Serial.println("ota.setCACert() error: ");
77+
Serial.println((int)ret);
78+
return;
79+
}
80+
if(ota.download(OTA_FILE_LOCATION) <= 0) {
81+
Serial.println("ota.download() error: ");
82+
Serial.println((int)ret);
83+
return;
84+
}
85+
ret = ota.verify();
86+
if(ret != OTAUpdate::Error::None) {
87+
Serial.println("ota.verify() error: ");
88+
Serial.println((int)ret);
89+
return;
90+
}
91+
ret = ota.update();
92+
if(ret != OTAUpdate::Error::None) {
93+
Serial.println("ota.update() error: ");
94+
Serial.println((int)ret);
95+
return;
96+
}
97+
ret = ota.reset();
98+
if(ret != OTAUpdate::Error::None) {
99+
Serial.println("ota.reset() error: ");
100+
Serial.println((int)ret);
101+
return;
102+
}
103+
}
104+
105+
106+
/* -------------------------------------------------------------------------- */
107+
void loop() {
108+
/* -------------------------------------------------------------------------- */
109+
110+
String fv = WiFi.firmwareVersion();
111+
Serial.print("Updated Wi-Fi firmware version: ");
112+
Serial.println(fv);
113+
delay(1000);
114+
}
115+
116+
/* -------------------------------------------------------------------------- */
117+
void printWiFiStatus() {
118+
/* -------------------------------------------------------------------------- */
119+
// print the SSID of the network you're attached to:
120+
Serial.print("SSID: ");
121+
Serial.println(WiFi.SSID());
122+
123+
// print your board's IP address:
124+
IPAddress ip = WiFi.localIP();
125+
Serial.print("IP Address: ");
126+
Serial.println(ip);
127+
128+
// print the received signal strength:
129+
long rssi = WiFi.RSSI();
130+
Serial.print("signal strength (RSSI):");
131+
Serial.print(rssi);
132+
Serial.println(" dBm");
133+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
#define SECRET_SSID ""
2+
#define SECRET_PASS ""

0 commit comments

Comments
 (0)