質問編集履歴

4

レイアウト修正

2021/03/16 06:10

投稿

abc123abc
abc123abc

スコア1

test CHANGED
File without changes
test CHANGED
@@ -82,11 +82,13 @@
82
82
 
83
83
  return ret;
84
84
 
85
+ }
86
+
85
- }```
87
+ ```
88
+
89
+ typeにより受信か送信かを切り分けています
86
90
 
87
91
 
88
-
89
- typeにより受信か送信かを切り分けています
90
92
 
91
93
 
92
94
 

3

内容を一新

2021/03/16 06:10

投稿

abc123abc
abc123abc

スコア1

test CHANGED
@@ -1 +1 @@
1
- libusb 同期I/Oデータ転送IFの使用方法
1
+ libusb_control_transfer()を使用し,データ転送を行いたい
test CHANGED
@@ -10,98 +10,96 @@
10
10
 
11
11
 
12
12
 
13
- ### わからなこと
13
+ ### 発生してる問題・エラーメッセージ
14
14
 
15
- 下記IFの使用方法について複数sampleを確認いたしましたがわかりません。
15
+ http://milkandlait.blogspot.com/2017/09/digisparkgcc-usb-hid.html
16
16
 
17
- ```
17
+ を参考に
18
+
19
+ libusb_control_transfer()を使用したところ、戻り値としてエラーの内容は返ってこないが、bufの中身が変わらない(受信により変わる想定)
20
+
21
+ 返り値は指定したサイズが返ってくる。
18
22
 
19
23
 
20
24
 
21
- int libusb_control_transfer ( libusb_device_handle * dev_handle,
22
25
 
23
- uint8_t bmRequestType,
24
26
 
25
- uint8_t bRequest,
27
+ ### 該当のソースコード
26
28
 
27
- uint16_t wValue,
29
+ ```C++
28
30
 
29
- uint16_t wIndex,
31
+ #define HID_GET_REPORT 0x01
30
32
 
31
- unsigned char * data,
33
+ #define HID_GET_IDLE 0x02
32
34
 
33
- uint16_t wLength,
35
+ #define HID_GET_PROTOCOL 0x03
34
36
 
35
- unsigned int timeout
37
+ #define HID_SET_REPORT 0x09
36
38
 
37
- )
39
+ #define HID_SET_IDLE 0x0A
40
+
41
+ #define HID_SET_PROTOCOL 0x0B
42
+
43
+ #define HID_REPORT_TYPE_INPUT 0x01
44
+
45
+ #define HID_REPORT_TYPE_OUTPUT 0x02
46
+
47
+ #define HID_REPORT_TYPE_FEATURE 0x03
38
48
 
39
49
 
40
50
 
41
- int libusb_bulk_transfer ( libusb_device_handle * dev_handle,
51
+ #define CTRL_IN LIBUSB_ENDPOINT_IN|LIBUSB_REQUEST_TYPE_CLASS|LIBUSB_RECIPIENT_INTERFACE
42
52
 
43
- unsigned char endpoint,
53
+ #define CTRL_OUT LIBUSB_ENDPOINT_OUT|LIBUSB_REQUEST_TYPE_CLASS|LIBUSB_RECIPIENT_INTERFACE
44
-
45
- unsigned char * data,
46
-
47
- int length,
48
-
49
- int * transferred,
50
-
51
- unsigned int timeout
52
-
53
- )
54
54
 
55
55
 
56
56
 
57
- ```
58
57
 
58
+
59
- 下記引数に何を設定すべきなのかがわかりませんでした。(追記:★部分について以外は調査し、推測できました)
59
+ int usb_communication:: usb_control_transfer(bool type, unsigned char* buf, unsigned char size)
60
+
61
+ {
62
+
63
+ int ret;
64
+
65
+ if(type == false)
66
+
67
+ {
68
+
69
+ ret =libusb_control_transfer(s_handle, CTRL_OUT, HID_SET_REPORT,(HID_REPORT_TYPE_FEATURE<<8) | 0x00, 0, buf, size, TIMEOUT);
70
+
71
+ }
72
+
73
+ else
74
+
75
+ {
76
+
77
+ ret = libusb_control_transfer(s_handle,CTRL_IN,HID_GET_REPORT,(HID_REPORT_TYPE_FEATURE<<8) | 0x00, 0, buf, size, TIMEOUT);
78
+
79
+ }
60
80
 
61
81
 
62
82
 
63
- libusb_control_transfer()
83
+ return ret;
64
84
 
65
- 下記URL参考
85
+ }```
66
-
67
- https://wiki.onakasuita.org/pukiwiki/?bReques
68
-
69
- http://libusb.sourceforge.net/api-1.0/group__libusb__misc.html#ga20a4e8a729aa543fa742a5086596cbae
70
-
71
- ・bmRequestType
72
-
73
- bit7 データの転送方向
74
-
75
- bit6,5 リクエストの種類
76
-
77
- bit4-0 リクエストの対象
78
-
79
- ・bRequest
80
-
81
- USB/標準リクエスト(URL参照)
82
-
83
- ・wValue★
84
-
85
- 要求に従って変化
86
-
87
- ・wIndex★
88
-
89
- 要求に従って変化
90
86
 
91
87
 
92
88
 
93
- libusb_bulk_transfer
89
+ typeにより受信か送信かを切り分けています
94
-
95
- ・endpoint
96
-
97
- ビット7: 方向 (0 = OUTエンドポイント、1 = INエンドポイント)
98
-
99
- ビット6〜4: 予約、常に0
100
-
101
- ビット3〜0: エンドポイント番号
102
90
 
103
91
 
104
92
 
105
- ・transferred
93
+ ### 試したこと
106
94
 
95
+ libusb_control_transferの引数
96
+
97
+ request_type
98
+
99
+ bRequest
100
+
101
+ wValue
102
+
103
+ wIndex
104
+
107
- 実際転送きたsizeが格納される
105
+ の使い方を調査していますが、理解苦しんいます。

2

追記

2021/03/16 06:04

投稿

abc123abc
abc123abc

スコア1

test CHANGED
File without changes
test CHANGED
@@ -56,17 +56,37 @@
56
56
 
57
57
  ```
58
58
 
59
- 下記引数に何を設定すべきなのかがわかりませんでした。
59
+ 下記引数に何を設定すべきなのかがわかりませんでした。(追記:★部分について以外は調査し、推測できました)
60
+
61
+
60
62
 
61
63
  libusb_control_transfer()
62
64
 
65
+ 下記URL参考
66
+
67
+ https://wiki.onakasuita.org/pukiwiki/?bReques
68
+
69
+ http://libusb.sourceforge.net/api-1.0/group__libusb__misc.html#ga20a4e8a729aa543fa742a5086596cbae
70
+
63
71
  ・bmRequestType
72
+
73
+ bit7 データの転送方向
74
+
75
+ bit6,5 リクエストの種類
76
+
77
+ bit4-0 リクエストの対象
64
78
 
65
79
  ・bRequest
66
80
 
67
- ・wValue
81
+ USB/標準リクエスト(URL参照)
68
82
 
83
+ ・wValue★
84
+
85
+ 要求に従って変化
86
+
69
- ・wIndex
87
+ ・wIndex
88
+
89
+ 要求に従って変化
70
90
 
71
91
 
72
92
 
@@ -74,4 +94,14 @@
74
94
 
75
95
  ・endpoint
76
96
 
97
+ ビット7: 方向 (0 = OUTエンドポイント、1 = INエンドポイント)
98
+
99
+ ビット6〜4: 予約、常に0
100
+
101
+ ビット3〜0: エンドポイント番号
102
+
103
+
104
+
77
105
  ・transferred
106
+
107
+ 実際に転送できたsizeが格納される

1

タイトル修正

2021/03/05 01:46

投稿

abc123abc
abc123abc

スコア1

test CHANGED
@@ -1 +1 @@
1
- libusb 同期I/OIFの使用方法
1
+ libusb 同期I/Oデータ転送IFの使用方法
test CHANGED
File without changes