+void CCECProcessor::ParseVendorId(cec_logical_address device, cec_frame data)
+{
+ if (data.size < 3)
+ {
+ m_controller->AddLog(CEC_LOG_WARNING, "invalid vendor ID received");
+ return;
+ }
+
+ uint64_t iVendorId = ((uint64_t)data.data[0] << 3) +
+ ((uint64_t)data.data[1] << 2) +
+ (uint64_t)data.data[2];
+
+ m_vendorIds[(uint8_t)device] = iVendorId;
+ m_vendorClasses[(uint8_t)device] = data.size >= 4 ? data.data[3] : 0;
+
+ CStdString strLog;
+ strLog.Format("device %d: vendor = %s (%lld) class = %2x", (uint8_t)device, CECVendorIdToString(m_vendorIds[(uint8_t)device]), iVendorId, m_vendorClasses[(uint8_t)device]);
+ m_controller->AddLog(CEC_LOG_DEBUG, strLog.c_str());
+}
+