mirror of
https://github.com/DigitalDevices/dddvb.git
synced 2023-10-10 13:37:43 +02:00
Merge branch 'internal' of https://github.com/DigitalDevices/internal_dddvb into internal
This commit is contained in:
commit
e974925430
@ -81,12 +81,24 @@ int mci_cmd(int dev, struct mci_command *cmd)
|
|||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
struct ddb_mci_msg msg;
|
struct ddb_mci_msg msg;
|
||||||
|
uint8_t status;
|
||||||
|
|
||||||
msg.link = 0;
|
msg.link = 0;
|
||||||
memcpy(&msg.cmd, cmd, sizeof(msg.cmd));
|
memcpy(&msg.cmd, cmd, sizeof(msg.cmd));
|
||||||
ret = ioctl(dev, IOCTL_DDB_MCI_CMD, &msg);
|
ret = ioctl(dev, IOCTL_DDB_MCI_CMD, &msg);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
printf("mci_cmd error %d\n", errno);
|
dprintf(2, "mci_cmd error %d\n", errno);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
status = msg.res.status;
|
||||||
|
if (status == MCI_STATUS_OK)
|
||||||
|
return ret;
|
||||||
|
if (status == MCI_STATUS_UNSUPPORTED) {
|
||||||
|
dprintf(2, "Unsupported MCI command\n");
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
if (status == MCI_STATUS_INVALID_PARAMETER) {
|
||||||
|
dprintf(2, "Invalid MCI parameters\n");
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
@ -145,7 +157,7 @@ void output_cb(void *priv, char *par, char *val)
|
|||||||
} else
|
} else
|
||||||
printf("invalid connector\n");
|
printf("invalid connector\n");
|
||||||
} else if (!strcasecmp(par, "power")) {
|
} else if (!strcasecmp(par, "power")) {
|
||||||
mc->output.mod_setup_output.channel_power = strtol(val, NULL, 10);
|
mc->output.mod_setup_output.channel_power = (uint32_t) (strtod(val, NULL) * 100.0);
|
||||||
} else if (!strcasecmp(par, "channels")) {
|
} else if (!strcasecmp(par, "channels")) {
|
||||||
mc->output.mod_setup_output.num_channels = strtol(val, NULL, 10);
|
mc->output.mod_setup_output.num_channels = strtol(val, NULL, 10);
|
||||||
}else if (!strcasecmp(par, "unit")) {
|
}else if (!strcasecmp(par, "unit")) {
|
||||||
@ -168,16 +180,16 @@ void channels_cb(void *priv, char *par, char *val)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (!strcasecmp(par, "frequency")) {
|
if (!strcasecmp(par, "frequency")) {
|
||||||
mc->channels.mod_setup_channels[0].frequency = strtol(val, NULL, 10);
|
mc->channels.mod_setup_channels[0].frequency = (uint32_t) (strtod(val, NULL) * 1000000.0);
|
||||||
printf("frequency = %u\n", mc->channels.mod_setup_channels[0].frequency);
|
printf("frequency = %u\n", mc->channels.mod_setup_channels[0].frequency);
|
||||||
} else if (!strcasecmp(par, "channels")) {
|
} else if (!strcasecmp(par, "channels")) {
|
||||||
mc->channels.mod_setup_channels[0].num_channels = strtol(val, NULL, 10);
|
mc->channels.mod_setup_channels[0].num_channels = strtol(val, NULL, 10);
|
||||||
} else if (!strcasecmp(par, "standard")) {
|
} else if (!strcasecmp(par, "standard")) {
|
||||||
mc->channels.mod_setup_channels[0].standard = strtol(val, NULL, 10);
|
mc->channels.mod_setup_channels[0].standard = strtol(val, NULL, 10);
|
||||||
} else if (!strcasecmp(par, "offset")) {
|
} else if (!strcasecmp(par, "offset")) {
|
||||||
mc->channels.mod_setup_channels[0].offset = strtol(val, NULL, 10);
|
mc->channels.mod_setup_channels[0].offset = (uint32_t) (strtod(val, NULL) * 1000000.0);
|
||||||
} else if (!strcasecmp(par, "bandwidth")) {
|
} else if (!strcasecmp(par, "bandwidth")) {
|
||||||
mc->channels.mod_setup_channels[0].bandwidth = strtol(val, NULL, 10);
|
mc->channels.mod_setup_channels[0].bandwidth = (uint32_t) (strtod(val, NULL) * 1000000.0);
|
||||||
mc->channels.mod_setup_channels[0].offset =
|
mc->channels.mod_setup_channels[0].offset =
|
||||||
mc->channels.mod_setup_channels[0].bandwidth / 2;
|
mc->channels.mod_setup_channels[0].bandwidth / 2;
|
||||||
} else
|
} else
|
||||||
@ -200,7 +212,7 @@ void streams_cb(void *priv, char *par, char *val)
|
|||||||
} else if (!strcasecmp(par, "stream_format")) {
|
} else if (!strcasecmp(par, "stream_format")) {
|
||||||
mc->stream.mod_setup_stream.stream_format = strtol(val, NULL, 10);
|
mc->stream.mod_setup_stream.stream_format = strtol(val, NULL, 10);
|
||||||
} else if (!strcasecmp(par, "symbol_rate")) {
|
} else if (!strcasecmp(par, "symbol_rate")) {
|
||||||
mc->stream.mod_setup_stream.symbol_rate = strtol(val, NULL, 10);
|
mc->stream.mod_setup_stream.symbol_rate = (uint32_t) (strtod(val, NULL) * 1000000.0);
|
||||||
} else if (!strcasecmp(par, "stream")) {
|
} else if (!strcasecmp(par, "stream")) {
|
||||||
mc->stream.mod_stream = strtol(val, NULL, 10);
|
mc->stream.mod_stream = strtol(val, NULL, 10);
|
||||||
printf("set stream %u to channel %u\n", mc->stream.mod_stream, mc->stream.mod_channel);
|
printf("set stream %u to channel %u\n", mc->stream.mod_stream, mc->stream.mod_channel);
|
||||||
@ -232,6 +244,7 @@ int main(int argc, char*argv[])
|
|||||||
static struct option long_options[] = {
|
static struct option long_options[] = {
|
||||||
{"device", required_argument, 0, 'd'},
|
{"device", required_argument, 0, 'd'},
|
||||||
{"config", required_argument, 0, 'c'},
|
{"config", required_argument, 0, 'c'},
|
||||||
|
{"help", no_argument, 0, 'h'},
|
||||||
{0, 0, 0, 0}
|
{0, 0, 0, 0}
|
||||||
};
|
};
|
||||||
c = getopt_long(argc, argv, "d:c:",
|
c = getopt_long(argc, argv, "d:c:",
|
||||||
@ -245,6 +258,9 @@ int main(int argc, char*argv[])
|
|||||||
case 'c':
|
case 'c':
|
||||||
configname = optarg;
|
configname = optarg;
|
||||||
break;
|
break;
|
||||||
|
case 'h':
|
||||||
|
dprintf(2, "modconfig [-d device_number] [-c config_file]\n");
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -255,8 +271,10 @@ int main(int argc, char*argv[])
|
|||||||
}
|
}
|
||||||
snprintf(fn, 127, "/dev/ddbridge/card%u", device);
|
snprintf(fn, 127, "/dev/ddbridge/card%u", device);
|
||||||
fd = open(fn, O_RDWR);
|
fd = open(fn, O_RDWR);
|
||||||
if (fd < 0)
|
if (fd < 0) {
|
||||||
|
dprintf(2, "Could not open %s\n", fn);
|
||||||
return -1;
|
return -1;
|
||||||
|
}
|
||||||
mc.fd = fd;
|
mc.fd = fd;
|
||||||
parse(configname, "output", (void *) &mc, output_cb);
|
parse(configname, "output", (void *) &mc, output_cb);
|
||||||
if (mc.set_output)
|
if (mc.set_output)
|
||||||
|
@ -1,22 +1,51 @@
|
|||||||
[output]
|
[output]
|
||||||
|
# connector = OFF, SMA or F
|
||||||
connector = F
|
connector = F
|
||||||
|
# number of total channels to be used at the same time
|
||||||
|
# use lower number to have fewer channels but stronger signal per channel
|
||||||
channels = 16
|
channels = 16
|
||||||
|
# unit of power in DBUV or DBM
|
||||||
unit = DBUV
|
unit = DBUV
|
||||||
power = 5000
|
# power output in units of above unit
|
||||||
|
power = 50.0
|
||||||
|
|
||||||
|
|
||||||
|
# define channels:
|
||||||
|
# channels are frequency slots to which a stream (mod0, mod1 ...) can be assigned
|
||||||
|
|
||||||
[channels]
|
[channels]
|
||||||
|
# standard: 0 = generic, 1 = DVB-T 8MHz, 2 = DVB-T 7 MHz, 3 = DVB-T 6 MHz
|
||||||
standard = 1
|
standard = 1
|
||||||
|
|
||||||
|
# numbers of channels to allocate, starting from frequency below
|
||||||
|
# this defines 25 channels at 474, 474+8, 474+16, etc. Mhz
|
||||||
channels = 25
|
channels = 25
|
||||||
frequency = 474000000
|
# frequency of channel 0, following channels are spaced according to set standard
|
||||||
|
frequency = 474.0
|
||||||
|
|
||||||
|
|
||||||
[streams]
|
[streams]
|
||||||
|
# number of streams depends on the card hardware
|
||||||
|
# streams correspond to devices mod0, mod1, ...
|
||||||
|
# channels are defined above in channels section
|
||||||
|
|
||||||
|
# 0 = 1/32, 1 = 1/16, 2 = 1/8, 3 = 1/4
|
||||||
guard_interval = 0
|
guard_interval = 0
|
||||||
|
# 0 = 2K, 1 = 8K (2K not yet supported)
|
||||||
fft_size = 1
|
fft_size = 1
|
||||||
|
|
||||||
|
# all following streams will be set according to the last set other parameters
|
||||||
|
|
||||||
|
# example:
|
||||||
|
# this would set mod 1 to 474 MHz and mod0 to 482 MHz (474 + 8 MHz)
|
||||||
|
# both with guard interval 1/32 and 8K FFT
|
||||||
|
# and mod2 to 490MHz, guard interval 1/16 and 8K FFT
|
||||||
channel = 1
|
channel = 1
|
||||||
stream = 0
|
stream = 0
|
||||||
|
#
|
||||||
channel = 0
|
channel = 0
|
||||||
stream = 1
|
stream = 1
|
||||||
|
#
|
||||||
|
guard_interval = 1
|
||||||
|
channel = 2
|
||||||
|
stream = 2
|
||||||
|
Loading…
Reference in New Issue
Block a user