aboutsummaryrefslogtreecommitdiffstats
path: root/util/szap/czap.c
diff options
context:
space:
mode:
Diffstat (limited to 'util/szap/czap.c')
-rw-r--r--util/szap/czap.c49
1 files changed, 23 insertions, 26 deletions
diff --git a/util/szap/czap.c b/util/szap/czap.c
index e04ed4b..f49c524 100644
--- a/util/szap/czap.c
+++ b/util/szap/czap.c
@@ -180,32 +180,30 @@ int parse(const char *fname, int list_channels, int chan_no, const char *channel
}
-static
-int setup_frontend(int fe_fd, struct dvb_frontend_parameters *frontend)
+static int setup_frontend(int fe_fd, struct dvb_frontend_parameters *frontend)
{
- struct dvb_frontend_info fe_info;
+ int ret;
+ uint32_t mstd;
- if (ioctl(fe_fd, FE_GET_INFO, &fe_info) < 0) {
- PERROR ("ioctl FE_GET_INFO failed");
+ if (check_frontend(fe_fd, FE_QAM, &mstd) < 0) {
+ close(fe_fd);
return -1;
}
-
- if (fe_info.type != FE_QAM) {
- ERROR ("frontend device is not a QAM (DVB-C) device");
+ ret = dvbfe_set_delsys(fe_fd, SYS_DVBC_ANNEX_A);
+ if (ret) {
+ PERROR("SET Delsys failed");
return -1;
}
-
if (ioctl(fe_fd, FE_SET_FRONTEND, frontend) < 0) {
PERROR ("ioctl FE_SET_FRONTEND failed");
return -1;
}
-
return 0;
}
static
-int check_frontend (int fe_fd, int human_readable)
+int monitor_frontend (int fe_fd, int human_readable)
{
fe_status_t status;
uint16_t snr, signal;
@@ -242,19 +240,18 @@ int check_frontend (int fe_fd, int human_readable)
static const char *usage =
- "\nusage: %s [options] -l\n"
- " list known channels\n"
- " %s [options] {-n channel-number|channel_name}\n"
- " zap to channel via number or full name (case insensitive)\n"
- " -a number : use given adapter (default 0)\n"
- " -f number : use given frontend (default 0)\n"
- " -d number : use given demux (default 0)\n"
- " -c file : read channels list from 'file'\n"
- " -x : exit after tuning\n"
- " -H : human readable output\n"
- " -r : set up /dev/dvb/adapterX/dvr0 for TS recording\n"
- " -p : add pat and pmt to TS recording (implies -r)\n"
-;
+ "\nusage: %s [options] -l\n"
+ " list known channels\n"
+ " %s [options] {-n channel-number|channel_name}\n"
+ " zap to channel via number or full name (case insensitive)\n"
+ " -a number : use given adapter (default 0)\n"
+ " -f number : use given frontend (default 0)\n"
+ " -d number : use given demux (default 0)\n"
+ " -c file : read channels list from 'file'\n"
+ " -x : exit after tuning\n"
+ " -H : human readable output\n"
+ " -r : set up /dev/dvb/adapterX/dvr0 for TS recording\n"
+ " -p : add pat and pmt to TS recording (implies -r)\n";
int main(int argc, char **argv)
{
@@ -348,7 +345,7 @@ int main(int argc, char **argv)
if (list_channels)
return 0;
- if ((frontend_fd = open(FRONTEND_DEV, O_RDWR)) < 0) {
+ if ((frontend_fd = open(FRONTEND_DEV, O_RDWR | O_NONBLOCK)) < 0) {
PERROR("failed opening '%s'", FRONTEND_DEV);
return -1;
}
@@ -394,7 +391,7 @@ int main(int argc, char **argv)
if (set_pesfilter (audio_fd, apid, DMX_PES_AUDIO, dvr) < 0)
return -1;
- check_frontend (frontend_fd, human_readable);
+ monitor_frontend (frontend_fd, human_readable);
close (pat_fd);
close (pmt_fd);