cec: fix some C header. still not actually tested this
[deb_libcec.git] / src / lib / LibCECC.cpp
index 60ada61b749fcc13c77f39ff1e292ecfbc19bfdf..3dc5b697cf61ff0cd1d910bd3416ef4e01fee9a6 100644 (file)
@@ -30,7 +30,8 @@
  *     http://www.pulse-eight.net/
  */
 
-#include "LibCEC.h"
+#include <cec.h>
+#include <cecc.h>
 
 using namespace CEC;
 using namespace std;
@@ -41,20 +42,26 @@ using namespace std;
 //@{
 ICECAdapter *cec_parser;
 
-bool cec_init(const char *strDeviceName, cec_logical_address iLogicalAddress /* = CECDEVICE_PLAYBACKDEVICE1 */, uint8_t iPhysicalAddress /* = CEC_DEFAULT_PHYSICAL_ADDRESS */)
+int cec_init(const char *strDeviceName, cec_logical_address iLogicalAddress /* = CECDEVICE_PLAYBACKDEVICE1 */, uint8_t iPhysicalAddress /* = CEC_DEFAULT_PHYSICAL_ADDRESS */)
 {
   cec_parser = (ICECAdapter *) CECCreate(strDeviceName, iLogicalAddress, iPhysicalAddress);
-  return (cec_parser != NULL);
+  return (cec_parser != NULL) ? 1 : 0;
+}
+
+int cec_init_typed(const char *strDeviceName, cec_device_type_list devicesTypes)
+{
+  cec_parser = (ICECAdapter *) CECInit(strDeviceName, devicesTypes);
+  return (cec_parser != NULL) ? 1 : 0;
 }
 
 void cec_destroy(void)
 {
   cec_close();
-  delete cec_parser;
+  CECDestroy(cec_parser);
   cec_parser = NULL;
 }
 
-bool cec_open(const char *strPort, uint64_t iTimeout)
+int cec_open(const char *strPort, uint32_t iTimeout)
 {
   if (cec_parser)
     return cec_parser->Open(strPort, iTimeout);
@@ -67,102 +74,172 @@ void cec_close(void)
     cec_parser->Close();
 }
 
-int cec_find_adapters(vector<cec_adapter> &deviceList, const char *strDevicePath /* = NULL */)
+int8_t cec_find_adapters(cec_adapter *deviceList, uint8_t iBufSize, const char *strDevicePath /* = NULL */)
 {
   if (cec_parser)
-    return cec_parser->FindAdapters(deviceList, strDevicePath);
+    return cec_parser->FindAdapters(deviceList, iBufSize, strDevicePath);
   return -1;
 }
 
-bool cec_ping_adapters(void)
+int cec_ping_adapters(void)
 {
   if (cec_parser)
-    return cec_parser->PingAdapter();
-  return false;
+    return cec_parser->PingAdapter() ? 1 : 0;
+  return -1;
 }
 
-bool cec_start_bootloader(void)
+int cec_start_bootloader(void)
 {
   if (cec_parser)
-    return cec_parser->StartBootloader();
-  return false;
+    return cec_parser->StartBootloader() ? 1 : 0;
+  return -1;
 }
 
-int cec_get_min_version(void)
+int8_t cec_get_min_version(void)
 {
   if (cec_parser)
-    return cec_parser->GetMinVersion();
+    return cec_parser->GetMinLibVersion();
   return -1;
 }
 
-int cec_get_lib_version(void)
+int8_t cec_get_lib_version_major(void)
 {
   if (cec_parser)
-    return cec_parser->GetLibVersion();
+    return cec_parser->GetLibVersionMajor();
   return -1;
 }
 
-bool cec_get_next_log_message(cec_log_message *message)
+int8_t cec_get_lib_version_minor(void)
 {
   if (cec_parser)
-    return cec_parser->GetNextLogMessage(message);
-  return false;
+    return cec_parser->GetLibVersionMinor();
+  return -1;
 }
 
-bool cec_get_next_keypress(cec_keypress *key)
+int cec_get_next_log_message(cec_log_message *message)
 {
   if (cec_parser)
-    return cec_parser->GetNextKeypress(key);
-  return false;
+    return cec_parser->GetNextLogMessage(message) ? 1 : 0;
+  return -1;
 }
 
-bool cec_get_next_command(cec_command *command)
+int cec_get_next_keypress(cec_keypress *key)
 {
   if (cec_parser)
-    return cec_parser->GetNextCommand(command);
-  return false;
+    return cec_parser->GetNextKeypress(key) ? 1 : 0;
+  return -1;
 }
 
-bool cec_transmit(const CEC::cec_frame &data, bool bWaitForAck /* = true */)
+int cec_get_next_command(cec_command *command)
 {
   if (cec_parser)
-    return cec_parser->Transmit(data, bWaitForAck);
-  return false;
+    return cec_parser->GetNextCommand(command) ? 1 : 0;
+  return -1;
 }
 
-bool cec_set_logical_address(cec_logical_address iLogicalAddress)
+int cec_transmit(const CEC::cec_command *data)
 {
   if (cec_parser)
-    return cec_parser->SetLogicalAddress(iLogicalAddress);
-  return false;
+    return cec_parser->Transmit(*data) ? 1 : 0;
+  return -1;
 }
 
-bool cec_power_on_devices(cec_logical_address address /* = CECDEVICE_TV */)
+int cec_set_logical_address(cec_logical_address iLogicalAddress /* = CECDEVICE_PLAYBACKDEVICE1 */)
 {
   if (cec_parser)
-    return cec_parser->PowerOnDevices(address);
-  return false;
+    return cec_parser->SetLogicalAddress(iLogicalAddress) ? 1 : 0;
+  return -1;
 }
 
-bool cec_standby_devices(cec_logical_address address /* = CECDEVICE_BROADCAST */)
+int cec_set_physical_address(uint16_t iPhysicalAddress /* = CEC_DEFAULT_PHYSICAL_ADDRESS */)
 {
   if (cec_parser)
-    return cec_parser->StandbyDevices(address);
-  return false;
+    return cec_parser->SetPhysicalAddress(iPhysicalAddress) ? 1 : 0;
+  return -1;
 }
 
-bool cec_set_active_view(void)
+int cec_power_on_devices(cec_logical_address address /* = CECDEVICE_TV */)
 {
   if (cec_parser)
-    return cec_parser->SetActiveView();
-  return false;
+    return cec_parser->PowerOnDevices(address) ? 1 : 0;
+  return -1;
 }
 
-bool cec_set_inactive_view(void)
+int cec_standby_devices(cec_logical_address address /* = CECDEVICE_BROADCAST */)
 {
   if (cec_parser)
-    return cec_parser->SetInactiveView();
-  return false;
+    return cec_parser->StandbyDevices(address) ? 1 : 0;
+  return -1;
+}
+
+int cec_set_active_view(void)
+{
+  if (cec_parser)
+    return cec_parser->SetActiveView() ? 1 : 0;
+  return -1;
+}
+
+int cec_set_active_source(cec_device_type type)
+{
+  if (cec_parser)
+    return cec_parser->SetActiveSource(type) ? 1 : 0;
+  return -1;
+}
+
+int cec_set_inactive_view(void)
+{
+  if (cec_parser)
+    return cec_parser->SetInactiveView() ? 1 : 0;
+  return -1;
+}
+
+int cec_set_osd_string(cec_logical_address iLogicalAddress, cec_display_control duration, const char *strMessage)
+{
+  if (cec_parser)
+    return cec_parser->SetOSDString(iLogicalAddress, duration, strMessage) ? 1 : 0;
+  return -1;
+}
+
+int cec_switch_monitoring(int bEnable)
+{
+  if (cec_parser)
+    return cec_parser->SwitchMonitoring(bEnable == 1) ? 1 : 0;
+  return -1;
+}
+
+cec_version cec_get_device_cec_version(cec_logical_address iLogicalAddress)
+{
+  if (cec_parser)
+    return cec_parser->GetDeviceCecVersion(iLogicalAddress);
+  return CEC_VERSION_UNKNOWN;
+}
+
+int cec_get_device_menu_language(cec_logical_address iLogicalAddress, cec_menu_language *language)
+{
+  if (cec_parser)
+    return cec_parser->GetDeviceMenuLanguage(iLogicalAddress, language) ? 1 : 0;
+  return -1;
+}
+
+uint64_t cec_get_device_vendor_id(cec_logical_address iLogicalAddress)
+{
+  if (cec_parser)
+    return cec_parser->GetDeviceVendorId(iLogicalAddress);
+  return 0;
+}
+
+cec_power_status cec_get_device_power_status(cec_logical_address iLogicalAddress)
+{
+  if (cec_parser)
+    return cec_parser->GetDevicePowerStatus(iLogicalAddress);
+  return CEC_POWER_STATUS_UNKNOWN;
+}
+
+int cec_poll_device(cec_logical_address iLogicalAddress)
+{
+  if (cec_parser)
+    return cec_parser->PollDevice(iLogicalAddress);
+  return -1;
 }
 
 //@}