mirror of
https://github.com/sle118/squeezelite-esp32.git
synced 2025-12-10 13:37:03 +03:00
idf overriding method to bring back SPDIF and fix SPI + new CSPOT (which crashes)
This commit is contained in:
@@ -11,6 +11,7 @@ std::map<MercuryType, std::string> MercuryTypeMap({
|
||||
|
||||
MercuryManager::MercuryManager(std::unique_ptr<Session> session): bell::Task("mercuryManager", 6 * 1024, +1, 1)
|
||||
{
|
||||
tempMercuryHeader = Header_init_default;
|
||||
this->timeProvider = std::make_shared<TimeProvider>();
|
||||
this->callbacks = std::map<uint64_t, mercuryCallback>();
|
||||
this->subscriptions = std::map<std::string, mercuryCallback>();
|
||||
@@ -27,6 +28,11 @@ MercuryManager::MercuryManager(std::unique_ptr<Session> session): bell::Task("me
|
||||
};
|
||||
}
|
||||
|
||||
MercuryManager::~MercuryManager()
|
||||
{
|
||||
pbFree(Header_fields, &tempMercuryHeader);
|
||||
}
|
||||
|
||||
bool MercuryManager::timeoutHandler()
|
||||
{
|
||||
if (!isRunning) return true;
|
||||
@@ -257,9 +263,10 @@ void MercuryManager::updateQueue() {
|
||||
{
|
||||
auto response = std::make_unique<MercuryResponse>(packet->data);
|
||||
|
||||
if (this->subscriptions.count(response->mercuryHeader.uri.value()) > 0)
|
||||
auto uri = std::string(response->mercuryHeader.uri);
|
||||
if (this->subscriptions.count(uri) > 0)
|
||||
{
|
||||
this->subscriptions[response->mercuryHeader.uri.value()](std::move(response));
|
||||
this->subscriptions[uri](std::move(response));
|
||||
//this->subscriptions.erase(std::string(response->mercuryHeader.uri));
|
||||
}
|
||||
break;
|
||||
@@ -288,9 +295,8 @@ uint64_t MercuryManager::execute(MercuryType method, std::string uri, mercuryCal
|
||||
// Construct mercury header
|
||||
|
||||
CSPOT_LOG(debug, "executing MercuryType %s", MercuryTypeMap[method].c_str());
|
||||
Header mercuryHeader;
|
||||
mercuryHeader.uri = uri;
|
||||
mercuryHeader.method = MercuryTypeMap[method];
|
||||
tempMercuryHeader.uri = (char *)(uri.c_str());
|
||||
tempMercuryHeader.method = (char *)(MercuryTypeMap[method].c_str());
|
||||
|
||||
// GET and SEND are actually the same. Therefore the override
|
||||
// The difference between them is only in header's method
|
||||
@@ -299,7 +305,7 @@ uint64_t MercuryManager::execute(MercuryType method, std::string uri, mercuryCal
|
||||
method = MercuryType::SEND;
|
||||
}
|
||||
|
||||
auto headerBytes = encodePb(mercuryHeader);
|
||||
auto headerBytes = pbEncode(Header_fields, &tempMercuryHeader);
|
||||
|
||||
// Register a subscription when given method is called
|
||||
if (method == MercuryType::SUB)
|
||||
|
||||
Reference in New Issue
Block a user