1# Copyright 2016 The Chromium OS Authors. All rights reserved.
2# Use of this source code is governed by a BSD-style license that can be
3# found in the LICENSE file.
4
5"""An adapter to remotely access the CFM facade on DUT."""
6
7
8class CFMFacadeRemoteAdapter(object):
9    """CFMFacadeRemoteAdapter is an adapter to remotely control CFM on DUT.
10
11    The Autotest host object representing the remote DUT, passed to this
12    class on initialization, can be accessed from its _client property.
13    """
14
15    def __init__(self, host, remote_facade_proxy):
16        """Construct a CFMFacadeRemoteAdapter.
17
18        @param host: Host object representing a remote host.
19        @param remote_facade_proxy: RemoteFacadeProxy object.
20        """
21        self._client = host
22        self._proxy = remote_facade_proxy
23
24
25    @property
26    def _cfm_proxy(self):
27        return self._proxy.cfm
28
29
30    def enroll_device(self):
31        """Enroll device into CFM."""
32        self._cfm_proxy.enroll_device()
33
34
35    def restart_chrome_for_cfm(self):
36        """Restart chrome for CFM."""
37        self._cfm_proxy.restart_chrome_for_cfm()
38
39
40    def wait_for_telemetry_commands(self):
41        """Wait for telemetry commands."""
42        self._cfm_proxy.wait_for_telemetry_commands()
43
44
45    # UI commands/functions
46    def wait_for_oobe_start_page(self):
47        """Wait for oobe start screen to launch."""
48        self._cfm_proxy.wait_for_oobe_start_page()
49
50
51    def skip_oobe_screen(self):
52        """Skip Chromebox for Meetings oobe screen."""
53        self._cfm_proxy.skip_oobe_screen()
54
55
56    def is_oobe_start_page(self):
57        """Check if device is on CFM oobe start screen.
58
59        @return a boolean, based on oobe start page status.
60        """
61        return self._cfm_proxy.is_oobe_start_page()
62
63
64    # Hangouts commands/functions
65    def start_new_hangout_session(self, session_name):
66        """Start a new hangout session.
67
68        @param session_name: Name of the hangout session.
69        """
70        self._cfm_proxy.start_new_hangout_session(session_name)
71
72
73    def end_hangout_session(self):
74        """End current hangout session."""
75        self._cfm_proxy.end_hangout_session()
76
77
78    def is_in_hangout_session(self):
79        """Check if device is in hangout session.
80
81        @return a boolean, for hangout session state.
82        """
83        return self._cfm_proxy.is_in_hangout_session()
84
85
86    def is_ready_to_start_hangout_session(self):
87        """Check if device is ready to start a new hangout session.
88
89        @return a boolean for hangout session ready state.
90        """
91        return self._cfm_proxy.is_ready_to_start_hangout_session()
92
93
94    # Diagnostics commands/functions
95    def is_diagnostic_run_in_progress(self):
96        """Check if hotrod diagnostics is running.
97
98        @return a boolean for diagnostic run state.
99        """
100        return self._cfm_proxy.is_diagnostic_run_in_progress()
101
102
103    def wait_for_diagnostic_run_to_complete(self):
104        """Wait for hotrod diagnostics to complete."""
105        self._cfm_proxy.wait_for_diagnostic_run_to_complete()
106
107
108    def run_diagnostics(self):
109        """Run hotrod diagnostics."""
110        self._cfm_proxy.run_diagnostics()
111
112
113    def get_last_diagnostics_results(self):
114        """Get latest hotrod diagnostics results.
115
116        @return a dict with diagnostic test results.
117        """
118        return self._cfm_proxy.get_last_diagnostics_results()
119
120
121    # Mic audio commands/functions
122    def is_mic_muted(self):
123        """Check if mic is muted.
124
125        @return a boolean for mic mute state.
126        """
127        return self._cfm_proxy.is_mic_muted()
128
129
130    def mute_mic(self):
131        """Local mic mute from toolbar."""
132        self._cfm_proxy.mute_mic()
133
134
135    def unmute_mic(self):
136        """Local mic unmute from toolbar."""
137        self._cfm_proxy.unmute_mic()
138
139
140    def remote_mute_mic(self):
141        """Remote mic mute request from cPanel."""
142        self._cfm_proxy.remote_mute_mic()
143
144
145    def remote_unmute_mic(self):
146        """Remote mic unmute request from cPanel."""
147        self._cfm_proxy.remote_unmute_mic()
148
149
150    def get_mic_devices(self):
151        """Get all mic devices detected by hotrod."""
152        return self._cfm_proxy.get_mic_devices()
153
154
155    def get_preferred_mic(self):
156        """Get mic preferred for hotrod.
157
158        @return a str with preferred mic name.
159        """
160        return self._cfm_proxy.get_preferred_mic()
161
162
163    def set_preferred_mic(self, mic):
164        """Set preferred mic for hotrod.
165
166        @param mic: String with mic name.
167        """
168        self._cfm_proxy.set_preferred_mic(mic)
169
170
171    # Speaker commands/functions
172    def get_speaker_devices(self):
173        """Get all speaker devices detected by hotrod.
174
175        @return a list of speaker devices.
176        """
177        return self._cfm_proxy.get_speaker_devices()
178
179
180    def get_preferred_speaker(self):
181        """Get speaker preferred for hotrod.
182
183        @return a str with preferred speaker name.
184        """
185        return self._cfm_proxy.get_preferred_speaker()
186
187
188    def set_preferred_speaker(self, speaker):
189        """Set preferred speaker for hotrod.
190
191        @param speaker: String with speaker name.
192        """
193        self._cfm_proxy.set_preferred_speaker(speaker)
194
195
196    def set_speaker_volume(self, volume_level):
197        """Set speaker volume.
198
199        @param volume_level: String value ranging from 0-100 to set volume to.
200        """
201        self._cfm_proxy.set_speaker_volume(volume_level)
202
203
204    def get_speaker_volume(self):
205        """Get current speaker volume.
206
207        @return a str value with speaker volume level 0-100.
208        """
209        return self._cfm_proxy.get_speaker_volume()
210
211
212    def play_test_sound(self):
213        """Play test sound."""
214        self._cfm_proxy.play_test_sound()
215
216
217    # Camera commands/functions
218    def get_camera_devices(self):
219        """Get all camera devices detected by hotrod.
220
221        @return a list of camera devices.
222        """
223        return self._cfm_proxy.get_camera_devices()
224
225
226    def get_preferred_camera(self):
227        """Get camera preferred for hotrod.
228
229        @return a str with preferred camera name.
230        """
231        return self._cfm_proxy.get_preferred_camera()
232
233
234    def set_preferred_camera(self, camera):
235        """Set preferred camera for hotrod.
236
237        @param camera: String with camera name.
238        """
239        self._cfm_proxy.set_preferred_camera(camera)
240
241
242    def is_camera_muted(self):
243        """Check if camera is muted (turned off).
244
245        @return a boolean for camera muted state.
246        """
247        return self._cfm_proxy.is_camera_muted()
248
249
250    def mute_camera(self):
251        """Turned camera off."""
252        self._cfm_proxy.mute_camera()
253
254
255    def unmute_camera(self):
256        """Turned camera on."""
257        self._cfm_proxy.unmute_camera()
258