Changeset 1769 for branches/modular/module-cccam.c
- Timestamp:
- 03/04/10 15:00:52 (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/modular/module-cccam.c
r1741 r1769 997 997 reader[ridx].nprov = reader[ridx].ftab.filts[0].nprids; 998 998 for (n=0; n<reader[ridx].nprov; n++) { 999 reader[ridx].prid[n][0] = reader[ridx].ftab.filts[0].prids[n] <<24;1000 reader[ridx].prid[n][1] = reader[ridx].ftab.filts[0].prids[n] <<16;1001 reader[ridx].prid[n][2] = reader[ridx].ftab.filts[0].prids[n] <<8;999 reader[ridx].prid[n][0] = reader[ridx].ftab.filts[0].prids[n] >> 24; 1000 reader[ridx].prid[n][1] = reader[ridx].ftab.filts[0].prids[n] >> 16; 1001 reader[ridx].prid[n][2] = reader[ridx].ftab.filts[0].prids[n] >> 8; 1002 1002 reader[ridx].prid[n][3] = reader[ridx].ftab.filts[0].prids[n] & 0xff; 1003 1003 } … … 1018 1018 for (r=0; r<CS_MAXREADER; r++) { 1019 1019 if (reader[r].caid[0]) { 1020 memset(buf, 0, sizeof(buf)); 1021 1022 buf[0] = id >> 24; 1023 buf[1] = id >> 16; 1024 buf[2] = id >> 8; 1025 buf[3] = id & 0xff; 1026 buf[8] = reader[r].caid[0] >> 8; 1027 buf[9] = reader[r].caid[0] & 0xff; 1028 buf[10] = hop; 1029 buf[11] = reshare; 1030 buf[20] = reader[r].nprov; 1031 1032 for (j=0; j<reader[r].nprov; j++) { 1033 memcpy(buf + 21 + (j*7), reader[r].prid[j]+0, 3); 1020 if (reader[r].tcp_connected || reader[r].card_status == CARD_INSERTED) { 1021 memset(buf, 0, sizeof(buf)); 1022 1023 buf[0] = id >> 24; 1024 buf[1] = id >> 16; 1025 buf[2] = id >> 8; 1026 buf[3] = id & 0xff; 1027 buf[8] = reader[r].caid[0] >> 8; 1028 buf[9] = reader[r].caid[0] & 0xff; 1029 buf[10] = hop; 1030 buf[11] = reshare; 1031 buf[20] = reader[r].nprov; 1032 1033 for (j=0; j<reader[r].nprov; j++) 1034 if (reader[r].card_status == CARD_INSERTED) 1035 memcpy(buf + 21 + (j*7), reader[r].prid[j]+1, 3); 1036 else 1037 memcpy(buf + 21 + (j*7), reader[r].prid[j], 3); 1038 1039 buf[21 + (j*7)] = 1; 1040 memcpy(buf + 22 + (j*7), cc->node_id, 8); 1041 1042 cc_cmd_send(buf, 30 + (j*7), MSG_NEW_CARD); 1043 1044 id++; 1034 1045 } 1035 1036 buf[21 + (j*7)] = 1; 1037 memcpy(buf + 22 + (j*7), cc->node_id, 8); 1038 1039 cc_cmd_send(buf, 30 + (j*7), MSG_NEW_CARD); 1040 1041 id++; 1042 } 1046 } 1047 1043 1048 1044 1049 if (reader[r].ftab.filts) { … … 1058 1063 1059 1064 for (k=0; k<reader[r].ftab.filts[j].nprids; k++) { 1060 buf[21 + (k*7)] = reader[r].ftab.filts[j].prids[k] << 24; 1061 buf[22 + (k*7)] = reader[r].ftab.filts[j].prids[k] << 16; 1062 buf[23 + (k*7)] = reader[r].ftab.filts[j].prids[k] << 8; 1063 buf[24 + (k*7)] = reader[r].ftab.filts[j].prids[k] & 0xff; 1065 buf[21 + (k*7)] = reader[r].ftab.filts[j].prids[k] >> 16; 1066 buf[22 + (k*7)] = reader[r].ftab.filts[j].prids[k] >> 8; 1067 buf[23 + (k*7)] = reader[r].ftab.filts[j].prids[k] & 0xff; 1064 1068 } 1065 1069 1066 1070 buf[21 + (k*7)] = 1; 1067 memcpy(buf + 22 + (k*7), cc->node_id, 8);1071 memcpy(buf + 22 + (k*7), cc->node_id, 7); 1068 1072 1069 1073 cc_cmd_send(buf, 30 + (k*7), MSG_NEW_CARD); … … 1079 1083 { 1080 1084 int i; 1085 ulong cmi; 1081 1086 uint seed; 1082 1087 uint8 buf[CC_MAXMSGSIZE]; … … 1156 1161 // send passwd ack 1157 1162 memset(buf, 0, 20); 1158 memcpy(buf, "CCcam \0", 6);1163 memcpy(buf, "CCcam", 5); 1159 1164 cs_ddump(buf, 20, "cccam: send ack:"); 1160 1165 cc_crypt(&cc->block[ENCRYPT], buf, 20, ENCRYPT); … … 1178 1183 cc_srv_report_cards(); 1179 1184 1185 cmi = 0; 1180 1186 // check for clienttimeout, if timeout occurs try to send keepalive 1181 for(;;) 1182 { 1183 i=process_input(mbuf, sizeof(mbuf), cfg->cmaxidle); 1184 1185 if (i == -9) 1186 { 1187 if (cc_cmd_send(NULL, 0, MSG_KEEPALIVE) > 0) 1188 { 1189 cs_debug("cccam: keepalive"); 1190 i = 1; 1187 for (;;) { 1188 i=process_input(mbuf, sizeof(mbuf), 10); //cfg->cmaxidle); 1189 if (i == -9) { 1190 cc_srv_report_cards(); 1191 cmi += 10; 1192 if (cmi >= cfg->cmaxidle) { 1193 //cs_log("cccam: keepalive after %d sec", cfg->cmaxidle); 1194 cmi = 0; 1195 if (cc_cmd_send(NULL, 0, MSG_KEEPALIVE) > 0) { 1196 cs_debug("cccam: keepalive"); 1197 i = 1; 1198 } 1191 1199 } 1192 } 1193 1194 if (i <= 0) 1195 { 1196 break; 1197 } 1200 } else if (i <= 0) break; 1198 1201 } 1199 1202
Note:
See TracChangeset
for help on using the changeset viewer.