bool ChannelBase::ChangeInternalChannel(const QString &freqid, uint inputid) { #ifdef USING_FIREWIRE FirewireDevice *device = NULL; QString fwnode = CardUtil::GetFirewireChangerNode(inputid); uint64_t guid = string_to_guid(fwnode); QString fwmodel = CardUtil::GetFirewireChangerModel(inputid); LOG(VB_GENERAL, LOG_ERR, LOC + QString("Internal channel change to %1 " "on inputid %2, GUID %3 (%4)").arg(freqid).arg(inputid) .arg(fwnode).arg(fwmodel)); #ifdef USING_LINUX_FIREWIRE device = new LinuxFirewireDevice( guid, 0, 100, 1); #endif // USING_LINUX_FIREWIRE #ifdef USING_OSX_FIREWIRE device = new DarwinFirewireDevice(guid, 0, 100); #endif // USING_OSX_FIREWIRE if (!device) return false; if (!device->OpenPort()) return false; if (!device->SetChannel(fwmodel, 0, freqid.toUInt())) { device->ClosePort(); delete device; device = NULL; return false; } device->ClosePort(); delete device; device = NULL; return true; #else return false; #endif }
void FirewireSignalMonitor::RunTableMonitor(void) { stb_needs_to_wait_for_pat = true; stb_wait_for_pat_timer.start(); dtvMonitorRunning = true; LOG(VB_CHANNEL, LOG_INFO, LOC + "RunTableMonitor(): -- begin"); FirewireChannel *lchan = dynamic_cast<FirewireChannel*>(channel); if (!lchan) { LOG(VB_CHANNEL, LOG_INFO, LOC + "RunTableMonitor(): -- err"); while (dtvMonitorRunning) usleep(10000); LOG(VB_CHANNEL, LOG_INFO, LOC + "RunTableMonitor(): -- err end"); return; } FirewireDevice *dev = lchan->GetFirewireDevice(); dev->OpenPort(); dev->AddListener(this); while (dtvMonitorRunning && GetStreamData()) usleep(10000); LOG(VB_CHANNEL, LOG_INFO, LOC + "RunTableMonitor(): -- shutdown "); dev->RemoveListener(this); dev->ClosePort(); while (dtvMonitorRunning) usleep(10000); LOG(VB_CHANNEL, LOG_INFO, LOC + "RunTableMonitor(): -- end"); }