Mercurial > rcctl_linux
annotate rcctl.c @ 1:05cc06e88a57
modified to make use of libhid to access the device
| author | Yoshiki Yazawa <yaz@honeyplanet.jp> |
|---|---|
| date | Fri, 24 Dec 2010 15:28:04 +0900 |
| parents | e1a1a181c0d7 |
| children | b16b82dbfe87 |
| rev | line source |
|---|---|
| 0 | 1 /* rcctl.c --------------------------------------------- |
|
1
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
2 $Id: rcctl.c,v 1.1 2002/12/21 01:13:28 tosy Exp $ |
| 0 | 3 |
|
1
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
4 v0.10 97.08.15 初期版(コミケット52) |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
5 v0.11 97.08.27 通信タイミング修正 |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
6 v0.12 97.09.12 U-kara-2サポート |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
7 v0.12a 97.09.15 返り値設定 |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
8 v0.12b 97.09.20 Bug fix (JOY:[SP]) |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
9 v0.20 97.10.01 FreeBSD版 |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
10 v0.20a 97.10.18 Bug fix (X2k:[SP],[ST]) |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
11 v0.21 97.12.10 ALISA-3シーケンス修正 |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
12 v0.30 97.12.13 コード変換部(cdcnv.c)分離 |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
13 v0.40 02.12.16 USB版対応 |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
14 【cdcnv.c の履歴も参照のこと】 |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
15 ------------------------------------------------------*/ |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
16 #define __LINUX__ |
| 0 | 17 #include <fcntl.h> |
| 18 #include <stdio.h> | |
| 19 #include <termios.h> | |
| 20 #include <unistd.h> | |
|
1
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
21 #include <sys/ioctl.h> |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
22 |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
23 #define HID_MAX_USAGES 16 |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
24 typedef unsigned int __u32; |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
25 typedef unsigned int kernel_ulong_t; |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
26 |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
27 #include <hid.h> |
| 0 | 28 #include <libusb.h> |
| 29 | |
|
1
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
30 #include <linux/types.h> |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
31 |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
32 #define BITS_PER_LONG 32 |
| 0 | 33 |
|
1
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
34 #include <asm/types.h> |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
35 #include <errno.h> |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
36 #include <string.h> |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
37 |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
38 |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
39 #ifndef S_VERS |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
40 #define S_VERS "0.41" |
| 0 | 41 #endif |
| 42 | |
|
1
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
43 /* globals */ |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
44 HIDInterface *hidif; |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
45 extern int errno; |
| 0 | 46 |
|
1
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
47 /* prototypes */ |
| 0 | 48 int cdcnv(int buf[], char *mak, char *cod); |
| 49 extern char *cverrstr[]; | |
| 50 | |
|
1
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
51 int init_usb(void) |
| 0 | 52 { |
|
1
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
53 hid_return ret; |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
54 |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
55 // unsigned int report_id; |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
56 // unsigned int report_type; |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
57 // unsigned int size; |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
58 |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
59 /* vendor id and product id of okecon */ |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
60 HIDInterfaceMatcher matcher = { 0x0bfe, 0x2022, NULL, NULL, 0 }; |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
61 |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
62 /* see include/debug.h for possible values */ |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
63 hid_set_debug(HID_DEBUG_ALL); |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
64 hid_set_debug_stream(stderr); |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
65 /* passed directly to libusb */ |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
66 hid_set_usb_debug(0); |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
67 |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
68 ret = hid_init(); |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
69 if (ret != HID_RET_SUCCESS) { |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
70 fprintf(stderr, "hid_init failed with return code %d\n", ret); |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
71 return 1; |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
72 } |
| 0 | 73 |
|
1
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
74 hidif = hid_new_HIDInterface(); |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
75 if (hidif == 0) { |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
76 fprintf(stderr, "hid_new_HIDInterface() failed, out of memory?\n"); |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
77 return 1; |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
78 } |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
79 |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
80 ret = hid_force_open(hidif, 0, &matcher, 3); |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
81 if (ret != HID_RET_SUCCESS) { |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
82 fprintf(stderr, "hid_force_open failed with return code %d\n", ret); |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
83 return 1; |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
84 } |
| 0 | 85 |
|
1
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
86 |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
87 |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
88 #if 0 |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
89 /* read feature */ |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
90 ret = hid_get_feature_report(hidif, path, depth, buffer, size); |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
91 if(ret != HID_RET_SUCCESS) { |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
92 fprintf(stderr, "hid_get_feature_report failed with return code %d\n", ret); |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
93 return 1; |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
94 } |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
95 |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
96 /* parse */ |
| 0 | 97 |
|
1
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
98 /* prepare buffers */ |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
99 hid_get_report_size(hidif, report_id, report_type, &size); |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
100 if(size != 8) { |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
101 fprintf(stderr, "%s is not 'OKCon/USB'?\n", UDEV); |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
102 return 1; |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
103 }; |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
104 |
| 0 | 105 |
|
1
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
106 // BSD |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
107 /* read header */ |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
108 if ((rd = hid_get_report_desc(fd)) == 0) { |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
109 fprintf(stderr, "Failed on USB_GET_REPORT_DESC.\n"); |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
110 return 1; |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
111 } |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
112 |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
113 /* parse */ |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
114 hd = hid_start_parse(rd, 1<<hid_output); |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
115 while ( hid_get_item(hd, &shi) ) { |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
116 if(shi.kind == hid_output) |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
117 break; |
| 0 | 118 } |
|
1
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
119 hid_end_parse(hd); |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
120 |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
121 /* prepare buffers */ |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
122 hid_get_report_size(&hidif, report_id, report_type, &size); |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
123 if(size != 8) { |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
124 fprintf(stderr, "%s is not 'OKCon/USB'?\n", UDEV); |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
125 return 1; |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
126 }; |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
127 |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
128 hid_dispose_report_desc(rd); |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
129 #endif |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
130 |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
131 return 0; |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
132 } /* end of init_usb() */ |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
133 |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
134 |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
135 int fin_usb() |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
136 { |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
137 hid_return ret; |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
138 |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
139 ret = hid_close(hidif); |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
140 if (ret != HID_RET_SUCCESS) { |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
141 fprintf(stderr, "hid_close failed with return code %d\n", ret); |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
142 return 1; |
| 0 | 143 } |
|
1
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
144 |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
145 hid_delete_HIDInterface(&hidif); |
| 0 | 146 |
|
1
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
147 ret = hid_cleanup(); |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
148 if (ret != HID_RET_SUCCESS) { |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
149 fprintf(stderr, "hid_cleanup failed with return code %d\n", ret); |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
150 return 1; |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
151 } |
| 0 | 152 |
|
1
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
153 return 0; |
| 0 | 154 } |
| 155 | |
| 156 | |
| 157 | |
| 158 int main(int ac, char *av[]) | |
| 159 { | |
|
1
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
160 int i, u, buf[16]; |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
161 unsigned char sbuf[8]; |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
162 hid_return ret; |
| 0 | 163 |
|
1
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
164 if (ac < 3) { |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
165 printf("'Oke-Con' controller, version " S_VERS ".\n"); |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
166 printf("Copyright (C) 1997-2002 by Tosy / W341IG.\n"); |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
167 printf("Usage: rcctl <maker> <code>\n"); |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
168 return 255; |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
169 } |
| 0 | 170 |
|
1
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
171 if ((u = cdcnv(buf, av[1], av[2])) < 0) { |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
172 fprintf(stderr, "%s: %s\n", av[0], cverrstr[~u]); |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
173 return 1; |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
174 } |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
175 printf("cdcnv %d\n", u); |
| 0 | 176 |
| 177 #ifdef VERBOSE | |
|
1
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
178 printf("Initializing....\n"); |
| 0 | 179 #endif |
|
1
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
180 |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
181 if (init_usb()) |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
182 return 255; |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
183 |
| 0 | 184 #ifdef VERBOSE |
|
1
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
185 printf(" done.\n"); |
| 0 | 186 #endif |
| 187 | |
| 188 #ifdef VERBOSE | |
|
1
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
189 for(i=0; i<u; i++ ) { |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
190 printf("%02x ", buf[i]); |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
191 } |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
192 printf("\n"); |
| 0 | 193 #endif |
| 194 | |
|
1
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
195 /* xxx */ |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
196 const int PATH_IN[1] = { 0xffa10004 }; |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
197 // const int PATH_OUT[1] = { 0xffa10008 }; |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
198 |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
199 /* u is the total length of the packet to send */ |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
200 for(i=1; i<u; i++ ) { |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
201 sbuf[(i-1)%8] = buf[i] & 0x00ff; |
| 0 | 202 #ifdef VERBOSE |
|
1
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
203 printf("%02x ", sbuf[(i-1)%8]); |
| 0 | 204 #endif |
|
1
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
205 if ((i == 8)||(i == (u-1))) { |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
206 ret = hid_set_output_report(hidif, PATH_IN, 2, (char *)sbuf, 8); |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
207 fprintf(stderr, "**WRITE**\n"); |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
208 if (ret != HID_RET_SUCCESS) { |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
209 fprintf(stderr, "hid_set_output_report failed with return code %d\n", ret); |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
210 } |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
211 |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
212 #if 0 |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
213 char packet[8]; |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
214 ret = hid_get_input_report(hidif, PATH_OUT, 2, packet, 8); |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
215 if (ret != HID_RET_SUCCESS) { |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
216 fprintf(stderr, "hid_get_input_report failed with return code %d\n", ret); |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
217 } |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
218 #endif |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
219 } |
| 0 | 220 } |
|
1
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
221 #ifdef VERBOSE |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
222 printf("\n"); |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
223 #endif |
| 0 | 224 |
|
1
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
225 if(fin_usb()) |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
226 return 255; |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
227 |
|
05cc06e88a57
modified to make use of libhid to access the device
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
228 return 0; |
| 0 | 229 } |
