#include #include #include #include #include #include #include int cam_status(int fd) { ca_slot_info_t info; memset(&info, 0, sizeof(info)); info.num = 0; if (ioctl(fd, CA_GET_SLOT_INFO, &info) != 0) { printf("error: couldn't get slot info\n"); return -1; } return info.flags; } struct timeval start_time; void print_status(int status) { struct timeval time; gettimeofday(&time, NULL); int dsec = time.tv_sec - start_time.tv_sec; int dusec = time.tv_usec - start_time.tv_usec; if (dusec < 0) { dusec += 1000000; dsec -= 1; } printf("%i.%06i: %i\n", dsec, dusec, status); } int main() { int fd = open("/dev/dvb/adapter0/ca0", O_RDWR); if (fd < 0) { printf("error: couldn't open ca handle\n"); return 1; } gettimeofday(&start_time, NULL); int status = cam_status(fd); print_status(status); if (ioctl(fd, CA_RESET, (1 << 0)) != 0) { printf("error: couldn't reset cam\n"); return 1; } int i; for (i = 0; i < 200; ++i) { int new_status = cam_status(fd); if (status != new_status) { status = new_status; print_status(status); } usleep(10000); } return 0; }