From 5b3cce5ea5f5e28c80fdb6c9ebe4c3eb429ec88d Mon Sep 17 00:00:00 2001
From: doryan <sagiev2015@yandex.ru>
Date: Fri, 14 Feb 2025 00:12:27 +0400
Subject: [PATCH] feat(cleaner): use interrupt cleaner

---
 src/lib.rs | 23 +++++++++++------------
 1 file changed, 11 insertions(+), 12 deletions(-)

diff --git a/src/lib.rs b/src/lib.rs
index 64604a0..5296157 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -162,7 +162,7 @@ impl<const L: usize> UsbBus for UsbDevice<L> {
 
             if usbint.vbusti().bit_is_set() {
                 usb.usbint
-                    .write(|w| unsafe { w.bits(0x01) }.vbusti().clear_bit());
+                    .write(|w| w.clear_interrupts().vbusti().clear_bit());
                 if usb.usbsta.read().vbus().bit_is_set() {
                     return PollResult::Resume;
                 } else {
@@ -183,8 +183,7 @@ impl<const L: usize> UsbBus for UsbDevice<L> {
             }
 
             if udint.sofi().bit_is_set() {
-                usb.udint
-                    .write(|w| unsafe { w.bits(0x7d) }.sofi().clear_bit());
+                usb.udint.write(|w| w.clear_interrupts().sofi().clear_bit());
             }
 
             if usb.usbcon.read().frzclk().bit_is_clear() {
@@ -248,7 +247,7 @@ impl<const L: usize> UsbBus for UsbDevice<L> {
                     }
 
                     usb.ueintx.write(|w| {
-                        unsafe { w.bits(0xdf) }
+                        w.clear_interrupts()
                             .rxouti()
                             .clear_bit()
                             .rxstpi()
@@ -261,7 +260,7 @@ impl<const L: usize> UsbBus for UsbDevice<L> {
                         return Err(UsbError::WouldBlock);
                     }
                     usb.ueintx
-                        .write(|w| unsafe { w.bits(0xdf) }.rxouti().clear_bit());
+                        .write(|w| w.clear_interrupts().rxouti().clear_bit());
 
                     let mut bytes_read = 0;
                     for slot in buf {
@@ -277,7 +276,7 @@ impl<const L: usize> UsbBus for UsbDevice<L> {
                     }
 
                     usb.ueintx
-                        .write(|w| unsafe { w.bits(0xdf) }.fifocon().clear_bit());
+                        .write(|w| w.clear_interrupts().fifocon().clear_bit());
                     Ok(bytes_read)
                 }
             }
@@ -297,7 +296,7 @@ impl<const L: usize> UsbBus for UsbDevice<L> {
             // Clear resume informations. //
 
             usb.udint.write(|w| {
-                unsafe { w.bits(0x7d) }
+                w.clear_interrupts()
                     .wakeupi()
                     .clear_bit()
                     .suspi()
@@ -325,7 +324,7 @@ impl<const L: usize> UsbBus for UsbDevice<L> {
             usb.usbcon.modify(|_, w| w.frzclk().clear_bit());
 
             usb.udint.write(|w| {
-                unsafe { w.bits(0x7d) }
+                w.clear_interrupts()
                     .wakeupi()
                     .clear_bit()
                     .suspi()
@@ -369,7 +368,7 @@ impl<const L: usize> UsbBus for UsbDevice<L> {
             let (usb, pll) = (self.usb.borrow(cs), self.pll.borrow(cs));
 
             usb.udint.write(|w| {
-                unsafe { w.bits(0x7d) }
+                w.clear_interrupts()
                     .wakeupi()
                     .clear_bit()
                     .suspi()
@@ -416,13 +415,13 @@ impl<const L: usize> UsbBus for UsbDevice<L> {
                     }
 
                     usb.ueintx
-                        .write(|w| unsafe { w.bits(0xdf) }.txini().clear_bit());
+                        .write(|w| w.clear_interrupts().txini().clear_bit());
                 } else {
                     if usb.ueintx.read().txini().bit_is_clear() {
                         return Err(UsbError::WouldBlock);
                     }
                     usb.ueintx.write(|w| {
-                        unsafe { w.bits(0xdf) }
+                        w.clear_interrupts()
                             .txini()
                             .clear_bit()
                             .rxouti()
@@ -438,7 +437,7 @@ impl<const L: usize> UsbBus for UsbDevice<L> {
                     }
 
                     usb.ueintx.write(|w| {
-                        unsafe { w.bits(0xdf) }
+                        w.clear_interrupts()
                             .rxouti()
                             .clear_bit()
                             .fifocon()