Mercurial > pt1.oyama
diff src/recpt1.c @ 156:159a729b90eb
Specify the BS channels by transponder and slot.
author | Naoya OYAMA <naoya.oyama@gmail.com> |
---|---|
date | Mon, 10 Sep 2012 14:16:44 +0900 |
parents | 5d010d0ff6a1 |
children | 38f79bcba50d |
line wrap: on
line diff
--- a/src/recpt1.c Sun Sep 02 20:52:45 2012 +0900 +++ b/src/recpt1.c Mon Sep 10 14:16:44 2012 +0900 @@ -43,6 +43,9 @@ /* ipc message size */ #define MSGSZ 255 +#define ISDB_T_NODE_LIMIT 24 // 32:ARIB limit 24:program maximum +#define ISDB_T_SLOT_LIMIT 8 + typedef struct pt1_msgbuf { long mtype; char mtext[MSGSZ]; @@ -52,6 +55,8 @@ boolean f_exit = FALSE; struct channel_info_list *channel_list = NULL; extern struct ushare_t *ut; +char bs_channel_buf[8]; +ISDB_T_FREQ_CONV_TABLE isdb_t_conv_set = { 0, CHTYPE_SATELLITE, 0, bs_channel_buf }; /* prototypes */ int tune(char *channel, thread_data *tdata, char *device); @@ -234,6 +239,30 @@ { int lp; + if(channel[0] == 'B' && channel[1] == 'S') { + int node = 0; + int slot = 0; + char *bs_ch; + + bs_ch = channel + 2; + while(isdigit(*bs_ch)) { + node *= 10; + node += *bs_ch++ - '0'; + } + if(*bs_ch == '_' && (node&0x01) && node < ISDB_T_NODE_LIMIT) { + if(isdigit(*++bs_ch)) { + slot = *bs_ch - '0'; + if(*++bs_ch == '\0' && slot < ISDB_T_SLOT_LIMIT) { + isdb_t_conv_set.set_freq = node / 2; + isdb_t_conv_set.add_freq = slot; + sprintf(bs_channel_buf, "BS%d_%d", node, slot); + return &isdb_t_conv_set; + } + } + } + return NULL; + } + for(lp = 0; isdb_t_conv_table[lp].parm_freq != NULL; lp++) { /* return entry number in the table when strings match and * lengths are same. */