Hi,
There is an ambiguity in the LinuxTV documentation about the following
ioctl's:
FE_SET_TONE, FE_SET_VOLTAGE, FE_DISEQC_SEND_BURST.
These ioctl's take an enum value as input. In the old V3 API, the
parameter
is passed by value. In the S2API documentation, it is passed by
reference.
Most sample programs (a bit old) use the "pass by value" method.
V3 documentation: https://www.linuxtv.org/docs/dvbapi/dvbapi.html
int ioctl(int fd, int request = FE_SET_TONE, fe_sec_tone_mode_t
tone);
int ioctl(int fd, int request = FE_SET_VOLTAGE, fe_sec_voltage_t
voltage);
int ioctl(int fd, int request = FE_DISEQC_SEND_BURST,
fe_sec_mini_cmd_t burst);
S2API documentation:
https://www.linuxtv.org/downloads/v4l-dvb-apis-new/uapi/dvb/frontend_fcalls.html
int ioctl(int fd, FE_SET_TONE, enum fe_sec_tone_mode *tone)
int ioctl(int fd, FE_SET_VOLTAGE, enum fe_sec_voltage *voltage)
int ioctl(int fd, FE_DISEQC_SEND_BURST, enum fe_sec_mini_cmd *tone)
Also in:
https://www.kernel.org/doc/html/v4.10/media/uapi/dvb/frontend_fcalls.html
Which one is correct? If both are correct and the API was changed (I
doubt about it),
how can we know which one to use?
Normally, I would say that the most recent doc is right. However, all
sample
codes use "by value". Moreover, if the most recent doc was right, then
passing
by value should fail since the values are zero or close to zero and are
not
valid addresses.
Thanks
-Thierry