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

Incorporating CallbackMap

parent 26855819
No related branches found
No related tags found
No related merge requests found
...@@ -17,6 +17,8 @@ ...@@ -17,6 +17,8 @@
// project specific // project specific
#include "CyanBusCRC.hpp" #include "CyanBusCRC.hpp"
#include "LambdaTask.hpp" #include "LambdaTask.hpp"
#include "SpiderLib/Callback.hpp"
#include "SpiderLib/CallbackMap.hpp"
// qthing stuff // qthing stuff
// #include "" // #include ""
...@@ -284,7 +286,7 @@ namespace SiliconTorch { ...@@ -284,7 +286,7 @@ namespace SiliconTorch {
.payloadLEN = payloadLEN .payloadLEN = payloadLEN
}; };
if (crcOK) packetCallback(packet); if (crcOK) packetCallback(buffer+2, payloadLEN, packet);
metricsCallback(metrics); metricsCallback(metrics);
} }
} }
......
...@@ -10,8 +10,9 @@ ...@@ -10,8 +10,9 @@
#include "freertos/queue.h" #include "freertos/queue.h"
// project specific // project specific
#include "SpiderLib/Callback.hpp"
#include "LambdaTask.hpp" #include "LambdaTask.hpp"
#include "SpiderLib/Callback.hpp"
#include "SpiderLib/CallbackMap.hpp"
namespace SiliconTorch { namespace SiliconTorch {
...@@ -44,12 +45,9 @@ namespace SiliconTorch { ...@@ -44,12 +45,9 @@ namespace SiliconTorch {
uint32_t getBaudRate(); uint32_t getBaudRate();
void setBaudRate(uint32_t baudRate); void setBaudRate(uint32_t baudRate);
const SpiderLib::Callback<void(const PacketData&)> packetCallback; const SpiderLib::CallbackMap<void(const PacketData&)> packetCallback;
const SpiderLib::Callback<void(const PacketMetrics&)> metricsCallback; const SpiderLib::Callback<void(const PacketMetrics&)> metricsCallback;
// void registerMetricsCallback(MetricsCallback callback);
// void registerPacketCallback(std::string& magicString, PacketCallback callback);
private: private:
QueueHandle_t uartEvQ; QueueHandle_t uartEvQ;
......
...@@ -31,11 +31,12 @@ namespace SpiderLib { ...@@ -31,11 +31,12 @@ namespace SpiderLib {
CallbackMap(uint32_t maxPrefixLength = 16) : maxPrefixLength(maxPrefixLength) {}; CallbackMap(uint32_t maxPrefixLength = 16) : maxPrefixLength(maxPrefixLength) {};
// Doesn't work with zero-length prefixes (callback won't be called but no error occurs)
void operator()(const uint8_t* const buffer, uint32_t length, Args&&... args) const { void operator()(const uint8_t* const buffer, uint32_t length, Args&&... args) const {
uint32_t _len = std::min(maxPrefixLength, length); uint32_t _len = std::min(maxPrefixLength, length);
char* _prefix[_len + 1]; char _prefix[_len + 1];
_prefix[_len] = 0x00; _prefix[_len] = 0x00;
std::memcpy(_prefix, buffer, _len); std::memcpy(_prefix, buffer, _len);
std::string prefix(_prefix); std::string prefix(_prefix);
......
...@@ -14,7 +14,7 @@ ...@@ -14,7 +14,7 @@
#include <cstdlib> #include <cstdlib>
//#include "SpiderLib/SNTP.hpp" //#include "SpiderLib/SNTP.hpp"
// #include "SpiderLib/Util.hpp" // #include "SpiderLib/Util.hpp"
#include "SiliconTorch/CyanBusCRC.hpp"
#include "SiliconTorch/CyanBus.hpp" #include "SiliconTorch/CyanBus.hpp"
...@@ -26,7 +26,7 @@ ...@@ -26,7 +26,7 @@
// ### END LIBS ### // ### END LIBS ###
#include "SpiderLib/CallbackMap.hpp"
SiliconTorch::CyanBus::CyanBus* cyanBus = NULL; SiliconTorch::CyanBus::CyanBus* cyanBus = NULL;
...@@ -46,19 +46,6 @@ void device_main() { ...@@ -46,19 +46,6 @@ void device_main() {
SpiderLib::CallbackMap<void(const int)> cbM;
std::string magic0("a");
cbM.add(magic0, [](const int x){ ESP_LOGE("_a_", "Got int[ %d ]", x); });
cyanBus = new SiliconTorch::CyanBus::CyanBus(13, 14, 12, 15, 2000000); // Pinout of CyanStripe cyanBus = new SiliconTorch::CyanBus::CyanBus(13, 14, 12, 15, 2000000); // Pinout of CyanStripe
...@@ -77,10 +64,10 @@ void device_main() { ...@@ -77,10 +64,10 @@ void device_main() {
std::string magic("fx");
cyanBus->packetCallback += [](const SiliconTorch::CyanBus::PacketData& data) { cyanBus->packetCallback.add(magic, [](const SiliconTorch::CyanBus::PacketData& data) {
ESP_LOGW("PacketDataTestCallback", "|buffer|[ %d ] buffer[ %s ]", data.length, data.buffer); ESP_LOGW("PacketDataTestCallback", "|buffer|[ %d ] buffer[ %s ]", data.length, data.buffer);
}; });
cyanBus->metricsCallback += [](const SiliconTorch::CyanBus::PacketMetrics& metrics) { cyanBus->metricsCallback += [](const SiliconTorch::CyanBus::PacketMetrics& metrics) {
ESP_LOGW("PacketMetricsTestCallback", "|buffer|[ %d ] crc⏻[ %s ]", metrics.payloadLEN, metrics.crcOK ? "✔" : "✘"); // TODO: better use ✅ / ❌ ?? ESP_LOGW("PacketMetricsTestCallback", "|buffer|[ %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