• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

C++ rr3_ftr函数代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了C++中rr3_ftr函数的典型用法代码示例。如果您正苦于以下问题:C++ rr3_ftr函数的具体用法?C++ rr3_ftr怎么用?C++ rr3_ftr使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。



在下文中一共展示了rr3_ftr函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的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__);
}
开发者ID:romanbb,项目名称:android_kernel_lge_d851,代码行数:26,代码来源:redrat3.c


示例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;
}
开发者ID:romanbb,项目名称:android_kernel_lge_d851,代码行数:7,代码来源:redrat3.c


示例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;
}
开发者ID:NETFORCE2,项目名称:OpenWrt-14.07-Barrier-Breaker,代码行数:36,代码来源:redrat3.c


示例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;
}
开发者ID:romanbb,项目名称:android_kernel_lge_d851,代码行数:8,代码来源:redrat3.c


示例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");
}
开发者ID:NETFORCE2,项目名称:OpenWrt-14.07-Barrier-Breaker,代码行数:18,代码来源:redrat3.c


示例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);
}
开发者ID:romanbb,项目名称:android_kernel_lge_d851,代码行数:12,代码来源:redrat3.c


示例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);
}
开发者ID:NETFORCE2,项目名称:OpenWrt-14.07-Barrier-Breaker,代码行数:18,代码来源:redrat3.c


示例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);
}
开发者ID:NETFORCE2,项目名称:OpenWrt-14.07-Barrier-Breaker,代码行数:13,代码来源:redrat3.c


示例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);
	}
}
开发者ID:romanbb,项目名称:android_kernel_lge_d851,代码行数:15,代码来源:redrat3.c


示例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;
	}
}
开发者ID:romanbb,项目名称:android_kernel_lge_d851,代码行数:46,代码来源:redrat3.c


示例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;
}
开发者ID:romanbb,项目名称:android_kernel_lge_d851,代码行数:46,代码来源:redrat3.c


示例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;
}
开发者ID:romanbb,项目名称:android_kernel_lge_d851,代码行数:18,代码来源:redrat3.c


示例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));
}
开发者ID:NETFORCE2,项目名称:OpenWrt-14.07-Barrier-Breaker,代码行数:18,代码来源:redrat3.c


示例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;
	}
}
开发者ID:romanbb,项目名称:android_kernel_lge_d851,代码行数:41,代码来源:redrat3.c


示例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);
}
开发者ID:romanbb,项目名称:android_kernel_lge_d851,代码行数:39,代码来源:redrat3.c


示例16: redrat3_read_packet_start

static void redrat3_read_packet_start(struct redrat3_dev *rr3, unsigned len)
{
    struct redrat3_header *header = rr3->bulk_in_buf;
    unsigned pktlen, pkttype;

    rr3_ftr(rr3->dev, "Entering %s\n", __func__);

    /* grab the Length and type of transfer */
    pktlen = be16_to_cpu(header->length);
    pkttype = be16_to_cpu(header->transfer_type);

    if (pktlen > sizeof(rr3->irdata)) {
        dev_warn(rr3->dev, "packet length %u too large\n", pktlen);
        return;
    }

    switch (pkttype) {
    case RR3_ERROR:
        if (len >= sizeof(struct redrat3_error)) {
            struct redrat3_error *error = rr3->bulk_in_buf;
            unsigned fw_error = be16_to_cpu(error->fw_error);
            redrat3_dump_fw_error(rr3, fw_error);
        }
        break;

    case RR3_MOD_SIGNAL_IN:
        memcpy(&rr3->irdata, rr3->bulk_in_buf, len);
        rr3->bytes_read = len;
        rr3_dbg(rr3->dev, "bytes_read %d, pktlen %d\n",
                rr3->bytes_read, pktlen);
        break;

    default:
        rr3_dbg(rr3->dev, "ignoring packet with type 0x%02x, len of %d, 0x%02x\n",
                pkttype, len, pktlen);
        break;
    }
}
开发者ID:NETFORCE2,项目名称:OpenWrt-14.07-Barrier-Breaker,代码行数:38,代码来源:redrat3.c


示例17: redrat3_enable_detector

/* Enables the long range detector and starts async receive */
static int redrat3_enable_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_ENABLE, rr3);
    if (ret != 0)
        dev_dbg(dev, "%s: unexpected ret of %d\n",
                __func__, ret);

    ret = redrat3_send_cmd(RR3_RC_DET_STATUS, rr3);
    if (ret != 1) {
        dev_err(dev, "%s: detector status: %d, should be 1\n",
                __func__, ret);
        return -EIO;
    }

    redrat3_issue_async(rr3);

    return 0;
}
开发者ID:NETFORCE2,项目名称:OpenWrt-14.07-Barrier-Breaker,代码行数:24,代码来源:redrat3.c


示例18: redrat3_transmit_ir

static int redrat3_transmit_ir(struct rc_dev *rcdev, unsigned *txbuf,
                               unsigned count)
{
    struct redrat3_dev *rr3 = rcdev->priv;
    struct device *dev = rr3->dev;
    struct redrat3_irdata *irdata = NULL;
    int ret, ret_len;
    int lencheck, cur_sample_len, pipe;
    int *sample_lens = NULL;
    u8 curlencheck = 0;
    unsigned i, sendbuf_len;

    rr3_ftr(dev, "Entering %s\n", __func__);

    if (rr3->transmitting) {
        dev_warn(dev, "%s: transmitter already in use\n", __func__);
        return -EAGAIN;
    }

    if (count > RR3_MAX_SIG_SIZE - RR3_TX_TRAILER_LEN)
        return -EINVAL;

    /* rr3 will disable rc detector on transmit */
    rr3->transmitting = true;

    sample_lens = kzalloc(sizeof(int) * RR3_DRIVER_MAXLENS, GFP_KERNEL);
    if (!sample_lens) {
        ret = -ENOMEM;
        goto out;
    }

    irdata = kzalloc(sizeof(*irdata), GFP_KERNEL);
    if (!irdata) {
        ret = -ENOMEM;
        goto out;
    }

    for (i = 0; i < count; i++) {
        cur_sample_len = redrat3_us_to_len(txbuf[i]);
        if (cur_sample_len > 0xffff) {
            dev_warn(dev, "transmit period of %uus truncated to %uus\n",
                     txbuf[i], redrat3_len_to_us(0xffff));
            cur_sample_len = 0xffff;
        }
        for (lencheck = 0; lencheck < curlencheck; lencheck++) {
            if (sample_lens[lencheck] == cur_sample_len)
                break;
        }
        if (lencheck == curlencheck) {
            rr3_dbg(dev, "txbuf[%d]=%u, pos %d, enc %u\n",
                    i, txbuf[i], curlencheck, cur_sample_len);
            if (curlencheck < RR3_DRIVER_MAXLENS) {
                /* now convert the value to a proper
                 * rr3 value.. */
                sample_lens[curlencheck] = cur_sample_len;
                put_unaligned_be16(cur_sample_len,
                                   &irdata->lens[curlencheck]);
                curlencheck++;
            } else {
                ret = -EINVAL;
                goto out;
            }
        }
        irdata->sigdata[i] = lencheck;
    }

    irdata->sigdata[count] = RR3_END_OF_SIGNAL;
    irdata->sigdata[count + 1] = RR3_END_OF_SIGNAL;

    sendbuf_len = offsetof(struct redrat3_irdata,
                           sigdata[count + RR3_TX_TRAILER_LEN]);
    /* fill in our packet header */
    irdata->header.length = cpu_to_be16(sendbuf_len -
                                        sizeof(struct redrat3_header));
    irdata->header.transfer_type = cpu_to_be16(RR3_MOD_SIGNAL_OUT);
    irdata->pause = cpu_to_be32(redrat3_len_to_us(100));
    irdata->mod_freq_count = cpu_to_be16(mod_freq_to_val(rr3->carrier));
    irdata->no_lengths = curlencheck;
    irdata->sig_size = cpu_to_be16(count + RR3_TX_TRAILER_LEN);

    pipe = usb_sndbulkpipe(rr3->udev, rr3->ep_out->bEndpointAddress);
    ret = usb_bulk_msg(rr3->udev, pipe, irdata,
                       sendbuf_len, &ret_len, 10 * HZ);
    rr3_dbg(dev, "sent %d bytes, (ret %d)\n", ret_len, ret);

    /* now tell the hardware to transmit what we sent it */
    pipe = usb_rcvctrlpipe(rr3->udev, 0);
    ret = usb_control_msg(rr3->udev, pipe, RR3_TX_SEND_SIGNAL,
                          USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_DIR_IN,
                          0, 0, irdata, 2, HZ * 10);

    if (ret < 0)
        dev_err(dev, "Error: control msg send failed, rc %d\n", ret);
    else
        ret = count;

out:
    kfree(sample_lens);
    kfree(irdata);

//.........这里部分代码省略.........
开发者ID:NETFORCE2,项目名称:OpenWrt-14.07-Barrier-Breaker,代码行数:101,代码来源:redrat3.c


示例19: redrat3_process_ir_data

static void redrat3_process_ir_data(struct redrat3_dev *rr3)
{
    DEFINE_IR_RAW_EVENT(rawir);
    struct device *dev;
    unsigned i, trailer = 0;
    unsigned sig_size, single_len, offset, val;
    unsigned long delay;
    u32 mod_freq;

    if (!rr3) {
        pr_err("%s called with no context!\n", __func__);
        return;
    }

    rr3_ftr(rr3->dev, "Entered %s\n", __func__);

    dev = rr3->dev;

    /* Make sure we reset the IR kfifo after a bit of inactivity */
    delay = usecs_to_jiffies(rr3->hw_timeout);
    mod_timer(&rr3->rx_timeout, jiffies + delay);

    mod_freq = redrat3_val_to_mod_freq(&rr3->irdata);
    rr3_dbg(dev, "Got mod_freq of %u\n", mod_freq);

    /* process each rr3 encoded byte into an int */
    sig_size = be16_to_cpu(rr3->irdata.sig_size);
    for (i = 0; i < sig_size; i++) {
        offset = rr3->irdata.sigdata[i];
        val = get_unaligned_be16(&rr3->irdata.lens[offset]);
        single_len = redrat3_len_to_us(val);

        /* we should always get pulse/space/pulse/space samples */
        if (i % 2)
            rawir.pulse = false;
        else
            rawir.pulse = true;

        rawir.duration = US_TO_NS(single_len);
        /* Save initial pulse length to fudge trailer */
        if (i == 0)
            trailer = rawir.duration;
        /* cap the value to IR_MAX_DURATION */
        rawir.duration &= IR_MAX_DURATION;

        rr3_dbg(dev, "storing %s with duration %d (i: %d)\n",
                rawir.pulse ? "pulse" : "space", rawir.duration, i);
        ir_raw_event_store_with_filter(rr3->rc, &rawir);
    }

    /* add a trailing space, if need be */
    if (i % 2) {
        rawir.pulse = false;
        /* this duration is made up, and may not be ideal... */
        if (trailer < US_TO_NS(1000))
            rawir.duration = US_TO_NS(2800);
        else
            rawir.duration = trailer;
        rr3_dbg(dev, "storing trailing space with duration %d\n",
                rawir.duration);
        ir_raw_event_store_with_filter(rr3->rc, &rawir);
    }

    rr3_dbg(dev, "calling ir_raw_event_handle\n");
    ir_raw_event_handle(rr3->rc);
}
开发者ID:NETFORCE2,项目名称:OpenWrt-14.07-Barrier-Breaker,代码行数:66,代码来源:redrat3.c


示例20: redrat3_dev_probe

static int __devinit redrat3_dev_probe(struct usb_interface *intf,
				       const struct usb_device_id *id)
{
	struct usb_device *udev = interface_to_usbdev(intf);
	struct device *dev = &intf->dev;
	struct usb_host_interface *uhi;
	struct redrat3_dev *rr3;
	struct usb_endpoint_descriptor *ep;
	struct usb_endpoint_descriptor *ep_in = NULL;
	struct usb_endpoint_descriptor *ep_out = NULL;
	u8 addr, attrs;
	int pipe, i;
	int retval = -ENOMEM;

	rr3_ftr(dev, "%s called\n", __func__);

	uhi = intf->cur_altsetting;

	/*                                         */
	for (i = 0; i < uhi->desc.bNumEndpoints; ++i) {
		ep = &uhi->endpoint[i].desc;
		addr = ep->bEndpointAddress;
		attrs = ep->bmAttributes;

		if ((ep_in == NULL) &&
		    ((addr & USB_ENDPOINT_DIR_MASK) == USB_DIR_IN) &&
		    ((attrs & USB_ENDPOINT_XFERTYPE_MASK) ==
		     USB_ENDPOINT_XFER_BULK)) {
			rr3_dbg(dev, "found bulk-in endpoint at 0x%02x\n",
				ep->bEndpointAddress);
			/*                                                  */
			if (ep->bEndpointAddress == RR3_BULK_IN_EP_ADDR)
				ep_in = ep;
		}

		if ((ep_out == NULL) &&
		    ((addr & USB_ENDPOINT_DIR_MASK) == USB_DIR_OUT) &&
		    ((attrs & USB_ENDPOINT_XFERTYPE_MASK) ==
		     USB_ENDPOINT_XFER_BULK)) {
			rr3_dbg(dev, "found bulk-out endpoint at 0x%02x\n",
				ep->bEndpointAddress);
			ep_out = ep;
		}
	}

	if (!ep_in || !ep_out) {
		dev_err(dev, "Couldn't find both in and out endpoints\n");
		retval = -ENODEV;
		goto no_endpoints;
	}

	/*                                                        */
	rr3 = kzalloc(sizeof(*rr3), GFP_KERNEL);
	if (rr3 == NULL) {
		dev_err(dev, "Memory allocation failure\n");
		goto no_endpoints;
	}

	rr3->dev = &intf->dev;

	/*                         */
	rr3->read_urb = usb_alloc_urb(0, GFP_KERNEL);
	if (!rr3->read_urb) {
		dev_err(dev, "Read urb allocation failure\n");
		goto error;
	}

	rr3->ep_in = ep_in;
	rr3->bulk_in_buf = usb_alloc_coherent(udev, ep_in->wMaxPacketSize,
					      GFP_ATOMIC, &rr3->dma_in);
	if (!rr3->bulk_in_buf) {
		dev_err(dev, "Read buffer allocation failure\n");
		goto error;
	}

	pipe = usb_rcvbulkpipe(udev, ep_in->bEndpointAddress);
	usb_fill_bulk_urb(rr3->read_urb, udev, pipe,
			  rr3->bulk_in_buf, ep_in->wMaxPacketSize,
			  (usb_complete_t)redrat3_handle_async, rr3);

	/*                         */
	rr3->write_urb = usb_alloc_urb(0, GFP_KERNEL);
	if (!rr3->write_urb) {
		dev_err(dev, "Write urb allocation failure\n");
		goto error;
	}

	rr3->ep_out = ep_out;
	rr3->bulk_out_buf = usb_alloc_coherent(udev, ep_out->wMaxPacketSize,
					       GFP_ATOMIC, &rr3->dma_out);
	if (!rr3->bulk_out_buf) {
		dev_err(dev, "Write buffer allocation failure\n");
		goto error;
	}

	pipe = usb_sndbulkpipe(udev, ep_out->bEndpointAddress);
	usb_fill_bulk_urb(rr3->write_urb, udev, pipe,
			  rr3->bulk_out_buf, ep_out->wMaxPacketSize,
			  (usb_complete_t)redrat3_write_bulk_callback, rr3);

//.........这里部分代码省略.........
开发者ID:romanbb,项目名称:android_kernel_lge_d851,代码行数:101,代码来源:redrat3.c



注:本文中的rr3_ftr函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C++ rrd_clear_error函数代码示例发布时间:2022-05-30
下一篇:
C++ rr函数代码示例发布时间:2022-05-30
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap