From: <lin...@us...> - 2004-03-19 10:09:25
|
Update of /cvsroot/dvbtools/dvbstream In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv16735 Modified Files: Makefile dvbstream.c rtpfeed.c tune.c tune.h Log Message: Major update from Nico - remove support for "OLDSTRUCT" drivers and clean up the tuning code Index: Makefile =================================================================== RCS file: /cvsroot/dvbtools/dvbstream/Makefile,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** Makefile 13 Oct 2002 18:39:53 -0000 1.5 --- Makefile 19 Mar 2004 09:59:32 -0000 1.6 *************** *** 1,7 **** - # Delete the following line if you are not using a - # "NEWSTRUCT" driver. If you are using a "NEWSTRUCT" - # driver, it must be later than October 10th 2002 - NEWSTRUCT=1 CC=gcc --- 1,3 ---- *************** *** 9,18 **** OBJS=dvbstream dumprtp ts_filter rtpfeed rtp.o ! ifdef NEWSTRUCT ! CFLAGS += -DNEWSTRUCT ! INCS=-I ../DVB/include ! else ! INCS=-I ../DVB/ost/include ! endif ifdef UK --- 5,9 ---- OBJS=dvbstream dumprtp ts_filter rtpfeed rtp.o ! INCS=-I ../DVB/include ifdef UK Index: dvbstream.c =================================================================== RCS file: /cvsroot/dvbtools/dvbstream/dvbstream.c,v retrieving revision 1.17 retrieving revision 1.18 diff -C2 -d -r1.17 -r1.18 *** dvbstream.c 1 Mar 2004 21:13:58 -0000 1.17 --- dvbstream.c 19 Mar 2004 09:59:32 -0000 1.18 *************** *** 44,55 **** // DVB includes: - #ifdef NEWSTRUCT #include <linux/dvb/dmx.h> #include <linux/dvb/frontend.h> - #else - #include <ost/dmx.h> - #include <ost/sec.h> - #include <ost/frontend.h> - #endif #include "rtp.h" --- 44,49 ---- *************** *** 81,94 **** - see http://www.cadsoft.de/people/kls/vdr/index.htm */ - #ifdef NEWSTRUCT char* frontenddev[4]={"/dev/dvb/adapter0/frontend0","/dev/dvb/adapter1/frontend0","/dev/dvb/adapter2/frontend0","/dev/dvb/adapter3/frontend0"}; char* dvrdev[4]={"/dev/dvb/adapter0/dvr0","/dev/dvb/adapter1/dvr0","/dev/dvb/adapter2/dvr0","/dev/dvb/adapter3/dvr0"}; char* demuxdev[4]={"/dev/dvb/adapter0/demux0","/dev/dvb/adapter1/demux0","/dev/dvb/adapter2/demux0","/dev/dvb/adapter3/demux0"}; - #else - char* frontenddev[4]={"/dev/ost/frontend0","/dev/ost/frontend1","/dev/ost/frontend2","/dev/ost/frontend3"}; - char* dvrdev[4]={"/dev/ost/dvr0","/dev/ost/dvr1","/dev/ost/dvr2","/dev/ost/dvr3"}; - char* secdev[4]={"/dev/ost/sec0","/dev/ost/sec1","/dev/ost/sec2","/dev/ost/sec3"}; - char* demuxdev[4]={"/dev/ost/demux0","/dev/ost/demux1","/dev/ost/demux2","/dev/ost/demux3"}; - #endif int card=0; --- 75,81 ---- *************** *** 108,125 **** int open_fe(int* fd_frontend,int* fd_sec) { ! if((*fd_frontend = open(frontenddev[card],O_RDWR)) < 0){ perror("FRONTEND DEVICE: "); return -1; } - #ifdef NEWSTRUCT fd_sec=0; - #else - if (fd_sec!=0) { - if((*fd_sec = open(secdev[card],O_RDWR)) < 0){ - perror("SEC DEVICE: "); - return -1; - } - } - #endif return 1; } --- 95,103 ---- int open_fe(int* fd_frontend,int* fd_sec) { ! if((*fd_frontend = open(frontenddev[card],O_RDWR | O_NONBLOCK)) < 0){ perror("FRONTEND DEVICE: "); return -1; } fd_sec=0; return 1; } *************** *** 144,153 **** } ! // There seems to be a limit of 8 simultaneous filters in the driver ! #ifdef NEWSTRUCT ! #define MAX_CHANNELS 16 ! #else ! #define MAX_CHANNELS 8 ! #endif --- 122,127 ---- } ! // There seems to be a limit of 16 simultaneous filters in the driver ! #define MAX_CHANNELS 16 *************** *** 161,169 **** pesFilterParams.input = DMX_IN_FRONTEND; pesFilterParams.output = DMX_OUT_TS_TAP; - #ifdef NEWSTRUCT pesFilterParams.pes_type = pestype; - #else - pesFilterParams.pesType = pestype; - #endif pesFilterParams.flags = DMX_IMMEDIATE_START; --- 135,139 ---- *************** *** 557,561 **** i++; diseqc=atoi(argv[i]); ! if(diseqc < 0 || diseqc > 4) diseqc = 0; } else if (strcmp(argv[i],"-I")==0) { i++; --- 527,532 ---- i++; diseqc=atoi(argv[i]); ! if(diseqc < 1 || diseqc > 4) diseqc = 1; ! diseqc--; } else if (strcmp(argv[i],"-I")==0) { i++; Index: rtpfeed.c =================================================================== RCS file: /cvsroot/dvbtools/dvbstream/rtpfeed.c,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** rtpfeed.c 13 Oct 2002 18:39:53 -0000 1.3 --- rtpfeed.c 19 Mar 2004 09:59:33 -0000 1.4 *************** *** 40,51 **** // DVB includes: - #ifdef NEWSTRUCT #include <linux/dvb/dmx.h> #include <linux/dvb/frontend.h> - #else - #include <ost/dmx.h> - #include <ost/frontend.h> - #define dmx_pes_filter_params dmxPesFilterParams - #endif --- 40,45 ---- *************** *** 75,85 **** pesFilterParams.input = DMX_IN_DVR; pesFilterParams.output = DMX_OUT_DECODER; - #ifdef NEWSTRUCT if (type==1) pesFilterParams.pes_type = DMX_PES_VIDEO; if (type==2) pesFilterParams.pes_type = DMX_PES_AUDIO; - #else - if (type==1) pesFilterParams.pesType = DMX_PES_VIDEO; - if (type==2) pesFilterParams.pesType = DMX_PES_AUDIO; - #endif pesFilterParams.flags = DMX_IMMEDIATE_START; --- 69,74 ---- Index: tune.c =================================================================== RCS file: /cvsroot/dvbtools/dvbstream/tune.c,v retrieving revision 1.14 retrieving revision 1.15 diff -C2 -d -r1.14 -r1.15 *** tune.c 1 Mar 2004 23:45:46 -0000 1.14 --- tune.c 19 Mar 2004 09:59:33 -0000 1.15 *************** *** 30,165 **** #include <errno.h> - #ifdef NEWSTRUCT #include <linux/dvb/dmx.h> #include <linux/dvb/frontend.h> - #else - #include <ost/dmx.h> - #include <ost/sec.h> - #include <ost/frontend.h> - #endif #include "tune.h" - #ifndef NEWSTRUCT - int OSTSelftest(int fd) - { - int ans; - - if ( (ans = ioctl(fd,FE_SELFTEST,0) < 0)){ - perror("FE SELF TEST: "); - return -1; - } - - return 0; - } - - int OSTSetPowerState(int fd, uint32_t state) - { - int ans; - - if ( (ans = ioctl(fd,FE_SET_POWER_STATE,state) < 0)){ - perror("OST SET POWER STATE: "); - return -1; - } - - return 0; - } - - int OSTGetPowerState(int fd, uint32_t *state) - { - int ans; - - if ( (ans = ioctl(fd,FE_GET_POWER_STATE,state) < 0)){ - perror("OST GET POWER STATE: "); - return -1; - } - - switch(*state){ - case FE_POWER_ON: - fprintf(stderr,"POWER ON (%d)\n",*state); - break; - case FE_POWER_STANDBY: - fprintf(stderr,"POWER STANDBY (%d)\n",*state); - break; - case FE_POWER_SUSPEND: - fprintf(stderr,"POWER SUSPEND (%d)\n",*state); - break; - case FE_POWER_OFF: - fprintf(stderr,"POWER OFF (%d)\n",*state); - break; - default: - fprintf(stderr,"unknown (%d)\n",*state); - break; - } - - return 0; - } - - int SecGetStatus (int fd, struct secStatus *state) - { - int ans; - - if ( (ans = ioctl(fd,SEC_GET_STATUS, state) < 0)){ - perror("SEC GET STATUS: "); - return -1; - } - - switch (state->busMode){ - case SEC_BUS_IDLE: - fprintf(stderr,"SEC BUS MODE: IDLE (%d)\n",state->busMode); - break; - case SEC_BUS_BUSY: - fprintf(stderr,"SEC BUS MODE: BUSY (%d)\n",state->busMode); - break; - case SEC_BUS_OFF: - fprintf(stderr,"SEC BUS MODE: OFF (%d)\n",state->busMode); - break; - case SEC_BUS_OVERLOAD: - fprintf(stderr,"SEC BUS MODE: OVERLOAD (%d)\n",state->busMode); - break; - default: - fprintf(stderr,"SEC BUS MODE: unknown (%d)\n",state->busMode); - break; - } - - switch (state->selVolt){ - case SEC_VOLTAGE_OFF: - fprintf(stderr,"SEC VOLTAGE: OFF (%d)\n",state->selVolt); - break; - case SEC_VOLTAGE_LT: - fprintf(stderr,"SEC VOLTAGE: LT (%d)\n",state->selVolt); - break; - case SEC_VOLTAGE_13: - fprintf(stderr,"SEC VOLTAGE: 13 (%d)\n",state->selVolt); - break; - case SEC_VOLTAGE_13_5: - fprintf(stderr,"SEC VOLTAGE: 13.5 (%d)\n",state->selVolt); - break; - case SEC_VOLTAGE_18: - fprintf(stderr,"SEC VOLTAGE: 18 (%d)\n",state->selVolt); - break; - case SEC_VOLTAGE_18_5: - fprintf(stderr,"SEC VOLTAGE: 18.5 (%d)\n",state->selVolt); - break; - default: - fprintf(stderr,"SEC VOLTAGE: unknown (%d)\n",state->selVolt); - break; - } - - fprintf(stderr,"SEC CONT TONE: %s\n", (state->contTone == SEC_TONE_ON ? "ON" : "OFF")); - return 0; - } - #endif void print_status(FILE* fd,fe_status_t festatus) { fprintf(fd,"FE_STATUS:"); if (festatus & FE_HAS_SIGNAL) fprintf(fd," FE_HAS_SIGNAL"); - #ifdef NEWSTRUCT if (festatus & FE_TIMEDOUT) fprintf(fd," FE_TIMEDOUT"); - #else - if (festatus & FE_HAS_POWER) fprintf(fd," FE_HAS_POWER"); - if (festatus & FE_SPECTRUM_INV) fprintf(fd," FE_SPECTRUM_INV"); - if (festatus & FE_TUNER_HAS_LOCK) fprintf(fd," FE_TUNER_HAS_LOCK"); - #endif if (festatus & FE_HAS_LOCK) fprintf(fd," FE_HAS_LOCK"); if (festatus & FE_HAS_CARRIER) fprintf(fd," FE_HAS_CARRIER"); --- 30,43 ---- *************** *** 169,173 **** } ! #ifdef NEWSTRUCT struct diseqc_cmd { struct dvb_diseqc_master_cmd cmd; --- 47,51 ---- } ! struct diseqc_cmd { struct dvb_diseqc_master_cmd cmd; *************** *** 175,202 **** }; ! void 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) { ! ioctl(fd, FE_SET_TONE, SEC_TONE_OFF); ! ioctl(fd, FE_SET_VOLTAGE, v); usleep(15 * 1000); ! ioctl(fd, FE_DISEQC_SEND_MASTER_CMD, &cmd->cmd); usleep(cmd->wait * 1000); usleep(15 * 1000); ! ioctl(fd, FE_DISEQC_SEND_BURST, b); usleep(15 * 1000); ! ioctl(fd, FE_SET_TONE, t); ! } ! ! /* digital satellite equipment control, * specification is available from http://www.eutelsat.com/ */ ! static int do_diseqc(int secfd, int sat_no, int pol, int hi_lo) { ! struct diseqc_cmd cmd = ! { {{0xe0, 0x10, 0x38, 0xf0, 0x00, 0x00}, 4}, 0 }; /* param: high nibble: reset bits, low nibble set bits, --- 53,84 ---- }; ! 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) ! return -1; ! if(ioctl(fd, FE_SET_VOLTAGE, v) < 0) ! 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; + return 0; + } /* digital satellite equipment control, * specification is available from http://www.eutelsat.com/ */ ! ! 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, *************** *** 204,217 **** */ cmd.cmd.msg[3] = ! 0xf0 | (((sat_no * 4) & 0x0f) | (hi_lo ? 1 : 0) | (pol ? 0 : 2)); ! diseqc_send_msg(secfd, pol, ! &cmd, hi_lo, (sat_no / 4) % 2 ? SEC_MINI_B : SEC_MINI_A); - - return 1; } ! int check_status(int fd_frontend,struct dvb_frontend_info fe_info, struct dvb_frontend_parameters* feparams,int tone) { int32_t strength; fe_status_t festatus; --- 86,97 ---- */ 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); } ! int check_status(int fd_frontend,int type, struct dvb_frontend_parameters* feparams,int hi_lo) { int32_t strength; fe_status_t festatus; *************** *** 220,223 **** --- 100,108 ---- int status; + while(1) { + if (ioctl(fd_frontend, FE_GET_EVENT, &event) < 0) //EMPTY THE EVENT QUEUE + break; + } + if (ioctl(fd_frontend,FE_SET_FRONTEND,feparams) < 0) { perror("ERROR tuning channel\n"); *************** *** 226,236 **** pfd[0].fd = fd_frontend; ! pfd[0].events = POLLIN; event.status=0; while (((event.status & FE_TIMEDOUT)==0) && ((event.status & FE_HAS_LOCK)==0)) { fprintf(stderr,"polling....\n"); ! if (poll(pfd,1,10000)){ ! if (pfd[0].revents & POLLIN){ fprintf(stderr,"Getting frontend event\n"); if ((status = ioctl(fd_frontend, FE_GET_EVENT, &event)) < 0){ --- 111,121 ---- pfd[0].fd = fd_frontend; ! pfd[0].events = POLLPRI; event.status=0; while (((event.status & FE_TIMEDOUT)==0) && ((event.status & FE_HAS_LOCK)==0)) { fprintf(stderr,"polling....\n"); ! if (poll(pfd,1,10000) > 0){ ! if (pfd[0].revents & POLLPRI){ fprintf(stderr,"Getting frontend event\n"); if ((status = ioctl(fd_frontend, FE_GET_EVENT, &event)) < 0){ *************** *** 249,258 **** if (event.status & FE_HAS_LOCK) { ! switch(fe_info.type) { case FE_OFDM: fprintf(stderr,"Event: Frequency: %d\n",event.parameters.frequency); break; case FE_QPSK: ! fprintf(stderr,"Event: Frequency: %d\n",(unsigned int)((event.parameters.frequency)+(tone==SEC_TONE_OFF ? LOF1 : LOF2))); fprintf(stderr," SymbolRate: %d\n",event.parameters.u.qpsk.symbol_rate); fprintf(stderr," FEC_inner: %d\n",event.parameters.u.qpsk.fec_inner); --- 134,143 ---- if (event.status & FE_HAS_LOCK) { ! switch(type) { case FE_OFDM: fprintf(stderr,"Event: Frequency: %d\n",event.parameters.frequency); break; case FE_QPSK: ! fprintf(stderr,"Event: Frequency: %d\n",(unsigned int)((event.parameters.frequency)+(hi_lo ? LOF2 : LOF1))); fprintf(stderr," SymbolRate: %d\n",event.parameters.u.qpsk.symbol_rate); fprintf(stderr," FEC_inner: %d\n",event.parameters.u.qpsk.fec_inner); *************** *** 269,285 **** strength=0; ! ioctl(fd_frontend,FE_READ_BER,&strength); fprintf(stderr,"Bit error rate: %d\n",strength); strength=0; ! ioctl(fd_frontend,FE_READ_SIGNAL_STRENGTH,&strength); fprintf(stderr,"Signal strength: %d\n",strength); strength=0; ! ioctl(fd_frontend,FE_READ_SNR,&strength); fprintf(stderr,"SNR: %d\n",strength); festatus=0; ! ioctl(fd_frontend,FE_READ_STATUS,&festatus); print_status(stderr,festatus); } else { --- 154,170 ---- strength=0; ! if(ioctl(fd_frontend,FE_READ_BER,&strength) >= 0) fprintf(stderr,"Bit error rate: %d\n",strength); strength=0; ! if(ioctl(fd_frontend,FE_READ_SIGNAL_STRENGTH,&strength) >= 0) fprintf(stderr,"Signal strength: %d\n",strength); strength=0; ! if(ioctl(fd_frontend,FE_READ_SNR,&strength) >= 0) fprintf(stderr,"SNR: %d\n",strength); festatus=0; ! if(ioctl(fd_frontend,FE_READ_STATUS,&festatus) >= 0) print_status(stderr,festatus); } else { *************** *** 289,426 **** return 0; } - #else - int check_status(int fd_frontend,FrontendInfo fe_info, FrontendParameters* feparams,int tone) { - int i,res; - int32_t strength; - fe_status_t festatus; - FrontendEvent event; - struct pollfd pfd[1]; - - i = 0; res = -1; - while ((i < 3) && (res < 0)) { - if (ioctl(fd_frontend,FE_SET_FRONTEND,feparams) < 0) { - perror("ERROR tuning channel\n"); - return -1; - } - - pfd[0].fd = fd_frontend; - pfd[0].events = POLLIN; - - if (poll(pfd,1,10000)){ - if (pfd[0].revents & POLLIN){ - fprintf(stderr,"Getting frontend event\n"); - if ( ioctl(fd_frontend, FE_GET_EVENT, &event) < 0) { - perror("FE_GET_EVENT"); - return -1; - } - fprintf(stderr,"Received "); - switch(event.type){ - case FE_UNEXPECTED_EV: - fprintf(stderr,"unexpected event\n"); - res = -1; - break; - case FE_FAILURE_EV: - fprintf(stderr,"failure event\n"); - res = -1; - break; - case FE_COMPLETION_EV: - fprintf(stderr,"completion event\n"); - res = 0; - break; - } - } - i++; - } - } - - if (res > 0) - switch (event.type) { - case FE_UNEXPECTED_EV: fprintf(stderr,"FE_UNEXPECTED_EV\n"); - break; - case FE_COMPLETION_EV: fprintf(stderr,"FE_COMPLETION_EV\n"); - break; - case FE_FAILURE_EV: fprintf(stderr,"FE_FAILURE_EV\n"); - break; - } - - if (event.type == FE_COMPLETION_EV) { - switch(fe_info.type) { - case FE_OFDM: - fprintf(stderr,"Event: Frequency: %d\n",event.u.completionEvent.Frequency); - break; - case FE_QPSK: - fprintf(stderr,"Event: Frequency: %d\n",(unsigned int)((event.u.completionEvent.Frequency)+(tone==SEC_TONE_OFF ? LOF1 : LOF2))); - fprintf(stderr," SymbolRate: %d\n",event.u.completionEvent.u.qpsk.SymbolRate); - fprintf(stderr," FEC_inner: %d\n",event.u.completionEvent.u.qpsk.FEC_inner); - fprintf(stderr,"\n"); - break; - case FE_QAM: - fprintf(stderr,"Event: Frequency: %d\n",event.u.completionEvent.Frequency); - fprintf(stderr," SymbolRate: %d\n",event.u.completionEvent.u.qpsk.SymbolRate); - fprintf(stderr," FEC_inner: %d\n",event.u.completionEvent.u.qpsk.FEC_inner); - break; - default: - break; - } - - strength=0; - ioctl(fd_frontend,FE_READ_BER,&strength); - fprintf(stderr,"Bit error rate: %d\n",strength); - - strength=0; - ioctl(fd_frontend,FE_READ_SIGNAL_STRENGTH,&strength); - fprintf(stderr,"Signal strength: %d\n",strength); - - strength=0; - ioctl(fd_frontend,FE_READ_SNR,&strength); - fprintf(stderr,"SNR: %d\n",strength); - - festatus=0; - ioctl(fd_frontend,FE_READ_STATUS,&festatus); - - fprintf(stderr,"FE_STATUS:"); - if (festatus & FE_HAS_POWER) fprintf(stderr," FE_HAS_POWER"); - if (festatus & FE_HAS_SIGNAL) fprintf(stderr," FE_HAS_SIGNAL"); - if (festatus & FE_SPECTRUM_INV) fprintf(stderr," FE_SPECTRUM_INV"); - if (festatus & FE_HAS_LOCK) fprintf(stderr," FE_HAS_LOCK"); - if (festatus & FE_HAS_CARRIER) fprintf(stderr," FE_HAS_CARRIER"); - if (festatus & FE_HAS_VITERBI) fprintf(stderr," FE_HAS_VITERBI"); - if (festatus & FE_HAS_SYNC) fprintf(stderr," FE_HAS_SYNC"); - if (festatus & FE_TUNER_HAS_LOCK) fprintf(stderr," FE_TUNER_HAS_LOCK"); - fprintf(stderr,"\n"); - } else { - fprintf(stderr,"Not able to lock to the signal on the given frequency\n"); - return -1; - } - return 0; - } - #endif int tune_it(int fd_frontend, int fd_sec, 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; ! #ifdef NEWSTRUCT struct dvb_frontend_parameters feparams; struct dvb_frontend_info fe_info; fe_sec_voltage_t voltage; - #else - FrontendParameters feparams; - FrontendInfo fe_info; - secVoltage voltage; - struct secStatus sec_state; - #endif - /* discard stale frontend events */ - /* - pfd[0].fd = fd_frontend; - pfd[0].events = POLLIN; - - if (poll(pfd,1,500)){ - if (pfd[0].revents & POLLIN){ - while (1) { - if (ioctl (fd_frontend, FE_GET_EVENT, &event) == -1) { break; } - } - } - } - */ if ( (res = ioctl(fd_frontend,FE_GET_INFO, &fe_info) < 0)){ perror("FE_GET_INFO: "); --- 174,184 ---- return 0; } int tune_it(int fd_frontend, int fd_sec, 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; struct dvb_frontend_info fe_info; fe_sec_voltage_t voltage; if ( (res = ioctl(fd_frontend,FE_GET_INFO, &fe_info) < 0)){ perror("FE_GET_INFO: "); *************** *** 428,442 **** } - // OSTSelftest(fd_frontend); - // OSTSetPowerState(fd_frontend, FE_POWER_ON); - // OSTGetPowerState(fd_frontend, &festatus); - - #ifdef NEWSTRUCT fprintf(stderr,"Using DVB card \"%s\"\n",fe_info.name); - #endif switch(fe_info.type) { case FE_OFDM: - #ifdef NEWSTRUCT if (freq < 1000000) freq*=1000UL; feparams.frequency=freq; --- 186,193 ---- *************** *** 449,572 **** feparams.u.ofdm.guard_interval=guardInterval; feparams.u.ofdm.hierarchy_information=HIERARCHY_DEFAULT; ! #else ! if (freq < 1000000) freq*=1000UL; ! feparams.Frequency=freq; ! feparams.Inversion=INVERSION_OFF; ! feparams.u.ofdm.bandWidth=bandwidth; ! feparams.u.ofdm.HP_CodeRate=HP_CodeRate; ! feparams.u.ofdm.LP_CodeRate=LP_CODERATE_DEFAULT; ! feparams.u.ofdm.Constellation=modulation; ! feparams.u.ofdm.TransmissionMode=TransmissionMode; ! feparams.u.ofdm.guardInterval=guardInterval; ! feparams.u.ofdm.HierarchyInformation=HIERARCHY_DEFAULT; ! #endif ! fprintf(stderr,"tuning DVB-T (%s) to %d Hz\n",DVB_T_LOCATION,freq); break; case FE_QPSK: ! #ifdef NEWSTRUCT ! fprintf(stderr,"tuning DVB-S to L-Band:%d, Pol:%c Srate=%d, 22kHz=%s\n",feparams.frequency,pol,srate,tone == SEC_TONE_ON ? "on" : "off"); ! #else ! fprintf(stderr,"tuning DVB-S to L-Band:%d, Pol:%c Srate=%d, 22kHz=%s\n",feparams.Frequency,pol,srate,tone == SEC_TONE_ON ? "on" : "off"); ! #endif ! if ((pol=='h') || (pol=='H')) { ! voltage = SEC_VOLTAGE_18; ! } else { ! voltage = SEC_VOLTAGE_13; ! } ! #ifdef NEWSTRUCT ! if (diseqc==0) if (ioctl(fd_frontend,FE_SET_VOLTAGE,voltage) < 0) { ! #else ! if (ioctl(fd_sec,SEC_SET_VOLTAGE,voltage) < 0) { ! #endif ! perror("ERROR setting voltage\n"); ! } ! ! if (freq > 2200000) { ! // this must be an absolute frequency if (freq < SLOF) { - #ifdef NEWSTRUCT feparams.frequency=(freq-LOF1); ! #else ! feparams.Frequency=(freq-LOF1); ! #endif ! if (tone < 0) tone = SEC_TONE_OFF; } else { - #ifdef NEWSTRUCT feparams.frequency=(freq-LOF2); ! #else ! feparams.Frequency=(freq-LOF2); ! #endif ! if (tone < 0) tone = SEC_TONE_ON; ! } ! } else { ! // this is an L-Band frequency ! #ifdef NEWSTRUCT ! feparams.frequency=freq; ! #else ! feparams.Frequency=freq; ! #endif } ! #ifdef NEWSTRUCT feparams.inversion=specInv; feparams.u.qpsk.symbol_rate=srate; feparams.u.qpsk.fec_inner=FEC_AUTO; ! #else ! feparams.Inversion=specInv; ! feparams.u.qpsk.SymbolRate=srate; ! feparams.u.qpsk.FEC_inner=FEC_AUTO; ! #endif ! ! #ifdef NEWSTRUCT ! if (diseqc==0) { ! if (ioctl(fd_frontend,FE_SET_TONE,tone) < 0) { ! perror("ERROR setting tone\n"); ! } ! } ! #else ! if (ioctl(fd_sec,SEC_SET_TONE,tone) < 0) { ! perror("ERROR setting tone\n"); ! } ! #endif ! ! #ifdef NEWSTRUCT ! if (diseqc > 0) { ! do_diseqc(fd_frontend, diseqc-1,voltage,tone); ! sleep(1); ! } ! #else ! if (diseqc > 0) { ! struct secCommand scmd; ! struct secCmdSequence scmds; ! ! scmds.continuousTone = tone; ! scmds.voltage = voltage; ! /* ! scmds.miniCommand = toneBurst ? SEC_MINI_B : SEC_MINI_A; ! */ ! scmds.miniCommand = SEC_MINI_NONE; ! ! scmd.type = 0; ! scmds.numCommands = 1; ! scmds.commands = &scmd; ! ! scmd.u.diseqc.addr = 0x10; ! scmd.u.diseqc.cmd = 0x38; ! scmd.u.diseqc.numParams = 1; ! scmd.u.diseqc.params[0] = 0xf0 | ! (((diseqc - 1) << 2) & 0x0c) | ! (voltage==SEC_VOLTAGE_18 ? 0x02 : 0) | ! (tone==SEC_TONE_ON ? 0x01 : 0); ! if (ioctl(fd_sec,SEC_SEND_SEQUENCE,&scmds) < 0) { ! perror("Error sending DisEqC"); return -1; } - } - #endif break; case FE_QAM: fprintf(stderr,"tuning DVB-C to %d, srate=%d\n",freq,srate); - #ifdef NEWSTRUCT feparams.frequency=freq; feparams.inversion=INVERSION_OFF; --- 200,230 ---- 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: ! pol = toupper(pol); if (freq < SLOF) { feparams.frequency=(freq-LOF1); ! hi_lo = 0; } else { feparams.frequency=(freq-LOF2); ! hi_lo = 1; } ! fprintf(stderr,"tuning DVB-S to Freq: %u, Pol:%c Srate=%d, 22kHz tone=%s, LNB: %d\n",feparams.frequency,pol,srate,tone == SEC_TONE_ON ? "on" : "off", diseqc); feparams.inversion=specInv; feparams.u.qpsk.symbol_rate=srate; feparams.u.qpsk.fec_inner=FEC_AUTO; ! dfd = fd_frontend; ! if(do_diseqc(dfd, diseqc, (pol == 'V' ? 1 : 0), hi_lo) == 0) ! fprintf(stderr, "DISEQC SETTING SUCCEDED\n"); ! else { ! fprintf(stderr, "DISEQC SETTING FAILED\n"); return -1; } break; case FE_QAM: fprintf(stderr,"tuning DVB-C to %d, srate=%d\n",freq,srate); feparams.frequency=freq; feparams.inversion=INVERSION_OFF; *************** *** 574,584 **** feparams.u.qam.fec_inner = FEC_AUTO; feparams.u.qam.modulation = modulation; - #else - feparams.Frequency=freq; - feparams.Inversion=INVERSION_OFF; - feparams.u.qam.SymbolRate = srate; - feparams.u.qam.FEC_inner = FEC_AUTO; - feparams.u.qam.QAM = modulation; - #endif break; default: --- 232,235 ---- *************** *** 588,595 **** usleep(100000); ! #ifndef NEWSTRUCT ! if (fd_sec) SecGetStatus(fd_sec, &sec_state); ! #endif ! ! return(check_status(fd_frontend,fe_info,&feparams,tone)); } --- 239,242 ---- usleep(100000); ! return(check_status(fd_frontend,fe_info.type,&feparams,hi_lo)); } Index: tune.h =================================================================== RCS file: /cvsroot/dvbtools/dvbstream/tune.h,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** tune.h 13 Oct 2002 18:46:03 -0000 1.5 --- tune.h 19 Mar 2004 09:59:33 -0000 1.6 *************** *** 2,25 **** #define _TUNE_H ! #ifdef NEWSTRUCT ! #include <linux/dvb/frontend.h> ! #else ! ! // The following defines make the "OLDSTRUCT" driver more compatible with NEWSTRUCT. ! ! #include <ost/frontend.h> ! ! #define fe_status_t FrontendStatus ! #define fe_spectral_inversion_t SpectralInversion ! #define fe_modulation_t Modulation ! #define fe_code_rate_t CodeRate ! #define fe_transmit_mode_t TransmitMode ! #define fe_guard_interval_t GuardInterval ! #define fe_bandwidth_t BandWidth ! #define fe_sec_voltage_t SecVoltage ! #define dmx_pes_filter_params dmxPesFilterParams ! #define dmx_sct_filter_params dmxSctFilterParams ! #define dmx_pes_type_t dmxPesType_t ! #endif #include "dvb_defaults.h" --- 2,6 ---- #define _TUNE_H ! #include <linux/dvb/frontend.h> #include "dvb_defaults.h" |