|
|
@@ -157,8 +157,10 @@ static bool handle_devMsgOut(uint8_t rhport, void *data, size_t len, size_t pack
|
|
|
static uint8_t termChar;
|
|
|
static uint8_t termCharRequested = false;
|
|
|
|
|
|
-OSAL_MUTEX_DEF(usbtmcLockBuffer);
|
|
|
-static osal_mutex_t usbtmcLock;
|
|
|
+#if OSAL_MUTEX_REQUIRED
|
|
|
+static OSAL_MUTEX_DEF(usbtmcLockBuffer);
|
|
|
+#endif
|
|
|
+osal_mutex_t usbtmcLock;
|
|
|
|
|
|
// Our own private lock, mostly for the state variable.
|
|
|
#define criticalEnter() do { (void) osal_mutex_lock(usbtmcLock,OSAL_TIMEOUT_WAIT_FOREVER); } while (0)
|
|
|
@@ -362,7 +364,7 @@ bool tud_usbtmc_start_bus_read()
|
|
|
case STATE_RCV:
|
|
|
break;
|
|
|
default:
|
|
|
- TU_VERIFY(false);
|
|
|
+ return false;
|
|
|
}
|
|
|
TU_VERIFY(usbd_edpt_xfer(usbtmc_state.rhport, usbtmc_state.ep_bulk_out, usbtmc_state.ep_bulk_out_buf, (uint16_t)usbtmc_state.ep_bulk_out_wMaxPacketSize));
|
|
|
return true;
|
|
|
@@ -464,53 +466,52 @@ bool usbtmcd_xfer_cb(uint8_t rhport, uint8_t ep_addr, xfer_result_t result, uint
|
|
|
switch(usbtmc_state.state)
|
|
|
{
|
|
|
case STATE_IDLE:
|
|
|
- TU_VERIFY(xferred_bytes >= sizeof(usbtmc_msg_generic_t));
|
|
|
- msg = (usbtmc_msg_generic_t*)(usbtmc_state.ep_bulk_out_buf);
|
|
|
- uint8_t invInvTag = (uint8_t)~(msg->header.bTagInverse);
|
|
|
- TU_VERIFY(msg->header.bTag == invInvTag);
|
|
|
- TU_VERIFY(msg->header.bTag != 0x00);
|
|
|
-
|
|
|
- switch(msg->header.MsgID) {
|
|
|
- case USBTMC_MSGID_DEV_DEP_MSG_OUT:
|
|
|
- if(!handle_devMsgOutStart(rhport, msg, xferred_bytes))
|
|
|
- {
|
|
|
- usbd_edpt_stall(rhport, usbtmc_state.ep_bulk_out);
|
|
|
- TU_VERIFY(false);
|
|
|
- }
|
|
|
- break;
|
|
|
+ {
|
|
|
+ TU_VERIFY(xferred_bytes >= sizeof(usbtmc_msg_generic_t));
|
|
|
+ msg = (usbtmc_msg_generic_t*)(usbtmc_state.ep_bulk_out_buf);
|
|
|
+ uint8_t invInvTag = (uint8_t)~(msg->header.bTagInverse);
|
|
|
+ TU_VERIFY(msg->header.bTag == invInvTag);
|
|
|
+ TU_VERIFY(msg->header.bTag != 0x00);
|
|
|
+
|
|
|
+ switch(msg->header.MsgID) {
|
|
|
+ case USBTMC_MSGID_DEV_DEP_MSG_OUT:
|
|
|
+ if(!handle_devMsgOutStart(rhport, msg, xferred_bytes))
|
|
|
+ {
|
|
|
+ usbd_edpt_stall(rhport, usbtmc_state.ep_bulk_out);
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ break;
|
|
|
|
|
|
- case USBTMC_MSGID_DEV_DEP_MSG_IN:
|
|
|
- TU_VERIFY(handle_devMsgIn(msg, xferred_bytes));
|
|
|
- break;
|
|
|
+ case USBTMC_MSGID_DEV_DEP_MSG_IN:
|
|
|
+ TU_VERIFY(handle_devMsgIn(msg, xferred_bytes));
|
|
|
+ break;
|
|
|
|
|
|
#if (CFG_TUD_USBTMC_ENABLE_488)
|
|
|
- case USBTMC_MSGID_USB488_TRIGGER:
|
|
|
- // Spec says we halt the EP if we didn't declare we support it.
|
|
|
- TU_VERIFY(usbtmc_state.capabilities->bmIntfcCapabilities488.supportsTrigger);
|
|
|
- TU_VERIFY(tud_usbtmc_msg_trigger_cb(msg));
|
|
|
+ case USBTMC_MSGID_USB488_TRIGGER:
|
|
|
+ // Spec says we halt the EP if we didn't declare we support it.
|
|
|
+ TU_VERIFY(usbtmc_state.capabilities->bmIntfcCapabilities488.supportsTrigger);
|
|
|
+ TU_VERIFY(tud_usbtmc_msg_trigger_cb(msg));
|
|
|
|
|
|
- break;
|
|
|
+ break;
|
|
|
#endif
|
|
|
- case USBTMC_MSGID_VENDOR_SPECIFIC_MSG_OUT:
|
|
|
- case USBTMC_MSGID_VENDOR_SPECIFIC_IN:
|
|
|
- default:
|
|
|
- usbd_edpt_stall(rhport, usbtmc_state.ep_bulk_out);
|
|
|
- TU_VERIFY(false);
|
|
|
- return false;
|
|
|
+ case USBTMC_MSGID_VENDOR_SPECIFIC_MSG_OUT:
|
|
|
+ case USBTMC_MSGID_VENDOR_SPECIFIC_IN:
|
|
|
+ default:
|
|
|
+ usbd_edpt_stall(rhport, usbtmc_state.ep_bulk_out);
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ return true;
|
|
|
}
|
|
|
- return true;
|
|
|
-
|
|
|
case STATE_RCV:
|
|
|
if(!handle_devMsgOut(rhport, usbtmc_state.ep_bulk_out_buf, xferred_bytes, xferred_bytes))
|
|
|
{
|
|
|
usbd_edpt_stall(rhport, usbtmc_state.ep_bulk_out);
|
|
|
- TU_VERIFY(false);
|
|
|
+ return false;
|
|
|
}
|
|
|
return true;
|
|
|
|
|
|
case STATE_ABORTING_BULK_OUT:
|
|
|
- TU_VERIFY(false);
|
|
|
- return false; // Should be stalled by now, shouldn't have received a packet.
|
|
|
+ return false;
|
|
|
|
|
|
case STATE_TX_REQUESTED:
|
|
|
case STATE_TX_INITIATED:
|
|
|
@@ -518,7 +519,7 @@ bool usbtmcd_xfer_cb(uint8_t rhport, uint8_t ep_addr, xfer_result_t result, uint
|
|
|
case STATE_ABORTING_BULK_IN_SHORTED:
|
|
|
case STATE_ABORTING_BULK_IN_ABORTED:
|
|
|
default:
|
|
|
- TU_VERIFY(false);
|
|
|
+ return false;
|
|
|
}
|
|
|
}
|
|
|
else if(ep_addr == usbtmc_state.ep_bulk_in)
|
|
|
@@ -567,7 +568,6 @@ bool usbtmcd_xfer_cb(uint8_t rhport, uint8_t ep_addr, xfer_result_t result, uint
|
|
|
|
|
|
default:
|
|
|
TU_ASSERT(false);
|
|
|
- return false;
|
|
|
}
|
|
|
}
|
|
|
else if (ep_addr == usbtmc_state.ep_int_in) {
|
|
|
@@ -871,16 +871,13 @@ bool usbtmcd_control_xfer_cb(uint8_t rhport, uint8_t stage, tusb_control_request
|
|
|
case USB488_bREQUEST_LOCAL_LOCKOUT:
|
|
|
{
|
|
|
TU_VERIFY(request->bmRequestType == 0xA1); // in,class,interface
|
|
|
- TU_VERIFY(false);
|
|
|
return false;
|
|
|
}
|
|
|
#endif
|
|
|
|
|
|
default:
|
|
|
- TU_VERIFY(false);
|
|
|
return false;
|
|
|
}
|
|
|
- TU_VERIFY(false);
|
|
|
}
|
|
|
|
|
|
#endif /* CFG_TUD_TSMC */
|