本文整理汇总了C++中rr3_ftr函数的典型用法代码示例。如果您正苦于以下问题:C++ rr3_ftr函数的具体用法?C++ rr3_ftr怎么用?C++ rr3_ftr使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了rr3_ftr函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: redrat3_get_firmware_rev
static void redrat3_get_firmware_rev(struct redrat3_dev *rr3)
{
int rc = 0;
char *buffer;
rr3_ftr(rr3->dev, "Entering %s\n", __func__);
buffer = kzalloc(sizeof(char) * (RR3_FW_VERSION_LEN + 1), GFP_KERNEL);
if (!buffer) {
dev_err(rr3->dev, "Memory allocation failure\n");
return;
}
rc = usb_control_msg(rr3->udev, usb_rcvctrlpipe(rr3->udev, 0),
RR3_FW_VERSION,
USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_DIR_IN,
0, 0, buffer, RR3_FW_VERSION_LEN, HZ * 5);
if (rc >= 0)
dev_info(rr3->dev, "Firmware rev: %s", buffer);
else
dev_err(rr3->dev, "Problem fetching firmware ID\n");
kfree(buffer);
rr3_ftr(rr3->dev, "Exiting %s\n", __func__);
}
示例2: redrat3_dev_suspend
static int redrat3_dev_suspend(struct usb_interface *intf, pm_message_t message)
{
struct redrat3_dev *rr3 = usb_get_intfdata(intf);
rr3_ftr(rr3->dev, "suspend\n");
usb_kill_urb(rr3->read_urb);
return 0;
}
示例3: redrat3_get_ir_data
/* gather IR data from incoming urb, process it when we have enough */
static int redrat3_get_ir_data(struct redrat3_dev *rr3, unsigned len)
{
struct device *dev = rr3->dev;
unsigned pkttype;
int ret = 0;
rr3_ftr(dev, "Entering %s\n", __func__);
if (rr3->bytes_read == 0 && len >= sizeof(struct redrat3_header)) {
redrat3_read_packet_start(rr3, len);
} else if (rr3->bytes_read != 0) {
redrat3_read_packet_continue(rr3, len);
} else if (rr3->bytes_read == 0) {
dev_err(dev, "error: no packet data read\n");
ret = -ENODATA;
goto out;
}
if (rr3->bytes_read < be16_to_cpu(rr3->irdata.header.length) +
sizeof(struct redrat3_header))
/* we're still accumulating data */
return 0;
/* if we get here, we've got IR data to decode */
pkttype = be16_to_cpu(rr3->irdata.header.transfer_type);
if (pkttype == RR3_MOD_SIGNAL_IN)
redrat3_process_ir_data(rr3);
else
rr3_dbg(dev, "discarding non-signal data packet (type 0x%02x)\n",
pkttype);
out:
rr3->bytes_read = 0;
return ret;
}
示例4: redrat3_dev_resume
static int redrat3_dev_resume(struct usb_interface *intf)
{
struct redrat3_dev *rr3 = usb_get_intfdata(intf);
rr3_ftr(rr3->dev, "resume\n");
if (usb_submit_urb(rr3->read_urb, GFP_ATOMIC))
return -EIO;
return 0;
}
示例5: redrat3_dev_disconnect
static void redrat3_dev_disconnect(struct usb_interface *intf)
{
struct usb_device *udev = interface_to_usbdev(intf);
struct redrat3_dev *rr3 = usb_get_intfdata(intf);
rr3_ftr(&intf->dev, "Entering %s\n", __func__);
if (!rr3)
return;
usb_set_intfdata(intf, NULL);
rc_unregister_device(rr3->rc);
led_classdev_unregister(&rr3->led);
del_timer_sync(&rr3->rx_timeout);
redrat3_delete(rr3, udev);
rr3_ftr(&intf->dev, "RedRat3 IR Transceiver now disconnected\n");
}
示例6: redrat3_read_packet_continue
static void redrat3_read_packet_continue(struct redrat3_dev *rr3, int len)
{
rr3_ftr(rr3->dev, "Entering %s\n", __func__);
memcpy(rr3->datap, (unsigned char *)rr3->bulk_in_buf, len);
rr3->datap += len;
rr3->bytes_read += len;
rr3_dbg(rr3->dev, "bytes_read %d, pktlen %d\n",
rr3->bytes_read, rr3->pktlen);
}
示例7: redrat3_issue_async
/*
* redrat3_issue_async
*
* Issues an async read to the ir data in port..
* sets the callback to be redrat3_handle_async
*/
static void redrat3_issue_async(struct redrat3_dev *rr3)
{
int res;
rr3_ftr(rr3->dev, "Entering %s\n", __func__);
res = usb_submit_urb(rr3->read_urb, GFP_ATOMIC);
if (res)
rr3_dbg(rr3->dev, "%s: receive request FAILED! "
"(res %d, len %d)\n", __func__, res,
rr3->read_urb->transfer_buffer_length);
}
示例8: redrat3_delete
static inline void redrat3_delete(struct redrat3_dev *rr3,
struct usb_device *udev)
{
rr3_ftr(rr3->dev, "%s cleaning up\n", __func__);
usb_kill_urb(rr3->read_urb);
usb_kill_urb(rr3->flash_urb);
usb_free_urb(rr3->read_urb);
usb_free_urb(rr3->flash_urb);
usb_free_coherent(udev, le16_to_cpu(rr3->ep_in->wMaxPacketSize),
rr3->bulk_in_buf, rr3->dma_in);
kfree(rr3);
}
示例9: redrat3_write_bulk_callback
static void redrat3_write_bulk_callback(struct urb *urb, struct pt_regs *regs)
{
struct redrat3_dev *rr3;
int len;
if (!urb)
return;
rr3 = urb->context;
if (rr3) {
len = urb->actual_length;
rr3_ftr(rr3->dev, "%s: called (status=%d len=%d)\n",
__func__, urb->status, len);
}
}
示例10: redrat3_read_packet_start
static void redrat3_read_packet_start(struct redrat3_dev *rr3, int len)
{
u16 tx_error;
u16 hdrlen;
rr3_ftr(rr3->dev, "Entering %s\n", __func__);
/* */
memcpy(&(rr3->pktlen), (unsigned char *) rr3->bulk_in_buf,
sizeof(rr3->pktlen));
memcpy(&(rr3->pkttype), ((unsigned char *) rr3->bulk_in_buf +
sizeof(rr3->pktlen)),
sizeof(rr3->pkttype));
/* */
rr3->pktlen = be16_to_cpu(rr3->pktlen);
rr3->pkttype = be16_to_cpu(rr3->pkttype);
switch (rr3->pkttype) {
case RR3_ERROR:
memcpy(&tx_error, ((unsigned char *)rr3->bulk_in_buf
+ (sizeof(rr3->pktlen) + sizeof(rr3->pkttype))),
sizeof(tx_error));
tx_error = be16_to_cpu(tx_error);
redrat3_dump_fw_error(rr3, tx_error);
break;
case RR3_MOD_SIGNAL_IN:
hdrlen = sizeof(rr3->pktlen) + sizeof(rr3->pkttype);
rr3->bytes_read = len;
rr3->bytes_read -= hdrlen;
rr3->datap = &(rr3->pbuf[0]);
memcpy(rr3->datap, ((unsigned char *)rr3->bulk_in_buf + hdrlen),
rr3->bytes_read);
rr3->datap += rr3->bytes_read;
rr3_dbg(rr3->dev, "bytes_read %d, pktlen %d\n",
rr3->bytes_read, rr3->pktlen);
break;
default:
rr3_dbg(rr3->dev, "ignoring packet with type 0x%02x, "
"len of %d, 0x%02x\n", rr3->pkttype, len, rr3->pktlen);
break;
}
}
示例11: redrat3_get_ir_data
static int redrat3_get_ir_data(struct redrat3_dev *rr3, int len)
{
struct device *dev = rr3->dev;
int ret = 0;
rr3_ftr(dev, "Entering %s\n", __func__);
if (rr3->pktlen > RR3_MAX_BUF_SIZE) {
dev_err(rr3->dev, "error: packet larger than buffer\n");
ret = -EINVAL;
goto out;
}
if ((rr3->bytes_read == 0) &&
(len >= (sizeof(rr3->pkttype) + sizeof(rr3->pktlen)))) {
redrat3_read_packet_start(rr3, len);
} else if (rr3->bytes_read != 0) {
redrat3_read_packet_continue(rr3, len);
} else if (rr3->bytes_read == 0) {
dev_err(dev, "error: no packet data read\n");
ret = -ENODATA;
goto out;
}
if (rr3->bytes_read > rr3->pktlen) {
dev_err(dev, "bytes_read (%d) greater than pktlen (%d)\n",
rr3->bytes_read, rr3->pktlen);
ret = -EINVAL;
goto out;
} else if (rr3->bytes_read < rr3->pktlen)
/* */
return 0;
/* */
if (rr3->pkttype == RR3_MOD_SIGNAL_IN)
redrat3_process_ir_data(rr3);
else
rr3_dbg(dev, "discarding non-signal data packet "
"(type 0x%02x)\n", rr3->pkttype);
out:
rr3->bytes_read = 0;
rr3->pktlen = 0;
rr3->pkttype = 0;
return ret;
}
示例12: redrat3_disable_detector
static void redrat3_disable_detector(struct redrat3_dev *rr3)
{
struct device *dev = rr3->dev;
u8 ret;
rr3_ftr(dev, "Entering %s\n", __func__);
ret = redrat3_send_cmd(RR3_RC_DET_DISABLE, rr3);
if (ret != 0)
dev_err(dev, "%s: failure!\n", __func__);
ret = redrat3_send_cmd(RR3_RC_DET_STATUS, rr3);
if (ret != 0)
dev_warn(dev, "%s: detector status: %d, should be 0\n",
__func__, ret);
rr3->det_enabled = false;
}
示例13: redrat3_read_packet_continue
static void redrat3_read_packet_continue(struct redrat3_dev *rr3, unsigned len)
{
void *irdata = &rr3->irdata;
rr3_ftr(rr3->dev, "Entering %s\n", __func__);
if (len + rr3->bytes_read > sizeof(rr3->irdata)) {
dev_warn(rr3->dev, "too much data for packet\n");
rr3->bytes_read = 0;
return;
}
memcpy(irdata + rr3->bytes_read, rr3->bulk_in_buf, len);
rr3->bytes_read += len;
rr3_dbg(rr3->dev, "bytes_read %d, pktlen %d\n", rr3->bytes_read,
be16_to_cpu(rr3->irdata.header.length));
}
示例14: redrat3_handle_async
static void redrat3_handle_async(struct urb *urb, struct pt_regs *regs)
{
struct redrat3_dev *rr3;
int ret;
if (!urb)
return;
rr3 = urb->context;
if (!rr3) {
pr_err("%s called with invalid context!\n", __func__);
usb_unlink_urb(urb);
return;
}
rr3_ftr(rr3->dev, "Entering %s\n", __func__);
switch (urb->status) {
case 0:
ret = redrat3_get_ir_data(rr3, urb->actual_length);
if (!ret) {
/* */
redrat3_issue_async(rr3);
}
break;
case -ECONNRESET:
case -ENOENT:
case -ESHUTDOWN:
usb_unlink_urb(urb);
return;
case -EPIPE:
default:
dev_warn(rr3->dev, "Error: urb status = %d\n", urb->status);
rr3->bytes_read = 0;
rr3->pktlen = 0;
rr3->pkttype = 0;
break;
}
}
示例15: redrat3_reset
static void redrat3_reset(struct redrat3_dev *rr3)
{
struct usb_device *udev = rr3->udev;
struct device *dev = rr3->dev;
int rc, rxpipe, txpipe;
u8 *val;
int len = sizeof(u8);
rr3_ftr(dev, "Entering %s\n", __func__);
rxpipe = usb_rcvctrlpipe(udev, 0);
txpipe = usb_sndctrlpipe(udev, 0);
val = kzalloc(len, GFP_KERNEL);
if (!val) {
dev_err(dev, "Memory allocation failure\n");
return;
}
*val = 0x01;
rc = usb_control_msg(udev, rxpipe, RR3_RESET,
USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_DIR_IN,
RR3_CPUCS_REG_ADDR, 0, val, len, HZ * 25);
rr3_dbg(dev, "reset returned 0x%02x\n", rc);
*val = 5;
rc = usb_control_msg(udev, txpipe, RR3_SET_IR_PARAM,
USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_DIR_OUT,
RR3_IR_IO_LENGTH_FUZZ, 0, val, len, HZ * 25);
rr3_dbg(dev, "set ir parm len fuzz %d rc 0x%02x\n", *val, rc);
*val = RR3_DRIVER_MAXLENS;
rc = usb_control_msg(udev, txpipe, RR3_SET_IR_PARAM,
USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_DIR_OUT,
RR3_IR_IO_MAX_LENGTHS, 0, val, len, HZ * 25);
rr3_dbg(dev, "set ir parm max lens %d rc 0x%02x\n", *val, rc);
kfree(val);
}