QString HDHRStreamHandler::TunerSet( const QString &name, const QString &val, bool report_error_return, bool print_error) { QMutexLocker locker(&_hdhr_lock); if (!_hdhomerun_device) { VERBOSE(VB_IMPORTANT, LOC_ERR + "Set request failed (not connected)"); return QString::null; } QString valname = QString("/tuner%1/%2").arg(_tuner).arg(name); char *value = NULL; char *error = NULL; if (hdhomerun_device_set_var( _hdhomerun_device, valname.toLocal8Bit().constData(), val.toLocal8Bit().constData(), &value, &error) < 0) { VERBOSE(VB_IMPORTANT, LOC_ERR + "Set request failed" + ENO); return QString::null; } // Database modulation strings and HDHR use different syntax. // HACK!! Caller should be doing this. (e.g. auto in HDHRChannel::Tune()) // if (error && name == QString("channel") && val.contains("qam_")) { QString newval = val; newval.replace("qam_256", "qam"); newval.replace("qam_64", "qam"); VERBOSE(VB_CHANNEL, "HDHRSH::TunerSet() Failed. Trying " + newval); return TunerSet(name, newval, report_error_return, print_error); } if (report_error_return && error) { if (print_error) { VERBOSE(VB_IMPORTANT, LOC_ERR + QString("DeviceSet(%1 %2): %3") .arg(name).arg(val).arg(error)); } return QString::null; } return QString(value); }
static int cmd_set_internal(const char *item, const char *value) { char *ret_error; if (hdhomerun_device_set_var(hd, item, value, NULL, &ret_error) < 0) { fprintf(stderr, "communication error sending request to hdhomerun device\n"); return -1; } if (ret_error) { printf("%s\n", ret_error); return 0; } return 1; }
QString HDHRStreamHandler::TunerSet( const QString &name, const QString &val, bool report_error_return, bool print_error) { QMutexLocker locker(&_hdhr_lock); if (!_hdhomerun_device) { LOG(VB_GENERAL, LOG_ERR, LOC + "Set request failed (not connected)"); return QString::null; } QString valname = QString("/tuner%1/%2").arg(_tuner).arg(name); char *value = NULL; char *error = NULL; if (hdhomerun_device_set_var( _hdhomerun_device, valname.toLocal8Bit().constData(), val.toLocal8Bit().constData(), &value, &error) < 0) { LOG(VB_GENERAL, LOG_ERR, LOC + "Set request failed" + ENO); return QString::null; } if (report_error_return && error) { if (print_error) { LOG(VB_GENERAL, LOG_ERR, LOC + QString("DeviceSet(%1 %2): %3") .arg(name).arg(val).arg(error)); } return QString::null; } return QString(value); }