seriamp 0.1.12 → 0.1.13
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +37 -0
- data/lib/seriamp/detect.rb +1 -1
- data/lib/seriamp/sonamp/client.rb +12 -1
- data/lib/seriamp/version.rb +1 -1
- data/lib/seriamp/yamaha/client.rb +12 -1
- data/seriamp.gemspec +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 608c49104ee16a8740439f09911464a51539d1a52907752bc7f0bf31fa0da85c
|
4
|
+
data.tar.gz: dc11ec89924b2c7b06a7a1a44be13e64c832de805c0c039f4a7bf3d66964a876
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 98879e190d39e69030155b492c72d3543e1db219f5315721705909b3cc177c1c150b6b5c3d5b0d3cb58ffccc59ea8d0610a064d95d5159ed11a91c7289a2ba27
|
7
|
+
data.tar.gz: 8f766224a06c19e14a71d5aa290d4c035031fd89a6abe1be1bd962a6fa36306d720e2032ac1ab804425cb40dcdbb6b84c050a15ebc77d8bec3b51673b8428cb5
|
data/README.md
CHANGED
@@ -32,6 +32,39 @@ necessary.
|
|
32
32
|
- Null-modem cable required
|
33
33
|
- Receiver socket is male
|
34
34
|
|
35
|
+
The following table shows which Yamaha receivers have RS-232 connector
|
36
|
+
and which do not:
|
37
|
+
|
38
|
+
| Family | RS-232C Present | RS-232C Absent |
|
39
|
+
| -------- | ---------------------------- | -------------- |
|
40
|
+
| RX-Vx000 | RX-V3000, RX-V1000 | |
|
41
|
+
| | | HTR-5280 |
|
42
|
+
| RX-Vx200 | RX-V2200 | RX-V1200 |
|
43
|
+
| | | HTR-5490 |
|
44
|
+
| RX-Vx300 | RX-V2300 | RX-V1300 |
|
45
|
+
| | | HTR-5590 |
|
46
|
+
| | | HTR-5660 |
|
47
|
+
| RX-Vx400 | RX-V2400 | RX-V1400 |
|
48
|
+
| | | HTR-5790 |
|
49
|
+
| RX-Vx500 | RX-V2500, RX-V1500 | |
|
50
|
+
| | HTR-5890 | HTR-5860 |
|
51
|
+
| RX-Vx600 | RX-V2600, RX-V1600 | |
|
52
|
+
| | HTR-5990 | HTR-5960 |
|
53
|
+
| RX-Vx700 | RX-V2700, RX-V1700 | |
|
54
|
+
| | | HTR-6090 |
|
55
|
+
| RX-Vx800 | RX-V3800, RX-V1800 | |
|
56
|
+
| | HTR-6190 | HTR-6180 |
|
57
|
+
| RX-Vx900 | RX-V3900, RX-V1900 | |
|
58
|
+
| | | HTR-6290 |
|
59
|
+
| RX-Vx67 | RX-V3067, RX-V2067, RX-V1067 | RX-V867 |
|
60
|
+
|
61
|
+
RX-V2700, RX-V3800 and RX-V3900 have an Ethernet port in addition to
|
62
|
+
RS-232C and should be controllable via the Yamaha YNCA protocol via the
|
63
|
+
Ethernet port. Over time Yamaha has been adding networking functionality
|
64
|
+
to lower tier models, for example it is present in RX-V867, RX-V671 and RX-V475.
|
65
|
+
|
66
|
+
Models lower than 1000 level receivers have never had RS-232C to my knowledge.
|
67
|
+
|
35
68
|
### Denon AVR-2308CI
|
36
69
|
|
37
70
|
- Straight cable required
|
@@ -111,6 +144,10 @@ Serial port communication in Ruby:
|
|
111
144
|
- [rubyserial](https://github.com/hybridgroup/rubyserial)
|
112
145
|
- [Ruby/SerialPort](https://github.com/hparra/ruby-serialport)
|
113
146
|
|
147
|
+
Yamaha YNCA protocol:
|
148
|
+
|
149
|
+
- [yamaha_ynca](https://github.com/mvdwetering/yamaha_ynca)
|
150
|
+
|
114
151
|
## Helpful Links
|
115
152
|
|
116
153
|
- [Serial port programming in Ruby](https://www.thegeekdiary.com/serial-port-programming-reading-writing-status-of-control-lines-dtr-rts-cts-dsr/)
|
data/lib/seriamp/detect.rb
CHANGED
@@ -21,7 +21,7 @@ module Seriamp
|
|
21
21
|
Thread.new do
|
22
22
|
Timeout.timeout(timeout * 2, CommunicationTimeout) do
|
23
23
|
logger&.debug("Trying #{device}")
|
24
|
-
client_cls.new(device: device, logger: logger).present?
|
24
|
+
client_cls.new(device: device, logger: logger, retries: false).present?
|
25
25
|
logger&.debug("Found #{mod} device at #{device}")
|
26
26
|
queue << device
|
27
27
|
end
|
@@ -224,6 +224,15 @@ module Seriamp
|
|
224
224
|
logger&.debug("Opening #{device}")
|
225
225
|
@io = Backend::SerialPortBackend::Device.new(device, logger: logger)
|
226
226
|
|
227
|
+
warned = false
|
228
|
+
while IO.select([@io.io], nil, nil, 0)
|
229
|
+
unless warned
|
230
|
+
logger&.warn("Serial device readable after opening - unread previous response?")
|
231
|
+
warned = true
|
232
|
+
end
|
233
|
+
IO.read(1)
|
234
|
+
end
|
235
|
+
|
227
236
|
begin
|
228
237
|
yield @io
|
229
238
|
ensure
|
@@ -240,7 +249,9 @@ module Seriamp
|
|
240
249
|
if try <= retries
|
241
250
|
logger&.warn("Error during operation: #{exc.class}: #{exc} - will retry")
|
242
251
|
try += 1
|
243
|
-
|
252
|
+
if detect_device?
|
253
|
+
@device = nil
|
254
|
+
end
|
244
255
|
retry
|
245
256
|
else
|
246
257
|
raise
|
data/lib/seriamp/version.rb
CHANGED
@@ -197,6 +197,15 @@ module Seriamp
|
|
197
197
|
logger&.debug("Opening #{device}")
|
198
198
|
@io = Backend::SerialPortBackend::Device.new(device, logger: logger)
|
199
199
|
|
200
|
+
warned = false
|
201
|
+
while IO.select([@io.io], nil, nil, 0)
|
202
|
+
unless warned
|
203
|
+
logger&.warn("Serial device readable after opening - unread previous response?")
|
204
|
+
warned = true
|
205
|
+
end
|
206
|
+
IO.read(1)
|
207
|
+
end
|
208
|
+
|
200
209
|
begin
|
201
210
|
tries = 0
|
202
211
|
begin
|
@@ -421,7 +430,9 @@ module Seriamp
|
|
421
430
|
if try <= retries
|
422
431
|
logger&.warn("Error during operation: #{exc.class}: #{exc} - will retry")
|
423
432
|
try += 1
|
424
|
-
|
433
|
+
if detect_device?
|
434
|
+
@device = nil
|
435
|
+
end
|
425
436
|
retry
|
426
437
|
else
|
427
438
|
raise
|
data/seriamp.gemspec
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: seriamp
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.13
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Oleg Pudeyev
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-01-
|
11
|
+
date: 2023-01-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: serialport
|