Lines Matching refs:priv

170 static int      cdcacm_sndpacket(FAR struct cdcacm_dev_s *priv,
172 static int cdcacm_recvpacket(FAR struct cdcacm_dev_s *priv,
174 static int cdcacm_requeue_rdrequest(FAR struct cdcacm_dev_s *priv,
188 static void cdcacm_resetconfig(FAR struct cdcacm_dev_s *priv);
196 static int cdcacm_setconfig(FAR struct cdcacm_dev_s *priv,
216 static int cdcacm_serial_connect(FAR struct cdcacm_dev_s *priv);
217 static int cdcacm_serial_disconnect(FAR struct cdcacm_dev_s *priv);
306 struct cdcacm_dev_s *priv;
312 priv = (struct cdcacm_dev_s *)drv->priv;
313 if (priv == NULL)
319 wrcontainer = &priv->wrreqs;
324 spin_lock_irqsave(&priv->acm_lock, flags);
325 ret = cdcacm_sndpacket(priv, wrcontainer);
326 spin_unlock_irqrestore(&priv->acm_lock, flags);
346 static int cdcacm_sndpacket(FAR struct cdcacm_dev_s *priv,
356 if (priv == NULL)
361 ep = priv->epbulkin;
370 while (priv->received_char == false)
414 priv->received_char = true;
421 req->priv = wrcontainer;
426 priv->received_char = false;
432 static int cdcacm_fill_rdrequest(struct cdcacm_dev_s *priv,
448 ret = usbd_copy_to_user(read_buf, req->len, (req_buf + priv->read_offset), buflen);
456 priv->read_offset += buflen;
458 if (priv->read_offset < req->xfrd)
460 ret = (int)LOS_EventWrite(&priv->read_event, USB_SERIAL_READ_EVENT);
468 atomic_set(&priv->send_char, 0);
469 priv->read_offset = 0;
486 static int cdcacm_recvpacket(FAR struct cdcacm_dev_s *priv,
493 if (priv == NULL || rdcontainer == NULL)
510 (void)LOS_EventRead(&priv->read_event, USB_SERIAL_READ_EVENT,
532 nbytes = cdcacm_fill_rdrequest(priv, rdcontainer, buflen);
536 (void)cdcacm_requeue_rdrequest(priv, rdcontainer);
542 atomic_set(&priv->shutdown, 1);
543 atomic_set(&priv->send_char, 0);
559 static int cdcacm_requeue_rdrequest(FAR struct cdcacm_dev_s *priv,
567 if (priv == NULL || rdcontainer == NULL)
574 spin_lock_irqsave(&priv->acm_lock, flags);
575 if (atomic_read(&priv->send_char) == 0)
578 atomic_set(&priv->send_char, 1);
583 ep = priv->epbulkout;
589 atomic_set(&priv->send_char, 0);
592 spin_unlock_irqrestore(&priv->acm_lock, flags);
606 FAR struct cdcacm_dev_s *priv;
612 priv = (struct cdcacm_dev_s *)drv->priv;
613 if (priv == NULL)
618 rdcontainer = &priv->rdreqs;
630 nbytes = (ssize_t)cdcacm_recvpacket(priv, rdcontainer);
638 if (atomic_read(&priv->shutdown) == 0)
640 ret = cdcacm_requeue_rdrequest(priv, rdcontainer);
713 static void cdcacm_resetconfig(FAR struct cdcacm_dev_s *priv)
715 if (priv == NULL)
725 if (priv->epintin_enabled == true)
727 EP_DISABLE(priv->epintin);
728 priv->epintin_enabled = false;
731 if (priv->epbulkin_enabled == true)
733 EP_DISABLE(priv->epbulkin);
734 priv->epbulkin_enabled = false;
737 if (priv->epbulkout_enabled == true)
739 EP_DISABLE(priv->epbulkout);
740 priv->epbulkout_enabled = false;
774 static int cdcacm_setconfig(FAR struct cdcacm_dev_s *priv,
781 if (priv == NULL)
786 rdcontainer = &priv->rdreqs;
788 if (priv->epintin_enabled == true)
790 EP_DISABLE(priv->epintin);
791 priv->epintin_enabled = false;
796 ret = cdcacm_epconfigure(priv->epintin, CDCACM_EPINTIN,
803 priv->epintin_enabled = true;
804 priv->epintin->priv = priv;
806 if (priv->epbulkin_enabled == true)
808 EP_DISABLE(priv->epbulkin);
809 priv->epbulkin_enabled = false;
814 ret = cdcacm_epconfigure(priv->epbulkin, CDCACM_EPBULKIN,
821 priv->epbulkin_enabled = true;
822 priv->epbulkin->priv = priv;
824 if (priv->epbulkout_enabled == true)
826 EP_DISABLE(priv->epbulkout);
827 priv->epbulkout_enabled = false;
832 ret = cdcacm_epconfigure(priv->epbulkout, CDCACM_EPBULKOUT,
839 priv->epbulkout_enabled = true;
840 priv->epbulkout->priv = priv;
844 ret = cdcacm_requeue_rdrequest(priv, rdcontainer);
855 spin_lock_irqsave(&priv->acm_lock, flags);
856 ret = cdcacm_serial_connect(priv);
860 spin_unlock_irqrestore(&priv->acm_lock, flags);
863 atomic_set(&priv->shutdown, 0);
864 priv->bdisconnect = false;
869 spin_unlock_irqrestore(&priv->acm_lock, flags);
874 cdcacm_resetconfig(priv);
891 FAR struct cdcacm_dev_s *priv;
896 if (ep == NULL || ep->priv == NULL || req == NULL)
904 priv = (struct cdcacm_dev_s *)ep->priv;
906 rdcontainer = &priv->rdreqs;
918 (void)cdcacm_recvpacket(priv, rdcontainer);
919 (void)cdcacm_requeue_rdrequest(priv, rdcontainer);
924 ret = LOS_EventWrite(&priv->read_event, USB_SERIAL_READ_EVENT);
943 FAR struct cdcacm_dev_s *priv;
950 priv = (struct cdcacm_dev_s *)ep->priv;
951 if (priv == NULL)
956 spin_lock(&priv->acm_lock);
960 wrcontainer = (struct cdcacm_wrreq_s *)req->priv;
962 priv->received_char = false;
977 (void)cdcacm_sndpacket(priv, wrcontainer);
987 spin_unlock(&priv->acm_lock);
993 FAR struct cdcacm_dev_s *priv;
1001 priv = usbd_req->priv;
1002 if (priv == NULL)
1008 spin_lock_irqsave(&priv->acm_lock, flags);
1011 flag = priv->wating;
1016 ret = cdcacm_serial_connect(priv);
1022 spin_unlock_irqrestore(&priv->acm_lock, flags);
1040 FAR struct cdcacm_dev_s *priv;
1055 priv = ((struct cdcacm_driver_s *)driver)->dev;
1059 priv->usbdev = dev;
1060 priv->bdisconnect = true;
1061 atomic_set(&priv->shutdown, 0);
1069 cdev = dev->ep0->priv;
1070 (VOID)LOS_EventInit(&priv->read_event);
1071 spin_lock_init(&priv->acm_lock);
1075 ret = register_driver(CDCACM_DEVNAME_FORMAT, &g_vfs_ops, 0666, priv);
1084 priv->ctrlreq = cdev->ctrlreq;
1085 if (priv->ctrlreq == NULL)
1099 priv->ctrl_id = (uint8_t)devinfo->ifnobase;
1100 priv->data_id = (uint8_t)devinfo->ifnobase + 1;
1111 priv->epintin = DEV_ALLOCEP(dev, g_cdcacm_hs_func_desc.nepd.bEndpointAddress, &g_cdcacm_hs_func_desc.nepd);
1112 if (!priv->epintin)
1118 CDCACM_MKEPINTIN(devinfo) = priv->epintin->eplog;
1119 priv->epintin->priv = priv;
1120 priv->epintin->handle_req = cdcacm_allocreq(priv->epintin,
1121 sizeof(struct usb_cdc_notification) + sizeof(priv->serialstate));
1122 if (priv->epintin->handle_req == NULL)
1127 priv->epintin->handle_req->callback = cdcacm_notify_complete;
1131 priv->epbulkin = DEV_ALLOCEP(dev, g_cdcacm_hs_func_desc.iepd.bEndpointAddress, &g_cdcacm_hs_func_desc.iepd);
1132 if (!priv->epbulkin)
1138 CDCACM_MKEPBULKIN(devinfo) = priv->epbulkin->eplog;
1139 priv->epbulkin->priv = priv;
1143 priv->epbulkout = DEV_ALLOCEP(dev, g_cdcacm_hs_func_desc.oepd.bEndpointAddress, &g_cdcacm_hs_func_desc.oepd);
1144 if (!priv->epbulkout)
1150 CDCACM_MKEPBULKOUT(devinfo) = priv->epbulkout->eplog;
1151 priv->epbulkout->priv = priv;
1161 priv->epbulkout->maxpacket = reqlen;
1165 rdcontainer = &priv->rdreqs;
1169 rdcontainer->req = cdcacm_allocreq(priv->epbulkout, reqlen);
1178 rdcontainer->req->priv = rdcontainer;
1180 priv->epbulkout->handle_req = rdcontainer->req;
1198 wrcontainer = &priv->wrreqs;
1199 wrcontainer->req = cdcacm_allocreq(priv->epbulkin, reqlen);
1205 wrcontainer->req->priv = wrcontainer;
1207 priv->epbulkin->handle_req = wrcontainer->req;
1239 FAR struct cdcacm_dev_s *priv;
1252 priv = ((FAR struct cdcacm_driver_s *)driver)->dev;
1256 if (priv != NULL)
1262 if (priv->epintin->handle_req != NULL)
1264 cdcacm_freereq(priv->epintin, priv->epintin->handle_req);
1265 priv->epintin->handle_req = NULL;
1270 if (priv->epintin)
1272 DEV_FREEEP(dev, priv->epintin);
1273 priv->epintin = NULL;
1280 rdcontainer = &priv->rdreqs;
1283 cdcacm_freereq(priv->epbulkout, rdcontainer->req);
1289 if (priv->epbulkout)
1291 DEV_FREEEP(dev, priv->epbulkout);
1292 priv->epbulkout = NULL;
1299 wrcontainer = &priv->wrreqs;
1302 cdcacm_freereq(priv->epbulkin, wrcontainer->req);
1308 if (priv->epbulkin)
1310 DEV_FREEEP(dev, priv->epbulkin);
1311 priv->epbulkin = NULL;
1325 (void)LOS_EventDestroy(&priv->read_event);
1342 FAR struct cdcacm_dev_s *priv;
1346 priv = req->priv;
1353 ret = memcpy_s(&priv->linecoding, sizeof(struct usb_cdc_line_state), req->buf, SIZEOF_CDC_LINECODING);
1375 FAR struct cdcacm_dev_s *priv;
1392 priv = ((struct cdcacm_driver_s *)driver)->dev;
1393 if (priv == NULL)
1398 req = priv->ctrlreq;
1419 val = cdcacm_setconfig(priv, dev);
1446 index == priv->devinfo.ifnobase) /* bmRequestType = 0xa1, bRequest = 0x21 */
1448 if(index != priv->ctrl_id)
1456 ret = memcpy_s(req->buf, USB_COMP_EP0_BUFSIZ, &priv->linecoding, (uint32_t)val);
1476 index == priv->devinfo.ifnobase) /* bmRequestType = 0x21, bRequest = 0x20 */
1479 index != priv->ctrl_id)
1490 req->priv = priv;
1509 index == priv->devinfo.ifnobase) /* bmRequestType = 0x21, bRequest = 0x22 */
1511 if(index != priv->ctrl_id)
1550 static uint32_t cdcacm_serial_connect_state(const struct cdcacm_dev_s *priv,
1568 USETW(state_buf->wIndex, priv->ctrl_id);
1583 static int cdcacm_serial_connect(FAR struct cdcacm_dev_s *priv)
1590 if (priv == NULL)
1598 priv->serialstate |= CDCACM_UART_DSR | CDCACM_UART_DCD;
1599 ep = priv->epintin;
1607 priv->wating = true;
1613 length = cdcacm_serial_connect_state(priv, req, &priv->serialstate, 0, sizeof(priv->serialstate));
1615 req->priv = priv;
1625 priv->wating = false;
1629 static int cdcacm_serial_disconnect(FAR struct cdcacm_dev_s *priv)
1637 priv->received_char = false;
1641 priv->serialstate &= ~CDC_UART_CONSISTENT;
1642 ep = priv->epintin;
1647 length = cdcacm_serial_connect_state(priv, req, &priv->serialstate, 0, sizeof(priv->serialstate));
1681 FAR struct cdcacm_dev_s *priv;
1684 priv = (struct cdcacm_dev_s *)drv->priv;
1685 if (priv == NULL)
1710 (void)LOS_EventWrite(&priv->read_event, USB_SERIAL_READ_EVENT);
1736 FAR struct cdcacm_dev_s *priv;
1745 priv = ((FAR struct cdcacm_driver_s *)driver)->dev;
1746 if (priv == NULL)
1752 if (priv->bdisconnect == false)
1754 (void)cdcacm_serial_disconnect(priv);
1755 cdcacm_resetconfig(priv);
1756 priv->bdisconnect = true;
1796 FAR struct cdcacm_dev_s *priv;
1812 priv = &alloc->dev;
1817 (void)memset_s(priv, sizeof(struct cdcacm_dev_s), 0, sizeof(struct cdcacm_dev_s));
1818 (void)memcpy_s(&priv->devinfo, sizeof(struct usbdev_devinfo_s), devinfo, sizeof(struct usbdev_devinfo_s));
1822 USETDW(priv->linecoding.dwDTERate, 9600); /* Baud = 9600 */
1823 priv->linecoding.bCharFormat = UCDC_STOP_BIT_1; /* Stop bits */
1824 priv->linecoding.bParityType = UCDC_PARITY_NONE; /* No parity */
1825 priv->linecoding.bDataBits = 8; /* 8 data bits */
1831 drvr->dev = priv;