Add support for the '-a' command line option. Used to specify which DVB adapters to use.
This commit is contained in:
parent
8211a3a19b
commit
1264b7b228
4 changed files with 32 additions and 7 deletions
|
@ -22,9 +22,9 @@
|
|||
#include "dvb_support.h"
|
||||
|
||||
void
|
||||
dvb_init(void)
|
||||
dvb_init(uint32_t adapter_mask)
|
||||
{
|
||||
dvb_adapter_init();
|
||||
dvb_adapter_init(adapter_mask);
|
||||
dvb_conversion_init();
|
||||
|
||||
}
|
||||
|
|
|
@ -198,12 +198,12 @@ typedef struct th_dvb_adapter {
|
|||
extern struct th_dvb_adapter_queue dvb_adapters;
|
||||
extern struct th_dvb_mux_instance_tree dvb_muxes;
|
||||
|
||||
void dvb_init(void);
|
||||
void dvb_init(uint32_t adapter_mask);
|
||||
|
||||
/**
|
||||
* DVB Adapter
|
||||
*/
|
||||
void dvb_adapter_init(void);
|
||||
void dvb_adapter_init(uint32_t adapter_mask);
|
||||
|
||||
void dvb_adapter_mux_scanner(void *aux);
|
||||
|
||||
|
|
|
@ -272,7 +272,7 @@ tda_add(const char *path)
|
|||
*
|
||||
*/
|
||||
void
|
||||
dvb_adapter_init(void)
|
||||
dvb_adapter_init(uint32_t adapter_mask)
|
||||
{
|
||||
char path[200];
|
||||
htsmsg_t *l, *c;
|
||||
|
@ -284,9 +284,11 @@ dvb_adapter_init(void)
|
|||
TAILQ_INIT(&dvb_adapters);
|
||||
|
||||
for(i = 0; i < 32; i++) {
|
||||
if ((1 << i) & adapter_mask) {
|
||||
snprintf(path, sizeof(path), "/dev/dvb/adapter%d", i);
|
||||
tda_add(path);
|
||||
}
|
||||
}
|
||||
|
||||
l = hts_settings_load("dvbadapters");
|
||||
if(l != NULL) {
|
||||
|
|
27
src/main.c
27
src/main.c
|
@ -160,6 +160,7 @@ usage(const char *argv0)
|
|||
printf("HTS Tvheadend %s\n", htsversion_full);
|
||||
printf("usage: %s [options]\n", argv0);
|
||||
printf("\n");
|
||||
printf(" -a <adapters> Use only DVB adapters specified (csv)\n");
|
||||
printf(" -f Fork and daemonize\n");
|
||||
printf(" -u <username> Run as user <username>, only works with -f\n");
|
||||
printf(" -g <groupname> Run as group <groupname>, only works with -f\n");
|
||||
|
@ -234,9 +235,31 @@ main(int argc, char **argv)
|
|||
const char *homedir = NULL;
|
||||
const char *rawts_input = NULL;
|
||||
const char *join_transport = NULL;
|
||||
char *p, *endp;
|
||||
uint32_t adapter_mask = 0xffffffff;
|
||||
|
||||
while((c = getopt(argc, argv, "fu:g:c:Chdr:j:")) != -1) {
|
||||
while((c = getopt(argc, argv, "a:fu:g:c:Chdr:j:")) != -1) {
|
||||
switch(c) {
|
||||
case 'a':
|
||||
adapter_mask = 0x0;
|
||||
p = strtok(optarg, ",");
|
||||
if (p != NULL) {
|
||||
do {
|
||||
int adapter = strtol(p, &endp, 10);
|
||||
if (*endp != 0 || adapter < 0 || adapter > 31) {
|
||||
fprintf(stderr, "Invalid adapter number '%s'\n", p);
|
||||
return 1;
|
||||
}
|
||||
adapter_mask |= (1 << adapter);
|
||||
} while ((p = strtok(NULL, ",")) != NULL);
|
||||
if (adapter_mask == 0x0) {
|
||||
fprintf(stderr, "No adapters specified!\n");
|
||||
return 1;
|
||||
}
|
||||
} else {
|
||||
usage(argv[0]);
|
||||
}
|
||||
break;
|
||||
case 'f':
|
||||
forkaway = 1;
|
||||
break;
|
||||
|
@ -337,7 +360,7 @@ main(int argc, char **argv)
|
|||
|
||||
tcp_server_init();
|
||||
|
||||
dvb_init();
|
||||
dvb_init(adapter_mask);
|
||||
|
||||
iptv_input_init();
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue