Skip to content
Snippets Groups Projects
Commit 564cfa42 authored by fxk8y's avatar fxk8y :spider:
Browse files

Reworking VSync stuff; Registering FxCyanRGB8 at CyanBus

parent 932bd2c5
No related branches found
No related tags found
No related merge requests found
......@@ -277,7 +277,7 @@ namespace SiliconTorch {
else ESP_LOGE("PacketTask", "PACKET DEBUG: |payload|[ %d ] has incorrect CRC", payloadLEN);
const PacketData packet = {
.buffer = buffer+2,
.payload = buffer+2,
.length = payloadLEN
};
......
......@@ -28,7 +28,7 @@ namespace SiliconTorch {
typedef struct {
const uint8_t* buffer;
const uint8_t* payload;
const uint16_t length;
} PacketData;
......
......@@ -12,7 +12,8 @@
// #include "freertos/queue.h"
// project specific
// #include "LambdaTask.hpp"
#include "FxVSync.hpp"
#include "CyanBus.hpp"
// qthing stuff
// #include ""
......@@ -81,6 +82,20 @@ namespace SiliconTorch {
requestBufferSwap();
}
void FxCyanRGB8::registerAtCyanBus(CyanBus::CyanBus& cyanBus) {
uint8_t headerLength = HEADER.length();
cyanBus.packetCallback.add(HEADER, [&, headerLength](const SiliconTorch::CyanBus::PacketData& packet) {
this->handlePacket((uint8_t*)(packet.payload + headerLength), packet.length - headerLength);
});
FxVSync::registerAtCyanBus(cyanBus, [&]() {
requestBufferSwap();
});
}
void FxCyanRGB8::registerUDPHandler() {
if (!udpHandlerRegistered) {
udpHandlerRegistered = true;
......
......@@ -10,7 +10,7 @@
// #include "freertos/queue.h"
// project specific
// #include "LambdaTask.hpp"
#include "CyanBus.hpp"
// qthing stuff
#include <qthing>
......@@ -35,7 +35,7 @@ namespace SiliconTorch {
void getAnimator();
void requestBufferSwap();
void registerAtCyanBus(CyanBus::CyanBus& cyanBus);
// Register qthing UDP packet handler
// mainly used for testing purposes
......@@ -60,8 +60,9 @@ namespace SiliconTorch {
uint16_t startIdx;
void swapBuffers(); // TODO: visibility…?
void swapBuffers();
void requestBufferSwap();
};
}
......
#include "FxVSync.hpp"
// C++ system level
#include <functional>
// ESP32 specific
// #include "esp_log.h"
// project specific
#include "CyanBus.hpp"
// qthing stuff
// #include ""
namespace SiliconTorch {
namespace FxVSync {
const std::string HEADER("fxVSync");
void registerAtCyanBus(CyanBus::CyanBus& cyanBus, std::function<void()> callback) {
cyanBus.packetCallback.add(HEADER, [callback](const SiliconTorch::CyanBus::PacketData& ignored) { callback(); });
}
}
}
#pragma once
// C++ system level
#include <functional>
// ESP32 specific
// #include "esp_log.h"
// project specific
#include "CyanBus.hpp"
// qthing stuff
// #include ""
namespace SiliconTorch {
namespace FxVSync {
extern const std::string HEADER;
void registerAtCyanBus(CyanBus::CyanBus& cyanBus, std::function<void()> callback);
}
}
#include "VSyncManager.hpp"
// C++ system level
// #include <cstring> // memset, strncmp
// #include <cstdlib> // TODO: is this for memcpy?
// #include <cinttypes>
// #include <functional>
// ESP32 specific
#include "esp_log.h"
// #include "driver/gpio.h"
// #include "driver/uart.h"
// #include "freertos/FreeRTOS.h"
// #include "freertos/queue.h"
// project specific
// #include "CyanBusCRC.hpp"
// qthing stuff
// #include ""
#pragma once
// C++ system level
// #include <cstring> // memset, strncmp
// #include <cstdlib> // TODO: is this for memcpy?
// #include <cinttypes>
// #include <functional>
// ESP32 specific
#include "esp_log.h"
// #include "driver/gpio.h"
// #include "driver/uart.h"
// #include "freertos/FreeRTOS.h"
// #include "freertos/queue.h"
// project specific
// #include "CyanBusCRC.hpp"
// qthing stuff
// #include ""
......@@ -60,7 +60,7 @@ namespace SpiderLib {
}
void add(std::string& magicString, CallbackF callback) const {
void add(const std::string& magicString, CallbackF callback) const {
if (magicString.length() > maxPrefixLength) {
// TODO: raise exception? log error?
......
......@@ -55,6 +55,7 @@ void device_main() {
cyanRGB = new SiliconTorch::FxCyanRGB8::FxCyanRGB8(8);
cyanRGB->registerUDPHandler();
cyanRGB->registerAtCyanBus(*cyanBus);
auto bullshitPtr = std::shared_ptr<qthing::Animation<qthing::RGB>>(cyanRGB, [](void*){});
cfg.add<qthing::Animator<qthing::RGBW8>>(led0)->setAnimation(bullshitPtr);
......@@ -66,11 +67,11 @@ void device_main() {
std::string magic("fx");
cyanBus->packetCallback.add(magic, [](const SiliconTorch::CyanBus::PacketData& data) {
ESP_LOGW("PacketDataTestCallback", "|buffer|[ %d ] buffer[ %s ]", data.length, data.buffer);
ESP_LOGW("PacketDataTestCallback", "|payload|[ %d ] payload[ %s ]", data.length, data.payload);
});
cyanBus->metricsCallback += [](const SiliconTorch::CyanBus::PacketMetrics& metrics) {
ESP_LOGW("PacketMetricsTestCallback", "|buffer|[ %d ] crc⏻[ %s ]", metrics.payloadLEN, metrics.crcOK ? "✔" : "✘"); // TODO: better use ✅ / ❌ ??
ESP_LOGW("PacketMetricsTestCallback", "|payload|[ %d ] crc⏻[ %s ]", metrics.payloadLEN, metrics.crcOK ? "✔" : "✘"); // TODO: better use ✅ / ❌ ??
};
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment