| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chromeos/dbus/audio_dsp_client.h" | 5 #include "chromeos/dbus/audio_dsp_client.h" |
| 6 | 6 |
| 7 #include <stdint.h> |
| 8 |
| 7 #include "base/bind.h" | 9 #include "base/bind.h" |
| 10 #include "base/macros.h" |
| 8 #include "base/memory/weak_ptr.h" | 11 #include "base/memory/weak_ptr.h" |
| 9 #include "base/message_loop/message_loop.h" | 12 #include "base/message_loop/message_loop.h" |
| 10 #include "base/observer_list.h" | 13 #include "base/observer_list.h" |
| 11 #include "dbus/bus.h" | 14 #include "dbus/bus.h" |
| 12 #include "dbus/message.h" | 15 #include "dbus/message.h" |
| 13 #include "dbus/object_path.h" | 16 #include "dbus/object_path.h" |
| 14 #include "dbus/object_proxy.h" | 17 #include "dbus/object_proxy.h" |
| 15 | 18 |
| 16 namespace chromeos { | 19 namespace chromeos { |
| 17 namespace { | 20 namespace { |
| (...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 124 const VoidDBusMethodCallback& callback) override; | 127 const VoidDBusMethodCallback& callback) override; |
| 125 void SetNightMode(bool standby, | 128 void SetNightMode(bool standby, |
| 126 const VoidDBusMethodCallback& callback) override; | 129 const VoidDBusMethodCallback& callback) override; |
| 127 void GetNightMode(const BoolDBusMethodCallback& callback) override; | 130 void GetNightMode(const BoolDBusMethodCallback& callback) override; |
| 128 void SetTreble(double db_fs, const VoidDBusMethodCallback& callback) override; | 131 void SetTreble(double db_fs, const VoidDBusMethodCallback& callback) override; |
| 129 void GetTreble(const DoubleDBusMethodCallback& callback) override; | 132 void GetTreble(const DoubleDBusMethodCallback& callback) override; |
| 130 void SetBass(double db_fs, const VoidDBusMethodCallback& callback) override; | 133 void SetBass(double db_fs, const VoidDBusMethodCallback& callback) override; |
| 131 void GetBass(const DoubleDBusMethodCallback& callback) override; | 134 void GetBass(const DoubleDBusMethodCallback& callback) override; |
| 132 void GetCapabilitiesOEM( | 135 void GetCapabilitiesOEM( |
| 133 const ThreeStringDBusMethodCallback& callback) override; | 136 const ThreeStringDBusMethodCallback& callback) override; |
| 134 void SetCapabilitiesOEM(uint32 speaker_id, | 137 void SetCapabilitiesOEM(uint32_t speaker_id, |
| 135 const std::string& speaker_capabilities, | 138 const std::string& speaker_capabilities, |
| 136 const std::string& driver_capabilities, | 139 const std::string& driver_capabilities, |
| 137 const VoidDBusMethodCallback& callback) override; | 140 const VoidDBusMethodCallback& callback) override; |
| 138 void GetFilterConfigOEM(uint32 speaker_id, | 141 void GetFilterConfigOEM(uint32_t speaker_id, |
| 139 const TwoStringDBusMethodCallback& callback) override; | 142 const TwoStringDBusMethodCallback& callback) override; |
| 140 void SetFilterConfigOEM(const std::string& speaker_config, | 143 void SetFilterConfigOEM(const std::string& speaker_config, |
| 141 const std::string& driver_config, | 144 const std::string& driver_config, |
| 142 const VoidDBusMethodCallback& callback) override; | 145 const VoidDBusMethodCallback& callback) override; |
| 143 void SetSourceType(uint16 source_type, | 146 void SetSourceType(uint16_t source_type, |
| 144 const VoidDBusMethodCallback& callback) override; | 147 const VoidDBusMethodCallback& callback) override; |
| 145 void AmplifierVolumeChanged(double db_spl, | 148 void AmplifierVolumeChanged(double db_spl, |
| 146 const VoidDBusMethodCallback& callback) override; | 149 const VoidDBusMethodCallback& callback) override; |
| 147 | 150 |
| 148 private: | 151 private: |
| 149 // Handles Error signal and notifies |observers_|. | 152 // Handles Error signal and notifies |observers_|. |
| 150 void OnError(dbus::Signal* signal); | 153 void OnError(dbus::Signal* signal); |
| 151 | 154 |
| 152 // Handles the result of signal connection setup. | 155 // Handles the result of signal connection setup. |
| 153 void OnSignalConnected(const std::string& interface, | 156 void OnSignalConnected(const std::string& interface, |
| (...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 280 const ThreeStringDBusMethodCallback& callback) { | 283 const ThreeStringDBusMethodCallback& callback) { |
| 281 dbus::MethodCall method_call(audio_dsp::kAudioDspInterface, | 284 dbus::MethodCall method_call(audio_dsp::kAudioDspInterface, |
| 282 audio_dsp::kGetCapabilitiesOEMMethod); | 285 audio_dsp::kGetCapabilitiesOEMMethod); |
| 283 dbus::MessageWriter writer(&method_call); | 286 dbus::MessageWriter writer(&method_call); |
| 284 DCHECK(proxy_); | 287 DCHECK(proxy_); |
| 285 proxy_->CallMethod(&method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT, | 288 proxy_->CallMethod(&method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT, |
| 286 base::Bind(&OnThreeStringDBusMethod, callback)); | 289 base::Bind(&OnThreeStringDBusMethod, callback)); |
| 287 } | 290 } |
| 288 | 291 |
| 289 void AudioDspClientImpl::SetCapabilitiesOEM( | 292 void AudioDspClientImpl::SetCapabilitiesOEM( |
| 290 uint32 speaker_id, | 293 uint32_t speaker_id, |
| 291 const std::string& speaker_capabilities, | 294 const std::string& speaker_capabilities, |
| 292 const std::string& driver_capabilities, | 295 const std::string& driver_capabilities, |
| 293 const VoidDBusMethodCallback& callback) { | 296 const VoidDBusMethodCallback& callback) { |
| 294 dbus::MethodCall method_call(audio_dsp::kAudioDspInterface, | 297 dbus::MethodCall method_call(audio_dsp::kAudioDspInterface, |
| 295 audio_dsp::kSetCapabilitiesOEMMethod); | 298 audio_dsp::kSetCapabilitiesOEMMethod); |
| 296 dbus::MessageWriter writer(&method_call); | 299 dbus::MessageWriter writer(&method_call); |
| 297 writer.AppendInt32(speaker_id); | 300 writer.AppendInt32(speaker_id); |
| 298 writer.AppendString(speaker_capabilities); | 301 writer.AppendString(speaker_capabilities); |
| 299 writer.AppendString(driver_capabilities); | 302 writer.AppendString(driver_capabilities); |
| 300 DCHECK(proxy_); | 303 DCHECK(proxy_); |
| 301 proxy_->CallMethod(&method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT, | 304 proxy_->CallMethod(&method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT, |
| 302 base::Bind(&OnVoidDBusMethod, callback)); | 305 base::Bind(&OnVoidDBusMethod, callback)); |
| 303 } | 306 } |
| 304 | 307 |
| 305 void AudioDspClientImpl::GetFilterConfigOEM( | 308 void AudioDspClientImpl::GetFilterConfigOEM( |
| 306 uint32 speaker_id, | 309 uint32_t speaker_id, |
| 307 const TwoStringDBusMethodCallback& callback) { | 310 const TwoStringDBusMethodCallback& callback) { |
| 308 dbus::MethodCall method_call(audio_dsp::kAudioDspInterface, | 311 dbus::MethodCall method_call(audio_dsp::kAudioDspInterface, |
| 309 audio_dsp::kGetFilterConfigOEMMethod); | 312 audio_dsp::kGetFilterConfigOEMMethod); |
| 310 dbus::MessageWriter writer(&method_call); | 313 dbus::MessageWriter writer(&method_call); |
| 311 writer.AppendInt32(speaker_id); | 314 writer.AppendInt32(speaker_id); |
| 312 DCHECK(proxy_); | 315 DCHECK(proxy_); |
| 313 proxy_->CallMethod(&method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT, | 316 proxy_->CallMethod(&method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT, |
| 314 base::Bind(&OnTwoStringDBusMethod, callback)); | 317 base::Bind(&OnTwoStringDBusMethod, callback)); |
| 315 } | 318 } |
| 316 | 319 |
| 317 void AudioDspClientImpl::SetFilterConfigOEM( | 320 void AudioDspClientImpl::SetFilterConfigOEM( |
| 318 const std::string& speaker_config, | 321 const std::string& speaker_config, |
| 319 const std::string& driver_config, | 322 const std::string& driver_config, |
| 320 const VoidDBusMethodCallback& callback) { | 323 const VoidDBusMethodCallback& callback) { |
| 321 dbus::MethodCall method_call(audio_dsp::kAudioDspInterface, | 324 dbus::MethodCall method_call(audio_dsp::kAudioDspInterface, |
| 322 audio_dsp::kSetFilterConfigOEMMethod); | 325 audio_dsp::kSetFilterConfigOEMMethod); |
| 323 dbus::MessageWriter writer(&method_call); | 326 dbus::MessageWriter writer(&method_call); |
| 324 writer.AppendString(speaker_config); | 327 writer.AppendString(speaker_config); |
| 325 writer.AppendString(driver_config); | 328 writer.AppendString(driver_config); |
| 326 DCHECK(proxy_); | 329 DCHECK(proxy_); |
| 327 proxy_->CallMethod(&method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT, | 330 proxy_->CallMethod(&method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT, |
| 328 base::Bind(&OnVoidDBusMethod, callback)); | 331 base::Bind(&OnVoidDBusMethod, callback)); |
| 329 } | 332 } |
| 330 | 333 |
| 331 void AudioDspClientImpl::SetSourceType(uint16 source_type, | 334 void AudioDspClientImpl::SetSourceType(uint16_t source_type, |
| 332 const VoidDBusMethodCallback& callback) { | 335 const VoidDBusMethodCallback& callback) { |
| 333 dbus::MethodCall method_call(audio_dsp::kAudioDspInterface, | 336 dbus::MethodCall method_call(audio_dsp::kAudioDspInterface, |
| 334 audio_dsp::kSetSourceTypeMethod); | 337 audio_dsp::kSetSourceTypeMethod); |
| 335 dbus::MessageWriter writer(&method_call); | 338 dbus::MessageWriter writer(&method_call); |
| 336 writer.AppendUint16(source_type); | 339 writer.AppendUint16(source_type); |
| 337 DCHECK(proxy_); | 340 DCHECK(proxy_); |
| 338 proxy_->CallMethod(&method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT, | 341 proxy_->CallMethod(&method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT, |
| 339 base::Bind(&OnVoidDBusMethod, callback)); | 342 base::Bind(&OnVoidDBusMethod, callback)); |
| 340 } | 343 } |
| 341 | 344 |
| 342 void AudioDspClientImpl::AmplifierVolumeChanged( | 345 void AudioDspClientImpl::AmplifierVolumeChanged( |
| 343 double db_spl, | 346 double db_spl, |
| 344 const VoidDBusMethodCallback& callback) { | 347 const VoidDBusMethodCallback& callback) { |
| 345 dbus::MethodCall method_call(audio_dsp::kAudioDspInterface, | 348 dbus::MethodCall method_call(audio_dsp::kAudioDspInterface, |
| 346 audio_dsp::kAmplifierVolumeChangedMethod); | 349 audio_dsp::kAmplifierVolumeChangedMethod); |
| 347 dbus::MessageWriter writer(&method_call); | 350 dbus::MessageWriter writer(&method_call); |
| 348 writer.AppendDouble(db_spl); | 351 writer.AppendDouble(db_spl); |
| 349 DCHECK(proxy_); | 352 DCHECK(proxy_); |
| 350 proxy_->CallMethod(&method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT, | 353 proxy_->CallMethod(&method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT, |
| 351 base::Bind(&OnVoidDBusMethod, callback)); | 354 base::Bind(&OnVoidDBusMethod, callback)); |
| 352 } | 355 } |
| 353 | 356 |
| 354 void AudioDspClientImpl::OnError(dbus::Signal* signal) { | 357 void AudioDspClientImpl::OnError(dbus::Signal* signal) { |
| 355 dbus::MessageReader reader(signal); | 358 dbus::MessageReader reader(signal); |
| 356 int32 error_code = 0; | 359 int32_t error_code = 0; |
| 357 if (!reader.PopInt32(&error_code)) { | 360 if (!reader.PopInt32(&error_code)) { |
| 358 LOG(ERROR) << "Invalid signal: " << signal->ToString(); | 361 LOG(ERROR) << "Invalid signal: " << signal->ToString(); |
| 359 return; | 362 return; |
| 360 } | 363 } |
| 361 FOR_EACH_OBSERVER(Observer, observers_, OnError(error_code)); | 364 FOR_EACH_OBSERVER(Observer, observers_, OnError(error_code)); |
| 362 } | 365 } |
| 363 | 366 |
| 364 void AudioDspClientImpl::OnSignalConnected(const std::string& interface, | 367 void AudioDspClientImpl::OnSignalConnected(const std::string& interface, |
| 365 const std::string& signal, | 368 const std::string& signal, |
| 366 bool succeeded) { | 369 bool succeeded) { |
| 367 LOG_IF(ERROR, !succeeded) << "Connect to " << interface << " " << signal | 370 LOG_IF(ERROR, !succeeded) << "Connect to " << interface << " " << signal |
| 368 << " failed."; | 371 << " failed."; |
| 369 } | 372 } |
| 370 | 373 |
| 371 } // anonymous namespace | 374 } // anonymous namespace |
| 372 | 375 |
| 373 AudioDspClient::AudioDspClient() { | 376 AudioDspClient::AudioDspClient() { |
| 374 } | 377 } |
| 375 | 378 |
| 376 AudioDspClient::~AudioDspClient() { | 379 AudioDspClient::~AudioDspClient() { |
| 377 } | 380 } |
| 378 | 381 |
| 379 // static | 382 // static |
| 380 AudioDspClient* AudioDspClient::Create() { | 383 AudioDspClient* AudioDspClient::Create() { |
| 381 return new AudioDspClientImpl(); | 384 return new AudioDspClientImpl(); |
| 382 } | 385 } |
| 383 | 386 |
| 384 } // namespace chromeos | 387 } // namespace chromeos |
| OLD | NEW |