add support to select higher S2/X modulation types

This commit is contained in:
Ralph Metzler
2019-11-04 19:07:28 +01:00
parent 960ee48a10
commit 7925537b58
3 changed files with 65 additions and 30 deletions

View File

@@ -130,9 +130,11 @@ static int set_fe_input(struct dddvb_fe *fe, uint32_t fr,
set_property(fd, DTV_INPUT, input);
if (fe->param.param[PARAM_ISI] != DDDVB_UNDEF)
set_property(fd, DTV_STREAM_ID, fe->param.param[PARAM_ISI]);
if (fe->param.param[PARAM_PLS] != DDDVB_UNDEF)
if (fe->param.param[PARAM_SSI] != DDDVB_UNDEF)
set_property(fd, DTV_SCRAMBLING_SEQUENCE_INDEX,
fe->param.param[PARAM_PLS]);
fe->param.param[PARAM_SSI]);
if (fe->param.param[PARAM_MTYPE] != DDDVB_UNDEF)
set_property(fd, DTV_MODULATION, fe->param.param[PARAM_MTYPE]);
set_property(fd, DTV_TUNE, 0);
return 0;
}
@@ -280,9 +282,9 @@ static int tune_sat(struct dddvb_fe *fe)
freq -= lofs;
else
freq = lofs - freq;
} else
}
#endif
{
if (freq > 2100000) {
if (lofs)
hi = (freq > lofs) ? 1 : 0;
if (hi)
@@ -491,7 +493,7 @@ static int tune(struct dddvb_fe *fe)
int ret;
printf("tune()\n");
switch (fe->n_param.param[PARAM_MSYS]) {
switch (fe->param.param[PARAM_MSYS]) {
case SYS_DVBS:
case SYS_DVBS2:
ret = tune_sat(fe);
@@ -704,8 +706,7 @@ int dddvb_fe_get(struct dddvb_fe *fe, struct dddvb_params *p)
dbgprintf(DEBUG_DVB, "fe_get\n");
pthread_mutex_lock(&fe->mutex);
memcpy(fe->n_param.param, p->param, sizeof(fe->n_param.param));
fe->n_tune = 1;
memcpy(p->param, fe->n_param.param, sizeof(fe->n_param.param));
pthread_mutex_unlock(&fe->mutex);
return ret;
}
@@ -916,3 +917,4 @@ int dddvb_dvb_exit(struct dddvb *dd)
}

View File

@@ -7,8 +7,8 @@
#include <pthread.h>
#include <sys/ioctl.h>
#include <linux/dvb/dmx.h>
#include <linux/dvb/frontend.h>
#include <linux/dvb/dmx.h>
#include <linux/dvb/video.h>
#include <linux/dvb/net.h>
@@ -34,7 +34,7 @@
#define PARAM_GI 15
#define PARAM_PLP 16
#define PARAM_ISI 16
#define PARAM_PLS 17
#define PARAM_SSI 17
#define PARAM_T2ID 17
#define PARAM_SM 18
#define PARAM_C2TFT 19
@@ -93,14 +93,18 @@ static inline void dddvb_set_fec(struct dddvb_params *p, enum fe_code_rate fec)
p->param[PARAM_FEC] = fec;
};
static inline void dddvb_set_pls(struct dddvb_params *p, uint32_t pls) {
p->param[PARAM_PLS] = pls;
static inline void dddvb_set_ssi(struct dddvb_params *p, uint32_t val) {
p->param[PARAM_SSI] = val;
};
static inline void dddvb_set_id(struct dddvb_params *p, uint32_t id) {
p->param[PARAM_ISI] = id;
};
static inline void dddvb_set_mtype(struct dddvb_params *p, uint32_t val) {
p->param[PARAM_MTYPE] = val;
};
static inline uint32_t dddvb_get_stat(struct dddvb_fe *fe) {
return fe->stat;
};