Changeset 1816
Legend:
- Unmodified
- Added
- Removed
-
trunk/globals.h
r1814 r1816 875 875 extern void set_signal_handler(int , int , void (*)(int)); 876 876 extern void cs_log_config(void); 877 extern void cs_waitforcardinit(void); 877 878 extern void cs_reinit_clients(void); 878 879 extern void cs_resolve(void); -
trunk/module-cccam.c
r1814 r1816 786 786 break; 787 787 case MSG_KEEPALIVE: 788 if (!is_server) { 788 if (!reader[ridx].cc) { 789 cs_debug("cccam: keepalive ack"); 790 } else { 789 791 cc_cmd_send(NULL, 0, MSG_KEEPALIVE); 790 792 cs_debug("cccam: keepalive"); … … 1016 1018 struct cc_data *cc = client[cs_idx].cc; 1017 1019 1020 cs_debug("cccam: reporting card changes to client..."); 1021 1018 1022 reshare = cfg->cc_reshare; 1019 1023 … … 1025 1029 for (j=0; j<CS_MAXFILTERS; j++) 1026 1030 { 1027 if (reader[r].ftab.filts[j].caid )1031 if (reader[r].ftab.filts[j].caid && !reader[r].cc_id) 1028 1032 { 1029 1033 reader[r].cc_id = 0x63 + r; … … 1034 1038 buf[3] = reader[r].cc_id & 0xff; 1035 1039 buf[7] = reader[r].cc_id; 1036 if (!buf[7])1037 buf[7] = 0x63 + r;1038 1040 buf[8] = reader[r].ftab.filts[j].caid >> 8; 1039 1041 buf[9] = reader[r].ftab.filts[j].caid & 0xff; … … 1050 1052 memcpy(buf + 22 + (k*7), cc->node_id, 8); 1051 1053 1052 reader[r].cc_id = buf[7]; 1054 // reader[r].cc_id = buf[7]; 1055 cs_debug("cccam: send new card (1)..."); 1053 1056 cc_cmd_send(buf, 30 + (k*7), MSG_NEW_CARD); 1054 1057 flt = 1; … … 1060 1063 { 1061 1064 memset(buf, 0, sizeof(buf)); 1062 buf[0] = reader[r].cc_id >> 24; 1063 buf[1] = reader[r].cc_id >> 16; 1064 buf[2] = reader[r].cc_id >> 8; 1065 buf[3] = reader[r].cc_id & 0xff; 1066 buf[7] = reader[r].cc_id; 1067 if (!buf[7]) 1068 buf[7] = 0x63 + r; 1069 buf[8] = reader[r].caid[0] >> 8; 1070 buf[9] = reader[r].caid[0] & 0xff; 1071 buf[10] = hop; 1072 buf[11] = reshare; 1073 buf[20] = reader[r].nprov; 1074 for (j=0; j<reader[r].nprov; j++) 1065 if ((reader[r].tcp_connected || reader[r].card_status == CARD_INSERTED) && !reader[r].cc_id) 1075 1066 { 1076 if (reader[r].card_status == CARD_INSERTED) 1077 memcpy(buf + 21 + (j*7), reader[r].prid[j]+1, 3); 1078 else 1079 memcpy(buf + 21 + (j*7), reader[r].prid[j], 3); 1080 } 1081 1082 buf[21 + (j*7)] = 1; 1083 memcpy(buf + 22 + (j*7), cc->node_id, 8); 1084 1085 if (reader[r].tcp_connected || reader[r].card_status == CARD_INSERTED) 1086 { 1087 reader[r].cc_id = buf[7]; 1067 reader[r].cc_id = 0x63 + r; 1068 buf[0] = reader[r].cc_id >> 24; 1069 buf[1] = reader[r].cc_id >> 16; 1070 buf[2] = reader[r].cc_id >> 8; 1071 buf[3] = reader[r].cc_id & 0xff; 1072 buf[7] = reader[r].cc_id; 1073 buf[8] = reader[r].caid[0] >> 8; 1074 buf[9] = reader[r].caid[0] & 0xff; 1075 buf[10] = hop; 1076 buf[11] = reshare; 1077 buf[20] = reader[r].nprov; 1078 for (j=0; j<reader[r].nprov; j++) 1079 { 1080 if (reader[r].card_status == CARD_INSERTED) 1081 memcpy(buf + 21 + (j*7), reader[r].prid[j]+1, 3); 1082 else 1083 memcpy(buf + 21 + (j*7), reader[r].prid[j], 3); 1084 } 1085 1086 buf[21 + (j*7)] = 1; 1087 memcpy(buf + 22 + (j*7), cc->node_id, 8); 1088 1089 // reader[r].cc_id = buf[7]; 1090 cs_debug("cccam: send new card (2)..."); 1088 1091 cc_cmd_send(buf, 30 + (j*7), MSG_NEW_CARD); 1089 1092 } … … 1096 1099 buf[3] = reader[r].cc_id & 0xff; 1097 1100 reader[r].cc_id = 0; 1101 cs_debug("cccam: send remove card..."); 1098 1102 cc_cmd_send(buf, 4, MSG_CARD_REMOVED); 1103 cs_debug("cccam: OK!"); 1099 1104 } 1100 1105 } … … 1204 1209 1205 1210 // report cards 1211 for (i=0; i<CS_MAXREADER; i++) 1212 reader[i].cc_id = 0; 1206 1213 cc_srv_report_cards(); 1207 1214 … … 1212 1219 if (i == -9) { 1213 1220 cc_srv_report_cards(); 1214 cmi += 10; 1215 if (cmi >= cfg->cmaxidle) { 1216 //cs_log("cccam: keepalive after %d sec", cfg->cmaxidle); 1217 cmi = 0; 1221 //cmi += 10; 1222 // if (cmi >= cfg->cmaxidle) { 1223 // cmi = 0; 1218 1224 if (cc_cmd_send(NULL, 0, MSG_KEEPALIVE) > 0) { 1219 cs_debug("cccam: keepalive ");1225 cs_debug("cccam: keepalive after maxidle is reached"); 1220 1226 i = 1; 1221 1227 } 1222 }1228 // } 1223 1229 } else if (i <= 0) break; 1224 1230 } … … 1226 1232 cs_disconnect_client(); 1227 1233 1234 for (i=0; i<CS_MAXREADER; i++) 1235 reader[i].cc_id = 0; 1236 1228 1237 return 0; 1229 1238 } … … 1231 1240 void cc_srv_init() 1232 1241 { 1242 //cs_waitforcardinit(); 1233 1243 pfd=client[cs_idx].udp_fd; 1234 1244 //cc_auth_client(client[cs_idx].ip); … … 1238 1248 int cc_cli_init() 1239 1249 { 1250 //cs_waitforcardinit(); 1240 1251 if (!reader[ridx].tcp_connected) { 1241 1252 static struct sockaddr_in loc_sa; -
trunk/oscam.c
r1814 r1816 1992 1992 for (j = 0; (j < 6) && (er->rc > 99); j++) 1993 1993 { 1994 usleep(1);1994 cs_sleepms(1); 1995 1995 switch(j) { 1996 1996 … … 2381 2381 } 2382 2382 2383 void cs_waitforcardinit() 2384 { 2385 if (cfg->waitforcards) 2386 { 2387 int card_init_done, i; 2388 cs_sleepms(3000); // short sleep for card detect to work proberly 2389 do { 2390 card_init_done = 1; 2391 for (i = 0; i < CS_MAXREADER; i++) { 2392 if (reader[i].card_status == CARD_NEED_INIT) { 2393 card_init_done = 0; 2394 break; 2395 } 2396 } 2397 cs_sleepms(300); // wait a little bit 2398 alarm(cfg->cmaxidle + cfg->ctimeout / 1000 + 1); 2399 } while (!card_init_done); 2400 } 2401 } 2402 2383 2403 int main (int argc, char *argv[]) 2384 2404 { … … 2504 2524 init_cardreader(); 2505 2525 2506 if (cfg->waitforcards) 2507 { 2508 int card_init_done; 2509 cs_log("waiting for local card init"); 2510 cs_sleepms(3000); // short sleep for card detect to work proberly 2511 do { 2512 card_init_done = 1; 2513 for (i = 0; i < CS_MAXREADER; i++) { 2514 if (reader[i].card_status == CARD_NEED_INIT) { 2515 card_init_done = 0; 2516 break; 2517 } 2518 } 2519 cs_sleepms(300); // wait a little bit 2520 alarm(cfg->cmaxidle + cfg->ctimeout / 1000 + 1); 2521 } while (!card_init_done); 2522 cs_log("init for all local cards done"); 2523 2524 } 2526 cs_log("waiting for local card init"); 2527 cs_waitforcardinit(); 2528 cs_log("init for all local cards done"); 2525 2529 2526 2530 #ifdef CS_ANTICASC
Note:
See TracChangeset
for help on using the changeset viewer.