3434// MACRO CONSTANT TYPEDEF PROTYPES
3535//--------------------------------------------------------------------+
3636void led_blinking_task (void );
37-
3837extern void cdc_app_task (void );
3938extern void hid_app_task (void );
4039
40+ #if CFG_TUH_ENABLED && CFG_TUH_MAX3421
41+ // API to read/rite MAX3421's register. Implemented by TinyUSB
42+ extern uint8_t tuh_max3421_reg_read (uint8_t rhport , uint8_t reg , bool in_isr );
43+ extern bool tuh_max3421_reg_write (uint8_t rhport , uint8_t reg , uint8_t data , bool in_isr );
44+ #endif
45+
4146/*------------- MAIN -------------*/
42- int main (void )
43- {
47+ int main (void ) {
4448 board_init ();
4549
4650 printf ("TinyUSB Host CDC MSC HID Example\r\n" );
@@ -52,8 +56,13 @@ int main(void)
5256 board_init_after_tusb ();
5357 }
5458
55- while (1 )
56- {
59+ #if CFG_TUH_ENABLED && CFG_TUH_MAX3421
60+ // FeatherWing MAX3421E use MAX3421E's GPIO0 for VBUS enable
61+ enum { IOPINS1_ADDR = 20u << 3 , /* 0xA0 */ };
62+ tuh_max3421_reg_write (BOARD_TUH_RHPORT , IOPINS1_ADDR , 0x01 , false);
63+ #endif
64+
65+ while (1 ) {
5766 // tinyusb host task
5867 tuh_task ();
5968
@@ -67,14 +76,12 @@ int main(void)
6776// TinyUSB Callbacks
6877//--------------------------------------------------------------------+
6978
70- void tuh_mount_cb (uint8_t dev_addr )
71- {
79+ void tuh_mount_cb (uint8_t dev_addr ) {
7280 // application set-up
7381 printf ("A device with address %d is mounted\r\n" , dev_addr );
7482}
7583
76- void tuh_umount_cb (uint8_t dev_addr )
77- {
84+ void tuh_umount_cb (uint8_t dev_addr ) {
7885 // application tear-down
7986 printf ("A device with address %d is unmounted \r\n" , dev_addr );
8087}
@@ -83,15 +90,14 @@ void tuh_umount_cb(uint8_t dev_addr)
8390//--------------------------------------------------------------------+
8491// Blinking Task
8592//--------------------------------------------------------------------+
86- void led_blinking_task (void )
87- {
93+ void led_blinking_task (void ) {
8894 const uint32_t interval_ms = 1000 ;
8995 static uint32_t start_ms = 0 ;
9096
9197 static bool led_state = false;
9298
9399 // Blink every interval ms
94- if ( board_millis () - start_ms < interval_ms ) return ; // not enough time
100+ if (board_millis () - start_ms < interval_ms ) return ; // not enough time
95101 start_ms += interval_ms ;
96102
97103 board_led_write (led_state );
0 commit comments