Merge pull request #2202 from Rocky04/patch-4

Invoke unmounted state on configuration reset
This commit is contained in:
Ha Thach 2023-08-09 20:48:26 +07:00 committed by GitHub
commit 92457ec99f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
21 changed files with 46 additions and 25 deletions

View File

@ -133,7 +133,7 @@ void tud_suspend_cb(bool remote_wakeup_en)
// Invoked when usb bus is resumed // Invoked when usb bus is resumed
void tud_resume_cb(void) void tud_resume_cb(void)
{ {
blink_interval_ms = BLINK_MOUNTED; blink_interval_ms = tud_mounted() ? BLINK_MOUNTED : BLINK_NOT_MOUNTED;
} }
//--------------------------------------------------------------------+ //--------------------------------------------------------------------+

View File

@ -134,7 +134,7 @@ void tud_suspend_cb(bool remote_wakeup_en)
// Invoked when usb bus is resumed // Invoked when usb bus is resumed
void tud_resume_cb(void) void tud_resume_cb(void)
{ {
blink_interval_ms = BLINK_MOUNTED; blink_interval_ms = tud_mounted() ? BLINK_MOUNTED : BLINK_NOT_MOUNTED;
} }
//--------------------------------------------------------------------+ //--------------------------------------------------------------------+

View File

@ -146,7 +146,7 @@ void tud_suspend_cb(bool remote_wakeup_en)
// Invoked when usb bus is resumed // Invoked when usb bus is resumed
void tud_resume_cb(void) void tud_resume_cb(void)
{ {
blink_interval_ms = BLINK_MOUNTED; blink_interval_ms = tud_mounted() ? BLINK_MOUNTED : BLINK_NOT_MOUNTED;
} }
//--------------------------------------------------------------------+ //--------------------------------------------------------------------+

View File

@ -99,7 +99,7 @@ void tud_suspend_cb(bool remote_wakeup_en)
// Invoked when usb bus is resumed // Invoked when usb bus is resumed
void tud_resume_cb(void) void tud_resume_cb(void)
{ {
blink_interval_ms = BLINK_MOUNTED; blink_interval_ms = tud_mounted() ? BLINK_MOUNTED : BLINK_NOT_MOUNTED;
} }

View File

@ -178,9 +178,16 @@ void tud_suspend_cb(bool remote_wakeup_en)
// Invoked when usb bus is resumed // Invoked when usb bus is resumed
void tud_resume_cb(void) void tud_resume_cb(void)
{
if (tud_mounted())
{ {
xTimerChangePeriod(blinky_tm, pdMS_TO_TICKS(BLINK_MOUNTED), 0); xTimerChangePeriod(blinky_tm, pdMS_TO_TICKS(BLINK_MOUNTED), 0);
} }
else
{
xTimerChangePeriod(blinky_tm, pdMS_TO_TICKS(BLINK_NOT_MOUNTED), 0);
}
}
//--------------------------------------------------------------------+ //--------------------------------------------------------------------+
// USB CDC // USB CDC

View File

@ -116,7 +116,7 @@ void tud_suspend_cb(bool remote_wakeup_en)
// Invoked when usb bus is resumed // Invoked when usb bus is resumed
void tud_resume_cb(void) void tud_resume_cb(void)
{ {
blink_interval_ms = BLINK_MOUNTED; blink_interval_ms = tud_mounted() ? BLINK_MOUNTED : BLINK_NOT_MOUNTED;
} }
//--------------------------------------------------------------------+ //--------------------------------------------------------------------+

View File

@ -111,7 +111,7 @@ void tud_suspend_cb(bool remote_wakeup_en)
// Invoked when usb bus is resumed // Invoked when usb bus is resumed
void tud_resume_cb(void) void tud_resume_cb(void)
{ {
blink_interval_ms = BLINK_MOUNTED; blink_interval_ms = tud_mounted() ? BLINK_MOUNTED : BLINK_NOT_MOUNTED;
} }
// Invoked on DFU_DETACH request to reboot to the bootloader // Invoked on DFU_DETACH request to reboot to the bootloader

View File

@ -100,7 +100,7 @@ void tud_suspend_cb(bool remote_wakeup_en)
// Invoked when usb bus is resumed // Invoked when usb bus is resumed
void tud_resume_cb(void) void tud_resume_cb(void)
{ {
blink_interval_ms = BLINK_MOUNTED; blink_interval_ms = tud_mounted() ? BLINK_MOUNTED : BLINK_NOT_MOUNTED;
} }

View File

@ -102,7 +102,7 @@ void tud_suspend_cb(bool remote_wakeup_en)
// Invoked when usb bus is resumed // Invoked when usb bus is resumed
void tud_resume_cb(void) void tud_resume_cb(void)
{ {
blink_interval_ms = BLINK_MOUNTED; blink_interval_ms = tud_mounted() ? BLINK_MOUNTED : BLINK_NOT_MOUNTED;
} }
//--------------------------------------------------------------------+ //--------------------------------------------------------------------+

View File

@ -101,7 +101,7 @@ void tud_suspend_cb(bool remote_wakeup_en)
// Invoked when usb bus is resumed // Invoked when usb bus is resumed
void tud_resume_cb(void) void tud_resume_cb(void)
{ {
blink_interval_ms = BLINK_MOUNTED; blink_interval_ms = tud_mounted() ? BLINK_MOUNTED : BLINK_NOT_MOUNTED;
} }
//--------------------------------------------------------------------+ //--------------------------------------------------------------------+

View File

@ -179,9 +179,16 @@ void tud_suspend_cb(bool remote_wakeup_en)
// Invoked when usb bus is resumed // Invoked when usb bus is resumed
void tud_resume_cb(void) void tud_resume_cb(void)
{
if (tud_mounted())
{ {
xTimerChangePeriod(blinky_tm, pdMS_TO_TICKS(BLINK_MOUNTED), 0); xTimerChangePeriod(blinky_tm, pdMS_TO_TICKS(BLINK_MOUNTED), 0);
} }
else
{
xTimerChangePeriod(blinky_tm, pdMS_TO_TICKS(BLINK_NOT_MOUNTED), 0);
}
}
//--------------------------------------------------------------------+ //--------------------------------------------------------------------+
// USB HID // USB HID

View File

@ -122,7 +122,7 @@ void tud_suspend_cb(bool remote_wakeup_en)
// Invoked when usb bus is resumed // Invoked when usb bus is resumed
void tud_resume_cb(void) void tud_resume_cb(void)
{ {
blink_interval_ms = BLINK_MOUNTED; blink_interval_ms = tud_mounted() ? BLINK_MOUNTED : BLINK_NOT_MOUNTED;
} }
//--------------------------------------------------------------------+ //--------------------------------------------------------------------+

View File

@ -105,7 +105,7 @@ void tud_suspend_cb(bool remote_wakeup_en)
// Invoked when usb bus is resumed // Invoked when usb bus is resumed
void tud_resume_cb(void) void tud_resume_cb(void)
{ {
blink_interval_ms = BLINK_MOUNTED; blink_interval_ms = tud_mounted() ? BLINK_MOUNTED : BLINK_NOT_MOUNTED;
} }
//--------------------------------------------------------------------+ //--------------------------------------------------------------------+

View File

@ -105,7 +105,7 @@ void tud_suspend_cb(bool remote_wakeup_en)
// Invoked when usb bus is resumed // Invoked when usb bus is resumed
void tud_resume_cb(void) void tud_resume_cb(void)
{ {
blink_interval_ms = BLINK_MOUNTED; blink_interval_ms = tud_mounted() ? BLINK_MOUNTED : BLINK_NOT_MOUNTED;
} }
//--------------------------------------------------------------------+ //--------------------------------------------------------------------+

View File

@ -96,7 +96,7 @@ void tud_suspend_cb(bool remote_wakeup_en)
// Invoked when usb bus is resumed // Invoked when usb bus is resumed
void tud_resume_cb(void) void tud_resume_cb(void)
{ {
blink_interval_ms = BLINK_MOUNTED; blink_interval_ms = tud_mounted() ? BLINK_MOUNTED : BLINK_NOT_MOUNTED;
} }
//--------------------------------------------------------------------+ //--------------------------------------------------------------------+

View File

@ -147,7 +147,7 @@ void tud_suspend_cb(bool remote_wakeup_en)
// Invoked when usb bus is resumed // Invoked when usb bus is resumed
void tud_resume_cb(void) void tud_resume_cb(void)
{ {
blink_interval_ms = BLINK_MOUNTED; blink_interval_ms = tud_mounted() ? BLINK_MOUNTED : BLINK_NOT_MOUNTED;
} }
// Helper for clock get requests // Helper for clock get requests

View File

@ -97,7 +97,7 @@ void tud_suspend_cb(bool remote_wakeup_en)
// Invoked when usb bus is resumed // Invoked when usb bus is resumed
void tud_resume_cb(void) void tud_resume_cb(void)
{ {
blink_interval_ms = BLINK_MOUNTED; blink_interval_ms = tud_mounted() ? BLINK_MOUNTED : BLINK_NOT_MOUNTED;
} }
//--------------------------------------------------------------------+ //--------------------------------------------------------------------+

View File

@ -100,7 +100,7 @@ void tud_suspend_cb(bool remote_wakeup_en)
// Invoked when usb bus is resumed // Invoked when usb bus is resumed
void tud_resume_cb(void) void tud_resume_cb(void)
{ {
blink_interval_ms = BLINK_MOUNTED; blink_interval_ms = tud_mounted() ? BLINK_MOUNTED : BLINK_NOT_MOUNTED;
} }

View File

@ -160,7 +160,7 @@ void tud_suspend_cb(bool remote_wakeup_en)
// Invoked when usb bus is resumed // Invoked when usb bus is resumed
void tud_resume_cb(void) void tud_resume_cb(void)
{ {
blink_interval_ms = BLINK_MOUNTED; blink_interval_ms = tud_mounted() ? BLINK_MOUNTED : BLINK_NOT_MOUNTED;
} }
//--------------------------------------------------------------------+ //--------------------------------------------------------------------+

View File

@ -125,7 +125,7 @@ void tud_suspend_cb(bool remote_wakeup_en)
// Invoked when usb bus is resumed // Invoked when usb bus is resumed
void tud_resume_cb(void) void tud_resume_cb(void)
{ {
blink_interval_ms = BLINK_MOUNTED; blink_interval_ms = tud_mounted() ? BLINK_MOUNTED : BLINK_NOT_MOUNTED;
} }
// Invoked when CDC interface received data from host // Invoked when CDC interface received data from host

View File

@ -710,8 +710,18 @@ static bool process_control_request(uint8_t rhport, tusb_control_request_t const
_usbd_dev.speed = speed; // restore speed _usbd_dev.speed = speed; // restore speed
} }
// Handle the new configuration and execute the corresponding callback
if ( cfg_num )
{
// switch to new configuration if not zero // switch to new configuration if not zero
if ( cfg_num ) TU_ASSERT( process_set_config(rhport, cfg_num) ); TU_ASSERT( process_set_config(rhport, cfg_num) );
if ( tud_mount_cb ) tud_mount_cb();
}
else
{
if ( tud_umount_cb ) tud_umount_cb();
}
} }
_usbd_dev.cfg_num = cfg_num; _usbd_dev.cfg_num = cfg_num;
@ -964,9 +974,6 @@ static bool process_set_config(uint8_t rhport, uint8_t cfg_num)
TU_ASSERT(drv_id < TOTAL_DRIVER_COUNT); TU_ASSERT(drv_id < TOTAL_DRIVER_COUNT);
} }
// invoke callback
if (tud_mount_cb) tud_mount_cb();
return true; return true;
} }