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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3a8c5974a39756c641ab5fb6e600d0d67095e4e9f18c872225ffb580cea4e70c
4
- data.tar.gz: ba47852332bdb66070cf4105c4929ed691fce8eca8dd7f47aaefbeb4effab932
3
+ metadata.gz: 608c49104ee16a8740439f09911464a51539d1a52907752bc7f0bf31fa0da85c
4
+ data.tar.gz: dc11ec89924b2c7b06a7a1a44be13e64c832de805c0c039f4a7bf3d66964a876
5
5
  SHA512:
6
- metadata.gz: 185e56b171c6db9ed0822f57de19ac2fea395d075bc615cddf0795c82c2f044b5212e9eb210b90b3dbc4aa603ce6b1553a610924c9ce8b9f02ae860c1f0c873c
7
- data.tar.gz: 277dc1f126ca440e3a8539491e1548511f1abfb66e6a21c615ab4ab8bfce67c76c2499b6c6a2ec9efe20050cd1ac732f70cd3870cff98aec927ae57f6f46e1e4
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/)
@@ -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
- @device = nil
252
+ if detect_device?
253
+ @device = nil
254
+ end
244
255
  retry
245
256
  else
246
257
  raise
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Seriamp
4
- VERSION = '0.1.12'
4
+ VERSION = '0.1.13'
5
5
  end
@@ -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
- @device = nil
433
+ if detect_device?
434
+ @device = nil
435
+ end
425
436
  retry
426
437
  else
427
438
  raise
data/seriamp.gemspec CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Gem::Specification.new do |spec|
4
4
  spec.name = "seriamp"
5
- spec.version = '0.1.12'
5
+ spec.version = '0.1.13'
6
6
  spec.authors = ['Oleg Pudeyev']
7
7
  spec.email = ['code@olegp.name']
8
8
  spec.summary = %q{Serial control for amplifiers & A/V receivers}
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.12
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-24 00:00:00.000000000 Z
11
+ date: 2023-01-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: serialport