X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2FLibCecSharp%2FLibCecSharp.cpp;h=c6f52a1a17b2bda673177728538602c81421b669;hb=b818fb5a933c762e71916340384276c6ee5ed6d6;hp=61465e70e75c9bcc298d8fcb568ed215427771cb;hpb=41297a4573ccada540d0d2c3a6b63034866deab9;p=deb_libcec.git diff --git a/src/LibCecSharp/LibCecSharp.cpp b/src/LibCecSharp/LibCecSharp.cpp index 61465e7..c6f52a1 100644 --- a/src/LibCecSharp/LibCecSharp.cpp +++ b/src/LibCecSharp/LibCecSharp.cpp @@ -46,7 +46,7 @@ namespace CecSharp LibCecSharp(LibCECConfiguration ^config) { m_configuration = config; - m_configuration->SetCallbacks(this); + CecCallbackMethods::EnableCallbacks(m_configuration->Callbacks); if (!InitialiseLibCec()) throw gcnew Exception("Could not initialise LibCecSharp"); } @@ -226,7 +226,7 @@ namespace CecSharp return m_libCec->SetLogicalAddress((cec_logical_address) logicalAddress); } - bool SetPhysicalAddress(int16_t physicalAddress) + bool SetPhysicalAddress(uint16_t physicalAddress) { return m_libCec->SetPhysicalAddress(physicalAddress); } @@ -388,6 +388,66 @@ namespace CecSharp return m_libCec->GetDevicePhysicalAddress((cec_logical_address)iAddress); } + bool SetStreamPath(CecLogicalAddress iAddress) + { + return m_libCec->SetStreamPath((cec_logical_address)iAddress); + } + + bool SetStreamPath(uint16_t iPhysicalAddress) + { + return m_libCec->SetStreamPath(iPhysicalAddress); + } + + CecLogicalAddresses ^GetLogicalAddresses(void) + { + CecLogicalAddresses ^addr = gcnew CecLogicalAddresses(); + cec_logical_addresses libAddr = m_libCec->GetLogicalAddresses(); + for (unsigned int iPtr = 0; iPtr < 16; iPtr++) + addr->Addresses[iPtr] = (CecLogicalAddress)libAddr.addresses[iPtr]; + addr->Primary = (CecLogicalAddress)libAddr.primary; + return addr; + } + + bool GetCurrentConfiguration(LibCECConfiguration ^configuration) + { + libcec_configuration config; + config.Clear(); + + if (m_libCec->GetCurrentConfiguration(&config)) + { + configuration->BaseDevice = (CecLogicalAddress)config.baseDevice; + configuration->DeviceName = gcnew String(config.strDeviceName); + configuration->HDMIPort = config.iHDMIPort; + configuration->PhysicalAddress = config.iPhysicalAddress; + configuration->PowerOffOnStandby = config.bPowerOffOnStandby == 1; + configuration->PowerOffScreensaver = config.bPowerOffScreensaver == 1; + configuration->PowerOffShutdown = config.bPowerOffShutdown == 1; + configuration->PowerOnStartup = config.bPowerOnStartup == 1; + configuration->UseTVMenuLanguage = config.bUseTVMenuLanguage == 1; + for (unsigned int iPtr = 0; iPtr < 5; iPtr++) + m_configuration->DeviceTypes->Types[iPtr] = (CecDeviceType)config.deviceTypes.types[iPtr]; + return true; + } + return false; + } + + bool CanPersistConfiguration(void) + { + return m_libCec->CanPersistConfiguration(); + } + + bool PersistConfiguration(LibCECConfiguration ^configuration) + { + marshal_context ^ context = gcnew marshal_context(); + libcec_configuration config; + GetConfiguration(context, config); + + bool bReturn = m_libCec->PersistConfiguration(&config); + + delete context; + return bReturn; + } + String ^ ToString(CecLogicalAddress iAddress) { const char *retVal = m_libCec->ToString((cec_logical_address)iAddress);