diff --git a/src/entrypoints/sx1278-serial.cpp b/src/entrypoints/sx1278-serial.cpp
index f3f567beaac1b686de681d0dbe86bf9cb3612bb4..a4b8ad028e36279d6ef7106214162ed286e5137e 100644
--- a/src/entrypoints/sx1278-serial.cpp
+++ b/src/entrypoints/sx1278-serial.cpp
@@ -79,7 +79,7 @@ SX1278Fsk *sx1278                  = nullptr;
 void __attribute__((used)) SX1278_IRQ_DIO0()
 {
     if (sx1278)
-        sx1278->handleDioIRQ(SX1278::Dio::DIO0);
+        sx1278->handleDioIRQ();
 }
 #endif
 
@@ -87,7 +87,7 @@ void __attribute__((used)) SX1278_IRQ_DIO0()
 void __attribute__((used)) SX1278_IRQ_DIO1()
 {
     if (sx1278)
-        sx1278->handleDioIRQ(SX1278::Dio::DIO1);
+        sx1278->handleDioIRQ();
 }
 #endif
 
@@ -95,7 +95,7 @@ void __attribute__((used)) SX1278_IRQ_DIO1()
 void __attribute__((used)) SX1278_IRQ_DIO3()
 {
     if (sx1278)
-        sx1278->handleDioIRQ(SX1278::Dio::DIO3);
+        sx1278->handleDioIRQ();
 }
 #endif
 
diff --git a/src/shared/radio/SX1278/SX1278Common.cpp b/src/shared/radio/SX1278/SX1278Common.cpp
index 8f7a5f0dd97daac81d6857cd020a53d9e86ebfbb..af118e81840f8783a3bb1394cbf536a02d892cf4 100644
--- a/src/shared/radio/SX1278/SX1278Common.cpp
+++ b/src/shared/radio/SX1278/SX1278Common.cpp
@@ -30,9 +30,9 @@ namespace Boardcore
 namespace SX1278
 {
 
-void SX1278Common::handleDioIRQ(Dio dio)
+void SX1278Common::handleDioIRQ()
 {
-    if (state.waiting_dio_mask.test(dio) && state.irq_wait_thread)
+    if (state.irq_wait_thread)
     {
         state.irq_wait_thread->IRQwakeup();
         if (state.irq_wait_thread->IRQgetPriority() >
@@ -59,16 +59,11 @@ void SX1278Common::waitForIrq(LockMode &_guard, IrqFlags irq, bool unlock)
     // otherwise don't do anything with it
     (void)_guard;
 
-    // Convert the IRQ mask into a DIO mask
-    DioMask waiting_dio_mask =
-        getDioMaskFromIrqFlags(irq, state.mode, state.mapping);
-
     do
     {
         // An interrupt could occur and read from this variables
         {
             miosix::FastInterruptDisableLock dLock;
-            state.waiting_dio_mask = waiting_dio_mask;
             state.irq_wait_thread  = miosix::Thread::IRQgetCurrentThread();
         }
 
@@ -162,7 +157,6 @@ SX1278Common::DeviceState SX1278Common::lockMode(Mode mode, DioMapping mapping,
 
     enterMode(mode, mapping, tx_frontend, rx_frontend);
     state.irq_wait_thread  = nullptr;
-    state.waiting_dio_mask = DioMask();
 
     return old_state;
 }
@@ -171,7 +165,6 @@ void SX1278Common::unlockMode(DeviceState old_state)
 {
     // Do this copy manually, we want stuff to be copied in a specific order
     state.irq_wait_thread  = old_state.irq_wait_thread;
-    state.waiting_dio_mask = old_state.waiting_dio_mask;
     enterMode(old_state.mode, old_state.mapping, old_state.is_tx_frontend_on,
               old_state.is_rx_frontend_on);
 }
diff --git a/src/shared/radio/SX1278/SX1278Common.h b/src/shared/radio/SX1278/SX1278Common.h
index 35823c82dd0485675e99132332c16a538a05dcfb..d718dbf91f1b827cb460facea8e1190aaa38e276 100644
--- a/src/shared/radio/SX1278/SX1278Common.h
+++ b/src/shared/radio/SX1278/SX1278Common.h
@@ -36,25 +36,6 @@ namespace Boardcore
 namespace SX1278
 {
 
-/**
- * @brief Represents a set of Dio
- */
-class DioMask
-{
-public:
-    DioMask() : mask(0) {}
-
-    bool test(Dio dio) const
-    {
-        return (mask & (1 << static_cast<int>(dio))) != 0;
-    }
-    void set(Dio dio) { mask |= (1 << static_cast<int>(dio)); }
-    void reset(Dio dio) { mask &= ~(1 << static_cast<int>(dio)); }
-
-private:
-    uint8_t mask;
-};
-
 using DioMapping = RegDioMapping::Mapping;
 
 /**
@@ -75,9 +56,6 @@ protected:
 
     virtual IrqFlags getIrqFlags()             = 0;
     virtual void resetIrqFlags(IrqFlags flags) = 0;
-
-    virtual DioMask getDioMaskFromIrqFlags(IrqFlags flags, Mode mode,
-                                           DioMapping mapping) = 0;
 };
 
 /**
@@ -113,8 +91,6 @@ private:
         DioMapping mapping = DioMapping();
         // Thread waiting listening for interrupts
         miosix::Thread *irq_wait_thread = nullptr;
-        // What DIOs are we waiting on
-        DioMask waiting_dio_mask = DioMask();
         // True if the RX frontend is enabled
         bool is_rx_frontend_on = false;
         // True if the TX frontend is enabled
@@ -122,12 +98,11 @@ private:
     };
 
 public:
-    using Dio = SX1278::Dio;
 
     /**
      * @brief Handle generic DIO irq.
      */
-    void handleDioIRQ(Dio dio);
+    void handleDioIRQ();
 
 protected:
     explicit SX1278Common(SPIBus &bus, miosix::GpioPin cs,
diff --git a/src/shared/radio/SX1278/SX1278Defs.h b/src/shared/radio/SX1278/SX1278Defs.h
index 67b3652c5e9470dfd5cc24550def8173256f52fc..b674d59d24de0bad0b9c3fada6469cc16ec931fd 100644
--- a/src/shared/radio/SX1278/SX1278Defs.h
+++ b/src/shared/radio/SX1278/SX1278Defs.h
@@ -23,6 +23,7 @@
 #pragma once
 
 #include <drivers/spi/SPIBusInterface.h>
+
 #include <cstdint>
 
 namespace Boardcore
@@ -169,7 +170,7 @@ inline constexpr uint8_t make(uint8_t output_power, uint8_t max_power,
            (pa_select ? 1 << 7 : 0);
 }
 
-}
+}  // namespace RegPaConfig
 
 namespace RegPaRamp
 {
@@ -207,7 +208,7 @@ inline constexpr uint8_t make(PaRamp pa_ramp,
     return pa_ramp | (modulation_shaping << 5);
 }
 
-}
+}  // namespace RegPaRamp
 
 namespace RegOcp
 {
@@ -217,7 +218,7 @@ inline constexpr uint8_t make(uint8_t ocp_trim, bool ocp_on)
     return (ocp_trim & 0b11111) | (ocp_on ? 1 << 5 : 0);
 }
 
-}
+}  // namespace RegOcp
 
 namespace RegRxConfig
 {
@@ -268,7 +269,7 @@ enum RxBw
 
 inline constexpr uint8_t make(RxBw rx_bw) { return rx_bw; }
 
-}
+}  // namespace RegRxBw
 
 namespace RegAfcBw
 {
@@ -277,7 +278,7 @@ using RxBwAfc = Boardcore::SX1278::Fsk::RegRxBw::RxBw;
 
 inline constexpr uint8_t make(RxBwAfc rx_bw_afc) { return rx_bw_afc; }
 
-}
+}  // namespace RegAfcBw
 
 namespace RegPreambleDetector
 {
@@ -392,7 +393,7 @@ inline constexpr uint8_t make(int fifo_threshold,
     return (fifo_threshold & 0b111111) | (tx_start_condition << 7);
 }
 
-}
+}  // namespace RegFifoThresh
 
 namespace RegIrqFlags
 {
@@ -429,7 +430,7 @@ enum PaDac
 
 inline constexpr uint8_t make(PaDac pa_dac) { return pa_dac | (0x10 << 3); }
 
-}
+}  // namespace RegPaDac
 
 enum Registers
 {
@@ -532,134 +533,6 @@ enum Registers
     REG_AGC_PILL     = 0x70,
 };
 
-static constexpr int DIO_MAPPINGS[6][8][4] =
-    {[0] =
-         {
-             [RegOpMode::MODE_SLEEP] = {0, 0, 0, 0},
-             [RegOpMode::MODE_STDBY] = {0, 0, 0, RegIrqFlags::LOW_BAT},
-             [RegOpMode::MODE_FSTX]  = {0, 0, 0, RegIrqFlags::LOW_BAT},
-             [RegOpMode::MODE_TX]    = {RegIrqFlags::PACKET_SENT, 0, 0,
-                                     RegIrqFlags::LOW_BAT},
-             [RegOpMode::MODE_FSRX]  = {0, 0, 0, RegIrqFlags::LOW_BAT},
-             [RegOpMode::MODE_RX] =
-                 {RegIrqFlags::PAYLOAD_READY, RegIrqFlags::CRC_OK, 0,
-                  RegIrqFlags::LOW_BAT},
-         },
-     [1] =
-         {
-             [RegOpMode::MODE_SLEEP] = {RegIrqFlags::FIFO_LEVEL,
-                                        RegIrqFlags::FIFO_EMPTY,
-                                        RegIrqFlags::FIFO_FULL, 0},
-             [RegOpMode::MODE_STDBY] = {RegIrqFlags::FIFO_LEVEL,
-                                        RegIrqFlags::FIFO_EMPTY,
-                                        RegIrqFlags::FIFO_FULL, 0},
-             [RegOpMode::MODE_FSTX] =
-                 {RegIrqFlags::FIFO_LEVEL, RegIrqFlags::FIFO_EMPTY,
-                  RegIrqFlags::FIFO_FULL, 0},
-             [RegOpMode::MODE_TX] = {RegIrqFlags::FIFO_LEVEL,
-                                     RegIrqFlags::FIFO_EMPTY,
-                                     RegIrqFlags::FIFO_FULL, 0},
-             [RegOpMode::MODE_FSRX] =
-                 {RegIrqFlags::FIFO_LEVEL, RegIrqFlags::FIFO_EMPTY,
-                  RegIrqFlags::FIFO_FULL, 0},
-             [RegOpMode::MODE_RX] = {RegIrqFlags::FIFO_LEVEL,
-                                     RegIrqFlags::FIFO_EMPTY,
-                                     RegIrqFlags::FIFO_FULL, 0},
-         },
-     [2] =
-         {
-             [RegOpMode::MODE_SLEEP] =
-                 {RegIrqFlags::FIFO_FULL, 0, RegIrqFlags::FIFO_FULL,
-                  RegIrqFlags::FIFO_FULL},
-             [RegOpMode::MODE_STDBY] =
-                 {RegIrqFlags::FIFO_FULL, 0, RegIrqFlags::FIFO_FULL,
-                  RegIrqFlags::FIFO_FULL},
-             [RegOpMode::MODE_FSTX] = {RegIrqFlags::FIFO_FULL, 0,
-                                       RegIrqFlags::FIFO_FULL,
-                                       RegIrqFlags::FIFO_FULL},
-             [RegOpMode::MODE_TX] =
-                 {RegIrqFlags::FIFO_FULL, 0, RegIrqFlags::FIFO_FULL,
-                  RegIrqFlags::FIFO_FULL},
-             [RegOpMode::MODE_FSRX] = {RegIrqFlags::FIFO_FULL, 0,
-                                       RegIrqFlags::FIFO_FULL,
-                                       RegIrqFlags::FIFO_FULL},
-             [RegOpMode::MODE_RX] =
-                 {RegIrqFlags::FIFO_FULL, RegIrqFlags::RX_READY,
-                  RegIrqFlags::TIMEOUT, RegIrqFlags::SYNC_ADDRESS_MATCH},
-         },
-     [3] =
-         {
-             [RegOpMode::MODE_SLEEP] =
-                 {
-                     RegIrqFlags::FIFO_EMPTY,
-                     0,
-                     RegIrqFlags::FIFO_EMPTY,
-                     RegIrqFlags::FIFO_EMPTY,
-                 },
-             [RegOpMode::MODE_STDBY] =
-                 {
-                     RegIrqFlags::FIFO_EMPTY,
-                     0,
-                     RegIrqFlags::FIFO_EMPTY,
-                     RegIrqFlags::FIFO_EMPTY,
-                 },
-             [RegOpMode::MODE_FSTX] =
-                 {
-                     RegIrqFlags::FIFO_EMPTY,
-                     0,
-                     RegIrqFlags::FIFO_EMPTY,
-                     RegIrqFlags::FIFO_EMPTY,
-                 },
-             [RegOpMode::MODE_TX] =
-                 {
-                     RegIrqFlags::FIFO_EMPTY,
-                     RegIrqFlags::TX_READY,
-                     RegIrqFlags::FIFO_EMPTY,
-                     RegIrqFlags::FIFO_EMPTY,
-                 },
-             [RegOpMode::MODE_FSRX] =
-                 {
-                     RegIrqFlags::FIFO_EMPTY,
-                     0,
-                     RegIrqFlags::FIFO_EMPTY,
-                     RegIrqFlags::FIFO_EMPTY,
-                 },
-             [RegOpMode::MODE_RX] =
-                 {
-                     RegIrqFlags::FIFO_EMPTY,
-                     0,
-                     RegIrqFlags::FIFO_EMPTY,
-                     RegIrqFlags::FIFO_EMPTY,
-                 },
-         },
-     [4] =
-         {
-             [RegOpMode::MODE_SLEEP] = {0, 0, 0, 0},
-             [RegOpMode::MODE_STDBY] = {RegIrqFlags::LOW_BAT, 0, 0, 0},
-             [RegOpMode::MODE_FSTX]  = {RegIrqFlags::LOW_BAT,
-                                       RegIrqFlags::PILL_LOCK, 0, 0},
-             [RegOpMode::MODE_TX]    = {RegIrqFlags::LOW_BAT,
-                                     RegIrqFlags::PILL_LOCK, 0, 0},
-             [RegOpMode::MODE_FSRX]  = {RegIrqFlags::LOW_BAT,
-                                       RegIrqFlags::PILL_LOCK, 0, 0},
-             [RegOpMode::MODE_RX] =
-                 {RegIrqFlags::LOW_BAT, RegIrqFlags::PILL_LOCK,
-                  RegIrqFlags::TIMEOUT,
-                  RegIrqFlags::RSSI | RegIrqFlags::PREAMBLE_DETECT},
-         },
-     [5] = {
-         [RegOpMode::MODE_SLEEP] = {0, 0, 0, 0},
-         [RegOpMode::MODE_STDBY] = {0, 0, 0, RegIrqFlags::MODE_READY},
-         [RegOpMode::MODE_FSTX]  = {0, RegIrqFlags::PILL_LOCK, 0,
-                                   RegIrqFlags::MODE_READY},
-
-         [RegOpMode::MODE_TX]   = {0, RegIrqFlags::PILL_LOCK, 0,
-                                 RegIrqFlags::MODE_READY},
-         [RegOpMode::MODE_FSRX] = {0, RegIrqFlags::PILL_LOCK, 0,
-                                   RegIrqFlags::MODE_READY},
-         [RegOpMode::MODE_RX]   = {0, RegIrqFlags::PILL_LOCK, 0,
-                                 RegIrqFlags::MODE_READY},
-     }};
 }  // namespace Fsk
 
 /**
@@ -922,18 +795,6 @@ enum Registers
     REG_AGC_PILL     = 0x70,
 };
 
-static constexpr int DIO_MAPPINGS[6][4] = {
-    [0] = {RegIrqFlags::RX_DONE, RegIrqFlags::TX_DONE, RegIrqFlags::CAD_DONE,
-           0},
-    [1] = {RegIrqFlags::RX_TIMEOUT, RegIrqFlags::FHSS_CHANGE_CHANNEL,
-           RegIrqFlags::CAD_DETECTED, 0},
-    [2] = {RegIrqFlags::FHSS_CHANGE_CHANNEL, RegIrqFlags::FHSS_CHANGE_CHANNEL,
-           RegIrqFlags::FHSS_CHANGE_CHANNEL, 0},
-    [3] = {RegIrqFlags::CAD_DONE, RegIrqFlags::VALID_HEADER,
-           RegIrqFlags::PAYLOAD_CRC_ERROR, 0},
-    [4] = {RegIrqFlags::CAD_DETECTED, 0, 0, 0},
-    [5] = {0, 0, 0, 0}};
-
 }  // namespace Lora
 
 }  // namespace SX1278
diff --git a/src/shared/radio/SX1278/SX1278Fsk.cpp b/src/shared/radio/SX1278/SX1278Fsk.cpp
index 087b79b3e6ceb6a80427da09a8cd225c16578fe8..f56b3c912d5c7cc6e069a072f9077664449ca4bf 100644
--- a/src/shared/radio/SX1278/SX1278Fsk.cpp
+++ b/src/shared/radio/SX1278/SX1278Fsk.cpp
@@ -295,32 +295,6 @@ void SX1278Fsk::rateLimitTx()
     }
 }
 
-DioMask SX1278Fsk::getDioMaskFromIrqFlags(IrqFlags flags, Mode mode,
-                                          DioMapping mapping)
-{
-    DioMask dio_mask;
-
-    if (DIO_MAPPINGS[0][mode][mapping.getMapping(Dio::DIO0)] & flags)
-        dio_mask.set(Dio::DIO0);
-
-    if (DIO_MAPPINGS[1][mode][mapping.getMapping(Dio::DIO1)] & flags)
-        dio_mask.set(Dio::DIO1);
-
-    if (DIO_MAPPINGS[2][mode][mapping.getMapping(Dio::DIO2)] & flags)
-        dio_mask.set(Dio::DIO2);
-
-    if (DIO_MAPPINGS[3][mode][mapping.getMapping(Dio::DIO3)] & flags)
-        dio_mask.set(Dio::DIO3);
-
-    if (DIO_MAPPINGS[4][mode][mapping.getMapping(Dio::DIO4)] & flags)
-        dio_mask.set(Dio::DIO4);
-
-    if (DIO_MAPPINGS[5][mode][mapping.getMapping(Dio::DIO5)] & flags)
-        dio_mask.set(Dio::DIO5);
-
-    return dio_mask;
-}
-
 ISX1278::IrqFlags SX1278Fsk::getIrqFlags()
 {
     SPITransaction spi(getSpiSlave());
diff --git a/src/shared/radio/SX1278/SX1278Fsk.h b/src/shared/radio/SX1278/SX1278Fsk.h
index 8210ad1d2f37702b02100d6a0081d85a3947dbd4..be110c8c55f9767e059639f2dd0cadb023cf3817 100644
--- a/src/shared/radio/SX1278/SX1278Fsk.h
+++ b/src/shared/radio/SX1278/SX1278Fsk.h
@@ -194,9 +194,6 @@ public:
 private:
     void rateLimitTx();
 
-    SX1278::DioMask getDioMaskFromIrqFlags(IrqFlags flags, Mode mode,
-                                           SX1278::DioMapping mapping) override;
-
     IrqFlags getIrqFlags() override;
     void resetIrqFlags(IrqFlags flags) override;
 
diff --git a/src/shared/radio/SX1278/SX1278Lora.cpp b/src/shared/radio/SX1278/SX1278Lora.cpp
index 7ffa2970d76c7f2e8f8bfa1daeb965d25adbe768..5948b78d86be9f1e7c20a9f8e8053f2968c96bf6 100644
--- a/src/shared/radio/SX1278/SX1278Lora.cpp
+++ b/src/shared/radio/SX1278/SX1278Lora.cpp
@@ -360,34 +360,6 @@ void SX1278Lora::writeFifo(uint8_t addr, uint8_t *src, uint8_t size)
     spi.writeRegisters(REG_FIFO, src, size);
 }
 
-SX1278::DioMask SX1278Lora::getDioMaskFromIrqFlags(IrqFlags flags, Mode _mode,
-                                                   SX1278::DioMapping mapping)
-{
-    // In LoRa the mode doesn't matter for IRQs
-    (void)_mode;
-    DioMask dio_mask;
-
-    if (DIO_MAPPINGS[0][mapping.getMapping(Dio::DIO0)] & flags)
-        dio_mask.set(Dio::DIO0);
-
-    if (DIO_MAPPINGS[1][mapping.getMapping(Dio::DIO1)] & flags)
-        dio_mask.set(Dio::DIO1);
-
-    if (DIO_MAPPINGS[2][mapping.getMapping(Dio::DIO2)] & flags)
-        dio_mask.set(Dio::DIO2);
-
-    if (DIO_MAPPINGS[3][mapping.getMapping(Dio::DIO3)] & flags)
-        dio_mask.set(Dio::DIO3);
-
-    if (DIO_MAPPINGS[4][mapping.getMapping(Dio::DIO4)] & flags)
-        dio_mask.set(Dio::DIO4);
-
-    if (DIO_MAPPINGS[5][mapping.getMapping(Dio::DIO5)] & flags)
-        dio_mask.set(Dio::DIO5);
-
-    return dio_mask;
-}
-
 ISX1278::IrqFlags SX1278Lora::getIrqFlags()
 {
     SPITransaction spi(getSpiSlave());
diff --git a/src/shared/radio/SX1278/SX1278Lora.h b/src/shared/radio/SX1278/SX1278Lora.h
index 77994f8df0bc56e207042a4d3aacd09c7bd7518d..94159b59089e15daf3e874e4644aad4f7c9a1f8c 100644
--- a/src/shared/radio/SX1278/SX1278Lora.h
+++ b/src/shared/radio/SX1278/SX1278Lora.h
@@ -191,9 +191,6 @@ private:
     void readFifo(uint8_t addr, uint8_t *dst, uint8_t size);
     void writeFifo(uint8_t addr, uint8_t *src, uint8_t size);
 
-    SX1278::DioMask getDioMaskFromIrqFlags(IrqFlags flags, Mode mode,
-                                           SX1278::DioMapping mapping) override;
-
     IrqFlags getIrqFlags() override;
     void resetIrqFlags(IrqFlags flags) override;
 
diff --git a/src/tests/radio/sx1278/fsk/test-sx1278-bench-gui.cpp b/src/tests/radio/sx1278/fsk/test-sx1278-bench-gui.cpp
index e098f4150c7b529c1fc8d2139af025d653d2bc6f..a4b85cc607f1b6a25cfa0af0bf9396004c8ad963 100644
--- a/src/tests/radio/sx1278/fsk/test-sx1278-bench-gui.cpp
+++ b/src/tests/radio/sx1278/fsk/test-sx1278-bench-gui.cpp
@@ -61,19 +61,19 @@ using mosi = interfaces::spi4::mosi;
 void __attribute__((used)) SX1278_IRQ_DIO0()
 {
     if (sx1278)
-        sx1278->handleDioIRQ(SX1278Fsk::Dio::DIO0);
+        sx1278->handleDioIRQ();
 }
 
 void __attribute__((used)) SX1278_IRQ_DIO1()
 {
     if (sx1278)
-        sx1278->handleDioIRQ(SX1278Fsk::Dio::DIO1);
+        sx1278->handleDioIRQ();
 }
 
 void __attribute__((used)) SX1278_IRQ_DIO3()
 {
     if (sx1278)
-        sx1278->handleDioIRQ(SX1278Fsk::Dio::DIO3);
+        sx1278->handleDioIRQ();
 }
 
 void initBoard()
diff --git a/src/tests/radio/sx1278/fsk/test-sx1278-bench-serial.cpp b/src/tests/radio/sx1278/fsk/test-sx1278-bench-serial.cpp
index 5d00127ed66464bf9a3dc141d3469c6444f393db..6bbfaa3c3eec55c245eddacfe2a31e5266f06c2d 100644
--- a/src/tests/radio/sx1278/fsk/test-sx1278-bench-serial.cpp
+++ b/src/tests/radio/sx1278/fsk/test-sx1278-bench-serial.cpp
@@ -56,32 +56,22 @@ using mosi = interfaces::spi4::mosi;
 #error "Target not supported"
 #endif
 
-volatile int dio0_cnt = 0;
-volatile int dio1_cnt = 0;
-volatile int dio3_cnt = 0;
-
 void __attribute__((used)) SX1278_IRQ_DIO0()
 {
     if (sx1278)
-        sx1278->handleDioIRQ(SX1278Fsk::Dio::DIO0);
-
-    dio0_cnt++;
+        sx1278->handleDioIRQ();
 }
 
 void __attribute__((used)) SX1278_IRQ_DIO1()
 {
     if (sx1278)
-        sx1278->handleDioIRQ(SX1278Fsk::Dio::DIO1);
-
-    dio1_cnt++;
+        sx1278->handleDioIRQ();
 }
 
 void __attribute__((used)) SX1278_IRQ_DIO3()
 {
     if (sx1278)
-        sx1278->handleDioIRQ(SX1278Fsk::Dio::DIO3);
-
-    dio3_cnt++;
+        sx1278->handleDioIRQ();
 }
 
 void initBoard()
@@ -146,14 +136,11 @@ int main()
             "Corrupted packets: %d\n"
             "Packet loss:       %.2f %%\n"
             "RSSI:              %.2f dBm\n"
-            "FEI:               %.2f dBm\n"
-            "dio0:              %d\n"
-            "dio1:              %d\n"
-            "dio3:              %d\n",
+            "FEI:               %.2f dBm\n",
             static_cast<float>(stats.txBitrate()) / 1000.0f, stats.sent_count,
             static_cast<float>(stats.rxBitrate()) / 1000.0f, stats.recv_count,
             stats.corrupted_count, 0.0f /* TODO: Packet loss */, stats.rssi,
-            stats.fei, dio0_cnt, dio1_cnt, dio3_cnt);
+            stats.fei);
 
         miosix::Thread::sleep(2000);
     }
diff --git a/src/tests/radio/sx1278/fsk/test-sx1278-bidir.cpp b/src/tests/radio/sx1278/fsk/test-sx1278-bidir.cpp
index 91ea184399bc0400d659d0e469344effe988e332..0472f464d36ffc91f25d700cc2e8e8facecc36bc 100644
--- a/src/tests/radio/sx1278/fsk/test-sx1278-bidir.cpp
+++ b/src/tests/radio/sx1278/fsk/test-sx1278-bidir.cpp
@@ -63,19 +63,19 @@ SX1278Fsk *sx1278 = nullptr;
 void __attribute__((used)) SX1278_IRQ_DIO0()
 {
     if (sx1278)
-        sx1278->handleDioIRQ(SX1278Fsk::Dio::DIO0);
+        sx1278->handleDioIRQ();
 }
 
 void __attribute__((used)) SX1278_IRQ_DIO1()
 {
     if (sx1278)
-        sx1278->handleDioIRQ(SX1278Fsk::Dio::DIO1);
+        sx1278->handleDioIRQ();
 }
 
 void __attribute__((used)) SX1278_IRQ_DIO3()
 {
     if (sx1278)
-        sx1278->handleDioIRQ(SX1278Fsk::Dio::DIO3);
+        sx1278->handleDioIRQ();
 }
 
 void initBoard()
diff --git a/src/tests/radio/sx1278/fsk/test-sx1278-mavlink.cpp b/src/tests/radio/sx1278/fsk/test-sx1278-mavlink.cpp
index 17d51d4b88ebf66b14a236888624d3fdf23703de..109315e1b0475c4c2e3bbef0f2763977105c8850 100644
--- a/src/tests/radio/sx1278/fsk/test-sx1278-mavlink.cpp
+++ b/src/tests/radio/sx1278/fsk/test-sx1278-mavlink.cpp
@@ -79,19 +79,19 @@ SX1278Fsk* sx1278 = nullptr;
 void __attribute__((used)) SX1278_IRQ_DIO0()
 {
     if (sx1278)
-        sx1278->handleDioIRQ(SX1278Fsk::Dio::DIO0);
+        sx1278->handleDioIRQ();
 }
 
 void __attribute__((used)) SX1278_IRQ_DIO1()
 {
     if (sx1278)
-        sx1278->handleDioIRQ(SX1278Fsk::Dio::DIO1);
+        sx1278->handleDioIRQ();
 }
 
 void __attribute__((used)) SX1278_IRQ_DIO3()
 {
     if (sx1278)
-        sx1278->handleDioIRQ(SX1278Fsk::Dio::DIO3);
+        sx1278->handleDioIRQ();
 }
 
 void initBoard()
diff --git a/src/tests/radio/sx1278/lora/test-sx1278-bidir.cpp b/src/tests/radio/sx1278/lora/test-sx1278-bidir.cpp
index 285828cac2be3af4a563bfa60f9271977ca47e52..79ee1725dbcc4ca3e6dd6e57ab4dfd318cf2cfef 100644
--- a/src/tests/radio/sx1278/lora/test-sx1278-bidir.cpp
+++ b/src/tests/radio/sx1278/lora/test-sx1278-bidir.cpp
@@ -66,19 +66,19 @@ SX1278Lora *sx1278 = nullptr;
 void __attribute__((used)) SX1278_IRQ_DIO0()
 {
     if (sx1278)
-        sx1278->handleDioIRQ(SX1278Lora::Dio::DIO0);
+        sx1278->handleDioIRQ();
 }
 
 void __attribute__((used)) SX1278_IRQ_DIO1()
 {
     if (sx1278)
-        sx1278->handleDioIRQ(SX1278Lora::Dio::DIO1);
+        sx1278->handleDioIRQ();
 }
 
 void __attribute__((used)) SX1278_IRQ_DIO3()
 {
     if (sx1278)
-        sx1278->handleDioIRQ(SX1278Lora::Dio::DIO3);
+        sx1278->handleDioIRQ();
 }
 
 void initBoard()
diff --git a/src/tests/radio/sx1278/lora/test-sx1278-mavlink.cpp b/src/tests/radio/sx1278/lora/test-sx1278-mavlink.cpp
index ce217cb63cb6ad397b074b9d1159e6fceedfab2e..3b94265417c6794e70a4813ef20c39b797d009d2 100644
--- a/src/tests/radio/sx1278/lora/test-sx1278-mavlink.cpp
+++ b/src/tests/radio/sx1278/lora/test-sx1278-mavlink.cpp
@@ -86,19 +86,19 @@ SX1278Lora* sx1278 = nullptr;
 void __attribute__((used)) SX1278_IRQ_DIO0()
 {
     if (sx1278)
-        sx1278->handleDioIRQ(SX1278Lora::Dio::DIO0);
+        sx1278->handleDioIRQ();
 }
 
 void __attribute__((used)) SX1278_IRQ_DIO1()
 {
     if (sx1278)
-        sx1278->handleDioIRQ(SX1278Lora::Dio::DIO1);
+        sx1278->handleDioIRQ();
 }
 
 void __attribute__((used)) SX1278_IRQ_DIO3()
 {
     if (sx1278)
-        sx1278->handleDioIRQ(SX1278Lora::Dio::DIO3);
+        sx1278->handleDioIRQ();
 }
 
 void initBoard()
diff --git a/src/tests/radio/sx1278/lora/test-sx1278-simple.cpp b/src/tests/radio/sx1278/lora/test-sx1278-simple.cpp
index a651765e0d6fd5d5066efbe4a33b6cbad3408ac7..02bbe54894940798c4083142ef49cc76705cea3d 100644
--- a/src/tests/radio/sx1278/lora/test-sx1278-simple.cpp
+++ b/src/tests/radio/sx1278/lora/test-sx1278-simple.cpp
@@ -62,19 +62,19 @@ SX1278Lora *sx1278 = nullptr;
 void __attribute__((used)) SX1278_IRQ_DIO0()
 {
     if (sx1278)
-        sx1278->handleDioIRQ(SX1278Lora::Dio::DIO0);
+        sx1278->handleDioIRQ();
 }
 
 void __attribute__((used)) SX1278_IRQ_DIO1()
 {
     if (sx1278)
-        sx1278->handleDioIRQ(SX1278Lora::Dio::DIO1);
+        sx1278->handleDioIRQ();
 }
 
 void __attribute__((used)) SX1278_IRQ_DIO3()
 {
     if (sx1278)
-        sx1278->handleDioIRQ(SX1278Lora::Dio::DIO3);
+        sx1278->handleDioIRQ();
 }
 
 void initBoard()