Skip to content

Commit

Permalink
0.8.147
Browse files Browse the repository at this point in the history
* fixed send power limit #1757
  • Loading branch information
lumapu committed Sep 29, 2024
1 parent fe265d7 commit 08bc773
Show file tree
Hide file tree
Showing 3 changed files with 33 additions and 26 deletions.
1 change: 1 addition & 0 deletions src/CHANGES.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

## 0.8.147 - 2024-09-29
* improved queue, added mutex
* fixed send power limit #1757

## 0.8.146 - 2024-09-23
* fix reset ticker #1754
Expand Down
17 changes: 7 additions & 10 deletions src/hm/CommQueue.h
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
//-----------------------------------------------------------------------------
// 2023 Ahoy, https://github.com/lumpapu/ahoy
// 2024 Ahoy, https://github.com/lumpapu/ahoy
// Creative Commons - http://creativecommons.org/licenses/by-nc-sa/4.0/deed
//-----------------------------------------------------------------------------

Expand Down Expand Up @@ -140,24 +140,21 @@ class CommQueue {
if(this->rdPtr == this->wrPtr)
cb(false, nullptr); // empty
else {
//xSemaphoreTake(this->mutex, portMAX_DELAY);
//uint8_t tmp = this->rdPtr;
//xSemaphoreGive(this->mutex);
cb(true, &mQueue[this->rdPtr]);
xSemaphoreTake(this->mutex, portMAX_DELAY);
QueueElement el = mQueue[this->rdPtr];
inc(&this->rdPtr);
xSemaphoreGive(this->mutex);
cb(true, &el);
}
}

void cmdDone(QueueElement *q, bool keep = false) {
xSemaphoreTake(this->mutex, portMAX_DELAY);
if(keep) {
q->attempts = DefaultAttempts;
q->attemptsMax = DefaultAttempts;
xSemaphoreGive(this->mutex);
add(q); // add to the end again
xSemaphoreTake(this->mutex, portMAX_DELAY);
}
inc(&this->rdPtr);
xSemaphoreGive(this->mutex);
//inc(&this->rdPtr);
}

private:
Expand Down
41 changes: 25 additions & 16 deletions src/hm/Communication.h
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,9 @@ typedef std::function<void(Inverter<> *)> alarmListenerType;

class Communication : public CommQueue<> {
public:
Communication() : CommQueue() {}
Communication()
: CommQueue()
{}

~Communication() {}

Expand Down Expand Up @@ -52,23 +54,29 @@ class Communication : public CommQueue<> {
}

void loop() {
get([this](bool valid, QueueElement *q) {
if(!valid) {
if(mPrintSequenceDuration) {
mPrintSequenceDuration = false;
DPRINT(DBG_INFO, F("com loop duration: "));
DBGPRINT(String(millis() - mLastEmptyQueueMillis));
DBGPRINTLN(F("ms"));
DBGPRINTLN(F("-----"));
if(States::RESET == mState) {
get([this](bool valid, QueueElement *q) {
if(!valid) {
if(mPrintSequenceDuration) {
mPrintSequenceDuration = false;
DPRINT(DBG_INFO, F("com loop duration: "));
DBGPRINT(String(millis() - mLastEmptyQueueMillis));
DBGPRINTLN(F("ms"));
DBGPRINTLN(F("-----"));
el.iv = nullptr;
}
return; // empty
}
return; // empty
}
if(!mPrintSequenceDuration) // entry was added to the queue
mLastEmptyQueueMillis = millis();
mPrintSequenceDuration = true;

innerLoop(q);
});
el = *q;
if(!mPrintSequenceDuration) // entry was added to the queue
mLastEmptyQueueMillis = millis();
mPrintSequenceDuration = true;
});
}

if(nullptr != el.iv)
innerLoop(&el);
}

private:
Expand Down Expand Up @@ -1035,6 +1043,7 @@ class Communication : public CommQueue<> {
private:
States mState = States::RESET;
uint32_t *mTimestamp = nullptr;
QueueElement el;
bool *mPrivacyMode = nullptr, *mSerialDebug = nullptr, *mPrintWholeTrace = nullptr;
TimeMonitor mWaitTime = TimeMonitor(0, true); // start as expired (due to code in RESET state)
std::array<frame_t, MAX_PAYLOAD_ENTRIES> mLocalBuf;
Expand Down

0 comments on commit 08bc773

Please sign in to comment.