---
lib/libdvbv5/dvb-fe.c | 32 ++++++++++++++++++++++++++++----
lib/libdvbv5/dvb-v5-std.c | 2 ++
2 files changed, 30 insertions(+), 4 deletions(-)
diff --git a/lib/libdvbv5/dvb-fe.c b/lib/libdvbv5/dvb-fe.c
index 9ec9893..8f27e1a 100644
--- a/lib/libdvbv5/dvb-fe.c
+++ b/lib/libdvbv5/dvb-fe.c
@@ -391,12 +391,21 @@ const char *dvb_cmd_name(int cmd)
return NULL;
}
+const char * const *dvb_attr_names(int cmd)
+{
+ if (cmd < DTV_USER_COMMAND_START)
+ return dvb_v5_attr_names[cmd];
+ else if (cmd <= DTV_MAX_USER_COMMAND)
+ return dvb_user_attr_names[cmd - DTV_USER_COMMAND_START];
+ return NULL;
+}
+
void dvb_fe_prt_parms(FILE *fp, const struct dvb_v5_fe_parms *parms)
{
int i;
for (i = 0; i < parms->n_props; i++) {
- const char * const *attr_name =
dvb_v5_attr_names[parms->dvb_prop[i].cmd];
+ const char * const *attr_name =
dvb_attr_names(parms->dvb_prop[i].cmd);
if (attr_name) {
int j;
@@ -450,6 +459,15 @@ int dvb_fe_store_parm(struct dvb_v5_fe_parms *parms,
return EINVAL;
}
+int dvb_copy_fe_props(struct dtv_property *from, int n, struct dtv_property
*to)
+{
+ int i, j;
+ for (i = 0, j = 0; i < n; i++)
+ if (from[i].cmd < DTV_USER_COMMAND_START)
+ to[j++] = from[i];
+ return j;
+}
+
int dvb_fe_get_parms(struct dvb_v5_fe_parms *parms)
{
int n = 0;
@@ -473,7 +491,10 @@ int dvb_fe_get_parms(struct dvb_v5_fe_parms *parms)
parms->dvb_prop[n].cmd = DTV_TUNE;
parms->n_props = n;
- prop.props = parms->dvb_prop;
+ struct dtv_property fe_prop[DTV_MAX_COMMAND];
+ n = dvb_copy_fe_props(parms->dvb_prop, n, fe_prop);
+
+ prop.props = fe_prop;
prop.num = n;
if (!parms->legacy_fe) {
if (ioctl(parms->fd, FE_GET_PROPERTY, &prop) == -1) {
@@ -540,8 +561,11 @@ int dvb_fe_set_parms(struct dvb_v5_fe_parms *parms)
uint32_t freq;
uint32_t bw;
- prop.props = parms->dvb_prop;
- prop.num = parms->n_props + 1;
+ struct dtv_property fe_prop[DTV_MAX_COMMAND];
+ int n = dvb_copy_fe_props(parms->dvb_prop, parms->n_props, fe_prop);
+
+ prop.props = fe_prop;
+ prop.num = n + 1;
parms->dvb_prop[parms->n_props].cmd = DTV_TUNE;
if (is_satellite(parms->current_sys)) {
diff --git a/lib/libdvbv5/dvb-v5-std.c b/lib/libdvbv5/dvb-v5-std.c
index 210f661..e20eb91 100644
--- a/lib/libdvbv5/dvb-v5-std.c
+++ b/lib/libdvbv5/dvb-v5-std.c
@@ -106,6 +106,7 @@ const unsigned int sys_dvbs_props[] = {
DTV_INNER_FEC,
DTV_VOLTAGE,
DTV_TONE,
+ DTV_POLARIZATION,
0
};
@@ -119,6 +120,7 @@ const unsigned int sys_dvbs2_props[] = {
DTV_MODULATION,
DTV_PILOT,
DTV_ROLLOFF,
+ DTV_POLARIZATION,
0
};
--
1.7.2.5
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html