SdbdCommandlineArgs sdbd_commandline_args;
#endif
+static int is_support_usbproto();
+static int is_support_sockproto();
+
void (*usb_init)() = NULL;
void (*usb_cleanup)() = NULL;
int (*usb_write)(usb_handle *h, const void *data, int len) = NULL;
static void sdb_cleanup(void)
{
clear_sdbd_commandline_args(&sdbd_commandline_args);
- usb_cleanup();
+
+ if (is_support_usbproto()) {
+ usb_cleanup();
+ }
// if(required_pid > 0) {
// kill(required_pid, SIGKILL);
// }
}
}
- if (is_support_usbproto()) {
- /* choose the usb gadget backend */
- if (access(USB_NODE_FILE, F_OK) == 0) {
- /* legacy kernel-based sdb gadget */
- usb_init = &linux_usb_init;
- usb_cleanup = &linux_usb_cleanup;
- usb_write = &linux_usb_write;
- usb_read = &linux_usb_read;
- usb_close = &linux_usb_close;
- usb_kick = &linux_usb_kick;
- } else {
- /* functionfs based gadget */
- usb_init = &ffs_usb_init;
- usb_cleanup = &ffs_usb_cleanup;
- usb_write = &ffs_usb_write;
- usb_read = &ffs_usb_read;
- usb_close = &ffs_usb_close;
- usb_kick = &ffs_usb_kick;
- }
+ /* choose the usb gadget backend */
+ if (access(USB_NODE_FILE, F_OK) == 0) {
+ /* legacy kernel-based sdb gadget */
+ usb_init = &linux_usb_init;
+ usb_cleanup = &linux_usb_cleanup;
+ usb_write = &linux_usb_write;
+ usb_read = &linux_usb_read;
+ usb_close = &linux_usb_close;
+ usb_kick = &linux_usb_kick;
+ } else {
+ /* functionfs based gadget */
+ usb_init = &ffs_usb_init;
+ usb_cleanup = &ffs_usb_cleanup;
+ usb_write = &ffs_usb_write;
+ usb_read = &ffs_usb_read;
+ usb_close = &ffs_usb_close;
+ usb_kick = &ffs_usb_kick;
+ }
+ if (is_support_usbproto()) {
// listen on USB
usb_init();
}
fdevent_loop();
- usb_cleanup();
+ if (is_support_usbproto()) {
+ usb_cleanup();
+ }
return 0;
}
fprintf(stderr,"sdb server killed by remote request\n");
fflush(stdout);
sdb_write(reply_fd, "OKAY", 4);
- usb_cleanup();
+ if (is_support_usbproto()) {
+ usb_cleanup();
+ }
exit(0);
}