mirror of
https://github.com/DigitalDevices/dddvb.git
synced 2023-10-10 13:37:43 +02:00
cleanup tables and add license dump
This commit is contained in:
parent
4b09ad7e42
commit
73e8b9943e
134
apps/modconfig.c
134
apps/modconfig.c
@ -85,91 +85,149 @@ struct param_table_entry {
|
|||||||
struct param_table_entry mod_standard_table[] = {
|
struct param_table_entry mod_standard_table[] = {
|
||||||
{ .name = "0", .value = MOD_STANDARD_GENERIC },
|
{ .name = "0", .value = MOD_STANDARD_GENERIC },
|
||||||
{ .name = "GENERIC", .value = MOD_STANDARD_GENERIC },
|
{ .name = "GENERIC", .value = MOD_STANDARD_GENERIC },
|
||||||
|
|
||||||
{ .name = "1", .value = MOD_STANDARD_DVBT_8 },
|
{ .name = "1", .value = MOD_STANDARD_DVBT_8 },
|
||||||
{ .name = "DVBT_8", .value = MOD_STANDARD_DVBT_8 },
|
{ .name = "DVBT_8", .value = MOD_STANDARD_DVBT_8 },
|
||||||
{ .name = "DVBT2_8", .value = MOD_STANDARD_DVBT_8 },
|
{ .name = "DVBT2_8", .value = MOD_STANDARD_DVBT_8 },
|
||||||
|
|
||||||
{ .name = "2", .value = MOD_STANDARD_DVBT_7 },
|
{ .name = "2", .value = MOD_STANDARD_DVBT_7 },
|
||||||
{ .name = "DVBT_7", .value = MOD_STANDARD_DVBT_7 },
|
{ .name = "DVBT_7", .value = MOD_STANDARD_DVBT_7 },
|
||||||
{ .name = "DVBT2_7", .value = MOD_STANDARD_DVBT_7 },
|
{ .name = "DVBT2_7", .value = MOD_STANDARD_DVBT_7 },
|
||||||
|
|
||||||
{ .name = "3", .value = MOD_STANDARD_DVBT_6 },
|
{ .name = "3", .value = MOD_STANDARD_DVBT_6 },
|
||||||
{ .name = "DVBT_6", .value = MOD_STANDARD_DVBT_6 },
|
{ .name = "DVBT_6", .value = MOD_STANDARD_DVBT_6 },
|
||||||
{ .name = "DVBT2_6", .value = MOD_STANDARD_DVBT_6 },
|
{ .name = "DVBT2_6", .value = MOD_STANDARD_DVBT_6 },
|
||||||
|
|
||||||
{ .name = "4", .value = MOD_STANDARD_DVBT_5 },
|
{ .name = "4", .value = MOD_STANDARD_DVBT_5 },
|
||||||
{ .name = "DVBT_5", .value = MOD_STANDARD_DVBT_5 },
|
{ .name = "DVBT_5", .value = MOD_STANDARD_DVBT_5 },
|
||||||
{ .name = "DVBT2_5", .value = MOD_STANDARD_DVBT_5 },
|
{ .name = "DVBT2_5", .value = MOD_STANDARD_DVBT_5 },
|
||||||
|
|
||||||
{ .name = "8", .value = MOD_STANDARD_DVBC_8 },
|
{ .name = "8", .value = MOD_STANDARD_DVBC_8 },
|
||||||
{ .name = "DVBC_8", .value = MOD_STANDARD_DVBC_8 },
|
{ .name = "DVBC_8", .value = MOD_STANDARD_DVBC_8 },
|
||||||
|
|
||||||
{ .name = "9", .value = MOD_STANDARD_DVBC_7 },
|
{ .name = "9", .value = MOD_STANDARD_DVBC_7 },
|
||||||
{ .name = "DVBC_7", .value = MOD_STANDARD_DVBC_7 },
|
{ .name = "DVBC_7", .value = MOD_STANDARD_DVBC_7 },
|
||||||
|
|
||||||
{ .name = "10", .value = MOD_STANDARD_DVBC_6 },
|
{ .name = "10", .value = MOD_STANDARD_DVBC_6 },
|
||||||
{ .name = "DVBC_6", .value = MOD_STANDARD_DVBC_6 },
|
{ .name = "DVBC_6", .value = MOD_STANDARD_DVBC_6 },
|
||||||
|
|
||||||
|
{ .name = "11", .value = MOD_STANDARD_J83B_QAM64 },
|
||||||
|
{ .name = "J83B_QAM64", .value = MOD_STANDARD_J83B_QAM64 },
|
||||||
|
|
||||||
|
{ .name = "12", .value = MOD_STANDARD_J83B_QAM256 },
|
||||||
|
{ .name = "J83B_QAM256", .value = MOD_STANDARD_J83B_QAM256 },
|
||||||
|
|
||||||
|
{ .name = "13", .value = MOD_STANDARD_ISDBC_QAM64 },
|
||||||
|
{ .name = "ISDBC_QAM64", .value = MOD_STANDARD_ISDBC_QAM64 },
|
||||||
|
{ .name = "J83C_QAM64", .value = MOD_STANDARD_ISDBC_QAM64 },
|
||||||
|
|
||||||
|
{ .name = "14", .value = MOD_STANDARD_ISDBC_QAM256 },
|
||||||
|
{ .name = "ISDBC_QAM256", .value = MOD_STANDARD_ISDBC_QAM256 },
|
||||||
|
{ .name = "J83C_QAM256", .value = MOD_STANDARD_ISDBC_QAM256 },
|
||||||
|
|
||||||
{ .name = NULL, .value = 0 }
|
{ .name = NULL, .value = 0 }
|
||||||
};
|
};
|
||||||
|
|
||||||
struct param_table_entry stream_format_table[] = {
|
struct param_table_entry stream_format_table[] = {
|
||||||
{ .name = "default", .value = MOD_FORMAT_DEFAULT },
|
|
||||||
{ .name = "IQ16", .value = MOD_FORMAT_IQ16 },
|
|
||||||
{ .name = "IQ8", .value = MOD_FORMAT_IQ8 },
|
|
||||||
{ .name = "IDX8", .value = MOD_FORMAT_IDX8 },
|
|
||||||
{ .name = "TS", .value = MOD_FORMAT_TS },
|
|
||||||
{ .name = "0", .value = MOD_FORMAT_DEFAULT },
|
{ .name = "0", .value = MOD_FORMAT_DEFAULT },
|
||||||
|
{ .name = "default", .value = MOD_FORMAT_DEFAULT },
|
||||||
|
|
||||||
{ .name = "1", .value = MOD_FORMAT_IQ16 },
|
{ .name = "1", .value = MOD_FORMAT_IQ16 },
|
||||||
|
{ .name = "IQ16", .value = MOD_FORMAT_IQ16 },
|
||||||
|
|
||||||
{ .name = "2", .value = MOD_FORMAT_IQ8 },
|
{ .name = "2", .value = MOD_FORMAT_IQ8 },
|
||||||
|
{ .name = "IQ8", .value = MOD_FORMAT_IQ8 },
|
||||||
|
|
||||||
{ .name = "3", .value = MOD_FORMAT_IDX8 },
|
{ .name = "3", .value = MOD_FORMAT_IDX8 },
|
||||||
|
{ .name = "IDX8", .value = MOD_FORMAT_IDX8 },
|
||||||
|
|
||||||
{ .name = "4", .value = MOD_FORMAT_TS },
|
{ .name = "4", .value = MOD_FORMAT_TS },
|
||||||
|
{ .name = "TS", .value = MOD_FORMAT_TS },
|
||||||
|
|
||||||
{ .name = NULL, .value = 0 }
|
{ .name = NULL, .value = 0 }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
struct param_table_entry guard_interval_table[] = {
|
struct param_table_entry guard_interval_table[] = {
|
||||||
{ .name = "1/32", .value = MOD_DVBT_GI_1_32 },
|
|
||||||
{ .name = "1/16", .value = MOD_DVBT_GI_1_16 },
|
|
||||||
{ .name = "1/8", .value = MOD_DVBT_GI_1_8 },
|
|
||||||
{ .name = "1/4", .value = MOD_DVBT_GI_1_4 },
|
|
||||||
{ .name = "0", .value = MOD_DVBT_GI_1_32 },
|
{ .name = "0", .value = MOD_DVBT_GI_1_32 },
|
||||||
|
{ .name = "1/32", .value = MOD_DVBT_GI_1_32 },
|
||||||
|
|
||||||
{ .name = "1", .value = MOD_DVBT_GI_1_16 },
|
{ .name = "1", .value = MOD_DVBT_GI_1_16 },
|
||||||
|
{ .name = "1/16", .value = MOD_DVBT_GI_1_16 },
|
||||||
|
|
||||||
{ .name = "2", .value = MOD_DVBT_GI_1_8 },
|
{ .name = "2", .value = MOD_DVBT_GI_1_8 },
|
||||||
|
{ .name = "1/8", .value = MOD_DVBT_GI_1_8 },
|
||||||
|
|
||||||
{ .name = "3", .value = MOD_DVBT_GI_1_4 },
|
{ .name = "3", .value = MOD_DVBT_GI_1_4 },
|
||||||
|
{ .name = "1/4", .value = MOD_DVBT_GI_1_4 },
|
||||||
{ .name = NULL, .value = 0 }
|
{ .name = NULL, .value = 0 }
|
||||||
};
|
};
|
||||||
|
|
||||||
struct param_table_entry puncture_rate_table[] = {
|
struct param_table_entry puncture_rate_table[] = {
|
||||||
{ .name = "1/2", .value = MOD_DVBT_PR_1_2 },
|
|
||||||
{ .name = "2/3", .value = MOD_DVBT_PR_2_3 },
|
|
||||||
{ .name = "3/4", .value = MOD_DVBT_PR_3_4 },
|
|
||||||
{ .name = "5/6", .value = MOD_DVBT_PR_5_6 },
|
|
||||||
{ .name = "7/8", .value = MOD_DVBT_PR_7_8 },
|
|
||||||
{ .name = "1", .value = MOD_DVBT_PR_1_2 },
|
{ .name = "1", .value = MOD_DVBT_PR_1_2 },
|
||||||
|
{ .name = "1/2", .value = MOD_DVBT_PR_1_2 },
|
||||||
|
|
||||||
{ .name = "2", .value = MOD_DVBT_PR_2_3 },
|
{ .name = "2", .value = MOD_DVBT_PR_2_3 },
|
||||||
|
{ .name = "2/3", .value = MOD_DVBT_PR_2_3 },
|
||||||
|
|
||||||
{ .name = "3", .value = MOD_DVBT_PR_3_4 },
|
{ .name = "3", .value = MOD_DVBT_PR_3_4 },
|
||||||
|
{ .name = "3/4", .value = MOD_DVBT_PR_3_4 },
|
||||||
|
|
||||||
{ .name = "5", .value = MOD_DVBT_PR_5_6 },
|
{ .name = "5", .value = MOD_DVBT_PR_5_6 },
|
||||||
|
{ .name = "5/6", .value = MOD_DVBT_PR_5_6 },
|
||||||
|
|
||||||
{ .name = "7", .value = MOD_DVBT_PR_7_8 },
|
{ .name = "7", .value = MOD_DVBT_PR_7_8 },
|
||||||
|
{ .name = "7/8", .value = MOD_DVBT_PR_7_8 },
|
||||||
|
|
||||||
{ .name = NULL, .value = 0 }
|
{ .name = NULL, .value = 0 }
|
||||||
};
|
};
|
||||||
|
|
||||||
struct param_table_entry dvbt_constellation_table[] = {
|
struct param_table_entry dvbt_constellation_table[] = {
|
||||||
{ .name = "0", .value = MOD_DVBT_QPSK },
|
{ .name = "0", .value = MOD_DVBT_QPSK },
|
||||||
{ .name = "qpsk", .value = MOD_DVBT_QPSK },
|
{ .name = "qpsk", .value = MOD_DVBT_QPSK },
|
||||||
|
|
||||||
{ .name = "1", .value = MOD_DVBT_16QAM },
|
{ .name = "1", .value = MOD_DVBT_16QAM },
|
||||||
{ .name = "16qam", .value = MOD_DVBT_16QAM },
|
{ .name = "16qam", .value = MOD_DVBT_16QAM },
|
||||||
{ .name = "qam16", .value = MOD_DVBT_16QAM },
|
{ .name = "qam16", .value = MOD_DVBT_16QAM },
|
||||||
|
|
||||||
{ .name = "2", .value = MOD_DVBT_64QAM },
|
{ .name = "2", .value = MOD_DVBT_64QAM },
|
||||||
{ .name = "64qam", .value = MOD_DVBT_64QAM },
|
{ .name = "64qam", .value = MOD_DVBT_64QAM },
|
||||||
{ .name = "qam64", .value = MOD_DVBT_64QAM },
|
{ .name = "qam64", .value = MOD_DVBT_64QAM },
|
||||||
|
|
||||||
{ .name = NULL, .value = 0 }
|
{ .name = NULL, .value = 0 }
|
||||||
};
|
};
|
||||||
|
|
||||||
struct param_table_entry qam_modulation_table[] = {
|
struct param_table_entry qam_modulation_table[] = {
|
||||||
{ .name = "0", .value = MOD_QAM_DVBC_16 },
|
{ .name = "0", .value = MOD_QAM_DVBC_16 },
|
||||||
{ .name = "qam_dvbc_16", .value = MOD_QAM_DVBC_16 },
|
{ .name = "qam_dvbc_16", .value = MOD_QAM_DVBC_16 },
|
||||||
|
|
||||||
{ .name = "1", .value = MOD_QAM_DVBC_32 },
|
{ .name = "1", .value = MOD_QAM_DVBC_32 },
|
||||||
{ .name = "qam_dvbc_32", .value = MOD_QAM_DVBC_32 },
|
{ .name = "qam_dvbc_32", .value = MOD_QAM_DVBC_32 },
|
||||||
|
|
||||||
{ .name = "2", .value = MOD_QAM_DVBC_64 },
|
{ .name = "2", .value = MOD_QAM_DVBC_64 },
|
||||||
{ .name = "qam_dvbc_64", .value = MOD_QAM_DVBC_64 },
|
{ .name = "qam_dvbc_64", .value = MOD_QAM_DVBC_64 },
|
||||||
|
|
||||||
{ .name = "3", .value = MOD_QAM_DVBC_128 },
|
{ .name = "3", .value = MOD_QAM_DVBC_128 },
|
||||||
{ .name = "qam_dvbc_128", .value = MOD_QAM_DVBC_128 },
|
{ .name = "qam_dvbc_128", .value = MOD_QAM_DVBC_128 },
|
||||||
|
|
||||||
{ .name = "4", .value = MOD_QAM_DVBC_256 },
|
{ .name = "4", .value = MOD_QAM_DVBC_256 },
|
||||||
{ .name = "qam_dvbc_256", .value = MOD_QAM_DVBC_256 },
|
{ .name = "qam_dvbc_256", .value = MOD_QAM_DVBC_256 },
|
||||||
|
|
||||||
|
{ .name = "5", .value = MOD_QAM_J83B_64 },
|
||||||
|
{ .name = "qam_j83b_64", .value = MOD_QAM_J83B_64 },
|
||||||
|
|
||||||
|
{ .name = "6", .value = MOD_QAM_DVBC_256 },
|
||||||
|
{ .name = "qam_j83b_256", .value = MOD_QAM_J83B_256 },
|
||||||
|
|
||||||
|
{ .name = "7", .value = MOD_QAM_GENERIC },
|
||||||
|
{ .name = "qam_generic", .value = MOD_QAM_GENERIC },
|
||||||
|
|
||||||
|
{ .name = "8", .value = MOD_QAM_ISDBC_64 },
|
||||||
|
{ .name = "qam_isdbc_64", .value = MOD_QAM_ISDBC_64 },
|
||||||
|
|
||||||
|
{ .name = "9", .value = MOD_QAM_ISDBC_256 },
|
||||||
|
{ .name = "qam_isdbc_256", .value = MOD_QAM_ISDBC_256 },
|
||||||
|
|
||||||
{ .name = NULL, .value = 0 }
|
{ .name = NULL, .value = 0 }
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -180,6 +238,7 @@ int parse_param(char *val, struct param_table_entry *table, int *value) {
|
|||||||
while (table->name) {
|
while (table->name) {
|
||||||
if( !strcasecmp(val,table->name)) {
|
if( !strcasecmp(val,table->name)) {
|
||||||
*value = table->value;
|
*value = table->value;
|
||||||
|
printf("%s=%u\n", val, *value);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
table++;
|
table++;
|
||||||
@ -190,14 +249,34 @@ int parse_param(char *val, struct param_table_entry *table, int *value) {
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void dump(const uint8_t *b, int l)
|
||||||
|
{
|
||||||
|
int i, j;
|
||||||
|
|
||||||
|
for (j = 0; j < l; j += 16, b += 16) {
|
||||||
|
for (i = 0; i < 16; i++)
|
||||||
|
if (i + j < l)
|
||||||
|
printf("%02x ", b[i]);
|
||||||
|
else
|
||||||
|
printf(" ");
|
||||||
|
printf(" | ");
|
||||||
|
for (i = 0; i < 16; i++)
|
||||||
|
if (i + j < l)
|
||||||
|
putchar((b[i] > 31 && b[i] < 127) ? b[i] : '.');
|
||||||
|
printf("\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
int mci_cmd(int dev, struct mci_command *cmd)
|
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;
|
uint8_t status;
|
||||||
|
|
||||||
|
memset(&msg, 0, sizeof(msg));
|
||||||
msg.link = 0;
|
msg.link = 0;
|
||||||
memcpy(&msg.cmd, cmd, sizeof(msg.cmd));
|
memcpy(&msg.cmd, cmd, sizeof(msg.cmd));
|
||||||
|
dump((uint8_t *) &msg.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) {
|
||||||
dprintf(2, "mci_cmd error %d\n", errno);
|
dprintf(2, "mci_cmd error %d\n", errno);
|
||||||
@ -304,7 +383,8 @@ void channels_cb(void *priv, char *par, char *val)
|
|||||||
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")) {
|
||||||
if (!parse_param(val,mod_standard_table, &value))
|
if (!parse_param(val,mod_standard_table, &value))
|
||||||
mc->stream.mod_setup_channels[0].standard = value;
|
mc->channels.mod_setup_channels[0].standard = value;
|
||||||
|
printf("standard = %u\n", value);
|
||||||
} else if (!strcasecmp(par, "offset")) {
|
} else if (!strcasecmp(par, "offset")) {
|
||||||
mc->channels.mod_setup_channels[0].offset = (uint32_t) (strtod(val, NULL) * 1000000.0);
|
mc->channels.mod_setup_channels[0].offset = (uint32_t) (strtod(val, NULL) * 1000000.0);
|
||||||
} else if (!strcasecmp(par, "bandwidth")) {
|
} else if (!strcasecmp(par, "bandwidth")) {
|
||||||
@ -359,6 +439,29 @@ void streams_cb(void *priv, char *par, char *val)
|
|||||||
printf("invalid streams parameter: %s = %s\n", par, val);
|
printf("invalid streams parameter: %s = %s\n", par, val);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int mci_lic(int dev)
|
||||||
|
{
|
||||||
|
struct ddb_mci_msg msg = {
|
||||||
|
.cmd.command = CMD_EXPORT_LICENSE,
|
||||||
|
.cmd.get_bb_header.select = 0,
|
||||||
|
};
|
||||||
|
struct mci_result *res = &msg.res;
|
||||||
|
int ret;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
ret = ioctl(dev, IOCTL_DDB_MCI_CMD, &msg);
|
||||||
|
if (ret < 0) {
|
||||||
|
printf("Error: %d %d\n", ret, errno);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
if (res->bb_header.valid) {
|
||||||
|
printf("MATYPE1: %02x\n", res->bb_header.matype_1);
|
||||||
|
printf("MATYPE2: %02x\n", res->bb_header.matype_2);
|
||||||
|
}
|
||||||
|
dump(&res->license, sizeof(res->license));
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
int main(int argc, char*argv[])
|
int main(int argc, char*argv[])
|
||||||
{
|
{
|
||||||
int fd = -1;
|
int fd = -1;
|
||||||
@ -412,6 +515,7 @@ int main(int argc, char*argv[])
|
|||||||
dprintf(2, "Could not open %s\n", fn);
|
dprintf(2, "Could not open %s\n", fn);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
mci_lic(fd);
|
||||||
mc.fd = fd;
|
mc.fd = fd;
|
||||||
parse(configname, "channels", (void *) &mc, channels_cb);
|
parse(configname, "channels", (void *) &mc, channels_cb);
|
||||||
if (mc.set_channels) {
|
if (mc.set_channels) {
|
||||||
|
Loading…
Reference in New Issue
Block a user