Changeset 3172 for trunk/module-camd35.c
- Timestamp:
- 09/22/10 21:36:20 (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/module-camd35.c
r3168 r3172 140 140 int i, au; 141 141 time_t now; 142 uchar mbuf[1024]; 142 143 143 144 au = client[cs_idx].au; … … 163 164 client[cs_idx].disable_counter++; 164 165 165 memset( client[cs_idx].mbuf, 0, sizeof(client[cs_idx].mbuf));166 client[cs_idx].mbuf[2] = client[cs_idx].mbuf[3] = 0xff; // must not be zero167 memcpy( client[cs_idx].mbuf + 8, i2b(2, er->srvid), 2);166 memset(mbuf, 0, sizeof(mbuf)); 167 mbuf[2] = mbuf[3] = 0xff; // must not be zero 168 memcpy(mbuf + 8, i2b(2, er->srvid), 2); 168 169 169 170 //override request provid with auprovid if set in CMD05 170 171 if(reader[au].auprovid) { 171 172 if(reader[au].auprovid != er->prid) 172 memcpy( client[cs_idx].mbuf + 12, i2b(4, reader[au].auprovid), 4);173 memcpy(mbuf + 12, i2b(4, reader[au].auprovid), 4); 173 174 else 174 memcpy( client[cs_idx].mbuf + 12, i2b(4, er->prid), 4);175 memcpy(mbuf + 12, i2b(4, er->prid), 4); 175 176 } else { 176 memcpy( client[cs_idx].mbuf + 12, i2b(4, er->prid), 4);177 } 178 179 memcpy( client[cs_idx].mbuf + 16, i2b(2, er->pid), 2);180 client[cs_idx].mbuf[0] = 5;181 client[cs_idx].mbuf[1] = 111;177 memcpy(mbuf + 12, i2b(4, er->prid), 4); 178 } 179 180 memcpy(mbuf + 16, i2b(2, er->pid), 2); 181 mbuf[0] = 5; 182 mbuf[1] = 111; 182 183 if (reader[au].caid[0]) 183 184 { 184 client[cs_idx].mbuf[39] = 1; // no. caids185 client[cs_idx].mbuf[20] = reader[au].caid[0]>>8; // caid's (max 8)186 client[cs_idx].mbuf[21] = reader[au].caid[0]&0xff;187 memcpy( client[cs_idx].mbuf + 40, reader[au].hexserial, 6); // serial now 6 bytes188 client[cs_idx].mbuf[47] = reader[au].nprov;185 mbuf[39] = 1; // no. caids 186 mbuf[20] = reader[au].caid[0]>>8; // caid's (max 8) 187 mbuf[21] = reader[au].caid[0]&0xff; 188 memcpy(mbuf + 40, reader[au].hexserial, 6); // serial now 6 bytes 189 mbuf[47] = reader[au].nprov; 189 190 for (i = 0; i < reader[au].nprov; i++) 190 191 { … … 192 193 ((reader[au].caid[0] >= 0x0600) && (reader[au].caid[0] <= 0x0699))) // Irdeto (don't know if this is correct, cause I don't own a IRDETO-Card) 193 194 { 194 client[cs_idx].mbuf[48 + (i*5)] = reader[au].prid[i][0];195 memcpy(& client[cs_idx].mbuf[50 + (i*5)], &reader[au].prid[i][1], 3);195 mbuf[48 + (i*5)] = reader[au].prid[i][0]; 196 memcpy(&mbuf[50 + (i*5)], &reader[au].prid[i][1], 3); 196 197 } 197 198 else 198 199 { 199 client[cs_idx].mbuf[48 + (i * 5)] = reader[au].prid[i][2];200 client[cs_idx].mbuf[49 + (i * 5)] =reader[au].prid[i][3];201 memcpy(& client[cs_idx].mbuf[50 + (i * 5)], &reader[au].sa[i][0],4); // for conax we need at least 4 Bytes200 mbuf[48 + (i * 5)] = reader[au].prid[i][2]; 201 mbuf[49 + (i * 5)] =reader[au].prid[i][3]; 202 memcpy(&mbuf[50 + (i * 5)], &reader[au].sa[i][0],4); // for conax we need at least 4 Bytes 202 203 } 203 204 } 204 205 //we think client/server protocols should deliver all information, and only readers should discard EMM 205 client[cs_idx].mbuf[128] = (reader[au].blockemm_g == 1) ? 0: 1;206 client[cs_idx].mbuf[129] = (reader[au].blockemm_s == 1) ? 0: 1;207 client[cs_idx].mbuf[130] = (reader[au].blockemm_u == 1) ? 0: 1;208 // client[cs_idx].mbuf[131] = reader[au].card_system; //Cardsystem for Oscam client206 mbuf[128] = (reader[au].blockemm_g == 1) ? 0: 1; 207 mbuf[129] = (reader[au].blockemm_s == 1) ? 0: 1; 208 mbuf[130] = (reader[au].blockemm_u == 1) ? 0: 1; 209 //mbuf[131] = reader[au].card_system; //Cardsystem for Oscam client 209 210 } 210 211 else // disable emm 211 client[cs_idx].mbuf[20] = client[cs_idx].mbuf[39] = client[cs_idx].mbuf[40] = client[cs_idx].mbuf[47] = client[cs_idx].mbuf[49] = 1;212 213 memcpy( client[cs_idx].mbuf + 10, client[cs_idx].mbuf + 20, 2);214 camd35_send( client[cs_idx].mbuf); // send with data-len 111 for camd3 > 3.890215 client[cs_idx].mbuf[1]++;216 camd35_send( client[cs_idx].mbuf); // send with data-len 112 for camd3 < 3.890212 mbuf[20] = mbuf[39] = mbuf[40] = mbuf[47] = mbuf[49] = 1; 213 214 memcpy(mbuf + 10, mbuf + 20, 2); 215 camd35_send(mbuf); // send with data-len 111 for camd3 > 3.890 216 mbuf[1]++; 217 camd35_send(mbuf); // send with data-len 112 for camd3 < 3.890 217 218 } 218 219 … … 295 296 { 296 297 int n; 298 uchar mbuf[1024]; 297 299 298 300 int cidx=(int)idx; … … 309 311 client[cs_idx].is_udp = (ph[client[cs_idx].ctyp].type == MOD_CONN_UDP); 310 312 311 while ((n=process_input( client[cs_idx].mbuf, sizeof(client[cs_idx].mbuf), cfg->cmaxidle))>0)312 { 313 switch( client[cs_idx].mbuf[0])313 while ((n=process_input(mbuf, sizeof(mbuf), cfg->cmaxidle))>0) 314 { 315 switch(mbuf[0]) 314 316 { 315 317 case 0: // ECM 316 318 case 3: // ECM (cascading) 317 camd35_process_ecm( client[cs_idx].mbuf);319 camd35_process_ecm(mbuf); 318 320 break; 319 321 case 6: // EMM 320 322 case 19: // EMM 321 camd35_process_emm( client[cs_idx].mbuf);323 camd35_process_emm(mbuf); 322 324 break; 323 325 default: 324 cs_log("unknown camd35 command! (%d)", client[cs_idx].mbuf[0]);326 cs_log("unknown camd35 command! (%d)", mbuf[0]); 325 327 } 326 328 }
Note:
See TracChangeset
for help on using the changeset viewer.