Rockbox open source high quality audio player as a Music Player Daemon
mpris rockbox mpd libadwaita audio rust zig deno
2
fork

Configure Feed

Select the types of activity you want to include in your feed.

pass event data to usb_acknowledge

add second argument to usb_acknowledge.
it can be used for more appropriate connection tracking that does not
rely on timeout in the future.

Change-Id: I8a44366b7c7a1f944524c4ba8ecd6d9673746a65

authored by

mojyack and committed by
Solomon Peachy
1951c17e d5506dfa

+54 -46
+1 -1
apps/audio_thread.c
··· 101 101 case SYS_USB_CONNECTED: 102 102 LOGFQUEUE("audio < SYS_USB_CONNECTED"); 103 103 voice_stop(); 104 - usb_acknowledge(SYS_USB_CONNECTED_ACK); 104 + usb_acknowledge(SYS_USB_CONNECTED_ACK, ev.data); 105 105 usb_wait_for_disconnect(&audio_queue); 106 106 break; 107 107 }
+2 -2
apps/gui/usb_screen.c
··· 248 248 } 249 249 } 250 250 251 - void gui_usb_screen_run(bool early_usb) 251 + void gui_usb_screen_run(bool early_usb, intptr_t seqnum) 252 252 { 253 253 #ifdef SIMULATOR /* the sim allows toggling USB fast enough to overflow viewportmanagers stack */ 254 254 static bool in_usb_screen = false; ··· 297 297 font_disable_all(); 298 298 } 299 299 300 - usb_acknowledge(SYS_USB_CONNECTED_ACK); 300 + usb_acknowledge(SYS_USB_CONNECTED_ACK, seqnum); 301 301 302 302 while (1) 303 303 {
+4 -2
apps/gui/usb_screen.h
··· 21 21 #ifndef _USB_SCREEN_H_ 22 22 #define _USB_SCREEN_H_ 23 23 24 + #include <stdint.h> 25 + 24 26 #ifdef USB_NONE 25 - #define gui_usb_screen_run(early_usb) do {} while(0) 27 + #define gui_usb_screen_run(early_usb, seqnum) do {} while(0) 26 28 #else 27 - extern void gui_usb_screen_run(bool early_usb); 29 + extern void gui_usb_screen_run(bool early_usb, intptr_t seqnum); 28 30 #endif 29 31 30 32 #endif
+1 -1
apps/iap/iap-core.c
··· 404 404 /* Ack USB thread */ 405 405 case SYS_USB_CONNECTED: 406 406 { 407 - usb_acknowledge(SYS_USB_CONNECTED_ACK); 407 + usb_acknowledge(SYS_USB_CONNECTED_ACK, ev.data); 408 408 break; 409 409 } 410 410 }
+2 -2
apps/main.c
··· 618 618 (mmc_remove_request() == SYS_HOTSWAP_EXTRACTED)) 619 619 #endif 620 620 { 621 - gui_usb_screen_run(true); 621 + gui_usb_screen_run(true, button_get_data()); 622 622 mounted = true; /* mounting done @ end of USB mode */ 623 623 } 624 624 #ifdef HAVE_USB_POWER ··· 675 675 #ifndef USB_NONE 676 676 usb_start_monitoring(); 677 677 while(button_get(true) != SYS_USB_CONNECTED) {}; 678 - gui_usb_screen_run(true); 678 + gui_usb_screen_run(true, button_get_data()); 679 679 #elif !defined(DEBUG) && !(CONFIG_STORAGE & STORAGE_RAMDISK) 680 680 sleep(HZ*5); 681 681 #endif
+8 -7
apps/misc.c
··· 656 656 } 657 657 break; 658 658 case SYS_USB_CONNECTED: 659 + { 660 + intptr_t seqnum = button_get_data(); 659 661 if (callback != NULL) 660 662 callback(parameter); 661 - { 662 - system_flush(); 663 + system_flush(); 663 664 #ifdef BOOTFILE 664 665 #if !defined(USB_NONE) && !defined(USB_HANDLED_BY_OF) 665 - check_bootfile(false); /* gets initial size */ 666 + check_bootfile(false); /* gets initial size */ 666 667 #endif 667 668 #endif 668 - gui_usb_screen_run(false); 669 + gui_usb_screen_run(false, seqnum); 669 670 #ifdef BOOTFILE 670 671 #if !defined(USB_NONE) && !defined(USB_HANDLED_BY_OF) 671 - check_bootfile(true); 672 + check_bootfile(true); 672 673 #endif 673 674 #endif 674 - system_restore(); 675 - } 675 + system_restore(); 676 676 return SYS_USB_CONNECTED; 677 + } 677 678 678 679 case SYS_POWEROFF: 679 680 case SYS_REBOOT:
+1 -1
apps/playlist.c
··· 1882 1882 } 1883 1883 1884 1884 case SYS_USB_CONNECTED: 1885 - usb_acknowledge(SYS_USB_CONNECTED_ACK); 1885 + usb_acknowledge(SYS_USB_CONNECTED_ACK, ev.data); 1886 1886 usb_wait_for_disconnect(&playlist_queue); 1887 1887 break; 1888 1888 }
+1 -1
apps/plugin.h
··· 948 948 949 949 /* usb */ 950 950 bool (*usb_inserted)(void); 951 - void (*usb_acknowledge)(long id); 951 + void (*usb_acknowledge)(long id, intptr_t seqnum); 952 952 #ifdef USB_ENABLE_HID 953 953 void (*usb_hid_send)(usage_page_t usage_page, int id); 954 954 #endif
+1 -1
apps/plugins/announce_status.c
··· 435 435 switch (ev.id) 436 436 { 437 437 case SYS_USB_CONNECTED: 438 - rb->usb_acknowledge(SYS_USB_CONNECTED_ACK); 438 + rb->usb_acknowledge(SYS_USB_CONNECTED_ACK, ev.data); 439 439 in_usb = true; 440 440 break; 441 441 case SYS_USB_DISCONNECTED:
+1 -1
apps/plugins/battery_bench.c
··· 491 491 { 492 492 case SYS_USB_CONNECTED: 493 493 in_usb_mode = true; 494 - rb->usb_acknowledge(SYS_USB_CONNECTED_ACK); 494 + rb->usb_acknowledge(SYS_USB_CONNECTED_ACK, ev.data); 495 495 break; 496 496 case SYS_USB_DISCONNECTED: 497 497 in_usb_mode = false;
+1 -1
apps/plugins/tagcache/tagcache.c
··· 979 979 switch (ev.id) 980 980 { 981 981 case SYS_USB_CONNECTED: 982 - rb->usb_acknowledge(SYS_USB_CONNECTED_ACK); 982 + rb->usb_acknowledge(SYS_USB_CONNECTED_ACK, ev.data); 983 983 logenabled = false; 984 984 break; 985 985 case SYS_USB_DISCONNECTED:
+1 -1
apps/plugins/test_usb.c
··· 58 58 state = "connected"; 59 59 logf("test_usb: connect ack %ld", *rb->current_tick); 60 60 DEBUGF("test_usb: connect ack %ld\n", *rb->current_tick); 61 - rb->usb_acknowledge(SYS_USB_CONNECTED_ACK); 61 + rb->usb_acknowledge(SYS_USB_CONNECTED_ACK, ev.data); 62 62 break; 63 63 64 64 case SYS_USB_DISCONNECTED:
+1 -1
apps/tagcache.c
··· 5357 5357 5358 5358 case SYS_USB_CONNECTED: 5359 5359 logf("USB: TagCache"); 5360 - usb_acknowledge(SYS_USB_CONNECTED_ACK); 5360 + usb_acknowledge(SYS_USB_CONNECTED_ACK, ev.data); 5361 5361 usb_wait_for_disconnect(&tagcache_queue); 5362 5362 break ; 5363 5363 }
+1 -1
bootloader/echoplayer.c
··· 470 470 471 471 case SYS_USB_CONNECTED: 472 472 go_active(); 473 - usb_acknowledge(SYS_USB_CONNECTED_ACK); 473 + usb_acknowledge(SYS_USB_CONNECTED_ACK, button_get_data()); 474 474 break; 475 475 } 476 476 }
+1 -1
bootloader/gigabeat-s.c
··· 123 123 /* Got the message - wait for disconnect */ 124 124 printf("Bootloader USB mode"); 125 125 126 - usb_acknowledge(SYS_USB_CONNECTED_ACK); 126 + usb_acknowledge(SYS_USB_CONNECTED_ACK, button_get_data()); 127 127 128 128 while (1) 129 129 {
+1 -1
bootloader/imx233.c
··· 96 96 adc_init(); 97 97 98 98 /* ack the SYS_USB_CONNECTED polled from the button queue */ 99 - usb_acknowledge(SYS_USB_CONNECTED_ACK); 99 + usb_acknowledge(SYS_USB_CONNECTED_ACK, button_get_data()); 100 100 101 101 while(1) 102 102 {
+1 -1
bootloader/ipod-s5l87xx.c
··· 129 129 printf("Bootloader USB mode"); 130 130 131 131 /* Ack the SYS_USB_CONNECTED polled from the button queue */ 132 - usb_acknowledge(SYS_USB_CONNECTED_ACK); 132 + usb_acknowledge(SYS_USB_CONNECTED_ACK, button_get_data()); 133 133 134 134 while(1) 135 135 {
+1 -1
bootloader/main-pp.c
··· 230 230 printf("Bootloader USB mode"); 231 231 232 232 usb = USB_HANDLED; 233 - usb_acknowledge(SYS_USB_CONNECTED_ACK); 233 + usb_acknowledge(SYS_USB_CONNECTED_ACK, ev.data); 234 234 #if defined(SANSA_E200) && defined(HAVE_BOOTLOADER_USB_MODE) 235 235 /* E200 misses unplug randomly 236 236 probably fine for other targets too but needs tested */
+1 -1
bootloader/ondavx747.c
··· 75 75 /* Got the message - wait for disconnect */ 76 76 show_splash(0, "Bootloader USB mode"); 77 77 78 - usb_acknowledge(SYS_USB_CONNECTED_ACK); 78 + usb_acknowledge(SYS_USB_CONNECTED_ACK, button_get_data()); 79 79 80 80 while (1) 81 81 {
+1 -1
bootloader/sansaconnect.c
··· 196 196 if (button_get_w_tmo(HZ/2) == SYS_USB_CONNECTED) 197 197 { 198 198 printf("Bootloader USB mode"); 199 - usb_acknowledge(SYS_USB_CONNECTED_ACK); 199 + usb_acknowledge(SYS_USB_CONNECTED_ACK, button_get_data()); 200 200 while (button_get_w_tmo(HZ/2) != SYS_USB_DISCONNECTED) 201 201 { 202 202 storage_spin();
+2
bootloader/x1000/gui.c
··· 34 34 35 35 static bool lcd_inited = false; 36 36 extern bool is_usb_connected; 37 + extern intptr_t usb_connection_seqnum; 37 38 38 39 void clearscreen(void) 39 40 { ··· 134 135 case SYS_USB_CONNECTED: 135 136 case SYS_USB_DISCONNECTED: 136 137 is_usb_connected = (btn == SYS_USB_CONNECTED); 138 + usb_connection_seqnum = button_get_data(); 137 139 break; 138 140 #ifdef HAVE_SCREENDUMP 139 141 case BL_SCREENSHOT:
+2 -1
bootloader/x1000/utils.c
··· 38 38 * Handled by the gui code since that's how events are delivered 39 39 * TODO: this is an ugly kludge */ 40 40 bool is_usb_connected = false; 41 + intptr_t usb_connection_seqnum = 0; 41 42 42 43 static bool screenshot_enabled = false; 43 44 ··· 71 72 return; 72 73 73 74 splashf(0, "USB mode"); 74 - usb_acknowledge(SYS_USB_CONNECTED_ACK); 75 + usb_acknowledge(SYS_USB_CONNECTED_ACK, usb_connection_seqnum); 75 76 76 77 while(is_usb_connected) 77 78 get_button(TIMEOUT_BLOCK);
+1 -1
bootloader/xduoox3.c
··· 105 105 /* Got the message - wait for disconnect */ 106 106 show_splash(0, "Bootloader USB mode"); 107 107 108 - usb_acknowledge(SYS_USB_CONNECTED_ACK); 108 + usb_acknowledge(SYS_USB_CONNECTED_ACK, button_get_data()); 109 109 110 110 while(1) { 111 111 button = button_get_w_tmo(HZ/2);
+2 -1
docs/PLUGIN_API
··· 2996 2996 \param run 2997 2997 \description 2998 2998 2999 - void usb_acknowledge(long id) 2999 + void usb_acknowledge(long id, intptr_t seqnum) 3000 3000 \group usb 3001 3001 \param id 3002 + \param seqnum 3002 3003 \description 3003 3004 3004 3005 void usb_hid_send(usage_page_t usage_page, int id)
+1 -1
firmware/backlight.c
··· 605 605 #endif /* HAVE_REMOTE_LCD/ HAVE_REMOTE_LCD_AS_MAIN */ 606 606 #endif /* !SIMULATOR */ 607 607 case SYS_USB_CONNECTED: 608 - usb_acknowledge(SYS_USB_CONNECTED_ACK); 608 + usb_acknowledge(SYS_USB_CONNECTED_ACK, ev.data); 609 609 break; 610 610 611 611 #ifdef BACKLIGHT_DRIVER_CLOSE
+3 -3
firmware/export/usb.h
··· 70 70 * mass storage mode, it will require exclusive access to the disk and ask all 71 71 * threads to release any file handle and stop using the disks. It does so by 72 72 * broadcasting a SYS_USB_CONNECTED message, which threads must acknowledge using 73 - * usb_acknowledge(SYS_USB_CONNECTED_ACK). They must not access the disk until 74 - * SYS_USB_DISCONNECTED is broadcast. To ease waiting, threads can call 73 + * usb_acknowledge(SYS_USB_CONNECTED_ACK, ev.data). They must not access the disk 74 + * until SYS_USB_DISCONNECTED is broadcast. To ease waiting, threads can call 75 75 * usb_wait_for_disconnect() or usb_wait_for_disconnect_w_tmo() on their waiting 76 76 * queue. 77 77 * ··· 198 198 void usb_start_monitoring(void) INIT_ATTR; 199 199 void usb_close(void); 200 200 /* acknowledge usb connection, typically with SYS_USB_CONNECTED_ACK */ 201 - void usb_acknowledge(long id); 201 + void usb_acknowledge(long id, intptr_t seqnum); 202 202 /* block the current thread until SYS_USB_DISCONNECTED has been broadcast */ 203 203 void usb_wait_for_disconnect(struct event_queue *q); 204 204 /* same as usb_wait_for_disconnect() but with a timeout, returns 1 on timeout */
+1 -1
firmware/scroll_engine.c
··· 89 89 case SYS_TIMEOUT: 90 90 return false; 91 91 case SYS_USB_CONNECTED: 92 - usb_acknowledge(SYS_USB_CONNECTED_ACK); 92 + usb_acknowledge(SYS_USB_CONNECTED_ACK, ev.data); 93 93 usb_wait_for_disconnect(&scroll_queue); 94 94 sync_display_ticks(); 95 95 return true;
+1 -1
firmware/storage.c
··· 236 236 storage_event_send(CONFIG_STORAGE, ev.id, (intptr_t)&bdcast); 237 237 usb_mode = ev.id == SYS_USB_CONNECTED; 238 238 if (usb_mode) { 239 - usb_acknowledge(SYS_USB_CONNECTED_ACK); 239 + usb_acknowledge(SYS_USB_CONNECTED_ACK, ev.data); 240 240 } 241 241 else { 242 242 bdcast = CONFIG_STORAGE;
+1 -1
firmware/target/arm/ipod/piezo.c
··· 108 108 /*logf("USB: Piezo core");*/ 109 109 piezo_hw_stop(); 110 110 queue_clear(&piezo_queue); 111 - usb_acknowledge(SYS_USB_CONNECTED_ACK); 111 + usb_acknowledge(SYS_USB_CONNECTED_ACK, ev.data); 112 112 usb_wait_for_disconnect(&piezo_queue); 113 113 break ; 114 114 #endif
+1 -1
firmware/target/arm/tms320dm320/sansa-connect/avr-sansaconnect.c
··· 838 838 if (ev.id == SYS_USB_CONNECTED) 839 839 { 840 840 /* Allow USB to gain exclusive storage access */ 841 - usb_acknowledge(SYS_USB_CONNECTED_ACK); 841 + usb_acknowledge(SYS_USB_CONNECTED_ACK, ev.data); 842 842 disk_access_available = false; 843 843 } 844 844 else if (ev.id == SYS_USB_DISCONNECTED)
+1 -1
firmware/target/arm/usb-tcc.c
··· 747 747 748 748 usb_init(); 749 749 usb_start_monitoring(); 750 - usb_acknowledge(SYS_USB_CONNECTED_ACK); 750 + usb_acknowledge(SYS_USB_CONNECTED_ACK, 0); 751 751 752 752 while (1) { 753 753 sleep(HZ);
+4 -3
firmware/usb.c
··· 765 765 #endif /* USB_STATUS_BY_EVENT */ 766 766 #endif /* USB_FULL_INIT */ 767 767 768 - void usb_acknowledge(long id) 768 + void usb_acknowledge(long id, intptr_t seqnum) 769 769 { 770 - queue_post(&usb_queue, id, 0); 770 + queue_post(&usb_queue, id, seqnum); 771 771 } 772 772 773 773 void usb_init(void) ··· 901 901 return false; 902 902 } 903 903 904 - void usb_acknowledge(long id) 904 + void usb_acknowledge(long id, intptr_t seqnum) 905 905 { 906 906 (void)id; 907 + (void)seqnum; 907 908 } 908 909 909 910 void usb_init(void)
+2 -2
uisimulator/common/sim_tasks.c
··· 203 203 { 204 204 } 205 205 206 - void usb_acknowledge(long id) 206 + void usb_acknowledge(long id, intptr_t seqnum) 207 207 { 208 - queue_post(&sim_queue, id, 0); 208 + queue_post(&sim_queue, id, seqnum); 209 209 } 210 210 211 211 void usb_wait_for_disconnect(struct event_queue *q)