seriamp 0.1.3 → 0.1.4

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: 03d3d9290f5631bdd707dd435ef0f0e7abe7da345017bc92764cacb78f6e485e
4
- data.tar.gz: 629ef868b42d3e0d50bf27fbc6a15fbfe036fdee9a4028aa03aae671a7c5e737
3
+ metadata.gz: 630564090e5fbf436a4384d2aff86c3f51d8dcd60e69e82121730107dcb82deb
4
+ data.tar.gz: 4dfffa50df36bf315fb476d472d9de125e01c670c823e1c881b66189e5a5351b
5
5
  SHA512:
6
- metadata.gz: 0f799dc584037d91ed46ab8abffa4c0ab2dfd9d8db131d2195b5fbd9b2222702e54002f5eb3a97c40fcb1dbe3902639f0cda195a6407d6a6a04db9e3542a2f49
7
- data.tar.gz: a65df97c56a0d665f1636dafdbf323a75a4624d5669662cd5ad60b0d20780c5f30aa3bb7a261892db228c33da0f19c094d9c70727191f0a24c4e8e46b022675e
6
+ metadata.gz: 2abd880200ab09af611fe31b31ca8299d189cf05f1448cc59773972f6c4e8929c120fdc533f2b7c246cde8a3621fbeeb6d562ef18f233b8b1ae63536708c2678
7
+ data.tar.gz: f110bb9840aac1b485c8e12f42b34cbb0d4a578d9f6e3852591480b59f450715d08da33b166e3eb4381152139aef3e0b8e09a9fd2a65be31a41183cfd7b4fa70
@@ -3,6 +3,7 @@
3
3
  require 'sinatra/base'
4
4
  require 'seriamp/utils'
5
5
  require 'seriamp/sonamp/client'
6
+ require 'seriamp/detect'
6
7
 
7
8
  module Seriamp
8
9
  module Sonamp
@@ -12,6 +13,10 @@ module Seriamp
12
13
  set :logger, nil
13
14
  set :client, nil
14
15
 
16
+ get '/' do
17
+ render_json(client.status)
18
+ end
19
+
15
20
  get '/power' do
16
21
  render_json(client.get_zone_power)
17
22
  end
@@ -55,6 +60,7 @@ module Seriamp
55
60
  end
56
61
 
57
62
  def render_json(data)
63
+ headers['content-type'] = 'application/json'
58
64
  data.to_json
59
65
  end
60
66
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Seriamp
4
- VERSION = '0.1.3'
4
+ VERSION = '0.1.4'
5
5
  end
@@ -7,7 +7,8 @@ require 'seriamp/yamaha/protocol/methods'
7
7
  module Seriamp
8
8
  module Yamaha
9
9
 
10
- RS232_TIMEOUT = 3
10
+ # The manual says response should be received in 500 ms.
11
+ RS232_TIMEOUT = 0.75
11
12
 
12
13
  class Client
13
14
  include Protocol::Methods
@@ -174,6 +175,29 @@ module Seriamp
174
175
  'R0178' => 'RX-V2500',
175
176
  }.freeze
176
177
 
178
+ PURE_DIRECT_FIELD = {
179
+ 'R0177' => 28,
180
+ 'R0178' => 126,
181
+ }.freeze
182
+
183
+ INPUT_MODE_R0178 = {
184
+ '0' => 'Auto',
185
+ '2' => 'DTS',
186
+ '4' => 'Analog',
187
+ '5' => 'Analog Only',
188
+ }.freeze
189
+
190
+ SAMPLE_RATE_R0178 = {
191
+ '0' => 'Analog',
192
+ '1' => 32000,
193
+ '2' => 44100,
194
+ '3' => 48000,
195
+ '4' => 64000,
196
+ '5' => 88200,
197
+ '6' => 96000,
198
+ '7' => 'Unknown',
199
+ }.freeze
200
+
177
201
  def do_status
178
202
  resp = nil
179
203
  loop do
@@ -240,12 +264,20 @@ module Seriamp
240
264
  sleep: SLEEP_GET.fetch(data[24]),
241
265
  night: night = data[27],
242
266
  night_name: NIGHT_GET.fetch(night),
243
- pure_direct: data[28] == '1',
267
+ pure_direct: data[PURE_DIRECT_FIELD.fetch(@model_code)] == '1',
244
268
  speaker_a: data[29] == '1',
245
269
  speaker_b: data[30] == '1',
246
- format: data[31..32],
247
- sample_rate: data[33..34],
270
+ # 2 positions on RX-Vx700
271
+ #format: data[31..32],
272
+ #sampling: data[33..34],
248
273
  )
274
+ if @model_code == 'R0178'
275
+ @status.update(
276
+ input_mode: INPUT_MODE_R0178.fetch(data[11]),
277
+ sampling: data[32],
278
+ sample_rate: SAMPLE_RATE_R0178.fetch(data[32]),
279
+ )
280
+ end
249
281
  end
250
282
  @status
251
283
  end
@@ -112,8 +112,11 @@ module Seriamp
112
112
  client.set_pure_direct(state)
113
113
  when 'status'
114
114
  pp client.last_status
115
- when 'status_string'
116
- puts client.last_status_string
115
+ when 'dev-status'
116
+ status = client.last_status_string
117
+ 0.upto(status.length-1).each do |i|
118
+ puts "%3d %s" % [i, status[i]]
119
+ end
117
120
  when 'test'
118
121
  client.set_power(false)
119
122
  [true, false].each do |main_state|
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.3'
5
+ spec.version = '0.1.4'
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.3
4
+ version: 0.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Oleg Pudeyev
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-11-29 00:00:00.000000000 Z
11
+ date: 2022-11-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: serialport