summaryrefslogtreecommitdiff
path: root/tinyusb
diff options
context:
space:
mode:
authorhathach <[email protected]>2013-03-12 00:10:52 +0700
committerhathach <[email protected]>2013-03-12 00:10:52 +0700
commit38ff7123b4f43aa85ce1848a0cb99bb73303cadd (patch)
tree7ee7d6d883d6f0b11cefd98b8ff3e10572d581c1 /tinyusb
parent8eaad2326b26f542ba66ea305a40dd4c8e49f421 (diff)
add semaphore reset & queue flush API for osal
add semaphore reset when opening control pipe
Diffstat (limited to 'tinyusb')
-rw-r--r--tinyusb/host/usbh.c13
-rw-r--r--tinyusb/osal/osal.h2
-rw-r--r--tinyusb/osal/osal_none.h4
3 files changed, 15 insertions, 4 deletions
diff --git a/tinyusb/host/usbh.c b/tinyusb/host/usbh.c
index ad4bf3b2a..fa16e5403 100644
--- a/tinyusb/host/usbh.c
+++ b/tinyusb/host/usbh.c
@@ -156,6 +156,15 @@ tusb_error_t usbh_control_xfer_subtask(uint8_t dev_addr, tusb_std_request_t cons
OSAL_SUBTASK_END
}
+tusb_error_t usbh_pipe_control_open(uint8_t dev_addr, uint8_t max_packet_size)
+{
+ osal_semaphore_reset( usbh_device_info_pool[dev_addr].sem_hdl );
+
+ ASSERT_STATUS( hcd_pipe_control_open(dev_addr, max_packet_size) );
+
+ return TUSB_ERROR_NONE;
+}
+
//--------------------------------------------------------------------+
// ENUMERATION TASK
//--------------------------------------------------------------------+
@@ -180,7 +189,7 @@ OSAL_TASK_DECLARE(usbh_enumeration_task)
usbh_device_info_pool[0].hub_port = enum_entry.hub_port;
usbh_device_info_pool[0].speed = enum_entry.speed;
- TASK_ASSERT_STATUS( hcd_pipe_control_open(0, 8) );
+ TASK_ASSERT_STATUS( usbh_pipe_control_open(0, 8) );
//------------- Get first 8 bytes of device descriptor to get Control Endpoint Size -------------//
OSAL_SUBTASK_INVOKED_AND_WAIT(
@@ -223,7 +232,7 @@ OSAL_TASK_DECLARE(usbh_enumeration_task)
hcd_pipe_control_close(0);
// open control pipe for new address
- TASK_ASSERT_STATUS ( hcd_pipe_control_open(new_addr, ((tusb_descriptor_device_t*) enum_data_buffer)->bMaxPacketSize0 ) );
+ TASK_ASSERT_STATUS ( usbh_pipe_control_open(new_addr, ((tusb_descriptor_device_t*) enum_data_buffer)->bMaxPacketSize0 ) );
//------------- Get full device descriptor -------------//
OSAL_SUBTASK_INVOKED_AND_WAIT(
diff --git a/tinyusb/osal/osal.h b/tinyusb/osal/osal.h
index 09b9560fb..720375321 100644
--- a/tinyusb/osal/osal.h
+++ b/tinyusb/osal/osal.h
@@ -153,6 +153,7 @@ typedef void* osal_semaphore_handle_t;
osal_semaphore_handle_t osal_semaphore_create(osal_semaphore_t * const sem);
void osal_semaphore_wait(osal_semaphore_handle_t const sem_hdl, uint32_t msec, tusb_error_t *p_error);
tusb_error_t osal_semaphore_post(osal_semaphore_handle_t const sem_hdl);
+void osal_semaphore_reset(osal_semaphore_handle_t const sem_hdl);
//--------------------------------------------------------------------+
// QUEUE API
@@ -166,6 +167,7 @@ typedef void* osal_queue_handle_t;
osal_queue_handle_t osal_queue_create (osal_queue_t *p_queue);
void osal_queue_receive (osal_queue_handle_t const queue_hdl, uint32_t *p_data, uint32_t msec, tusb_error_t *p_error);
tusb_error_t osal_queue_send (osal_queue_handle_t const queue_hdl, uint32_t data);
+void osal_queue_flush(osal_queue_handle_t const queue_hdl);
//--------------------------------------------------------------------+
// TICK API
diff --git a/tinyusb/osal/osal_none.h b/tinyusb/osal/osal_none.h
index 82bef38b1..af96213f5 100644
--- a/tinyusb/osal/osal_none.h
+++ b/tinyusb/osal/osal_none.h
@@ -178,8 +178,8 @@ static inline tusb_error_t osal_semaphore_post(osal_semaphore_handle_t const se
return TUSB_ERROR_NONE;
}
-static inline void osal_sempahore_reset(osal_semaphore_handle_t const sem_hdl) ATTR_ALWAYS_INLINE;
-static inline void osal_sempahore_reset(osal_semaphore_handle_t const sem_hdl)
+static inline void osal_semaphore_reset(osal_semaphore_handle_t const sem_hdl) ATTR_ALWAYS_INLINE;
+static inline void osal_semaphore_reset(osal_semaphore_handle_t const sem_hdl)
{
(*sem_hdl) = 0;
}