diff options
author | Peter Popovec <popovec@oko.fei.tuke.sk> | 2008-11-11 14:46:14 -0500 |
---|---|---|
committer | Dmitry Torokhov <dmitry.torokhov@gmail.com> | 2008-11-19 16:55:40 -0500 |
commit | cec87e38e92cdfe86678ca2a5c29c38d05127601 (patch) | |
tree | 804691001ded398eb8308647010b66a72b4f900a /Documentation/input | |
parent | 59bdb43769f2c3995badcd930d799451f5a39f76 (diff) |
Input: add joystick driver for Walkera WK-0701 RC transmitter
Signed-off-by: Peter Popovec <popovec@fei.tuke.sk>
Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
Diffstat (limited to 'Documentation/input')
-rw-r--r-- | Documentation/input/walkera0701.txt | 109 |
1 files changed, 109 insertions, 0 deletions
diff --git a/Documentation/input/walkera0701.txt b/Documentation/input/walkera0701.txt new file mode 100644 index 000000000000..8f4289efc5c4 --- /dev/null +++ b/Documentation/input/walkera0701.txt | |||
@@ -0,0 +1,109 @@ | |||
1 | |||
2 | Walkera WK-0701 transmitter is supplied with a ready to fly Walkera | ||
3 | helicopters such as HM36, HM37, HM60. The walkera0701 module enables to use | ||
4 | this transmitter as joystick | ||
5 | |||
6 | Devel homepage and download: | ||
7 | http://zub.fei.tuke.sk/walkera-wk0701/ | ||
8 | |||
9 | or use cogito: | ||
10 | cg-clone http://zub.fei.tuke.sk/GIT/walkera0701-joystick | ||
11 | |||
12 | |||
13 | Connecting to PC: | ||
14 | |||
15 | At back side of transmitter S-video connector can be found. Modulation | ||
16 | pulses from processor to HF part can be found at pin 2 of this connector, | ||
17 | pin 3 is GND. Between pin 3 and CPU 5k6 resistor can be found. To get | ||
18 | modulation pulses to PC, signal pulses must be amplified. | ||
19 | |||
20 | Cable: (walkera TX to parport) | ||
21 | |||
22 | Walkera WK-0701 TX S-VIDEO connector: | ||
23 | (back side of TX) | ||
24 | __ __ S-video: canon25 | ||
25 | / |_| \ pin 2 (signal) NPN parport | ||
26 | / O 4 3 O \ pin 3 (GND) LED ________________ 10 ACK | ||
27 | ( O 2 1 O ) | C | ||
28 | \ ___ / 2 ________________________|\|_____|/ | ||
29 | | [___] | |/| B |\ | ||
30 | ------- 3 __________________________________|________________ 25 GND | ||
31 | E | ||
32 | |||
33 | |||
34 | I use green LED and BC109 NPN transistor. | ||
35 | |||
36 | Software: | ||
37 | |||
38 | Build kernel with walkera0701 module. Module walkera0701 need exclusive | ||
39 | access to parport, modules like lp must be unloaded before loading | ||
40 | walkera0701 module, check dmesg for error messages. Connect TX to PC by | ||
41 | cable and run jstest /dev/input/js0 to see values from TX. If no value can | ||
42 | be changed by TX "joystick", check output from /proc/interrupts. Value for | ||
43 | (usually irq7) parport must increase if TX is on. | ||
44 | |||
45 | |||
46 | |||
47 | Technical details: | ||
48 | |||
49 | Driver use interrupt from parport ACK input bit to measure pulse length | ||
50 | using hrtimers. | ||
51 | |||
52 | Frame format: | ||
53 | Based on walkera WK-0701 PCM Format description by Shaul Eizikovich. | ||
54 | (downloaded from http://www.smartpropoplus.com/Docs/Walkera_Wk-0701_PCM.pdf) | ||
55 | |||
56 | Signal pulses: | ||
57 | (ANALOG) | ||
58 | SYNC BIN OCT | ||
59 | +---------+ +------+ | ||
60 | | | | | | ||
61 | --+ +------+ +--- | ||
62 | |||
63 | Frame: | ||
64 | SYNC , BIN1, OCT1, BIN2, OCT2 ... BIN24, OCT24, BIN25, next frame SYNC .. | ||
65 | |||
66 | pulse length: | ||
67 | Binary values: Analog octal values: | ||
68 | |||
69 | 288 uS Binary 0 318 uS 000 | ||
70 | 438 uS Binary 1 398 uS 001 | ||
71 | 478 uS 010 | ||
72 | 558 uS 011 | ||
73 | 638 uS 100 | ||
74 | 1306 uS SYNC 718 uS 101 | ||
75 | 798 uS 110 | ||
76 | 878 uS 111 | ||
77 | |||
78 | 24 bin+oct values + 1 bin value = 24*4+1 bits = 97 bits | ||
79 | |||
80 | (Warning, pulses on ACK ar inverted by transistor, irq is rised up on sync | ||
81 | to bin change or octal value to bin change). | ||
82 | |||
83 | Binary data representations: | ||
84 | |||
85 | One binary and octal value can be grouped to nibble. 24 nibbles + one binary | ||
86 | values can be sampled between sync pulses. | ||
87 | |||
88 | Values for first four channels (analog joystick values) can be found in | ||
89 | first 10 nibbles. Analog value is represented by one sign bit and 9 bit | ||
90 | absolute binary value. (10 bits per channel). Next nibble is checksum for | ||
91 | first ten nibbles. | ||
92 | |||
93 | Next nibbles 12 .. 21 represents four channels (not all channels can be | ||
94 | directly controlled from TX). Binary representations ar the same as in first | ||
95 | four channels. In nibbles 22 and 23 is a special magic number. Nibble 24 is | ||
96 | checksum for nibbles 12..23. | ||
97 | |||
98 | After last octal value for nibble 24 and next sync pulse one additional | ||
99 | binary value can be sampled. This bit and magic number is not used in | ||
100 | software driver. Some details about this magic numbers can be found in | ||
101 | Walkera_Wk-0701_PCM.pdf. | ||
102 | |||
103 | Checksum calculation: | ||
104 | |||
105 | Summary of octal values in nibbles must be same as octal value in checksum | ||
106 | nibble (only first 3 bits are used). Binary value for checksum nibble is | ||
107 | calculated by sum of binary values in checked nibbles + sum of octal values | ||
108 | in checked nibbles divided by 8. Only bit 0 of this sum is used. | ||
109 | |||