--- Linux-DVB/DVB.xs 2006/05/24 17:17:16 1.5 +++ Linux-DVB/DVB.xs 2006/05/24 21:00:09 1.6 @@ -9,6 +9,8 @@ #define CONST(name) { #name, name } +typedef int FE_fd; + enum { SCT_PAT = 0x00, SCT_CAT = 0x01, @@ -675,7 +677,7 @@ MODULE = Linux::DVB PACKAGE = Linux::DVB::Frontend SV * -_frontend_info (int fd) +frontend_info (FE_fd fd) CODE: struct dvb_frontend_info fi; HV *hv; @@ -702,7 +704,7 @@ RETVAL long -_read_status (int fd) +read_status (FE_fd fd) CODE: fe_status_t st; @@ -714,7 +716,7 @@ RETVAL U32 -_read_ber (int fd) +read_ber (FE_fd fd) CODE: uint32_t ber; if (ioctl (fd, FE_READ_BER, &ber) < 0) @@ -725,7 +727,7 @@ RETVAL U32 -_read_snr (int fd) +read_snr (FE_fd fd) CODE: uint32_t ber; if (ioctl (fd, FE_READ_SNR, &ber) < 0) @@ -737,7 +739,7 @@ I16 -_signal_strength (int fd) +signal_strength (FE_fd fd) CODE: int16_t st; if (ioctl (fd, FE_READ_SIGNAL_STRENGTH, &st) < 0) @@ -749,7 +751,7 @@ U32 -_uncorrected_blocks (int fd) +uncorrected_blocks (FE_fd fd) CODE: uint32_t ubl; if (ioctl (fd, FE_READ_UNCORRECTED_BLOCKS, &ubl) < 0) @@ -807,6 +809,66 @@ OUTPUT: RETVAL +int +diseqc_reset_overload (FE_fd fd) + CODE: + RETVAL = !!ioctl (fd, FE_DISEQC_RESET_OVERLOAD); + OUTPUT: + RETVAL + +int +diseqc_voltage (FE_fd fd, int volts) + CODE: + RETVAL = !!ioctl (fd, FE_SET_VOLTAGE, volts == 18 + ? SEC_VOLTAGE_18 + : SEC_VOLTAGE_13); + OUTPUT: + RETVAL + +int +diseqc_tone (FE_fd fd, int on) + CODE: + RETVAL = !!ioctl (fd, FE_SET_TONE, on ? SEC_TONE_ON : SEC_TONE_OFF); + OUTPUT: + RETVAL + +int +diseqc_send_burst (FE_fd fd, int type) + CODE: + RETVAL = !!ioctl (fd, FE_DISEQC_SEND_BURST, type ? SEC_MINI_B : SEC_MINI_A); + OUTPUT: + RETVAL + +int +diseqc_cmd (FE_fd fd, SV *command_) + CODE: +{ + STRLEN len; + char *command = SvPVbyte (command_, len); + struct dvb_diseqc_master_cmd cmd; + + memcpy (cmd.msg, command_, len); + cmd.msg_len = len; + RETVAL = !!ioctl (fd, FE_DISEQC_SEND_MASTER_CMD, &cmd); +} + OUTPUT: + RETVAL + +SV * +diseqc_reply (FE_fd fd, int timeout_ms) + CODE: +{ + struct dvb_diseqc_slave_reply rep; + rep.timeout = timeout_ms; + + if (!!ioctl (fd, FE_DISEQC_RECV_SLAVE_REPLY, &rep)) + RETVAL = newSVpvn ((char *)rep.msg, rep.msg_len); + else + RETVAL = &PL_sv_undef; +} + OUTPUT: + RETVAL + MODULE = Linux::DVB PACKAGE = Linux::DVB::Demux int