Skip to content

Commit a692e61

Browse files
committed
Migrate to using the spiram-cpp library
1 parent 1707dfc commit a692e61

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

57 files changed

+133
-296
lines changed

lib/Simulator/Common/CMakeLists.txt

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,19 @@ endif()
6767

6868
add_subdirectory(${REPO_ROOT_DIR}/lib/esp_ringbuf ${CMAKE_CURRENT_BINARY_DIR}/esp_ringbuf)
6969

70+
# Add spiram-cpp library for simulator (via FetchContent)
71+
include(FetchContent)
72+
FetchContent_Declare(
73+
spiram_cpp
74+
GIT_REPOSITORY https://github.com/sindarin-inc/spiram-cpp.git
75+
GIT_TAG main
76+
)
77+
FetchContent_MakeAvailable(spiram_cpp)
78+
79+
# Use this repo's esp_heap_caps stubs instead of the ones from spiram-cpp
80+
target_include_directories(spiram-cpp PUBLIC ${REPO_ROOT_DIR}/lib/Simulator/stubs/esp-idf)
81+
target_compile_definitions(spiram-cpp PUBLIC ESP_PLATFORM=1)
82+
7083
# Before adding mbedtls, set options to disable tests and programs
7184
set(ENABLE_TESTING OFF CACHE BOOL "Disable mbedtls tests" FORCE)
7285
set(ENABLE_PROGRAMS OFF CACHE BOOL "Disable mbedtls programs" FORCE)
@@ -81,7 +94,7 @@ endif()
8194

8295
add_library(${PROJECT_NAME} STATIC ${SOURCES} ${HTTP_CLIENT_SOURCE})
8396

84-
target_link_libraries(${PROJECT_NAME} PUBLIC pugixml ArduinoJson miniz astubs esp-idf-stubs nvs_flash Adafruit-GFX-Library tiny-font mbedtls mbedx509 mbedcrypto esp_ringbuf)
97+
target_link_libraries(${PROJECT_NAME} PUBLIC pugixml ArduinoJson miniz astubs esp-idf-stubs nvs_flash Adafruit-GFX-Library tiny-font mbedtls mbedx509 mbedcrypto esp_ringbuf spiram-cpp)
8598

8699
target_include_directories(${PROJECT_NAME} PUBLIC
87100
"${REPO_ROOT_DIR}/src"

src/Communications/FileDownload.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
#include "FileDownload.hpp"
22

3+
#include <Spiram/Memory.hpp>
34
#include <esp_heap_caps.h>
45
#include <esp_timer.h>
56
#include <freertos/ringbuf.h>
@@ -9,7 +10,6 @@
910
#include "Misc/Defer.hpp"
1011
#include "Misc/GUnzipStream.hpp"
1112
#include "Misc/RateLimiter.hpp"
12-
#include "Misc/SpiramAllocator.hpp"
1313
#include "sindarin-debug.h"
1414

1515
// There's three ways DownloadFileToPath can run:
@@ -204,7 +204,7 @@ auto DownloadFileWithWriteBytes(
204204
-> int {
205205

206206
constexpr int bufferSize = 4096;
207-
auto buffer = SpiRamArrayPtr<uint8_t>(bufferSize);
207+
auto buffer = SpiramArrayPtr<uint8_t>(bufferSize);
208208

209209
return DownloadFileCommon(
210210
url, openedConnection,

src/Communications/HtmlCleaner.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
#pragma once
22

3+
#include <Spiram/String.hpp>
34
#include <iostream>
45
#include <sstream>
56
#include <string>
67

7-
#include "Misc/SpiramAllocator.hpp"
88
#include "Renderers/RendererStream.hpp"
99
#include "Storage/SFile.hpp"
1010

src/Communications/HttpIstream.hpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
#pragma once
22

3+
#include <Spiram/Memory.hpp>
34
#include <algorithm>
45
#include <esp_http_client.h>
56
#include <functional>
@@ -8,7 +9,6 @@
89
#include <utility>
910
#include <vector>
1011

11-
#include "Misc/SpiramAllocator.hpp"
1212
#include "sindarin-debug.h"
1313

1414
template <std::size_t BUFFER_SIZE = BUFSIZ>
@@ -17,11 +17,11 @@ class HttpIStreambuf : public std::streambuf {
1717
HttpIStreambuf(std::function<size_t(char *, size_t)> readFunc)
1818
: readFunc_(std::move(readFunc)) {
1919
buffer_ =
20-
static_cast<char *>(SpiRamMalloc(std::max(static_cast<int>(BUFFER_SIZE), BUFSIZ)));
20+
static_cast<char *>(SpiramMalloc(std::max(static_cast<int>(BUFFER_SIZE), BUFSIZ)));
2121
setg(buffer_, buffer_, buffer_);
2222
}
2323

24-
~HttpIStreambuf() override { SpiRamFree(buffer_); }
24+
~HttpIStreambuf() override { SpiramFree(buffer_); }
2525

2626
private:
2727
char *buffer_;

src/Communications/HttpOstream.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ class HttpOstreambuf : public std::streambuf {
1717

1818
~HttpOstreambuf() override {
1919
sync();
20-
SpiRamFree(buffer_);
20+
SpiramFree(buffer_);
2121
}
2222

2323
private:

src/Communications/SindarinAPI.cpp

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ auto SindarinAPI::checkSync(const std::string &url, CheckSyncRequest &req, Check
7878
ConvertToJson(req, body);
7979

8080
size_t serializedMaxSize = (*doc).memoryUsage() * 2;
81-
auto reqBody = SpiRamArrayPtr<char>(serializedMaxSize);
81+
auto reqBody = SpiramArrayPtr<char>(serializedMaxSize);
8282
size_t bodyLength = serializeJson(*doc, reqBody.get(), serializedMaxSize);
8383

8484
err = client->open(bodyLength);
@@ -328,7 +328,7 @@ auto SindarinAPI::uploadTelemetryFile(SFile &telemetryFile, const std::string &l
328328

329329
// Write the file data in chunks
330330
size_t bufferSize = 4096;
331-
auto buffer = SpiRamArrayPtr<char>(bufferSize);
331+
auto buffer = SpiramArrayPtr<char>(bufferSize);
332332
int totalBytesWritten = 0;
333333
int writeSize = telemetryFile.size();
334334
while (totalBytesWritten < writeSize) {
@@ -386,7 +386,7 @@ auto SindarinAPI::uploadCrashReport(SFile &crashFile, const std::string &content
386386
defer { client->close(); };
387387

388388
size_t bufferSize = 4096;
389-
auto buffer = SpiRamArrayPtr<char>(bufferSize);
389+
auto buffer = SpiramArrayPtr<char>(bufferSize);
390390

391391
int totalBytesWritten = 0;
392392
while (totalBytesWritten < writeSize) {
@@ -433,7 +433,7 @@ auto SindarinAPI::getServerTime(time_t *time, bool useBle,
433433
}
434434

435435
// Read the timestamp directly as a string
436-
auto buffer = SpiRamArrayPtr<char>(contentLength + 1);
436+
auto buffer = SpiramArrayPtr<char>(contentLength + 1);
437437
auto stream = client->makeReadStream();
438438
size_t totalRead = 0;
439439

@@ -484,7 +484,7 @@ auto SindarinAPI::askQuestion(const BookQuestionRequest &req, BookQuestionRespon
484484
req.toJson(body);
485485

486486
size_t serializedMaxSize = (*doc).memoryUsage() * 2;
487-
auto reqBody = SpiRamArrayPtr<char>(serializedMaxSize);
487+
auto reqBody = SpiramArrayPtr<char>(serializedMaxSize);
488488
size_t bodyLength = serializeJson(*doc, reqBody.get(), serializedMaxSize);
489489

490490
err = client->open(bodyLength);
@@ -678,7 +678,7 @@ auto SindarinAPI::submitLastReadPageChoice(bool gotoLastReadPage, bool useBle,
678678
body["goto_last_read_page"] = gotoLastReadPage;
679679

680680
size_t serializedMaxSize = (*doc).memoryUsage() * 2;
681-
auto reqBody = SpiRamArrayPtr<char>(serializedMaxSize);
681+
auto reqBody = SpiramArrayPtr<char>(serializedMaxSize);
682682
size_t bodyLength = serializeJson(*doc, reqBody.get(), serializedMaxSize);
683683

684684
err = client->open(bodyLength);
@@ -743,7 +743,7 @@ auto SindarinAPI::fetchKindleChaptersWithUuids(const std::string &kindleUuid, in
743743
body["page"] = currentPage;
744744

745745
size_t serializedMaxSize = (*doc).memoryUsage() * 2;
746-
auto reqBody = SpiRamArrayPtr<char>(serializedMaxSize);
746+
auto reqBody = SpiramArrayPtr<char>(serializedMaxSize);
747747
size_t serializedSize = serializeJson(*doc, reqBody.get(), serializedMaxSize);
748748

749749
log_d("Request body: %s", reqBody.get());
@@ -826,7 +826,7 @@ auto SindarinAPI::navigateKindleToChapter(const std::string &kindleUuid,
826826
body["page"] = currentPage;
827827

828828
size_t serializedMaxSize = (*doc).memoryUsage() * 2;
829-
auto reqBody = SpiRamArrayPtr<char>(serializedMaxSize);
829+
auto reqBody = SpiramArrayPtr<char>(serializedMaxSize);
830830
size_t serializedSize = serializeJson(*doc, reqBody.get(), serializedMaxSize);
831831

832832
log_d("Request body: %s", reqBody.get());

src/Communications/USBSerial.cpp

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,10 @@
11
#include "Communications/USBSerial.hpp"
22

3+
#include <Spiram/Memory.hpp>
34
#include <esp_system.h>
45
#include <freertos/FreeRTOS.h>
56
#include <freertos/task.h>
67

7-
#include "Misc/SpiramAllocator.hpp"
8-
98
RTC_NOINIT_ATTR bool USBSerial::usbLoggingEnabled;
109
RTC_NOINIT_ATTR esp_log_level_t USBSerial::logLevel;
1110

@@ -59,7 +58,7 @@ void USBSerial::enableLogging() {
5958
void USBSerial::rxCommandCallback(int itf, cdcacm_event_t *event) {
6059
size_t rxSize = 0;
6160

62-
auto buffer = SpiRamArrayPtr<uint8_t>(CONFIG_TINYUSB_CDC_RX_BUFSIZE + 1);
61+
auto buffer = SpiramArrayPtr<uint8_t>(CONFIG_TINYUSB_CDC_RX_BUFSIZE + 1);
6362

6463
esp_err_t ret = tinyusb_cdcacm_read(static_cast<tinyusb_cdcacm_itf_t>(itf), buffer.get(),
6564
CONFIG_TINYUSB_CDC_RX_BUFSIZE, &rxSize);

src/Communications/WiFi.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
#include "Communications/WiFi.hpp"
22

3+
#include <Spiram/Memory.hpp>
34
#include <cstring>
45
#include <string>
56

67
#include "Misc/Defer.hpp"
7-
#include "Misc/SpiramAllocator.hpp"
88
#include "config.h"
99
#include "sindarin-debug.h"
1010

@@ -198,7 +198,7 @@ auto WiFi::scanNetworks(const std::function<void(std::shared_ptr<wifi_ap_record_
198198
continue;
199199
}
200200

201-
auto apRecords = SpiRamArrayPtr<wifi_ap_record_t>(apNum);
201+
auto apRecords = SpiramArrayPtr<wifi_ap_record_t>(apNum);
202202

203203
err = esp_wifi_scan_get_ap_records(&apNum, apRecords.get());
204204
if (err != ESP_OK) {

src/Communications/WiFiSettings.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
#pragma once
22

3+
#include <Spiram/String.hpp>
34
#include <utility>
45

5-
#include "Misc/SpiramAllocator.hpp"
66
#include "Models/Json.hpp"
77
#include "Models/JsonSerializable.hpp"
88
#include "Storage/PreferencesStore.hpp"

src/Displays/DisplaySystem.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -267,7 +267,7 @@ void DisplaySystem::drawPBM(int16_t x, int16_t y, RendererStream &stream) {
267267
} else {
268268
// not fullscreen
269269
// load bitmap into memory
270-
auto bitmap = SpiRamArrayPtr<uint8_t>(byteSize);
270+
auto bitmap = SpiramArrayPtr<uint8_t>(byteSize);
271271
if (stream.readBytes(bitmap.get(), byteSize) != byteSize) {
272272
log_e("failed to read bitmap");
273273
return;

0 commit comments

Comments
 (0)