Changeset 7055
- Timestamp:
- 06/18/12 18:49:49 (12 years ago)
- Location:
- trunk
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/csctapi/icc_async.c
r7041 r7055 639 639 static uint32_t ICC_Async_GetPLL_Divider (struct s_reader * reader) 640 640 { 641 int32_t divider = reader->divider; 641 float divider = reader->divider; 642 int32_t t_cardmhz; 642 643 if (reader->divider !=0) return divider; 643 double cardclock1, cardclock2; 644 645 while (divider != reader->mhz/100){ 646 divider++; 647 cardclock1 = reader->mhz / divider; 648 divider++; 649 cardclock2 = reader->mhz / (divider); 650 if ((cardclock1 > reader->cardmhz) && (cardclock2 > reader->cardmhz)) continue; 651 if ( abs(cardclock1 - reader->cardmhz) > abs(cardclock2 - reader->cardmhz) ) break; 652 divider--; 653 break; 654 } 655 cs_debug_mask(D_DEVICE,"PLL maxmhz = %.2f, wanted cardmhz = %.2f, divider used = %d, actualcardclock=%.2f", (float) reader->mhz/100, (float) reader->cardmhz/100, divider, (float) reader->mhz/divider/100); 656 reader->divider = divider; 657 return (divider); 644 645 if(reader->mhz != 8300) /* Check dreambox is not DM7025 */ { 646 divider = ((float) reader->mhz) / ((float) reader->cardmhz); 647 reader->divider = (int32_t) (divider + 0.5); /* round to nearest integer */ 648 649 cs_debug_mask(D_DEVICE,"PLL maxmhz = %.2f, wanted cardmhz = %.2f, divider used = %d, actualcardclock=%.2f", (float) reader->mhz/100, (float) reader->cardmhz/100, 650 reader->divider, (float) reader->mhz/reader->divider/100); 651 } 652 else /* STB is DM7025 */ { 653 t_cardmhz = reader->cardmhz; 654 if (reader->cardmhz >= 518) { 655 reader->divider = 6; 656 reader->cardmhz = 528; 657 } 658 else if (reader->cardmhz >= 461) { 659 reader->divider = 7; 660 reader->cardmhz = 461; 661 } 662 else if (reader->cardmhz >= 395) { 663 reader->divider = 8; 664 reader->cardmhz = 319; 665 } 666 else if (reader->cardmhz >= 360) { 667 reader->divider = 9; 668 reader->cardmhz = 360; 669 } 670 else if (reader->cardmhz >= 319) { 671 reader->divider = 10; 672 reader->cardmhz = 319; 673 } 674 else if (reader->cardmhz >= 296) { 675 reader->divider = 11; 676 reader->cardmhz = 296; 677 } 678 else if (reader->cardmhz >= 267) { 679 reader->divider = 12; 680 reader->cardmhz = 267; 681 } 682 else if (reader->cardmhz >= 244) { 683 reader->divider = 13; 684 reader->cardmhz = 244; 685 } 686 else if (reader->cardmhz >= 230) { 687 reader->divider = 14; 688 reader->cardmhz = 230; 689 } 690 else if (reader->cardmhz >= 212) { 691 reader->divider = 15; 692 reader->cardmhz = 212; 693 } 694 else { 695 reader->divider = 16; 696 reader->cardmhz = 197; 697 } 698 699 cs_debug_mask(D_DEVICE,"PLL maxmhz = %.2f, wanted cardmhz = %.2f, PLL setting used = %d, actualcardclock=%.2f", (float) reader->mhz/100, (float) t_cardmhz/100, 700 reader->divider, (float) reader->cardmhz/100); 701 } 702 703 return (reader->divider); 658 704 } 659 705 … … 971 1017 uint32_t baud_temp; 972 1018 if (reader->protocol_type != ATR_PROTOCOL_TYPE_T14) { //dont switch for T14 973 if (reader->mhz >2000 )1019 if (reader->mhz >2000 && reader->mhz != 8300) 974 1020 baud_temp = (uint32_t) (d * (double) reader->mhz / reader->divider *10000L / F); 975 1021 else -
trunk/csctapi/ifd_sci.c
r6996 r7055 45 45 params.ETU = 372; 46 46 params.EGT = 0; 47 int32_t divider = 0; // calculate divider for 1 Mhz 48 double cardclock1, cardclock2; 49 50 while (divider != reader->mhz/100){ 51 divider++; 52 cardclock1 = reader->mhz / divider; 53 divider++; 54 cardclock2 = reader->mhz / (divider); 55 if ((cardclock1 > 100) && (cardclock2 > 100)) continue; 56 if ( abs(cardclock1 - 100) > abs(cardclock2 - 100) ) break; 57 divider--; 58 break; 59 } 60 params.fs = divider; 47 params.fs = (int32_t) (reader->mhz / 100.0 + 0.5); /* calculate divider for 1 MHz */ 48 params.T = 0; 49 } 50 if (reader->mhz == 8300) { /* PLL based reader DM7025 */ 51 params.ETU = 372; 52 params.EGT = 0; 53 params.fs = 16; /* read from table setting for 1 MHz: 54 params.fs = 6 for cardmhz = 5.188 Mhz 55 params.fs = 7 for cardmhz = 4.611 MHz 56 params.fs = 8 for cardmhz = 3.953 MHz 57 params.fs = 9 for cardmhz = 3.609 MHz 58 params.fs = 10 for cardmhz = 3.192 MHz 59 params.fs = 11 for cardmhz = 2.965 MHz 60 params.fs = 12 for cardmhz = 2.677 MHz 61 params.fs = 13 for cardmhz = 2.441 MHz 62 params.fs = 14 for cardmhz = 2.306 MHz 63 params.fs = 15 for cardmhz = 2.128 MHz 64 params.fs = 16 for cardmhz = 1.977 MHz */ 61 65 params.T = 0; 62 66 } -
trunk/globals.h
r7025 r7055 1397 1397 uint16_t ecmlen; 1398 1398 uint16_t mapcaid; 1399 uint 16_t mapprovid;1399 uint32_t mapprovid; 1400 1400 struct s_global_whitelist *next; 1401 1401 }; -
trunk/reader-viaccess.c
r7048 r7055 563 563 cs_debug_mask(D_READER, "[viaccess-reader] ECM: Unknown ECM type"); 564 564 snprintf( ea->msglog, MSGLOGSIZE, "Unknown ECM type" ); 565 return ERROR; /*Lets interupt the loop and exit, because we don't know this ECM type.*/ 565 566 } 566 567 } -
trunk/reader-videoguard2.c
r7053 r7055 667 667 if(l<0 || !status_ok(cta_res)) { 668 668 cs_log ("classD0 ins40: (%d) status not ok %02x %02x",l,cta_res[0],cta_res[1]); 669 cs_log ("The card is not answering correctly! Restarting reader for safety"); 670 add_job(reader->client, ACTION_READER_RESTART, NULL, 0); 669 671 return ERROR; 670 672 } else { … … 672 674 if(l<0 || !status_ok(cta_res+l)) { 673 675 cs_log("classD3 ins54: (%d) status not ok %02x %02x",l,cta_res[0],cta_res[1]); 676 cs_log ("The card is not answering correctly! Restarting reader for safety"); 677 add_job(reader->client, ACTION_READER_RESTART, NULL, 0); 674 678 return ERROR; 675 679 } else {
Note:
See TracChangeset
for help on using the changeset viewer.