|
From: <ni...@us...> - 2004-04-27 06:54:51
|
Update of /cvsroot/dvbtools/dvbstream In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv19510/dvbstream Modified Files: tune.h tune.c dvbstream.c Log Message: sync with dvbtune tuning code: do_diseqc() sends 1..4 command sequence xor A/B burst Index: tune.h =================================================================== RCS file: /cvsroot/dvbtools/dvbstream/tune.h,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** tune.h 19 Mar 2004 16:53:56 -0000 1.7 --- tune.h 27 Apr 2004 06:54:42 -0000 1.8 *************** *** 6,10 **** #include "dvb_defaults.h" ! int tune_it(int fd_frontend, unsigned int freq, unsigned int srate, char pol, int tone, fe_spectral_inversion_t specInv, unsigned int diseqc,fe_modulation_t modulation,fe_code_rate_t HP_CodeRate,fe_transmit_mode_t TransmissionMode,fe_guard_interval_t guardInterval, fe_bandwidth_t bandwidth); #endif --- 6,10 ---- #include "dvb_defaults.h" ! int tune_it(int fd_frontend, unsigned int freq, unsigned int srate, char pol, int tone, fe_spectral_inversion_t specInv, unsigned char diseqc,fe_modulation_t modulation,fe_code_rate_t HP_CodeRate,fe_transmit_mode_t TransmissionMode,fe_guard_interval_t guardInterval, fe_bandwidth_t bandwidth); #endif Index: tune.c =================================================================== RCS file: /cvsroot/dvbtools/dvbstream/tune.c,v retrieving revision 1.17 retrieving revision 1.18 diff -C2 -d -r1.17 -r1.18 *** tune.c 19 Mar 2004 16:58:15 -0000 1.17 --- tune.c 27 Apr 2004 06:54:42 -0000 1.18 *************** *** 54,58 **** static int diseqc_send_msg(int fd, fe_sec_voltage_t v, struct diseqc_cmd *cmd, ! fe_sec_tone_mode_t t, fe_sec_mini_cmd_t b) { if(ioctl(fd, FE_SET_TONE, SEC_TONE_OFF) < 0) --- 54,58 ---- static int diseqc_send_msg(int fd, fe_sec_voltage_t v, struct diseqc_cmd *cmd, ! fe_sec_tone_mode_t t, unsigned char sat_no) { if(ioctl(fd, FE_SET_TONE, SEC_TONE_OFF) < 0) *************** *** 61,71 **** return -1; usleep(15 * 1000); ! if(ioctl(fd, FE_DISEQC_SEND_MASTER_CMD, &cmd->cmd) < 0) return -1; ! usleep(cmd->wait * 1000); ! usleep(15 * 1000); ! if(ioctl(fd, FE_DISEQC_SEND_BURST, b) < 0) return -1; ! usleep(15 * 1000); if(ioctl(fd, FE_SET_TONE, t) < 0) return -1; --- 61,78 ---- return -1; usleep(15 * 1000); ! if(sat_no >= 1 && sat_no <= 4) //1.x compatible equipment ! { ! if(ioctl(fd, FE_DISEQC_SEND_MASTER_CMD, &cmd->cmd) < 0) return -1; ! usleep(cmd->wait * 1000); ! usleep(15 * 1000); ! } ! else //A or B simple diseqc ! { ! fprintf(stderr, "SETTING SIMPLE %c BURST\n", sat_no); ! if(ioctl(fd, FE_DISEQC_SEND_BURST, (sat_no == 'B' ? SEC_MINI_B : SEC_MINI_A)) < 0) return -1; ! usleep(15 * 1000); ! } if(ioctl(fd, FE_SET_TONE, t) < 0) return -1; *************** *** 78,94 **** */ ! static int do_diseqc(int secfd, int sat_no, int polv, int hi_lo) { ! struct diseqc_cmd cmd = { {{0xe0, 0x10, 0x38, 0xf0, 0x00, 0x00}, 4}, 0 }; ! /* param: high nibble: reset bits, low nibble set bits, ! * bits are: option, position, polarizaion, band ! */ ! cmd.cmd.msg[3] = ! 0xf0 | (((sat_no * 4) & 0x0f) | (hi_lo ? 1 : 0) | (polv ? 0 : 2)); ! return diseqc_send_msg(secfd, polv ? SEC_VOLTAGE_13 : SEC_VOLTAGE_18, ! &cmd, hi_lo ? SEC_TONE_ON : SEC_TONE_OFF, ! (sat_no / 4) % 2 ? SEC_MINI_B : SEC_MINI_A); } --- 85,125 ---- */ ! static int do_diseqc(int fd, unsigned char sat_no, int polv, int hi_lo) { ! struct diseqc_cmd cmd = { {{0xe0, 0x10, 0x38, 0xf0, 0x00, 0x00}, 4}, 0 }; ! if(sat_no != 0) ! { ! unsigned char d = sat_no; ! /* param: high nibble: reset bits, low nibble set bits, ! * bits are: option, position, polarizaion, band ! */ ! sat_no--; ! cmd.cmd.msg[3] = ! 0xf0 | (((sat_no * 4) & 0x0f) | (polv ? 0 : 2) | (hi_lo ? 1 : 0)); ! ! return diseqc_send_msg(fd, ! polv ? SEC_VOLTAGE_13 : SEC_VOLTAGE_18, ! &cmd, ! hi_lo ? SEC_TONE_ON : SEC_TONE_OFF, ! d); ! } ! else //only tone and voltage ! { ! fe_sec_voltage_t voltage; ! ! fprintf(stderr, "Setting only tone %s and voltage %dV\n", (hi_lo ? "ON" : "OFF"), (polv ? 13 : 18)); ! ! if(ioctl(fd, FE_SET_VOLTAGE, (polv ? SEC_VOLTAGE_13 : SEC_VOLTAGE_18)) < 0) ! return -1; ! ! if(ioctl(fd, FE_SET_TONE, (hi_lo ? SEC_TONE_ON : SEC_TONE_OFF)) < 0) ! return -1; ! ! usleep(15 * 1000); ! ! return 0; ! } } *************** *** 175,179 **** } ! int tune_it(int fd_frontend, unsigned int freq, unsigned int srate, char pol, int tone, fe_spectral_inversion_t specInv, unsigned int diseqc,fe_modulation_t modulation,fe_code_rate_t HP_CodeRate,fe_transmit_mode_t TransmissionMode,fe_guard_interval_t guardInterval, fe_bandwidth_t bandwidth) { int res, hi_lo, dfd; struct dvb_frontend_parameters feparams; --- 206,210 ---- } ! int tune_it(int fd_frontend, unsigned int freq, unsigned int srate, char pol, int tone, fe_spectral_inversion_t specInv, unsigned char diseqc,fe_modulation_t modulation,fe_code_rate_t HP_CodeRate,fe_transmit_mode_t TransmissionMode,fe_guard_interval_t guardInterval, fe_bandwidth_t bandwidth) { int res, hi_lo, dfd; struct dvb_frontend_parameters feparams; *************** *** 199,203 **** feparams.u.ofdm.guard_interval=guardInterval; feparams.u.ofdm.hierarchy_information=HIERARCHY_DEFAULT; ! fprintf(stderr,"tuning DVB-T (%s) to %d Hz, Bandwidth: %d\n",DVB_T_LOCATION,freq, bandwidth); break; case FE_QPSK: --- 230,235 ---- feparams.u.ofdm.guard_interval=guardInterval; feparams.u.ofdm.hierarchy_information=HIERARCHY_DEFAULT; ! fprintf(stderr,"tuning DVB-T (%s) to %d Hz, Bandwidth: %d\n",DVB_T_LOCATION,freq, ! bandwidth==BANDWIDTH_8_MHZ ? 8 : (bandwidth==BANDWIDTH_7_MHZ ? 7 : 6)); break; case FE_QPSK: Index: dvbstream.c =================================================================== RCS file: /cvsroot/dvbtools/dvbstream/dvbstream.c,v retrieving revision 1.19 retrieving revision 1.20 diff -C2 -d -r1.19 -r1.20 *** dvbstream.c 19 Mar 2004 16:53:56 -0000 1.19 --- dvbstream.c 27 Apr 2004 06:54:42 -0000 1.20 *************** *** 90,98 **** fe_guard_interval_t guardInterval=GUARD_INTERVAL_DEFAULT; fe_code_rate_t HP_CodeRate=HP_CODERATE_DEFAULT; ! unsigned int diseqc=0; char pol=0; int open_fe(int* fd_frontend) { - if((*fd_frontend = open(frontenddev[card],O_RDWR | O_NONBLOCK)) < 0){ perror("FRONTEND DEVICE: "); --- 90,97 ---- fe_guard_interval_t guardInterval=GUARD_INTERVAL_DEFAULT; fe_code_rate_t HP_CodeRate=HP_CODERATE_DEFAULT; ! unsigned char diseqc=0; char pol=0; int open_fe(int* fd_frontend) { if((*fd_frontend = open(frontenddev[card],O_RDWR | O_NONBLOCK)) < 0){ perror("FRONTEND DEVICE: "); *************** *** 475,479 **** fprintf(stderr,"\nAdvanced tuning options:\n\n"); fprintf(stderr,"-c [0-3] Use DVB card #[0-3]\n"); ! fprintf(stderr,"-D [0-4] DiSEqC command (0=none)\n\n"); fprintf(stderr,"-I [0|1|2] 0=Spectrum Inversion off, 1=Spectrum Inversion on, 2=auto\n"); fprintf(stderr,"-qam X DVB-T modulation - 16%s, 32%s, 64%s, 128%s or 256%s\n",(CONSTELLATION_DEFAULT==QAM_16 ? " (default)" : ""),(CONSTELLATION_DEFAULT==QAM_32 ? " (default)" : ""),(CONSTELLATION_DEFAULT==QAM_64 ? " (default)" : ""),(CONSTELLATION_DEFAULT==QAM_128 ? " (default)" : ""),(CONSTELLATION_DEFAULT==QAM_256 ? " (default)" : "")); --- 474,478 ---- fprintf(stderr,"\nAdvanced tuning options:\n\n"); fprintf(stderr,"-c [0-3] Use DVB card #[0-3]\n"); ! fprintf(stderr,"-D [0-4AB] DiSEqC command (0=none)\n\n"); fprintf(stderr,"-I [0|1|2] 0=Spectrum Inversion off, 1=Spectrum Inversion on, 2=auto\n"); fprintf(stderr,"-qam X DVB-T modulation - 16%s, 32%s, 64%s, 128%s or 256%s\n",(CONSTELLATION_DEFAULT==QAM_16 ? " (default)" : ""),(CONSTELLATION_DEFAULT==QAM_32 ? " (default)" : ""),(CONSTELLATION_DEFAULT==QAM_64 ? " (default)" : ""),(CONSTELLATION_DEFAULT==QAM_128 ? " (default)" : ""),(CONSTELLATION_DEFAULT==QAM_256 ? " (default)" : "")); *************** *** 524,530 **** { i++; ! diseqc=atoi(argv[i]); ! if(diseqc < 1 || diseqc > 4) diseqc = 1; ! diseqc--; } else if (strcmp(argv[i],"-I")==0) { i++; --- 523,538 ---- { i++; ! diseqc = argv[i][0]; ! if(toupper(diseqc) == 'A') ! diseqc = 'A'; ! else if(toupper(diseqc) == 'B') ! diseqc = 'B'; ! else if(diseqc >= '0' && diseqc <= '4') { ! diseqc=diseqc - '0'; ! } ! else { ! fprintf(stderr,"DiSEqC must be between 0 and 4 or A | B\n"); ! exit(-1); ! } } else if (strcmp(argv[i],"-I")==0) { i++; |