diff --git a/src/main.cpp b/src/main.cpp index 95da04014..c3f892bce 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -233,6 +233,8 @@ void setup() delay(1); #endif + // We need to scan here to decide if we have a screen for nodeDB.init() + scanI2Cdevice(); #ifdef RAK4630 // scanEInkDevice(); #endif @@ -273,10 +275,12 @@ void setup() power->setup(); // Must be after status handler is installed, so that handler gets notified of the initial configuration /* - * Move the scanning I2C device to the back of power initialization. - * Some boards need to be powered on to correctly scan to the device address, such as t-beam-s3-core + * Repeat the scanning for I2C devices after power initialization. + * Boards with an PMU need to be powered on to correctly scan to the device address, such as t-beam-s3-core */ - scanI2Cdevice(); + if ((HW_VENDOR == HardwareModel_LILYGO_TBEAM_S3_CORE) || (HW_VENDOR == HardwareModel_TBEAM)) { + scanI2Cdevice(); + } // Init our SPI controller (must be before screen and lora) initSPI(); diff --git a/src/platform/portduino/SimRadio.cpp b/src/platform/portduino/SimRadio.cpp index ccfaa3b03..b3af114e5 100644 --- a/src/platform/portduino/SimRadio.cpp +++ b/src/platform/portduino/SimRadio.cpp @@ -171,6 +171,8 @@ void SimRadio::onNotify(uint32_t notification) // Packet has been sent, count it toward our TX airtime utilization. uint32_t xmitMsec = getPacketTime(txp); airTime->logAirtime(TX_LOG, xmitMsec); + + delay(xmitMsec); // Model the time it is busy sending completeSending(); } } @@ -207,6 +209,9 @@ void SimRadio::startSend(MeshPacket * txp) void SimRadio::startReceive(MeshPacket *p) { isReceiving = true; + size_t length = getPacketLength(p); + uint32_t xmitMsec = getPacketTime(length); + delay(xmitMsec); // Model the time it is busy receiving handleReceiveInterrupt(p); }