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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
e1a1a181c0d7 initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
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
e1a1a181c0d7 initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
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
e1a1a181c0d7 initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
17 #include <fcntl.h>
e1a1a181c0d7 initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
18 #include <stdio.h>
e1a1a181c0d7 initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
19 #include <termios.h>
e1a1a181c0d7 initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
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
e1a1a181c0d7 initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
28 #include <libusb.h>
e1a1a181c0d7 initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
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
e1a1a181c0d7 initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
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
e1a1a181c0d7 initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
41 #endif
e1a1a181c0d7 initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
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
e1a1a181c0d7 initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
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
e1a1a181c0d7 initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
48 int cdcnv(int buf[], char *mak, char *cod);
e1a1a181c0d7 initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
49 extern char *cverrstr[];
e1a1a181c0d7 initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
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
e1a1a181c0d7 initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
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
e1a1a181c0d7 initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
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
e1a1a181c0d7 initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
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
e1a1a181c0d7 initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
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
e1a1a181c0d7 initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
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
e1a1a181c0d7 initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
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
e1a1a181c0d7 initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
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
e1a1a181c0d7 initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
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
e1a1a181c0d7 initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
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
e1a1a181c0d7 initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
154 }
e1a1a181c0d7 initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
155
e1a1a181c0d7 initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
156
e1a1a181c0d7 initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
157
e1a1a181c0d7 initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
158 int main(int ac, char *av[])
e1a1a181c0d7 initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
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
e1a1a181c0d7 initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
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
e1a1a181c0d7 initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
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
e1a1a181c0d7 initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
176
e1a1a181c0d7 initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
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
e1a1a181c0d7 initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
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
e1a1a181c0d7 initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
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
e1a1a181c0d7 initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
186 #endif
e1a1a181c0d7 initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
187
e1a1a181c0d7 initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
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
e1a1a181c0d7 initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
193 #endif
e1a1a181c0d7 initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
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
e1a1a181c0d7 initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
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
e1a1a181c0d7 initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
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
e1a1a181c0d7 initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
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
e1a1a181c0d7 initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
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
e1a1a181c0d7 initial import
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
229 }