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
) :
43 m_iFirmwareVersion(CEC_FW_VERSION_UNKNOWN
) {}
46 * @brief Request the firmware version from the adapter.
47 * @return The firmware version, or 1 (default) if it couldn't be retrieved.
49 uint16_t RequestFirmwareVersion(void);
52 * @brief Request a setting value from the adapter.
53 * @param msgCode The setting to retrieve.
54 * @return The response from the adapter.
56 cec_datapacket
RequestSetting(cec_adapter_messagecode msgCode
);
59 * @brief Change the value of the "auto enabled" setting.
60 * @param enabled The new value.
61 * @return True when set, false otherwise.
63 bool SetSettingAutoEnabled(bool enabled
);
66 * @brief Request the value of the "auto enabled" setting from the adapter.
67 * @param enabled The current value.
68 * @return True when retrieved, false otherwise.
70 bool RequestSettingAutoEnabled(bool &enabled
);
73 * @brief Change the value of the "device type" setting, used when the device is in autonomous mode.
74 * @param type The new value.
75 * @return True when set, false otherwise.
77 bool SetSettingDeviceType(cec_device_type type
);
80 * @brief Request the value of the "device type" setting from the adapter.
81 * @param type The current value.
82 * @return True when retrieved, false otherwise.
84 bool RequestSettingDeviceType(cec_device_type
&type
);
87 * @brief Change the value of the "default logical address" setting, used when the device is in autonomous mode.
88 * @param address The new value.
89 * @return True when set, false otherwise.
91 bool SetSettingDefaultLogicalAddress(cec_logical_address address
);
94 * @brief Request the value of the "default logical address" setting from the adapter.
95 * @param address The current value.
96 * @return True when retrieved, false otherwise.
98 bool RequestSettingDefaultLogicalAddress(cec_logical_address
&address
);
101 * @brief Change the value of the "logical address mask" setting, used when the device is in autonomous mode.
102 * @param iMask The new value.
103 * @return True when set, false otherwise.
105 bool SetSettingLogicalAddressMask(uint16_t iMask
);
108 * @brief Request the value of the "logical address mask" setting from the adapter.
109 * @param iMask The current value.
110 * @return True when retrieved, false otherwise.
112 bool RequestSettingLogicalAddressMask(uint16_t &iMask
);
115 * @brief Change the value of the "physical address" setting, used when the device is in autonomous mode.
116 * @param iPhysicalAddress The new value.
117 * @return True when set, false otherwise.
119 bool SetSettingPhysicalAddress(uint16_t iPhysicalAddress
);
122 * @brief Request the value of the "physical address" setting from the adapter.
123 * @param iPhysicalAddress The current value.
124 * @return True when retrieved, false otherwise.
126 bool RequestSettingPhysicalAddress(uint16_t &iPhysicalAddress
);
129 * @brief Change the value of the "CEC version" setting, used when the device is in autonomous mode.
130 * @param version The new value.
131 * @return True when set, false otherwise.
133 bool SetSettingCECVersion(cec_version version
);
136 * @brief Request the value of the "CEC version" setting from the adapter.
137 * @param version The current value.
138 * @return True when retrieved, false otherwise.
140 bool RequestSettingCECVersion(cec_version
&version
);
143 * @brief Change the value of the "OSD name" setting, used when the device is in autonomous mode.
144 * @param strOSDName The new value.
145 * @return True when set, false otherwise.
147 bool SetSettingOSDName(const char *strOSDName
);
150 * @brief Request the value of the "OSD name" setting from the adapter.
151 * @param strOSDName The current value.
152 * @return True when retrieved, false otherwise.
154 bool RequestSettingOSDName(CStdString
&strOSDName
);
157 * @brief Persist the current settings in the EEPROM
158 * @return True when persisted, false otherwise.
160 bool WriteEEPROM(void);
163 * @return The firmware version of the adapter, retrieved when the connection is opened.
165 uint16_t GetFirmwareVersion(void) const { return m_iFirmwareVersion
; };
168 * @brief Persist the current configuration in the EEPROM.
169 * @attention Not all settings are persisted at this time.
170 * @param configuration The configuration to persist.
171 * @return True when persisted, false otherwise.
173 bool PersistConfiguration(libcec_configuration
*configuration
);
176 * @brief Get the persisted configuration from the EEPROM.
177 * @param configuration The persisted configuration.
178 * @return True when retrieved, false otherwise.
180 bool GetConfiguration(libcec_configuration
*configuration
);
183 * @brief Send a ping command to the adapter.
184 * @return True when acked by the adapter, false otherwise.
186 bool PingAdapter(void);
189 * @brief Change the ackmask of the adapter.
190 * @param iMask The new mask.
191 * @return True when the change was acked by the adapter, false otherwise.
193 bool SetAckMask(uint16_t iMask
);
196 * @brief Put the adapter in bootloader mode.
197 * @attention The connection needs to be closed after this call, since the adapter will no longer be available.
198 * @return True when the command was sent, false otherwise.
200 bool StartBootloader(void);
203 * @brief Change the current CEC line timeout.
204 * @param iTimeout The new timeout.
205 * @return True when the change was acked by the adapter, false otherwise.
207 bool SetLineTimeout(uint8_t iTimeout
);
210 * @brief Put the adapter in controlled or autonomous mode.
211 * @param controlled True to switch to controlled mode, false to switch to auto mode.
212 * @return True when acked by the controller, false otherwise.
214 bool SetControlledMode(bool controlled
);
217 CUSBCECAdapterCommunication
*m_comm
; /**< the communication handler */
218 uint16_t m_iFirmwareVersion
; /**< the firwmare version that was retrieved while opening the connection */