Changeset 10836
- Timestamp:
- 06/27/15 13:02:13 (9 years ago)
- Location:
- trunk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/module-dvbapi.c
r10833 r10836 1093 1093 void dvbapi_start_sdt_filter(int32_t demux_index) 1094 1094 { 1095 if(demux[demux_index].pidindex == -1)1096 { return; }1097 1098 1095 dvbapi_start_filter(demux_index, demux[demux_index].pidindex, 0x11, 0x001, 0x01, 0x42, 0xFF, 0, TYPE_SDT); 1099 1096 demux[demux_index].sdt_filter = 0; … … 3163 3160 uint8_t tag, data_length = 0, provider_name_length, service_name_length; 3164 3161 uint16_t service_id, descriptor_length, dpos; 3165 uint32_t section_length, pos, pidindex; 3162 int32_t provid, caid; 3163 uint32_t section_length, pos; 3164 int32_t pidindex; 3166 3165 char provider_name[64], service_name[64], tmp[256], srvid_line[1024];; 3167 3166 FILE *fpsave; … … 3217 3216 pidindex = demux[demux_id].pidindex; 3218 3217 3218 if (pidindex !=-1) 3219 { 3220 provid = demux[demux_id].ECMpids[pidindex].PROVID; 3221 caid = demux[demux_id].ECMpids[pidindex].CAID; 3222 } 3223 else 3224 { 3225 caid = (demux[demux_id].ECMpids[0].CAID == 0 ? NO_CAID_VALUE : demux[demux_id].ECMpids[0].CAID); 3226 provid = (demux[demux_id].ECMpids[0].PROVID == 0 ? NO_PROVID_VALUE : demux[demux_id].ECMpids[0].PROVID); 3227 } 3228 3219 3229 if(!dvbapi_extract_sdt_string(provider_name, sizeof(provider_name), buffer+pos+dpos+4, provider_name_length)) 3220 3230 { break; } … … 3227 3237 dvbapi_stop_filter(demux_id, TYPE_SDT); 3228 3238 3229 if(strlen(provider_name)) 3230 { 3231 get_providername_or_null(demux[demux_id].ECMpids[pidindex].PROVID, 3232 demux[demux_id].ECMpids[pidindex].CAID, tmp, sizeof(tmp)); 3239 if(strlen(provider_name) && (provid != NO_PROVID_VALUE && caid != NO_CAID_VALUE)) 3240 { 3241 get_providername_or_null(provid, caid, tmp, sizeof(tmp)); 3233 3242 3234 if(tmp[0] == '\0' )3243 if(tmp[0] == '\0' && provid != NO_PROVID_VALUE) 3235 3244 { 3236 3245 get_config_filename(tmp, sizeof(tmp), "oscam.provid"); … … 3238 3247 if((fpsave = fopen(tmp, "a"))) 3239 3248 { 3240 fprintf(fpsave, "\n%04X@%06X|%s|", demux[demux_id].ECMpids[pidindex].CAID, 3241 demux[demux_id].ECMpids[pidindex].PROVID, provider_name); 3249 fprintf(fpsave, "\n%04X@%06X|%s|", caid, provid, provider_name); 3242 3250 fclose(fpsave); 3243 3251 } … … 3249 3257 if(strlen(service_name)) 3250 3258 { 3251 get_servicename_or_null(cur_client(), service_id, demux[demux_id].ECMpids[pidindex].PROVID, 3252 demux[demux_id].ECMpids[pidindex].CAID, tmp, sizeof(tmp)); 3259 get_servicename_or_null(cur_client(), service_id, provid, caid, tmp, sizeof(tmp)); 3253 3260 3254 3261 if(tmp[0] == '\0') … … 3258 3265 if(!access(tmp, F_OK) && (fpsave = fopen(tmp, "a"))) 3259 3266 { 3260 dvbapi_create_srvid_line(demux_id, srvid_line, sizeof(srvid_line)); 3261 fprintf(fpsave, "\n%04X:%s|%s|||%s", service_id, srvid_line, service_name, provider_name); 3267 if(caid != NO_CAID_VALUE && provid != NO_PROVID_VALUE) 3268 { 3269 dvbapi_create_srvid_line(demux_id, srvid_line, sizeof(srvid_line)); 3270 fprintf(fpsave, "\n%04X:%s|%s|||%s", service_id, srvid_line, service_name, provider_name); 3271 } 3272 else 3273 { 3274 fprintf(fpsave, "\n%04X:%04X@%06X|%s|||%s", service_id, caid, provid, service_name, provider_name); 3275 } 3262 3276 fclose(fpsave); 3263 3277 } … … 3268 3282 if((fpsave = fopen(tmp, "a"))) 3269 3283 { 3270 dvbapi_create_srvid_line(demux_id, srvid_line, sizeof(srvid_line)); 3271 fprintf(fpsave, "\n%s:%04X|%s|%s|", srvid_line, service_id, provider_name, service_name); 3284 if(caid != NO_CAID_VALUE && provid != NO_PROVID_VALUE) 3285 { 3286 dvbapi_create_srvid_line(demux_id, srvid_line, sizeof(srvid_line)); 3287 fprintf(fpsave, "\n%s:%04X|%s|%s|", srvid_line, service_id, provider_name, service_name); 3288 } 3289 else 3290 { 3291 fprintf(fpsave, "\n%04X:%04X|%s|%s", caid, service_id, provider_name, service_name); 3292 } 3272 3293 fclose(fpsave); 3273 3294 } -
trunk/oscam-simples.c
r10804 r10836 33 33 static char *__get_servicename(struct s_client *cl, uint16_t srvid, uint32_t provid, uint16_t caid, char *buf, uint32_t buflen, bool return_unknown) 34 34 { 35 if(caid == 0) caid = NO_CAID_VALUE; 36 if(provid == 0) provid = NO_PROVID_VALUE; 37 35 38 int32_t i, j; 36 39 struct s_srvid *this, *provid_zero_match = NULL, *provid_any_match = NULL; … … 64 67 provid_zero_match = this; 65 68 66 if( 0 == provid)69 if( provid == NO_PROVID_VALUE) 67 70 { 68 71 if(cl) … … 79 82 for(j = 0; j < this->caid[i].nprovid; j++) 80 83 { 81 if(this->caid[i].provid[j] == 0)84 if(this->caid[i].provid[j] == NO_PROVID_VALUE) 82 85 { provid_zero_match = this; } 83 86 … … 99 102 if(!buf[0]) 100 103 { 101 if(provid != 0&& provid_zero_match != NULL)104 if(provid != NO_PROVID_VALUE && provid_zero_match != NULL) 102 105 { 103 106 if(cl) … … 110 113 return (buf); 111 114 } 112 else if(provid == 0&& provid_any_match != NULL)115 else if(provid == NO_PROVID_VALUE && provid_any_match != NULL) 113 116 { 114 117 if(cl)
Note:
See TracChangeset
for help on using the changeset viewer.