|
@@ -88,7 +88,7 @@ void chansrc_free(CHANSRC **purl) {
|
88
|
88
|
}
|
89
|
89
|
};
|
90
|
90
|
|
91
|
|
-void chansrc_add(CHANNEL *c, char *src) {
|
|
91
|
+void chansrc_add(CHANNEL *c, const char *src) {
|
92
|
92
|
if (c->num_src >= MAX_CHANNEL_SOURCES-1)
|
93
|
93
|
return;
|
94
|
94
|
c->sources[c->num_src] = strdup(src);
|
|
@@ -121,15 +121,27 @@ void chansrc_set(CHANNEL *c, uint8_t src_id) {
|
121
|
121
|
|
122
|
122
|
|
123
|
123
|
|
124
|
|
-CHANNEL *channel_new(int service_id, int is_radio, char *id, char *name, char *source) {
|
|
124
|
+CHANNEL *channel_new(int service_id, int is_radio, const char *id, const char *name, const char *source, int channel_index){
|
|
125
|
+
|
|
126
|
+ if (channel_index<=0 || channel_index>=256)
|
|
127
|
+ {
|
|
128
|
+
|
|
129
|
+ LOGf("CONFIG: Error channel_new invalid index %d\n", channel_index);
|
|
130
|
+ return NULL;
|
|
131
|
+ }
|
|
132
|
+ //LOGf("CONFIG: ------------------channel_new() serviceid %d id %s name %s source %s index %d\n", service_id, id, name , source , channel_index);
|
|
133
|
+
|
125
|
134
|
CHANNEL *c = calloc(1, sizeof(CHANNEL));
|
126
|
135
|
c->service_id = service_id;
|
127
|
136
|
c->radio = is_radio;
|
128
|
|
- c->base_pid = service_id * 32; // The first pid is saved for PMT
|
|
137
|
+ c->index = channel_index;
|
|
138
|
+ c->base_pid = c->index * 32; // The first pid is saved for PMT , channel_index must > 0
|
129
|
139
|
c->pmt_pid = c->base_pid; // The first pid is saved for PMT
|
130
|
140
|
c->id = strdup(id);
|
131
|
141
|
c->name = strdup(name);
|
132
|
142
|
chansrc_add(c, source);
|
|
143
|
+
|
|
144
|
+
|
133
|
145
|
return c;
|
134
|
146
|
}
|
135
|
147
|
|