summaryrefslogtreecommitdiff
path: root/src/class
diff options
context:
space:
mode:
authorNathan Conrad <[email protected]>2019-09-14 18:07:12 -0400
committerNathan Conrad <[email protected]>2019-09-14 18:11:07 -0400
commit64bfec79b2d1d75b5c06be2dc2fff83ee385a720 (patch)
treed9cf0c0ded83ee06bca0cd8c73e10f754c065ff9 /src/class
parent6e00886ffbbc552cf91be73d57fe8ad0a4842d0b (diff)
Change requset type parameter back to uint8_t (fix type cast), support USB indicator pulse
Diffstat (limited to 'src/class')
-rw-r--r--src/class/usbtmc/usbtmc_device.c21
-rw-r--r--src/class/usbtmc/usbtmc_device.h4
2 files changed, 16 insertions, 9 deletions
diff --git a/src/class/usbtmc/usbtmc_device.c b/src/class/usbtmc/usbtmc_device.c
index 909f8251f..7bc768a58 100644
--- a/src/class/usbtmc/usbtmc_device.c
+++ b/src/class/usbtmc/usbtmc_device.c
@@ -39,17 +39,18 @@
//Limitations (not planned to be implemented):
// "vendor-specific" commands are not handled
+// Dealing with "termchar" must be handled by the application layer,
+// though additional error checking is does in this module.
// TODO:
// USBTMC 3.2.2 error conditions not strictly followed
// No local lock-out, REN, or GTL.
-// Cannot issue clear.
-// No "capabilities" supported
-// Interrupt-IN endpoint
-// 488 MsgID=Trigger
+// Cannot handle clear.
+// Not all "capabilities" supported
// Clear message available status byte at the correct time? (488 4.3.1.3)
// Split transfers
-// No CLEAR_FEATURE/HALT (yet)
+// No CLEAR_FEATURE/HALT no EP (yet)
+// No aborting transfers.
#if (TUSB_OPT_DEVICE_ENABLED && CFG_TUD_USBTMC)
@@ -156,8 +157,11 @@ void usbtmcd_init(void)
{
#if USBTMC_CFG_ENABLE_488
if(usbtmcd_app_capabilities.bmIntfcCapabilities488.supportsTrigger)
- TU_ASSERT(usbtmcd_app_msg_trigger != NULL,);
+ TU_ASSERT(&usbtmcd_app_msg_trigger != NULL,);
#endif
+ if(usbtmcd_app_capabilities.bmIntfcCapabilities.supportsIndicatorPulse)
+ TU_ASSERT(&usbtmcd_app_indicator_pluse != NULL,);
+
}
bool usbtmcd_open(uint8_t rhport, tusb_desc_interface_t const * itf_desc, uint16_t *p_length)
@@ -400,8 +404,9 @@ bool usbtmcd_control_request(uint8_t rhport, tusb_control_request_t const * requ
return true;
// USBTMC Optional Requests
case USBTMC_bREQUEST_INDICATOR_PULSE: // Optional
- TU_VERIFY(false);
- return false;
+ TU_VERIFY(usbtmcd_app_capabilities.bmIntfcCapabilities.supportsIndicatorPulse);
+ TU_VERIFY(usbtmcd_app_indicator_pluse(rhport, request));
+ return true;
#if (USBTMC_CFG_ENABLE_488)
// USB488 required requests
diff --git a/src/class/usbtmc/usbtmc_device.h b/src/class/usbtmc/usbtmc_device.h
index 1246d11d1..09cda7c67 100644
--- a/src/class/usbtmc/usbtmc_device.h
+++ b/src/class/usbtmc/usbtmc_device.h
@@ -64,8 +64,10 @@ bool usbtmcd_app_msgBulkIn_request(uint8_t rhport, usbtmc_msg_request_dev_dep_in
bool usbtmcd_app_msgBulkIn_complete(uint8_t rhport);
+TU_ATTR_WEAK bool usbtmcd_app_indicator_pluse(uint8_t rhport, tusb_control_request_t const * msg);
+
#if (USBTMC_CFG_ENABLE_488)
-uint8_t usbtmcd_app_get_stb(uint8_t rhport, usbtmc_status_enum *rspResult);
+uint8_t usbtmcd_app_get_stb(uint8_t rhport, uint8_t *rspResult);
TU_ATTR_WEAK bool usbtmcd_app_msg_trigger(uint8_t rhport, usbtmc_msg_generic_t* msg);
//TU_ATTR_WEAK bool usbtmcd_app_go_to_local(uint8_t rhport);
#endif