X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;ds=sidebyside;f=src%2Flib%2Fadapter%2FPulse-Eight%2FUSBCECAdapterCommunication.cpp;h=9c6743f0851ec8c7a241cddec6c3e6b39418979b;hb=95587b956c69ead0b46d301f5ca70e977890c3fd;hp=3d36497de409cd5c66c0f1591f1ebffc83a35089;hpb=8cd2b85af8e7210497ccd612396b5e73557172f3;p=deb_libcec.git diff --git a/src/lib/adapter/Pulse-Eight/USBCECAdapterCommunication.cpp b/src/lib/adapter/Pulse-Eight/USBCECAdapterCommunication.cpp index 3d36497..9c6743f 100644 --- a/src/lib/adapter/Pulse-Eight/USBCECAdapterCommunication.cpp +++ b/src/lib/adapter/Pulse-Eight/USBCECAdapterCommunication.cpp @@ -36,6 +36,7 @@ #include "USBCECAdapterCommands.h" #include "USBCECAdapterMessageQueue.h" #include "USBCECAdapterMessage.h" +#include "USBCECAdapterDetection.h" #include "lib/platform/sockets/serialport.h" #include "lib/platform/util/timeutils.h" #include "lib/platform/util/util.h" @@ -59,6 +60,7 @@ using namespace PLATFORM; #define CEC_LATEST_ADAPTER_FW_DATE 0x501a4b0c #define CEC_FW_DATE_EXTENDED_RESPONSE 0x501a4b0c +#define CEC_FW_DATE_DESCRIPTOR2 0x5045dbf5 #define LIB_CEC m_callback->GetLib() @@ -282,7 +284,8 @@ void *CUSBCECAdapterCommunication::Process(void) } /* TODO sleep 5 ms so other threads can get a lock */ - Sleep(5); + if (!IsStopped()) + Sleep(5); } m_adapterMessageQueue->Clear(); @@ -611,6 +614,20 @@ bool CUSBCECAdapterCommunication::ProvidesExtendedResponse(void) return iBuildDate >= CEC_FW_DATE_EXTENDED_RESPONSE; } +uint16_t CUSBCECAdapterCommunication::GetAdapterVendorId(void) const +{ + return CEC_VID; +} + +uint16_t CUSBCECAdapterCommunication::GetAdapterProductId(void) const +{ + uint32_t iBuildDate(0); + if (m_commands) + iBuildDate = m_commands->GetPersistedBuildDate(); + + return iBuildDate >= CEC_FW_DATE_DESCRIPTOR2 ? CEC_PID2 : CEC_PID; +} + bool CUSBCECAdapterCommunication::IsRunningLatestFirmware(void) { return GetFirmwareBuildDate() >= CEC_LATEST_ADAPTER_FW_DATE && @@ -722,6 +739,7 @@ void CAdapterEepromWriteThread::Stop(void) CLockObject lock(m_mutex); if (m_iScheduleEepromWrite > 0) m_com->LIB_CEC->AddLog(CEC_LOG_WARNING, "write thread stopped while a write was queued"); + m_bWrite = true; m_condition.Signal(); } StopThread(); @@ -735,6 +753,8 @@ void *CAdapterEepromWriteThread::Process(void) if ((m_iScheduleEepromWrite > 0 && m_iScheduleEepromWrite < GetTimeMs()) || m_condition.Wait(m_mutex, m_bWrite, 100)) { + if (IsStopped()) + break; m_bWrite = false; if (m_com->m_commands->WriteEEPROM()) {