static void *usb_open_thread(void *x)
{
struct usb_handle *usb = (struct usb_handle *)x;
- int maxfd = sd_listen_fds(0) + SD_LISTEN_FDS_START;
- int fd;
- int ep[3];
- int received;
-
- usb->control = -1;
- usb->bulk_in = -1;
- usb->bulk_out = -1;
-
- received = 0;
- for (fd = SD_LISTEN_FDS_START; fd < maxfd; ++fd) {
- if (sd_is_special(fd, NULL) > 0) {
- ep[received++] = fd;
- }
- }
/* Endpoints are received from sytemd */
- if (received == 3) {
- D("Using functionfs socket activation\n");
+ if (sd_listen_fds(0) >= 3) {
sdb_mutex_lock(&usb->control_lock);
- usb->control = ep[0];
- usb->bulk_out = ep[1];
- usb->bulk_in = ep[2];
+ usb->control = SD_LISTEN_FDS_START + 0;
+ usb->bulk_out = SD_LISTEN_FDS_START + 1;
+ usb->bulk_in = SD_LISTEN_FDS_START + 2;
sdb_cond_signal(&usb->control_notify);
sdb_mutex_unlock(&usb->control_lock);
} else {