summaryrefslogtreecommitdiff
path: root/tinyusb
diff options
context:
space:
mode:
authorhathach <[email protected]>2013-02-01 14:21:22 +0700
committerhathach <[email protected]>2013-02-01 14:21:22 +0700
commita25da9d3eec9e43b051a94dfe0418b0b5bb9c2d9 (patch)
tree4ad2a610dd30addc1e66031911180c72eb519f8c /tinyusb
parent7fc3e4f8fed38cd41574976fbfa21f8be43b2eba (diff)
house keeping
add some more logic for enum task
Diffstat (limited to 'tinyusb')
-rw-r--r--tinyusb/common/assertion.h5
-rw-r--r--tinyusb/host/hcd.h20
-rw-r--r--tinyusb/host/usbd_host.c22
-rw-r--r--tinyusb/host/usbd_host.h2
4 files changed, 36 insertions, 13 deletions
diff --git a/tinyusb/common/assertion.h b/tinyusb/common/assertion.h
index 8383b2f0e..4f3678a50 100644
--- a/tinyusb/common/assertion.h
+++ b/tinyusb/common/assertion.h
@@ -70,7 +70,8 @@ extern "C"
//--------------------------------------------------------------------+
#define ASSERT_FILENAME __FILE__
#define ASSERT_FUNCTION __PRETTY_FUNCTION__
-#define ASSERT_STATEMENT _PRINTF("assert at %s: %s :%d :\n", ASSERT_FILENAME, ASSERT_FUNCTION, __LINE__)
+#define ASSERT_STATEMENT(format, ...)\
+ _PRINTF("Assert at %s: %s:%d: " format "\n", ASSERT_FILENAME, ASSERT_FUNCTION, __LINE__, __VA_ARGS__)
#ifndef _TEST_ASSERT_
#define ASSERT_ERROR_HANDLE(x) return (x)
@@ -82,7 +83,7 @@ extern "C"
do{\
setup_statement;\
if (!(condition)) {\
- _PRINTF("Assert at %s: %s:%d: " format "\n", ASSERT_FILENAME, ASSERT_FUNCTION, __LINE__, __VA_ARGS__);\
+ ASSERT_STATEMENT(format, __VA_ARGS__);\
ASSERT_ERROR_HANDLE(error);\
}\
}while(0)
diff --git a/tinyusb/host/hcd.h b/tinyusb/host/hcd.h
index ed68171b7..415bb184a 100644
--- a/tinyusb/host/hcd.h
+++ b/tinyusb/host/hcd.h
@@ -60,18 +60,13 @@
typedef uint32_t pipe_handle_t;
-/** \brief Initialize HCD
-*
-* \param[in] para1
-* \param[out] para2
-* \return Error Code of the \ref TUSB_ERROR enum
-* \note
-*/
tusb_error_t hcd_init(uint8_t hostid) ATTR_WARN_UNUSED_RESULT;
-/// return the current connect status of roothub port
-bool hcd_port_connect_status(uint8_t hostid) ATTR_WARN_UNUSED_RESULT;
+//--------------------------------------------------------------------+
+// PIPE API
+//--------------------------------------------------------------------+
+//pipe_handle_t hcd_pipe_control_open(core_id, speed, hub_addr, hub_port, dev_addr, max_packet_size);
#if 0
//tusb_error_t hcd_pipe_open(
@@ -83,6 +78,13 @@ tusb_error_t hcd_pipe_transfer()ATTR_WARN_UNUSED_RESULT;
tusb_error_t hcd_pipe_cancel()ATTR_WARN_UNUSED_RESULT;
#endif
+//--------------------------------------------------------------------+
+// PORT API
+//--------------------------------------------------------------------+
+/// return the current connect status of roothub port
+bool hcd_port_connect_status(uint8_t core_id) ATTR_WARN_UNUSED_RESULT;
+tusb_speed_t hcd_port_speed_get(uint8_t core_id) ATTR_WARN_UNUSED_RESULT;
+
#ifdef __cplusplus
}
#endif
diff --git a/tinyusb/host/usbd_host.c b/tinyusb/host/usbd_host.c
index 3e8c05389..657bb28be 100644
--- a/tinyusb/host/usbd_host.c
+++ b/tinyusb/host/usbd_host.c
@@ -78,11 +78,31 @@ osal_queue_handle_t enum_queue_hdl;
void usbh_enumeration_task(void)
{
+ usbh_enumerate_t enum_item;
+ tusb_error_t error;
+
OSAL_TASK_LOOP
{
OSAL_TASK_LOOP_BEGIN
-// osal_queue_receive(enumeration_queue_hdl, )
+ osal_queue_receive(enum_queue_hdl, (uint32_t*)&enum_item, OSAL_TIMEOUT_NORMAL, &error);
+ if (error != TUSB_ERROR_NONE)
+ {
+ ASSERT_STATEMENT("%s", TUSB_ErrorStr[error]);
+ }
+ else
+ {
+ if (enum_item.hub_address == 0) // direct connection
+ {
+ if ( enum_item.connect_status == hcd_port_connect_status(enum_item.core_id) ) // there chances the event is out-dated
+ {
+
+ }
+ }else // device connect via a hub
+ {
+ ASSERT_STATEMENT("%s", "Hub is not supported yet");
+ }
+ }
OSAL_TASK_LOOP_END
}
diff --git a/tinyusb/host/usbd_host.h b/tinyusb/host/usbd_host.h
index 54d58ab81..73a40f16b 100644
--- a/tinyusb/host/usbd_host.h
+++ b/tinyusb/host/usbd_host.h
@@ -136,7 +136,7 @@ typedef enum {
typedef uint32_t tusb_handle_device_t;
-typedef struct {
+typedef struct ATTR_ALIGNED(4){
uint8_t core_id;
uint8_t hub_address;
uint8_t hub_port;