seriamp 0.1.12 → 0.1.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +37 -0
- data/lib/seriamp/detect.rb +1 -1
- data/lib/seriamp/sonamp/client.rb +13 -2
- data/lib/seriamp/version.rb +1 -1
- data/lib/seriamp/yamaha/client.rb +13 -2
- 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: 5687443fb1ef40b23fe59092d92d5421ff5dae7fd5196ddcd682df99d8dd64bd
|
4
|
+
data.tar.gz: 1c0654c533b4939cf5c265bfbab0f4e9ce21ea5a5b5506d1ef224d6f6ca2623d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7385b186ea20acc6f6ba001de8e0498c20fddc41f12219ca8e81a5490dcdd2c3751b340fe7e0ad2c990bc1c48447a724a6d5d1831746708aa57aadf78a4a3f30
|
7
|
+
data.tar.gz: b0411b2b26c3b8caa035d6286559e2daa98ec86d8d9d328e2ea324971458f1f6754fedf809d6db6f9d50336c9bba1953b2ffa5b36c6fdddc3d0bce85f8bb3e87
|
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
|
@@ -236,11 +245,13 @@ module Seriamp
|
|
236
245
|
try = 1
|
237
246
|
begin
|
238
247
|
yield
|
239
|
-
rescue Seriamp::Error => exc
|
248
|
+
rescue Seriamp::Error, IOError, SystemCallError => exc
|
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
|
@@ -417,11 +426,13 @@ module Seriamp
|
|
417
426
|
try = 1
|
418
427
|
begin
|
419
428
|
yield
|
420
|
-
rescue Seriamp::Error => exc
|
429
|
+
rescue Seriamp::Error, IOError, SystemCallError => exc
|
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.14
|
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
|