X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2Flib%2FLibCECC.cpp;h=c95741c2356d930be974fe677db0636d5aa6fbea;hb=305500533ee1524692ceaf3cb5f38d24225c5920;hp=7f2475b5eb38118b28090f79b516f4b2e1c3284d;hpb=2abe74ebbd27d8c30060b3eebb363e10d3fbfd80;p=deb_libcec.git diff --git a/src/lib/LibCECC.cpp b/src/lib/LibCECC.cpp index 7f2475b..c95741c 100644 --- a/src/lib/LibCECC.cpp +++ b/src/lib/LibCECC.cpp @@ -30,7 +30,8 @@ * http://www.pulse-eight.net/ */ -#include "LibCEC.h" +#include +#include 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 */, int iPhysicalAddress /* = CEC_DEFAULT_PHYSICAL_ADDRESS */) +int cec_init(const char *strDeviceName, cec_logical_address iLogicalAddress, uint16_t iPhysicalAddress) { 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, int 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 &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; } //@}