Ricerche correlate
Download ianywhere input devices driver windows 7. Install drivers according to this tutorial after download the Kvaser LINUX Driver and SDK file. Asrock b450 steel legend driver download. I tested it on Ubuntu 16.04, and it’s still working. I tested it on Ubuntu 16.04, and it’s still working. Hardware IDs USB VID0BFD or USB vendor ID (VID) 0BFD recognizes Kvaser AB as the USB vendor and manufacturer of the device or devices listed below. USB Vendor ID (VID), Device ID (PID) and SUBSYS ID are used to recognize the manufacturer and model of a devices.
- » kvaser memorator ソフト
- » ソフト&サポートナビゲーター ソフト
- » kvaser can
- » kvaser drivers 概要
- » kvaser can drivers
- » kvaser can 安全保障
- » kvaser can接続
- » kvaser memorator tools
- » kvaser canlib sdk
- » kvaser drivers
kvaser ソフト
- Più
Kvaser CanKing
- Più
Kvaser CAN Drivers WHCP
- Più
Kvaser CAN Drivers (remove local copy only)
Kvaser CAN Drivers (remove local copy only) - Shareware - - Più
CANKing 4.0
- Più
Kvaser Database Editor
- Più
Kvaser Memorator Tools
- Più
Kvaser CANLIB SDK
- Più
Kvaser CAN Drivers
Kvaser CAN Drivers (remove local copy only) - Shareware -
kvaser ソフト
Drivers Kvaser Ab
Ulteriori titoli contenenti:
kvaser ソフト
- Più
Kvaser CAN Drivers WHCP
- Più
Kvaser CanKing
- Più
Kvaser CAN Drivers (remove local copy only)
Kvaser CAN Drivers (remove local copy only) - Shareware - - Più
Kvaser Database Editor
- Più
Kvaser Memorator Tools
Ricerche più recenti
Drivers Kvaser Ab 828
Drivers Kvaser Ab Test
- » zetacad kayseri
- » hp laserjet mfp m129-m134-hp
- » multicamcapture lite
- » java update version download windows 10
- » 加速器 skyline
- » база материалы в solidworcs plastics
- » global protect 64-5-2-5
- » social club setup 2.0.7.4 download
- » auto tunecvst
- » fasttrack m audio
- » algobox télécharger
- » sonicstage 無料ダウンロード 危険性
- » vmix 23.0.0.67
- » 66 livros helen g what para pc
- » baimicrosoft windows script host
- » ismartviewpro windows 10 deutsch
- » controlap para window 10
- » game visual 下载
- » falk app an pc installieren
- » typing masterr pro 10
Drivers Kvaser Ability
1 | /* SPDX-License-Identifier: GPL-2.0 */ |
---|---|
2 | /* Parts of this driver are based on the following: |
3 | * - Kvaser linux leaf driver (version 4.78) |
4 | * - CAN driver for esd CAN-USB/2 |
5 | * - Kvaser linux usbcanII driver (version 5.3) |
6 | * - Kvaser linux mhydra driver (version 5.24) |
7 | * |
8 | * Copyright (C) 2002-2018 KVASER AB, Sweden. All rights reserved. |
9 | * Copyright (C) 2010 Matthias Fuchs <matthias.fuchs@esd.eu>, esd gmbh |
10 | * Copyright (C) 2012 Olivier Sobrie <olivier@sobrie.be> |
11 | * Copyright (C) 2015 Valeo S.A. |
12 | */ |
13 | |
14 | #ifndefKVASER_USB_H |
15 | #define KVASER_USB_H |
16 | |
17 | /* Kvaser USB CAN dongles are divided into three major platforms: |
18 | * - Hydra: Running firmware labeled as 'mhydra' |
19 | * - Leaf: Based on Renesas M32C or Freescale i.MX28, running firmware labeled |
20 | * as 'filo' |
21 | * - UsbcanII: Based on Renesas M16C, running firmware labeled as 'helios' |
22 | */ |
23 | |
24 | #include <linux/completion.h> |
25 | #include <linux/spinlock.h> |
26 | #include <linux/types.h> |
27 | #include <linux/usb.h> |
28 | |
29 | #include <linux/can.h> |
30 | #include <linux/can/dev.h> |
31 | |
32 | #define KVASER_USB_MAX_RX_URBS 4 |
33 | #define KVASER_USB_MAX_TX_URBS 128 |
34 | #define KVASER_USB_TIMEOUT 1000 /* msecs */ |
35 | #define KVASER_USB_RX_BUFFER_SIZE 3072 |
36 | #define KVASER_USB_MAX_NET_DEVICES 5 |
37 | |
38 | /* USB devices features */ |
39 | #define KVASER_USB_HAS_SILENT_MODE BIT(0) |
40 | #define KVASER_USB_HAS_TXRX_ERRORS BIT(1) |
41 | |
42 | /* Device capabilities */ |
43 | #define KVASER_USB_CAP_BERR_CAP 0x01 |
44 | #define KVASER_USB_CAP_EXT_CAP 0x02 |
45 | #define KVASER_USB_HYDRA_CAP_EXT_CMD 0x04 |
46 | |
47 | structkvaser_usb_dev_cfg; |
48 | |
49 | enumkvaser_usb_leaf_family { |
50 | KVASER_LEAF, |
51 | KVASER_USBCAN, |
52 | }; |
53 | |
54 | #define KVASER_USB_HYDRA_MAX_CMD_LEN 128 |
55 | structkvaser_usb_dev_card_data_hydra { |
56 | u8channel_to_he[KVASER_USB_MAX_NET_DEVICES]; |
57 | u8sysdbg_he; |
58 | spinlock_ttransid_lock; /* lock for transid */ |
59 | u16transid; |
60 | /* lock for usb_rx_leftover and usb_rx_leftover_len */ |
61 | spinlock_tusb_rx_leftover_lock; |
62 | u8usb_rx_leftover[KVASER_USB_HYDRA_MAX_CMD_LEN]; |
63 | u8usb_rx_leftover_len; |
64 | }; |
65 | structkvaser_usb_dev_card_data { |
66 | u32ctrlmode_supported; |
67 | u32capabilities; |
68 | union { |
69 | struct { |
70 | enumkvaser_usb_leaf_familyfamily; |
71 | } leaf; |
72 | structkvaser_usb_dev_card_data_hydrahydra; |
73 | }; |
74 | }; |
75 | |
76 | /* Context for an outstanding, not yet ACKed, transmission */ |
77 | structkvaser_usb_tx_urb_context { |
78 | structkvaser_usb_net_priv *priv; |
79 | u32echo_index; |
80 | intdlc; |
81 | }; |
82 | |
83 | structkvaser_usb { |
84 | structusb_device *udev; |
85 | structusb_interface *intf; |
86 | structkvaser_usb_net_priv *nets[KVASER_USB_MAX_NET_DEVICES]; |
87 | conststructkvaser_usb_dev_ops *ops; |
88 | conststructkvaser_usb_dev_cfg *cfg; |
89 | |
90 | structusb_endpoint_descriptor *bulk_in, *bulk_out; |
91 | structusb_anchorrx_submitted; |
92 | |
93 | /* @max_tx_urbs: Firmware-reported maximum number of outstanding, |
94 | * not yet ACKed, transmissions on this device. This value is |
95 | * also used as a sentinel for marking free tx contexts. |
96 | */ |
97 | u32fw_version; |
98 | unsignedintnchannels; |
99 | unsignedintmax_tx_urbs; |
100 | structkvaser_usb_dev_card_datacard_data; |
101 | |
102 | boolrxinitdone; |
103 | void *rxbuf[KVASER_USB_MAX_RX_URBS]; |
104 | dma_addr_trxbuf_dma[KVASER_USB_MAX_RX_URBS]; |
105 | }; |
106 | |
107 | structkvaser_usb_net_priv { |
108 | structcan_privcan; |
109 | structcan_berr_counterbec; |
110 | |
111 | structkvaser_usb *dev; |
112 | structnet_device *netdev; |
113 | intchannel; |
114 | |
115 | structcompletionstart_comp, stop_comp, flush_comp; |
116 | structusb_anchortx_submitted; |
117 | |
118 | spinlock_ttx_contexts_lock; /* lock for active_tx_contexts */ |
119 | intactive_tx_contexts; |
120 | structkvaser_usb_tx_urb_contexttx_contexts[]; |
121 | }; |
122 | |
123 | /** |
124 | * struct kvaser_usb_dev_ops - Device specific functions |
125 | * @dev_set_mode: used for can.do_set_mode |
126 | * @dev_set_bittiming: used for can.do_set_bittiming |
127 | * @dev_set_data_bittiming: used for can.do_set_data_bittiming |
128 | * @dev_get_berr_counter: used for can.do_get_berr_counter |
129 | * |
130 | * @dev_setup_endpoints: setup USB in and out endpoints |
131 | * @dev_init_card: initialize card |
132 | * @dev_get_software_info: get software info |
133 | * @dev_get_software_details: get software details |
134 | * @dev_get_card_info: get card info |
135 | * @dev_get_capabilities: discover device capabilities |
136 | * |
137 | * @dev_set_opt_mode: set ctrlmod |
138 | * @dev_start_chip: start the CAN controller |
139 | * @dev_stop_chip: stop the CAN controller |
140 | * @dev_reset_chip: reset the CAN controller |
141 | * @dev_flush_queue: flush outstanding CAN messages |
142 | * @dev_read_bulk_callback: handle incoming commands |
143 | * @dev_frame_to_cmd: translate struct can_frame into device command |
144 | */ |
145 | structkvaser_usb_dev_ops { |
146 | int (*dev_set_mode)(structnet_device *netdev, enumcan_modemode); |
147 | int (*dev_set_bittiming)(structnet_device *netdev); |
148 | int (*dev_set_data_bittiming)(structnet_device *netdev); |
149 | int (*dev_get_berr_counter)(conststructnet_device *netdev, |
150 | structcan_berr_counter *bec); |
151 | int (*dev_setup_endpoints)(structkvaser_usb *dev); |
152 | int (*dev_init_card)(structkvaser_usb *dev); |
153 | int (*dev_get_software_info)(structkvaser_usb *dev); |
154 | int (*dev_get_software_details)(structkvaser_usb *dev); |
155 | int (*dev_get_card_info)(structkvaser_usb *dev); |
156 | int (*dev_get_capabilities)(structkvaser_usb *dev); |
157 | int (*dev_set_opt_mode)(conststructkvaser_usb_net_priv *priv); |
158 | int (*dev_start_chip)(structkvaser_usb_net_priv *priv); |
159 | int (*dev_stop_chip)(structkvaser_usb_net_priv *priv); |
160 | int (*dev_reset_chip)(structkvaser_usb *dev, intchannel); |
161 | int (*dev_flush_queue)(structkvaser_usb_net_priv *priv); |
162 | void (*dev_read_bulk_callback)(structkvaser_usb *dev, void *buf, |
163 | intlen); |
164 | void *(*dev_frame_to_cmd)(conststructkvaser_usb_net_priv *priv, |
165 | conststructsk_buff *skb, int *frame_len, |
166 | int *cmd_len, u16transid); |
167 | }; |
168 | |
169 | structkvaser_usb_dev_cfg { |
170 | conststructcan_clockclock; |
171 | constunsignedinttimestamp_freq; |
172 | conststructcan_bittiming_const * constbittiming_const; |
173 | conststructcan_bittiming_const * constdata_bittiming_const; |
174 | }; |
175 | |
176 | externconststructkvaser_usb_dev_opskvaser_usb_hydra_dev_ops; |
177 | externconststructkvaser_usb_dev_opskvaser_usb_leaf_dev_ops; |
178 | |
179 | intkvaser_usb_recv_cmd(conststructkvaser_usb *dev, void *cmd, intlen, |
180 | int *actual_len); |
181 | |
182 | intkvaser_usb_send_cmd(conststructkvaser_usb *dev, void *cmd, intlen); |
183 | |
184 | intkvaser_usb_send_cmd_async(structkvaser_usb_net_priv *priv, void *cmd, |
185 | intlen); |
186 | |
187 | intkvaser_usb_can_rx_over_error(structnet_device *netdev); |
188 | #endif /* KVASER_USB_H */ |
189 |