Skip to content

Commit 24db8ab

Browse files
committed
Add portduino arch
1 parent cb531c1 commit 24db8ab

33 files changed

+702
-30
lines changed

boards/rpi_zero_2w.json

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
{
2+
"build": {
3+
"arduino": {
4+
},
5+
"core": "linux",
6+
"extra_flags": [
7+
],
8+
"hwids": [],
9+
"mcu": "arm64",
10+
"variant": "raspberry-pi-zero-2-w"
11+
},
12+
"connectivity": ["wifi", "bluetooth"],
13+
"debug": {},
14+
"frameworks": ["portduino", "linux"],
15+
"name": "Raspberry Pi Zero 2 W",
16+
"upload": {
17+
"maximum_ram_size": 0,
18+
"maximum_size": 0
19+
},
20+
"url": "https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#raspberry-pi-zero-2-w",
21+
"vendor": "RaspberryPi"
22+
}

build.sh

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,10 @@ build_firmware() {
119119
cp .pio/build/$1/firmware.uf2 out/${FIRMWARE_FILENAME}.uf2 2>/dev/null || true
120120
cp .pio/build/$1/firmware.zip out/${FIRMWARE_FILENAME}.zip 2>/dev/null || true
121121

122+
if [ -f .pio/build/$1/program ]; then
123+
cp .pio/build/$1/program out/meshcored 2>/dev/null || true
124+
fi
125+
122126
}
123127

124128
# firmwares containing $1 will be built

examples/companion_radio/DataStore.cpp

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
DataStore::DataStore(FILESYSTEM& fs, mesh::RTCClock& clock) : _fs(&fs), _fsExtra(nullptr), _clock(&clock),
1111
#if defined(NRF52_PLATFORM) || defined(STM32_PLATFORM)
1212
identity_store(fs, "")
13-
#elif defined(RP2040_PLATFORM)
13+
#elif defined(RP2040_PLATFORM) || defined(ARCH_PORTDUINO)
1414
identity_store(fs, "/identity")
1515
#else
1616
identity_store(fs, "/identity")
@@ -22,7 +22,7 @@ DataStore::DataStore(FILESYSTEM& fs, mesh::RTCClock& clock) : _fs(&fs), _fsExtra
2222
DataStore::DataStore(FILESYSTEM& fs, FILESYSTEM& fsExtra, mesh::RTCClock& clock) : _fs(&fs), _fsExtra(&fsExtra), _clock(&clock),
2323
#if defined(NRF52_PLATFORM) || defined(STM32_PLATFORM)
2424
identity_store(fs, "")
25-
#elif defined(RP2040_PLATFORM)
25+
#elif defined(RP2040_PLATFORM) || defined(ARCH_PORTDUINO)
2626
identity_store(fs, "/identity")
2727
#else
2828
identity_store(fs, "/identity")
@@ -35,7 +35,7 @@ static File openWrite(FILESYSTEM* fs, const char* filename) {
3535
#if defined(NRF52_PLATFORM) || defined(STM32_PLATFORM)
3636
fs->remove(filename);
3737
return fs->open(filename, FILE_O_WRITE);
38-
#elif defined(RP2040_PLATFORM)
38+
#elif defined(RP2040_PLATFORM) || defined(ARCH_PORTDUINO)
3939
return fs->open(filename, "w");
4040
#else
4141
return fs->open(filename, "w", true);
@@ -47,7 +47,7 @@ static File openWrite(FILESYSTEM* fs, const char* filename) {
4747
#endif
4848

4949
void DataStore::begin() {
50-
#if defined(RP2040_PLATFORM)
50+
#if defined(RP2040_PLATFORM) || defined(ARCH_PORTDUINO)
5151
identity_store.begin();
5252
#endif
5353

@@ -67,6 +67,8 @@ void DataStore::begin() {
6767
#include <SPIFFS.h>
6868
#elif defined(RP2040_PLATFORM)
6969
#include <LittleFS.h>
70+
#elif defined(ARCH_PORTDUINO)
71+
#include <PortduinoFS.h>
7072
#elif defined(NRF52_PLATFORM) || defined(STM32_PLATFORM)
7173
#if defined(QSPIFLASH)
7274
#include <CustomLFS_QSPIFlash.h>
@@ -102,7 +104,7 @@ lfs_ssize_t _getLfsUsedBlockCount(FILESYSTEM* fs) {
102104
uint32_t DataStore::getStorageUsedKb() const {
103105
#if defined(ESP32)
104106
return SPIFFS.usedBytes() / 1024;
105-
#elif defined(RP2040_PLATFORM)
107+
#elif defined(RP2040_PLATFORM) || defined(ARCH_PORTDUINO)
106108
FSInfo info;
107109
info.usedBytes = 0;
108110
_fs->info(info);
@@ -120,7 +122,7 @@ uint32_t DataStore::getStorageUsedKb() const {
120122
uint32_t DataStore::getStorageTotalKb() const {
121123
#if defined(ESP32)
122124
return SPIFFS.totalBytes() / 1024;
123-
#elif defined(RP2040_PLATFORM)
125+
#elif defined(RP2040_PLATFORM) || defined(ARCH_PORTDUINO)
124126
FSInfo info;
125127
info.totalBytes = 0;
126128
_fs->info(info);
@@ -137,7 +139,7 @@ uint32_t DataStore::getStorageTotalKb() const {
137139
File DataStore::openRead(const char* filename) {
138140
#if defined(NRF52_PLATFORM) || defined(STM32_PLATFORM)
139141
return _fs->open(filename, FILE_O_READ);
140-
#elif defined(RP2040_PLATFORM)
142+
#elif defined(RP2040_PLATFORM) || defined(ARCH_PORTDUINO)
141143
return _fs->open(filename, "r");
142144
#else
143145
return _fs->open(filename, "r", false);
@@ -147,7 +149,7 @@ File DataStore::openRead(const char* filename) {
147149
File DataStore::openRead(FILESYSTEM* fs, const char* filename) {
148150
#if defined(NRF52_PLATFORM) || defined(STM32_PLATFORM)
149151
return fs->open(filename, FILE_O_READ);
150-
#elif defined(RP2040_PLATFORM)
152+
#elif defined(RP2040_PLATFORM) || defined(ARCH_PORTDUINO)
151153
return fs->open(filename, "r");
152154
#else
153155
return fs->open(filename, "r", false);
@@ -171,6 +173,8 @@ bool DataStore::formatFileSystem() {
171173
}
172174
#elif defined(RP2040_PLATFORM)
173175
return LittleFS.format();
176+
#elif defined(ARCH_PORTDUINO)
177+
return true;
174178
#elif defined(ESP32)
175179
return ((fs::SPIFFSFS *)_fs)->format();
176180
#else

examples/companion_radio/MyMesh.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@
1919
#include <InternalFileSystem.h>
2020
#elif defined(RP2040_PLATFORM)
2121
#include <LittleFS.h>
22+
#elif defined(ARCH_PORTDUINO)
23+
#include <PortduinoFS.h>
2224
#elif defined(ESP32)
2325
#include <SPIFFS.h>
2426
#endif

examples/companion_radio/main.cpp

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,9 @@ static uint32_t _atoi(const char* sp) {
2929
#elif defined(RP2040_PLATFORM)
3030
#include <LittleFS.h>
3131
DataStore store(LittleFS, rtc_clock);
32+
#elif defined(ARCH_PORTDUINO)
33+
#include <PortduinoFS.h>
34+
DataStore store(PortduinoFS, rtc_clock);
3235
#elif defined(ESP32)
3336
#include <SPIFFS.h>
3437
DataStore store(SPIFFS, rtc_clock);
@@ -184,6 +187,15 @@ void setup() {
184187
serial_interface.begin(Serial);
185188
#endif
186189
the_mesh.startInterface(serial_interface);
190+
#elif defined(ARCH_PORTDUINO)
191+
store.begin();
192+
the_mesh.begin(
193+
#ifdef DISPLAY_CLASS
194+
disp != NULL
195+
#else
196+
false
197+
#endif
198+
);
187199
#elif defined(ESP32)
188200
SPIFFS.begin(true);
189201
store.begin();

examples/simple_repeater/MyMesh.cpp

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -299,7 +299,7 @@ mesh::Packet *MyMesh::createSelfAdvert() {
299299
File MyMesh::openAppend(const char *fname) {
300300
#if defined(NRF52_PLATFORM) || defined(STM32_PLATFORM)
301301
return _fs->open(fname, FILE_O_WRITE);
302-
#elif defined(RP2040_PLATFORM)
302+
#elif defined(RP2040_PLATFORM) || defined(ARCH_PORTDUINO)
303303
return _fs->open(fname, "a");
304304
#else
305305
return _fs->open(fname, "a", true);
@@ -687,11 +687,13 @@ MyMesh::MyMesh(mesh::MainBoard &board, mesh::Radio &radio, mesh::MillisecondCloc
687687
_prefs.node_lat = ADVERT_LAT;
688688
_prefs.node_lon = ADVERT_LON;
689689
StrHelper::strncpy(_prefs.password, ADMIN_PASSWORD, sizeof(_prefs.password));
690+
#ifndef SKIP_CONFIG_OVERWRITE
690691
_prefs.freq = LORA_FREQ;
691692
_prefs.sf = LORA_SF;
692693
_prefs.bw = LORA_BW;
693694
_prefs.cr = LORA_CR;
694695
_prefs.tx_power_dbm = LORA_TX_POWER;
696+
#endif
695697
_prefs.advert_interval = 1; // default to 2 minutes for NEW installs
696698
_prefs.flood_advert_interval = 12; // 12 hours
697699
_prefs.flood_max = 64;
@@ -753,6 +755,10 @@ bool MyMesh::formatFileSystem() {
753755
return InternalFS.format();
754756
#elif defined(RP2040_PLATFORM)
755757
return LittleFS.format();
758+
#elif defined(ARCH_PORTDUINO)
759+
return true;
760+
#elif defined(ARCH_PORTDUINO)
761+
return true;
756762
#elif defined(ESP32)
757763
return SPIFFS.format();
758764
#else
@@ -787,7 +793,7 @@ void MyMesh::updateFloodAdvertTimer() {
787793
}
788794

789795
void MyMesh::dumpLogFile() {
790-
#if defined(RP2040_PLATFORM)
796+
#if defined(RP2040_PLATFORM) || defined(ARCH_PORTDUINO)
791797
File f = _fs->open(PACKET_LOG_FILE, "r");
792798
#else
793799
File f = _fs->open(PACKET_LOG_FILE);
@@ -880,7 +886,7 @@ void MyMesh::saveIdentity(const mesh::LocalIdentity &new_id) {
880886
IdentityStore store(*_fs, "");
881887
#elif defined(ESP32)
882888
IdentityStore store(*_fs, "/identity");
883-
#elif defined(RP2040_PLATFORM)
889+
#elif defined(RP2040_PLATFORM) || defined(ARCH_PORTDUINO)
884890
IdentityStore store(*_fs, "/identity");
885891
#else
886892
#error "need to define saveIdentity()"

examples/simple_repeater/MyMesh.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@
99
#include <InternalFileSystem.h>
1010
#elif defined(RP2040_PLATFORM)
1111
#include <LittleFS.h>
12+
#elif defined(ARCH_PORTDUINO)
13+
#include <PortduinoFS.h>
1214
#elif defined(ESP32)
1315
#include <SPIFFS.h>
1416
#endif

examples/simple_repeater/main.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,10 @@ void setup() {
5454
fs = &LittleFS;
5555
IdentityStore store(LittleFS, "/identity");
5656
store.begin();
57+
#elif defined(ARCH_PORTDUINO)
58+
fs = &PortduinoFS;
59+
IdentityStore store(PortduinoFS, "/identity");
60+
store.begin();
5761
#else
5862
#error "need to define filesystem"
5963
#endif

examples/simple_room_server/MyMesh.cpp

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@ mesh::Packet *MyMesh::createSelfAdvert() {
122122
File MyMesh::openAppend(const char *fname) {
123123
#if defined(NRF52_PLATFORM)
124124
return _fs->open(fname, FILE_O_WRITE);
125-
#elif defined(RP2040_PLATFORM)
125+
#elif defined(RP2040_PLATFORM) || defined(ARCH_PORTDUINO)
126126
return _fs->open(fname, "a");
127127
#else
128128
return _fs->open(fname, "a", true);
@@ -661,6 +661,8 @@ bool MyMesh::formatFileSystem() {
661661
return InternalFS.format();
662662
#elif defined(RP2040_PLATFORM)
663663
return LittleFS.format();
664+
#elif defined(ARCH_PORTDUINO)
665+
return true;
664666
#elif defined(ESP32)
665667
return SPIFFS.format();
666668
#else
@@ -694,7 +696,7 @@ void MyMesh::updateFloodAdvertTimer() {
694696
}
695697

696698
void MyMesh::dumpLogFile() {
697-
#if defined(RP2040_PLATFORM)
699+
#if defined(RP2040_PLATFORM) || defined(ARCH_PORTDUINO)
698700
File f = _fs->open(PACKET_LOG_FILE, "r");
699701
#else
700702
File f = _fs->open(PACKET_LOG_FILE);
@@ -719,7 +721,7 @@ void MyMesh::saveIdentity(const mesh::LocalIdentity &new_id) {
719721
IdentityStore store(*_fs, "");
720722
#elif defined(ESP32)
721723
IdentityStore store(*_fs, "/identity");
722-
#elif defined(RP2040_PLATFORM)
724+
#elif defined(RP2040_PLATFORM) || defined(ARCH_PORTDUINO)
723725
IdentityStore store(*_fs, "/identity");
724726
#else
725727
#error "need to define saveIdentity()"

examples/simple_room_server/MyMesh.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77
#include <InternalFileSystem.h>
88
#elif defined(RP2040_PLATFORM)
99
#include <LittleFS.h>
10+
#elif defined(ARCH_PORTDUINO)
11+
#include <PortduinoFS.h>
1012
#elif defined(ESP32)
1113
#include <SPIFFS.h>
1214
#endif

0 commit comments

Comments
 (0)