X-Git-Url: http://git.code-monkey.de/?a=blobdiff_plain;f=src%2Fcommon%2Fusb_serial.rs;h=3f9e48f7faff8a81e244e477744dad5e0fce5c68;hb=427f30b3149afd8423edbd2ecdd59d8097e136c3;hp=f08f679ed78c928e81acb20edffdeba461129767;hpb=b239309dcadd809fd5ed4874064aced8f71557d0;p=gps-watch.git diff --git a/src/common/usb_serial.rs b/src/common/usb_serial.rs index f08f679..3f9e48f 100644 --- a/src/common/usb_serial.rs +++ b/src/common/usb_serial.rs @@ -21,10 +21,45 @@ * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +use nvic; +use clock; + extern { - fn USB_VcomInit(); + fn USB_VcomInit(vid: u16, pid: u16); + fn USB_VcomDeinit(); +} + +pub unsafe fn init(vid: u16, pid: u16) { + USB_VcomInit(vid, pid); +} + +pub unsafe fn shutdown() { + USB_VcomDeinit(); +} + +#[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_DeviceIsrDisable() +{ + let irq_number = 24; // USB0 + + nvic::disable_irq(irq_number); } -pub unsafe fn init() { - USB_VcomInit(); +#[no_mangle] +#[allow(non_snake_case)] +pub unsafe extern fn USB_DeviceClockInit() +{ + clock::configure_usb(); }