X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2FLibCecSharp%2FLibCecSharp.cpp;h=014dea00741571e7d6b9c2af440d5ab83551e2df;hb=dc2c98f66b29c8be6bc342cf24c9f7a9091e66ab;hp=c02c4ea8a66c65546f9d5fbf4609276939dc325b;hpb=63851508ba8fac60c03c1899bf98595481a161c5;p=deb_libcec.git diff --git a/src/LibCecSharp/LibCecSharp.cpp b/src/LibCecSharp/LibCecSharp.cpp index c02c4ea..014dea0 100644 --- a/src/LibCecSharp/LibCecSharp.cpp +++ b/src/LibCecSharp/LibCecSharp.cpp @@ -80,6 +80,8 @@ namespace CecSharp ConvertConfiguration(context, config, libCecConfig); m_libCec = (ICECAdapter *) CECInitialise(&libCecConfig); + config->Update(libCecConfig); + delete context; return m_libCec != NULL; @@ -93,12 +95,13 @@ namespace CecSharp for (unsigned int iPtr = 0; iPtr < 5; iPtr++) config.deviceTypes.types[iPtr] = (cec_device_type)netConfig->DeviceTypes->Types[iPtr]; + config.bAutodetectAddress = netConfig->AutodetectAddress ? 1 : 0; config.iPhysicalAddress = netConfig->PhysicalAddress; config.baseDevice = (cec_logical_address)netConfig->BaseDevice; config.iHDMIPort = netConfig->HDMIPort; config.clientVersion = (cec_client_version)netConfig->ClientVersion; - config.bGetSettingsFromROM = netConfig->GetSettingsFromROM; - config.bActivateSource = netConfig->ActivateSource; + config.bGetSettingsFromROM = netConfig->GetSettingsFromROM ? 1 : 0; + config.bActivateSource = netConfig->ActivateSource ? 1 : 0; config.tvVendor = (cec_vendor_id)netConfig->TvVendor; config.wakeDevices.Clear(); for (int iPtr = 0; iPtr < 16; iPtr++) @@ -112,8 +115,8 @@ namespace CecSharp if (netConfig->PowerOffDevices->IsSet((CecLogicalAddress)iPtr)) config.powerOffDevices.Set((cec_logical_address)iPtr); } - config.bPowerOffScreensaver = netConfig->PowerOffScreensaver; - config.bPowerOffOnStandby = netConfig->PowerOffOnStandby; + config.bPowerOffScreensaver = netConfig->PowerOffScreensaver ? 1 : 0; + config.bPowerOffOnStandby = netConfig->PowerOffOnStandby ? 1 : 0; config.callbacks = &g_cecCallbacks; } @@ -146,12 +149,17 @@ namespace CecSharp } void Close(void) + { + DisableCallbacks(); + m_libCec->Close(); + } + + virtual void DisableCallbacks(void) override { // delete the callbacks, since these might already have been destroyed in .NET CecCallbackMethods::DisableCallbacks(); - m_libCec->EnableCallbacks(NULL, NULL); - m_libCec->StandbyDevices(); - m_libCec->Close(); + if (m_libCec) + m_libCec->EnableCallbacks(NULL, NULL); } virtual bool EnableCallbacks(CecCallbackMethods ^ callbacks) override @@ -328,6 +336,11 @@ namespace CecSharp return (CecPowerStatus) m_libCec->GetDevicePowerStatus((cec_logical_address) logicalAddress); } + void RescanActiveDevices(void) + { + m_libCec->RescanActiveDevices(); + } + CecLogicalAddresses ^ GetActiveDevices(void) { CecLogicalAddresses ^ retVal = gcnew CecLogicalAddresses(); @@ -430,28 +443,7 @@ namespace CecSharp 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->ActivateSource = config.bActivateSource == 1; - configuration->TvVendor = (CecVendorId)config.tvVendor; - - configuration->WakeDevices->Clear(); - for (uint8_t iPtr = 0; iPtr <= 16; iPtr++) - if (config.wakeDevices[iPtr]) - configuration->WakeDevices->Set((CecLogicalAddress)iPtr); - - configuration->PowerOffDevices->Clear(); - for (uint8_t iPtr = 0; iPtr <= 16; iPtr++) - if (config.powerOffDevices[iPtr]) - configuration->PowerOffDevices->Set((CecLogicalAddress)iPtr); - - configuration->UseTVMenuLanguage = config.bUseTVMenuLanguage == 1; - for (unsigned int iPtr = 0; iPtr < 5; iPtr++) - configuration->DeviceTypes->Types[iPtr] = (CecDeviceType)config.deviceTypes.types[iPtr]; + configuration->Update(config); return true; } return false; @@ -546,6 +538,18 @@ namespace CecSharp return gcnew String(retVal); } + String ^ ToString(CecClientVersion version) + { + const char *retVal = m_libCec->ToString((cec_client_version)version); + return gcnew String(retVal); + } + + String ^ ToString(CecServerVersion version) + { + const char *retVal = m_libCec->ToString((cec_server_version)version); + return gcnew String(retVal); + } + private: ICECAdapter * m_libCec; };