3 * This file is part of the libCEC(R) library.
5 * libCEC(R) is Copyright (C) 2011-2012 Pulse-Eight Limited. All rights reserved.
6 * libCEC(R) is an original work, containing original code.
8 * libCEC(R) is a trademark of Pulse-Eight Limited.
10 * This program is dual-licensed; you can redistribute it and/or modify
11 * it under the terms of the GNU General Public License as published by
12 * the Free Software Foundation; either version 2 of the License, or
13 * (at your option) any later version.
15 * This program is distributed in the hope that it will be useful,
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 * GNU General Public License for more details.
20 * You should have received a copy of the GNU General Public License
21 * along with this program; if not, write to the Free Software
22 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
25 * Alternatively, you can license this library under a commercial license,
26 * please contact Pulse-Eight Licensing for more information.
28 * For more information contact:
29 * Pulse-Eight Licensing <license@pulse-eight.com>
30 * http://www.pulse-eight.com/
31 * http://www.pulse-eight.net/
34 #include "USBCECAdapterCommunication.h"
38 class CUSBCECAdapterCommands
41 CUSBCECAdapterCommands(CUSBCECAdapterCommunication
*comm
);
44 * @brief Request the firmware version from the adapter.
45 * @return The firmware version, or 1 (default) if it couldn't be retrieved.
47 uint16_t RequestFirmwareVersion(void);
50 * @return The firmware version of the adapter, retrieved when the connection is opened.
52 uint16_t GetFirmwareVersion(void) const { return m_persistedConfiguration
.iFirmwareVersion
; };
55 * @brief Persist the current configuration in the EEPROM.
56 * @attention Not all settings are persisted at this time.
57 * @param configuration The configuration to persist.
58 * @return True when persisted, false otherwise.
60 bool PersistConfiguration(const libcec_configuration
&configuration
);
63 * @brief Get the persisted configuration from the EEPROM.
64 * @param configuration The persisted configuration.
65 * @return True when retrieved, false otherwise.
67 bool GetConfiguration(libcec_configuration
&configuration
);
70 * @brief Send a ping command to the adapter.
71 * @return True when acked by the adapter, false otherwise.
73 bool PingAdapter(void);
76 * @brief Change the ackmask of the adapter.
77 * @param iMask The new mask.
78 * @return True when the change was acked by the adapter, false otherwise.
80 bool SetAckMask(uint16_t iMask
);
83 * @brief Put the adapter in bootloader mode.
84 * @attention The connection needs to be closed after this call, since the adapter will no longer be available.
85 * @return True when the command was sent, false otherwise.
87 bool StartBootloader(void);
90 * @brief Change the current CEC line timeout.
91 * @param iTimeout The new timeout.
92 * @return True when the change was acked by the adapter, false otherwise.
94 bool SetLineTimeout(uint8_t iTimeout
);
97 * @brief Put the adapter in controlled or autonomous mode.
98 * @param controlled True to switch to controlled mode, false to switch to auto mode.
99 * @return True when acked by the controller, false otherwise.
101 bool SetControlledMode(bool controlled
);
104 * @brief Request the firmware build date from the device.
105 * @return The build date in seconds since epoch, or 0 when no (valid) reply was received.
107 uint32_t RequestBuildDate(void);
111 * @brief Reads all settings from the eeprom.
112 * @return True when read, false otherwise.
114 bool RequestSettings(void);
117 * @brief Request a setting value from the adapter.
118 * @param msgCode The setting to retrieve.
119 * @return The response from the adapter.
121 cec_datapacket
RequestSetting(cec_adapter_messagecode msgCode
);
124 * @brief Change the value of the "auto enabled" setting.
125 * @param enabled The new value.
126 * @return True when set, false otherwise.
128 bool SetSettingAutoEnabled(bool enabled
);
131 * @brief Request the value of the "auto enabled" setting from the adapter.
132 * @return True when retrieved, false otherwise.
134 bool RequestSettingAutoEnabled(void);
137 * @brief Change the value of the "device type" setting, used when the device is in autonomous mode.
138 * @param type The new value.
139 * @return True when set, false otherwise.
141 bool SetSettingDeviceType(cec_device_type type
);
144 * @brief Request the value of the "device type" setting from the adapter.
145 * @return True when retrieved, false otherwise.
147 bool RequestSettingDeviceType(void);
150 * @brief Change the value of the "default logical address" setting, used when the device is in autonomous mode.
151 * @param address The new value.
152 * @return True when set, false otherwise.
154 bool SetSettingDefaultLogicalAddress(cec_logical_address address
);
157 * @brief Request the value of the "default logical address" setting from the adapter.
158 * @return True when retrieved, false otherwise.
160 bool RequestSettingDefaultLogicalAddress(void);
163 * @brief Change the value of the "logical address mask" setting, used when the device is in autonomous mode.
164 * @param iMask The new value.
165 * @return True when set, false otherwise.
167 bool SetSettingLogicalAddressMask(uint16_t iMask
);
170 * @brief Request the value of the "logical address mask" setting from the adapter.
171 * @return True when retrieved, false otherwise.
173 bool RequestSettingLogicalAddressMask(void);
176 * @brief Change the value of the "physical address" setting, used when the device is in autonomous mode.
177 * @param iPhysicalAddress The new value.
178 * @return True when set, false otherwise.
180 bool SetSettingPhysicalAddress(uint16_t iPhysicalAddress
);
183 * @brief Request the value of the "physical address" setting from the adapter.
184 * @return True when retrieved, false otherwise.
186 bool RequestSettingPhysicalAddress(void);
189 * @brief Change the value of the "CEC version" setting, used when the device is in autonomous mode.
190 * @param version The new value.
191 * @return True when set, false otherwise.
193 bool SetSettingCECVersion(cec_version version
);
196 * @brief Request the value of the "CEC version" setting from the adapter.
197 * @return True when retrieved, false otherwise.
199 bool RequestSettingCECVersion(void);
202 * @brief Change the value of the "OSD name" setting, used when the device is in autonomous mode.
203 * @param strOSDName The new value.
204 * @return True when set, false otherwise.
206 bool SetSettingOSDName(const char *strOSDName
);
209 * @brief Request the value of the "OSD name" setting from the adapter.
210 * @return True when retrieved, false otherwise.
212 bool RequestSettingOSDName(void);
215 * @brief Persist the current settings in the EEPROM
216 * @return True when persisted, false otherwise.
218 bool WriteEEPROM(void);
220 CUSBCECAdapterCommunication
*m_comm
; /**< the communication handler */
221 bool m_bSettingsRetrieved
; /**< true when the settings were read from the eeprom, false otherwise */
222 bool m_bSettingAutoEnabled
; /**< the value of the auto-enabled setting */
223 cec_version m_settingCecVersion
; /**< the value of the cec version setting */
224 uint16_t m_iSettingLAMask
; /**< the value of the LA mask setting */
225 bool m_bNeedsWrite
; /**< true when we sent changed settings to the adapter that have not been persisted */
226 libcec_configuration m_persistedConfiguration
; /**< the configuration that is persisted in the eeprom */
227 uint32_t m_iBuildDate
; /**< the build date of the firmware */