Этот коммит содержится в:
sago35 2021-02-25 12:51:25 +09:00 коммит произвёл Ron Evans
родитель 35c8707867
коммит e76729c6f3

Просмотреть файл

@ -58,7 +58,7 @@ func (usbcdc *USBCDC) Flush() error {
usbcdc.TxIdx.Set(usbcdcTxBank1st) usbcdc.TxIdx.Set(usbcdcTxBank1st)
} }
UART0.sent = true USB.sent = true
} }
} }
return nil return nil
@ -72,10 +72,10 @@ func (usbcdc USBCDC) WriteByte(c byte) error {
for { for {
mask := interrupt.Disable() mask := interrupt.Disable()
idx := UART0.TxIdx.Get() idx := USB.TxIdx.Get()
if (idx & usbcdcTxSizeMask) < usbcdcTxSizeMask { if (idx & usbcdcTxSizeMask) < usbcdcTxSizeMask {
udd_ep_in_cache_buffer[usb_CDC_ENDPOINT_IN][idx] = c udd_ep_in_cache_buffer[usb_CDC_ENDPOINT_IN][idx] = c
UART0.TxIdx.Set(idx + 1) USB.TxIdx.Set(idx + 1)
ok = true ok = true
} }
@ -83,24 +83,24 @@ func (usbcdc USBCDC) WriteByte(c byte) error {
if ok { if ok {
break break
} else if usbcdcTxMaxRetriesAllowed < UART0.waitTxcRetryCount { } else if usbcdcTxMaxRetriesAllowed < USB.waitTxcRetryCount {
mask := interrupt.Disable() mask := interrupt.Disable()
UART0.waitTxc = false USB.waitTxc = false
UART0.waitTxcRetryCount = 0 USB.waitTxcRetryCount = 0
UART0.TxIdx.Set(0) USB.TxIdx.Set(0)
usbLineInfo.lineState = 0 usbLineInfo.lineState = 0
interrupt.Restore(mask) interrupt.Restore(mask)
break break
} else { } else {
mask := interrupt.Disable() mask := interrupt.Disable()
if UART0.sent { if USB.sent {
if UART0.waitTxc { if USB.waitTxc {
if !easyDMABusy.HasBits(1) { if !easyDMABusy.HasBits(1) {
UART0.waitTxc = false USB.waitTxc = false
UART0.Flush() USB.Flush()
} }
} else { } else {
UART0.Flush() USB.Flush()
} }
} }
interrupt.Restore(mask) interrupt.Restore(mask)
@ -198,7 +198,7 @@ func (usbcdc *USBCDC) Configure(config UARTConfig) {
func (usbcdc *USBCDC) handleInterrupt(interrupt.Interrupt) { func (usbcdc *USBCDC) handleInterrupt(interrupt.Interrupt) {
if nrf.USBD.EVENTS_SOF.Get() == 1 { if nrf.USBD.EVENTS_SOF.Get() == 1 {
nrf.USBD.EVENTS_SOF.Set(0) nrf.USBD.EVENTS_SOF.Set(0)
UART0.Flush() USB.Flush()
} }
// USBD ready event // USBD ready event
@ -291,7 +291,7 @@ func (usbcdc *USBCDC) handleInterrupt(interrupt.Interrupt) {
} }
case usb_CDC_ENDPOINT_IN: //, usb_CDC_ENDPOINT_ACM: case usb_CDC_ENDPOINT_IN: //, usb_CDC_ENDPOINT_ACM:
if inDataDone { if inDataDone {
UART0.waitTxc = false USB.waitTxc = false
exitCriticalSection() exitCriticalSection()
} }
} }