Added isReadBusy() for Serial interfaces

This commit is contained in:
Kevin Le committed 2026-10-17 23:01:09 +07:00
1 parent f992ef0c3e
commit c1ab0de85f
10 files changed
+51

No files matched your search

+5
View File
@@ -17,6 +17,11 @@ bool ArduinoSerialInterface::isConnected() const {
return true; // no way of knowing, so assume yes
}
// PowerSaving variant
bool ArduinoSerialInterface::isReadBusy() const {
return false;
}
bool ArduinoSerialInterface::isWriteBusy() const {
return false;
}
+3
View File
@@ -28,6 +28,9 @@ public:
bool isConnected() const override;
// PowerSaving variant
bool isReadBusy() const override;
bool isWriteBusy() const override;
size_t writeFrame(const uint8_t src[], size_t len) override;
size_t checkRecvFrame(uint8_t dest[]) override;
+3
View File
@@ -16,6 +16,9 @@ public:
virtual bool isConnected() const = 0;
virtual void loop() {};
// PowerSaving variant
virtual bool isReadBusy() const = 0;
virtual bool isWriteBusy() const = 0;
virtual size_t writeFrame(const uint8_t src[], size_t len) = 0;
virtual size_t checkRecvFrame(uint8_t dest[]) = 0;
+17
View File
@@ -140,6 +140,23 @@ public:
}
}
bool isReadBusy() const override {
// not busy when disabled
if (!_enabled) {
return false;
}
// check if any interface is busy
for (auto iface : _interfaces) {
if (iface.instance && iface.instance->isEnabled() && iface.instance->isReadBusy()) {
return true;
}
}
// nothing busy
return false;
}
bool isWriteBusy() const override {
// not busy when disabled
if(!_enabled){
+5
View File
@@ -188,6 +188,11 @@ size_t SerialBLEInterface::writeFrame(const uint8_t src[], size_t len) {
#define BLE_WRITE_MIN_INTERVAL 60
// PowerSaving variant
bool SerialBLEInterface::isReadBusy() const {
return uxQueueMessagesWaiting(recv_queue) > 0;
}
bool SerialBLEInterface::isWriteBusy() const {
return millis() < _last_write + BLE_WRITE_MIN_INTERVAL; // still too soon to start another write?
}
+3
View File
@@ -82,6 +82,9 @@ public:
bool isConnected() const override;
// PowerSaving variant
bool isReadBusy() const override;
bool isWriteBusy() const override;
size_t writeFrame(const uint8_t src[], size_t len) override;
size_t checkRecvFrame(uint8_t dest[]) override;
+5
View File
@@ -405,6 +405,11 @@ bool SerialBLEInterface::isConnected() const {
return _isDeviceConnected && Bluefruit.connected() > 0;
}
// PowerSaving variant
bool SerialBLEInterface::isReadBusy() const {
return (recv_queue_len > 0);
}
bool SerialBLEInterface::isWriteBusy() const {
return send_queue_len >= (FRAME_QUEUE_SIZE * 2 / 3);
}
+1
View File
@@ -66,6 +66,7 @@ public:
void disable() override;
bool isEnabled() const override { return _isEnabled; }
bool isConnected() const override;
bool isReadBusy() const override;
bool isWriteBusy() const override;
size_t writeFrame(const uint8_t src[], size_t len) override;
size_t checkRecvFrame(uint8_t dest[]) override;
+5
View File
@@ -39,6 +39,11 @@ size_t SerialWifiInterface::writeFrame(const uint8_t src[], size_t len) {
return 0;
}
// PowerSaving variant
bool SerialWifiInterface::isReadBusy() const {
return false;
}
bool SerialWifiInterface::isWriteBusy() const {
return false;
}
+4
View File
@@ -52,6 +52,10 @@ public:
bool isEnabled() const override { return _isEnabled; }
bool isConnected() const override;
// PowerSaving variant
bool isReadBusy() const override;
bool isWriteBusy() const override;
size_t writeFrame(const uint8_t src[], size_t len) override;