mirror of
https://github.com/hathach/tinyusb.git
synced 2025-02-14 18:40:37 +00:00
add TUSB_CFG_HOST_CONTROLLER_START_INDEX
update usbh_init and test code for TUSB_CFG_HOST_CONTROLLER_START_INDEX clean up some
This commit is contained in:
parent
ef0e105da6
commit
489b98cb93
@ -62,6 +62,8 @@
|
||||
|
||||
//------------- CORE/CONTROLLER -------------//
|
||||
#define TUSB_CFG_HOST_CONTROLLER_NUM 1
|
||||
#define TUSB_CFG_HOST_CONTROLLER_START_INDEX 0
|
||||
|
||||
#define TUSB_CFG_HOST_DEVICE_MAX 1
|
||||
#define TUSB_CFG_CONFIGURATION_MAX 1
|
||||
|
||||
|
@ -55,51 +55,8 @@ void tearDown(void)
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------+
|
||||
// init, get_status
|
||||
// get_status
|
||||
//--------------------------------------------------------------------+
|
||||
void test_usbh_init_hcd_failed(void)
|
||||
{
|
||||
hcd_init_IgnoreAndReturn(TUSB_ERROR_HCD_FAILED);
|
||||
TEST_ASSERT_EQUAL(TUSB_ERROR_HCD_FAILED, usbh_init());
|
||||
}
|
||||
|
||||
void test_usbh_init_task_create_failed(void)
|
||||
{
|
||||
for(uint32_t i=0; i<TUSB_CFG_HOST_CONTROLLER_NUM; i++)
|
||||
hcd_init_ExpectAndReturn(i, TUSB_ERROR_NONE);
|
||||
|
||||
osal_task_create_IgnoreAndReturn(TUSB_ERROR_OSAL_TASK_FAILED);
|
||||
TEST_ASSERT_EQUAL(TUSB_ERROR_OSAL_TASK_FAILED, usbh_init());
|
||||
}
|
||||
|
||||
void test_usbh_init_queue_create_failed(void)
|
||||
{
|
||||
for(uint32_t i=0; i<TUSB_CFG_HOST_CONTROLLER_NUM; i++)
|
||||
hcd_init_ExpectAndReturn(i, TUSB_ERROR_NONE);
|
||||
|
||||
osal_task_create_IgnoreAndReturn(TUSB_ERROR_NONE);
|
||||
osal_queue_create_IgnoreAndReturn(NULL);
|
||||
TEST_ASSERT_EQUAL(TUSB_ERROR_OSAL_QUEUE_FAILED, usbh_init());
|
||||
}
|
||||
|
||||
void test_usbh_init_ok(void)
|
||||
{
|
||||
uint32_t dummy;
|
||||
|
||||
usbh_device_info_t device_info_zero[TUSB_CFG_HOST_DEVICE_MAX+1];
|
||||
memclr_(device_info_zero, sizeof(usbh_device_info_t)*(TUSB_CFG_HOST_DEVICE_MAX+1));
|
||||
|
||||
for(uint32_t i=0; i<TUSB_CFG_HOST_CONTROLLER_NUM; i++)
|
||||
hcd_init_ExpectAndReturn(i, TUSB_ERROR_NONE);
|
||||
|
||||
osal_task_create_IgnoreAndReturn(TUSB_ERROR_NONE);
|
||||
osal_queue_create_IgnoreAndReturn((osal_queue_handle_t)(&dummy));
|
||||
|
||||
TEST_ASSERT_EQUAL(TUSB_ERROR_NONE, usbh_init());
|
||||
|
||||
TEST_ASSERT_EQUAL_MEMORY(device_info_zero, usbh_device_info_pool, sizeof(usbh_device_info_t)*(TUSB_CFG_HOST_DEVICE_MAX+1));
|
||||
}
|
||||
|
||||
void test_usbh_status_get_fail(void)
|
||||
{
|
||||
usbh_device_info_pool[dev_hdl].status = 0;
|
||||
@ -113,3 +70,59 @@ void test_usbh_status_get_succeed(void)
|
||||
usbh_device_info_pool[dev_hdl].status = TUSB_DEVICE_STATUS_READY;
|
||||
TEST_ASSERT_EQUAL( TUSB_DEVICE_STATUS_READY, tusbh_device_status_get(dev_hdl) );
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------+
|
||||
// Init
|
||||
//--------------------------------------------------------------------+
|
||||
void hcd_init_expect(void)
|
||||
{
|
||||
for(uint32_t i=0; i<TUSB_CFG_HOST_CONTROLLER_NUM; i++)
|
||||
hcd_init_ExpectAndReturn(TUSB_CFG_HOST_CONTROLLER_START_INDEX+i, TUSB_ERROR_NONE);
|
||||
}
|
||||
|
||||
void test_usbh_init_hcd_failed(void)
|
||||
{
|
||||
hcd_init_IgnoreAndReturn(TUSB_ERROR_HCD_FAILED);
|
||||
TEST_ASSERT_EQUAL(TUSB_ERROR_HCD_FAILED, usbh_init());
|
||||
}
|
||||
|
||||
void test_usbh_init_enum_task_create_failed(void)
|
||||
{
|
||||
hcd_init_expect();
|
||||
osal_task_create_IgnoreAndReturn(TUSB_ERROR_OSAL_TASK_FAILED);
|
||||
TEST_ASSERT_EQUAL(TUSB_ERROR_OSAL_TASK_FAILED, usbh_init());
|
||||
}
|
||||
|
||||
void test_usbh_init_enum_queue_create_failed(void)
|
||||
{
|
||||
hcd_init_expect();
|
||||
osal_task_create_IgnoreAndReturn(TUSB_ERROR_NONE);
|
||||
osal_queue_create_IgnoreAndReturn(NULL);
|
||||
TEST_ASSERT_EQUAL(TUSB_ERROR_OSAL_QUEUE_FAILED, usbh_init());
|
||||
}
|
||||
|
||||
void test_usbh_init_reporter_taks_create_failed(void)
|
||||
{
|
||||
TEST_IGNORE();
|
||||
}
|
||||
|
||||
void test_usbh_init_reporter_queue_create_failed(void)
|
||||
{
|
||||
TEST_IGNORE();
|
||||
}
|
||||
|
||||
void test_usbh_init_ok(void)
|
||||
{
|
||||
uint32_t dummy;
|
||||
|
||||
usbh_device_info_t device_info_zero[TUSB_CFG_HOST_DEVICE_MAX+1];
|
||||
memclr_(device_info_zero, sizeof(usbh_device_info_t)*(TUSB_CFG_HOST_DEVICE_MAX+1));
|
||||
|
||||
hcd_init_expect();
|
||||
osal_task_create_IgnoreAndReturn(TUSB_ERROR_NONE);
|
||||
osal_queue_create_IgnoreAndReturn((osal_queue_handle_t)(&dummy));
|
||||
|
||||
TEST_ASSERT_EQUAL(TUSB_ERROR_NONE, usbh_init());
|
||||
|
||||
TEST_ASSERT_EQUAL_MEMORY(device_info_zero, usbh_device_info_pool, sizeof(usbh_device_info_t)*(TUSB_CFG_HOST_DEVICE_MAX+1));
|
||||
}
|
||||
|
@ -62,6 +62,8 @@
|
||||
|
||||
//------------- CORE/CONTROLLER -------------//
|
||||
#define TUSB_CFG_HOST_CONTROLLER_NUM 2
|
||||
#define TUSB_CFG_HOST_CONTROLLER_START_INDEX 1
|
||||
|
||||
#define TUSB_CFG_HOST_DEVICE_MAX 2
|
||||
#define TUSB_CFG_CONFIGURATION_MAX 2
|
||||
|
||||
|
@ -51,10 +51,6 @@
|
||||
#ifndef _TUSB_HAL_H_
|
||||
#define _TUSB_HAL_H_
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include "tusb_option.h"
|
||||
#include "common/compiler/compiler.h"
|
||||
|
||||
@ -72,6 +68,9 @@
|
||||
#include "hal_lpc43xx.h"
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/** \brief USB hardware init
|
||||
*
|
||||
|
@ -51,15 +51,25 @@
|
||||
//--------------------------------------------------------------------+
|
||||
// MACRO CONSTANT TYPEDEF
|
||||
//--------------------------------------------------------------------+
|
||||
#define ENUM_QUEUE_DEPTH 5
|
||||
|
||||
|
||||
//--------------------------------------------------------------------+
|
||||
// INTERNAL OBJECT & FUNCTION DECLARATION
|
||||
//--------------------------------------------------------------------+
|
||||
static inline uint8_t get_new_address(void) ATTR_ALWAYS_INLINE;
|
||||
|
||||
STATIC_ usbh_device_info_t usbh_device_info_pool[TUSB_CFG_HOST_DEVICE_MAX+1]; // including zero-address
|
||||
|
||||
//------------- Enumeration Task Data -------------//
|
||||
OSAL_TASK_DEF(enum_task, usbh_enumeration_task, 128, OSAL_PRIO_HIGH);
|
||||
OSAL_QUEUE_DEF(enum_queue, ENUM_QUEUE_DEPTH, uin32_t);
|
||||
osal_queue_handle_t enum_queue_hdl;
|
||||
STATIC_ uint8_t enum_data_buffer[TUSB_CFG_HOST_ENUM_BUFFER_SIZE] TUSB_CFG_ATTR_USBRAM;
|
||||
|
||||
//------------- Reporter Task Data -------------//
|
||||
|
||||
//------------- Helper Function Prototypes -------------//
|
||||
static inline uint8_t get_new_address(void) ATTR_ALWAYS_INLINE;
|
||||
|
||||
//--------------------------------------------------------------------+
|
||||
// PUBLIC API (Parameter Verification is required)
|
||||
//--------------------------------------------------------------------+
|
||||
@ -70,22 +80,36 @@ tusbh_device_status_t tusbh_device_status_get (tusb_handle_device_t const device
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------+
|
||||
// ENUMERATION TASK & ITS DATA
|
||||
// CLASS-USBD API (don't require to verify parameters)
|
||||
//--------------------------------------------------------------------+
|
||||
OSAL_TASK_DEF(enum_task, usbh_enumeration_task, 128, OSAL_PRIO_HIGH);
|
||||
tusb_error_t usbh_init(void)
|
||||
{
|
||||
uint32_t i;
|
||||
|
||||
#define ENUM_QUEUE_DEPTH 5
|
||||
OSAL_QUEUE_DEF(enum_queue, ENUM_QUEUE_DEPTH, uin32_t);
|
||||
osal_queue_handle_t enum_queue_hdl;
|
||||
STATIC_ uint8_t enum_data_buffer[TUSB_CFG_HOST_ENUM_BUFFER_SIZE] TUSB_CFG_ATTR_USBRAM;
|
||||
memclr_(usbh_device_info_pool, sizeof(usbh_device_info_t)*(TUSB_CFG_HOST_DEVICE_MAX+1));
|
||||
|
||||
for(i=0; i<TUSB_CFG_HOST_CONTROLLER_NUM; i++)
|
||||
{
|
||||
ASSERT_STATUS( hcd_init(TUSB_CFG_HOST_CONTROLLER_START_INDEX+i) );
|
||||
}
|
||||
|
||||
ASSERT_STATUS( osal_task_create(&enum_task) );
|
||||
enum_queue_hdl = osal_queue_create(&enum_queue);
|
||||
ASSERT_PTR(enum_queue_hdl, TUSB_ERROR_OSAL_QUEUE_FAILED);
|
||||
|
||||
return TUSB_ERROR_NONE;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------+
|
||||
// ENUMERATION TASK
|
||||
//--------------------------------------------------------------------+
|
||||
void usbh_enumeration_task(void)
|
||||
{
|
||||
tusb_error_t error;
|
||||
usbh_enumerate_t enum_entry;
|
||||
tusb_std_request_t request_packet;
|
||||
|
||||
// for OSAL_NONE local variable wont retain value after blocking service sem_wait/queue_recv
|
||||
static uint8_t new_addr;
|
||||
static uint8_t configure_selected = 1;
|
||||
|
||||
@ -201,26 +225,7 @@ void usbh_enumeration_task(void)
|
||||
//--------------------------------------------------------------------+
|
||||
|
||||
|
||||
//--------------------------------------------------------------------+
|
||||
// CLASS-USBD API (don't require to verify parameters)
|
||||
//--------------------------------------------------------------------+
|
||||
tusb_error_t usbh_init(void)
|
||||
{
|
||||
uint32_t i;
|
||||
|
||||
memclr_(usbh_device_info_pool, sizeof(usbh_device_info_t)*(TUSB_CFG_HOST_DEVICE_MAX+1));
|
||||
|
||||
for(i=0; i<TUSB_CFG_HOST_CONTROLLER_NUM; i++)
|
||||
{
|
||||
ASSERT_STATUS( hcd_init(i) );
|
||||
}
|
||||
|
||||
ASSERT_STATUS( osal_task_create(&enum_task) );
|
||||
enum_queue_hdl = osal_queue_create(&enum_queue);
|
||||
ASSERT_PTR(enum_queue_hdl, TUSB_ERROR_OSAL_QUEUE_FAILED);
|
||||
|
||||
return TUSB_ERROR_NONE;
|
||||
}
|
||||
#endif
|
||||
|
||||
//--------------------------------------------------------------------+
|
||||
|
@ -51,10 +51,6 @@
|
||||
#ifndef _TUSB_OSAL_FREERTOS_H_
|
||||
#define _TUSB_OSAL_FREERTOS_H_
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include "osal_common.h"
|
||||
|
||||
//------------- FreeRTOS Headers -------------//
|
||||
@ -62,6 +58,10 @@
|
||||
#include "semphr.h"
|
||||
#include "queue.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
//--------------------------------------------------------------------+
|
||||
// TICK API
|
||||
//--------------------------------------------------------------------+
|
||||
|
@ -98,6 +98,10 @@
|
||||
#warning TUSB_CFG_HOST_CONTROLLER_NUM is not defined, default value is 1
|
||||
#endif
|
||||
|
||||
#ifndef TUSB_CFG_HOST_CONTROLLER_START_INDEX
|
||||
#error TUSB_CFG_HOST_CONTROLLER_START_INDEX is not defined
|
||||
#endif
|
||||
|
||||
#ifndef TUSB_CFG_HOST_DEVICE_MAX
|
||||
#define TUSB_CFG_HOST_DEVICE_MAX 1
|
||||
#warning TUSB_CFG_HOST_DEVICE_MAX is not defined, default value is 1
|
||||
|
Loading…
x
Reference in New Issue
Block a user