common: Implement USB_DeviceIsrEnable() and USB_DeviceClockInit().
authorTilman Sauerbeck <tilman@code-monkey.de>
Mon, 17 Jun 2019 19:51:36 +0000 (21:51 +0200)
committerTilman Sauerbeck <tilman@code-monkey.de>
Sun, 7 Jul 2019 18:34:52 +0000 (20:34 +0200)
These functions are required by the C implementation.

src/common/usb_serial.rs

index f08f679ed78c928e81acb20edffdeba461129767..c9de0d4b69dc06fff78f3b65889612138b1e2c39 100644 (file)
@@ -21,6 +21,9 @@
  * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  */
 
+use nvic;
+use clock;
+
 extern {
     fn USB_VcomInit();
 }
@@ -28,3 +31,21 @@ extern {
 pub unsafe fn init() {
     USB_VcomInit();
 }
+
+#[no_mangle]
+#[allow(non_snake_case)]
+pub unsafe extern fn USB_DeviceIsrEnable()
+{
+    let irq_number = 24; // USB0
+    let irq_prio = 3; // Stolen from NXP example.
+
+    nvic::set_priority(irq_number, irq_prio);
+    nvic::enable_irq(irq_number);
+}
+
+#[no_mangle]
+#[allow(non_snake_case)]
+pub unsafe extern fn USB_DeviceClockInit()
+{
+    clock::configure_usb();
+}