teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

4

レイアウト修正

2021/03/16 06:10

投稿

abc123abc
abc123abc

スコア1

title CHANGED
File without changes
body CHANGED
@@ -40,10 +40,11 @@
40
40
  }
41
41
 
42
42
  return ret;
43
+ }
43
- }```
44
+ ```
44
-
45
45
  typeにより受信か送信かを切り分けています
46
46
 
47
+
47
48
  ### 試したこと
48
49
  libusb_control_transferの引数
49
50
  request_type

3

内容を一新

2021/03/16 06:10

投稿

abc123abc
abc123abc

スコア1

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

2

追記

2021/03/16 06:04

投稿

abc123abc
abc123abc

スコア1

title CHANGED
File without changes
body CHANGED
@@ -27,13 +27,28 @@
27
27
  )
28
28
 
29
29
  ```
30
- 下記引数に何を設定すべきなのかがわかりませんでした。
30
+ 下記引数に何を設定すべきなのかがわかりませんでした。(追記:★部分について以外は調査し、推測できました)
31
+
31
32
  libusb_control_transfer()
33
+ 下記URL参考
34
+ https://wiki.onakasuita.org/pukiwiki/?bReques
35
+ http://libusb.sourceforge.net/api-1.0/group__libusb__misc.html#ga20a4e8a729aa543fa742a5086596cbae
32
36
  ・bmRequestType
37
+ bit7 データの転送方向
38
+ bit6,5 リクエストの種類
39
+ bit4-0 リクエストの対象
33
40
  ・bRequest
41
+ USB/標準リクエスト(URL参照)
34
- ・wValue
42
+ ・wValue
43
+ 要求に従って変化
35
- ・wIndex
44
+ ・wIndex
45
+ 要求に従って変化
36
46
 
37
47
  libusb_bulk_transfer
38
48
  ・endpoint
49
+ ビット7: 方向 (0 = OUTエンドポイント、1 = INエンドポイント)
50
+ ビット6〜4: 予約、常に0
51
+ ビット3〜0: エンドポイント番号
52
+
39
- ・transferred
53
+ ・transferred
54
+ 実際に転送できたsizeが格納される

1

タイトル修正

2021/03/05 01:46

投稿

abc123abc
abc123abc

スコア1

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