mirror of
https://github.com/meshtastic/firmware.git
synced 2025-12-22 02:32:23 +00:00
NimBLE speedup (#8281)
* Remove status polling code in NimBLE * Goober --------- Co-authored-by: Jonathan Bennett <jbennett@incomsystems.biz>
This commit is contained in:
committed by
Jonathan Bennett
parent
91d928d4c5
commit
f99747180e
@@ -431,7 +431,6 @@ size_t PhoneAPI::getFromRadio(uint8_t *buf)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case STATE_SEND_OTHER_NODEINFOS: {
|
case STATE_SEND_OTHER_NODEINFOS: {
|
||||||
LOG_DEBUG("Send known nodes");
|
|
||||||
if (nodeInfoForPhone.num != 0) {
|
if (nodeInfoForPhone.num != 0) {
|
||||||
// Just in case we stored a different user.id in the past, but should never happen going forward
|
// Just in case we stored a different user.id in the past, but should never happen going forward
|
||||||
sprintf(nodeInfoForPhone.user.id, "!%08x", nodeInfoForPhone.num);
|
sprintf(nodeInfoForPhone.user.id, "!%08x", nodeInfoForPhone.num);
|
||||||
@@ -592,6 +591,7 @@ bool PhoneAPI::available()
|
|||||||
nodeInfoForPhone.snr = isUs ? 0 : nodeInfoForPhone.snr;
|
nodeInfoForPhone.snr = isUs ? 0 : nodeInfoForPhone.snr;
|
||||||
nodeInfoForPhone.via_mqtt = isUs ? false : nodeInfoForPhone.via_mqtt;
|
nodeInfoForPhone.via_mqtt = isUs ? false : nodeInfoForPhone.via_mqtt;
|
||||||
nodeInfoForPhone.is_favorite = nodeInfoForPhone.is_favorite || isUs; // Our node is always a favorite
|
nodeInfoForPhone.is_favorite = nodeInfoForPhone.is_favorite || isUs; // Our node is always a favorite
|
||||||
|
|
||||||
onNowHasData(0);
|
onNowHasData(0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -120,14 +120,19 @@ class NimbleBluetoothFromRadioCallback : public NimBLECharacteristicCallbacks
|
|||||||
virtual void onRead(NimBLECharacteristic *pCharacteristic)
|
virtual void onRead(NimBLECharacteristic *pCharacteristic)
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
int tries = 0;
|
|
||||||
bluetoothPhoneAPI->phoneWants = true;
|
|
||||||
while (!bluetoothPhoneAPI->hasChecked && tries < 100) {
|
|
||||||
bluetoothPhoneAPI->setIntervalFromNow(0);
|
|
||||||
delay(20);
|
|
||||||
tries++;
|
|
||||||
}
|
|
||||||
std::lock_guard<std::mutex> guard(bluetoothPhoneAPI->nimble_mutex);
|
std::lock_guard<std::mutex> guard(bluetoothPhoneAPI->nimble_mutex);
|
||||||
|
|
||||||
|
// If we don't have fresh data, trigger a refresh
|
||||||
|
if (!bluetoothPhoneAPI->hasChecked || bluetoothPhoneAPI->numBytes == 0) {
|
||||||
|
bluetoothPhoneAPI->phoneWants = true;
|
||||||
|
bluetoothPhoneAPI->setIntervalFromNow(0);
|
||||||
|
|
||||||
|
// Get fresh data immediately
|
||||||
|
bluetoothPhoneAPI->numBytes = bluetoothPhoneAPI->getFromRadio(bluetoothPhoneAPI->fromRadioBytes);
|
||||||
|
bluetoothPhoneAPI->hasChecked = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Set the characteristic value with whatever data we have
|
||||||
pCharacteristic->setValue(bluetoothPhoneAPI->fromRadioBytes, bluetoothPhoneAPI->numBytes);
|
pCharacteristic->setValue(bluetoothPhoneAPI->fromRadioBytes, bluetoothPhoneAPI->numBytes);
|
||||||
|
|
||||||
if (bluetoothPhoneAPI->numBytes != 0) // if we did send something, queue it up right away to reload
|
if (bluetoothPhoneAPI->numBytes != 0) // if we did send something, queue it up right away to reload
|
||||||
|
|||||||
Reference in New Issue
Block a user