ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/Linux-DVB/DVB.xs
(Generate patch)

Comparing Linux-DVB/DVB.xs (file contents):
Revision 1.5 by root, Wed May 24 17:17:16 2006 UTC vs.
Revision 1.8 by root, Mon May 24 01:52:59 2010 UTC

6 6
7#include <linux/dvb/frontend.h> 7#include <linux/dvb/frontend.h>
8#include <linux/dvb/dmx.h> 8#include <linux/dvb/dmx.h>
9 9
10#define CONST(name) { #name, name } 10#define CONST(name) { #name, name }
11
12typedef int FE_fd;
11 13
12enum { 14enum {
13 SCT_PAT = 0x00, 15 SCT_PAT = 0x00,
14 SCT_CAT = 0x01, 16 SCT_CAT = 0x01,
15 SCT_PMT = 0x02, 17 SCT_PMT = 0x02,
180 CONST (DMX_PES_VIDEO), 182 CONST (DMX_PES_VIDEO),
181 CONST (DMX_PES_TELETEXT), 183 CONST (DMX_PES_TELETEXT),
182 CONST (DMX_PES_SUBTITLE), 184 CONST (DMX_PES_SUBTITLE),
183 CONST (DMX_PES_PCR), 185 CONST (DMX_PES_PCR),
184 186
185 CONST (DMX_SCRAMBLING_EV), 187 //CONST (DMX_SCRAMBLING_EV),
186 CONST (DMX_FRONTEND_EV), 188 //CONST (DMX_FRONTEND_EV),
187 189
188 CONST (DMX_CHECK_CRC), 190 CONST (DMX_CHECK_CRC),
189 CONST (DMX_ONESHOT), 191 CONST (DMX_ONESHOT),
190 CONST (DMX_IMMEDIATE_START), 192 CONST (DMX_IMMEDIATE_START),
191 CONST (DMX_KERNEL_CLIENT), 193 CONST (DMX_KERNEL_CLIENT),
198 CONST (DMX_SOURCE_DVR0), 200 CONST (DMX_SOURCE_DVR0),
199 CONST (DMX_SOURCE_DVR1), 201 CONST (DMX_SOURCE_DVR1),
200 CONST (DMX_SOURCE_DVR2), 202 CONST (DMX_SOURCE_DVR2),
201 CONST (DMX_SOURCE_DVR3), 203 CONST (DMX_SOURCE_DVR3),
202 204
203 CONST (DMX_SCRAMBLING_OFF), 205 //CONST (DMX_SCRAMBLING_OFF),
204 CONST (DMX_SCRAMBLING_ON), 206 //CONST (DMX_SCRAMBLING_ON),
205 207
206 // constants defined by this file 208 // constants defined by this file
207 CONST (SCT_PAT), 209 CONST (SCT_PAT),
208 CONST (SCT_CAT), 210 CONST (SCT_CAT),
209 CONST (SCT_PMT), 211 CONST (SCT_PMT),
673 } 675 }
674 676
675MODULE = Linux::DVB PACKAGE = Linux::DVB::Frontend 677MODULE = Linux::DVB PACKAGE = Linux::DVB::Frontend
676 678
677SV * 679SV *
678_frontend_info (int fd) 680frontend_info (FE_fd fd)
679 CODE: 681 CODE:
680 struct dvb_frontend_info fi; 682 struct dvb_frontend_info fi;
681 HV *hv; 683 HV *hv;
682 684
683 if (ioctl (fd, FE_GET_INFO, &fi) < 0) 685 if (ioctl (fd, FE_GET_INFO, &fi) < 0)
700 RETVAL = (SV *)newRV_noinc ((SV *)hv); 702 RETVAL = (SV *)newRV_noinc ((SV *)hv);
701 OUTPUT: 703 OUTPUT:
702 RETVAL 704 RETVAL
703 705
704long 706long
705_read_status (int fd) 707read_status (FE_fd fd)
706 CODE: 708 CODE:
707 fe_status_t st; 709 fe_status_t st;
708 710
709 if (ioctl (fd, FE_READ_STATUS, &st) < 0) 711 if (ioctl (fd, FE_READ_STATUS, &st) < 0)
710 XSRETURN_UNDEF; 712 XSRETURN_UNDEF;
712 RETVAL = st; 714 RETVAL = st;
713 OUTPUT: 715 OUTPUT:
714 RETVAL 716 RETVAL
715 717
716U32 718U32
717_read_ber (int fd) 719read_ber (FE_fd fd)
718 CODE: 720 CODE:
719 uint32_t ber; 721 uint32_t ber;
720 if (ioctl (fd, FE_READ_BER, &ber) < 0) 722 if (ioctl (fd, FE_READ_BER, &ber) < 0)
721 XSRETURN_UNDEF; 723 XSRETURN_UNDEF;
722 724
723 RETVAL = ber; 725 RETVAL = ber;
724 OUTPUT: 726 OUTPUT:
725 RETVAL 727 RETVAL
726 728
727U32 729U32
728_read_snr (int fd) 730read_snr (FE_fd fd)
729 CODE: 731 CODE:
730 uint32_t ber; 732 uint32_t ber;
731 if (ioctl (fd, FE_READ_SNR, &ber) < 0) 733 if (ioctl (fd, FE_READ_SNR, &ber) < 0)
732 XSRETURN_UNDEF; 734 XSRETURN_UNDEF;
733 735
735 OUTPUT: 737 OUTPUT:
736 RETVAL 738 RETVAL
737 739
738 740
739I16 741I16
740_signal_strength (int fd) 742signal_strength (FE_fd fd)
741 CODE: 743 CODE:
742 int16_t st; 744 int16_t st;
743 if (ioctl (fd, FE_READ_SIGNAL_STRENGTH, &st) < 0) 745 if (ioctl (fd, FE_READ_SIGNAL_STRENGTH, &st) < 0)
744 XSRETURN_UNDEF; 746 XSRETURN_UNDEF;
745 747
747 OUTPUT: 749 OUTPUT:
748 RETVAL 750 RETVAL
749 751
750 752
751U32 753U32
752_uncorrected_blocks (int fd) 754uncorrected_blocks (FE_fd fd)
753 CODE: 755 CODE:
754 uint32_t ubl; 756 uint32_t ubl;
755 if (ioctl (fd, FE_READ_UNCORRECTED_BLOCKS, &ubl) < 0) 757 if (ioctl (fd, FE_READ_UNCORRECTED_BLOCKS, &ubl) < 0)
756 XSRETURN_UNDEF; 758 XSRETURN_UNDEF;
757 759
802 804
803 hv = newHV (); 805 hv = newHV ();
804 HVS_I (hv, e, status); 806 HVS_I (hv, e, status);
805 get_parameters (hv, &e.parameters, type); 807 get_parameters (hv, &e.parameters, type);
806 RETVAL = (SV *)newRV_noinc ((SV *)hv); 808 RETVAL = (SV *)newRV_noinc ((SV *)hv);
809 OUTPUT:
810 RETVAL
811
812int
813diseqc_reset_overload (FE_fd fd)
814 CODE:
815 RETVAL = !!ioctl (fd, FE_DISEQC_RESET_OVERLOAD);
816 OUTPUT:
817 RETVAL
818
819int
820diseqc_voltage (FE_fd fd, int volts)
821 CODE:
822 RETVAL = !!ioctl (fd, FE_SET_VOLTAGE, volts == 18
823 ? SEC_VOLTAGE_18
824 : SEC_VOLTAGE_13);
825 OUTPUT:
826 RETVAL
827
828int
829diseqc_tone (FE_fd fd, int on)
830 CODE:
831 RETVAL = !!ioctl (fd, FE_SET_TONE, on ? SEC_TONE_ON : SEC_TONE_OFF);
832 OUTPUT:
833 RETVAL
834
835int
836diseqc_send_burst (FE_fd fd, int type)
837 CODE:
838 RETVAL = !!ioctl (fd, FE_DISEQC_SEND_BURST, type ? SEC_MINI_B : SEC_MINI_A);
839 OUTPUT:
840 RETVAL
841
842int
843diseqc_cmd (FE_fd fd, SV *command_)
844 CODE:
845{
846 STRLEN len;
847 char *command = SvPVbyte (command_, len);
848 struct dvb_diseqc_master_cmd cmd;
849
850 memcpy (cmd.msg, command, len);
851 cmd.msg_len = len;
852 RETVAL = !!ioctl (fd, FE_DISEQC_SEND_MASTER_CMD, &cmd);
853}
854 OUTPUT:
855 RETVAL
856
857SV *
858diseqc_reply (FE_fd fd, int timeout_ms)
859 CODE:
860{
861 struct dvb_diseqc_slave_reply rep;
862 rep.timeout = timeout_ms;
863
864 if (!!ioctl (fd, FE_DISEQC_RECV_SLAVE_REPLY, &rep))
865 RETVAL = newSVpvn ((char *)rep.msg, rep.msg_len);
866 else
867 RETVAL = &PL_sv_undef;
868}
807 OUTPUT: 869 OUTPUT:
808 RETVAL 870 RETVAL
809 871
810MODULE = Linux::DVB PACKAGE = Linux::DVB::Demux 872MODULE = Linux::DVB PACKAGE = Linux::DVB::Demux
811 873
915 if (syntax_indicator) 977 if (syntax_indicator)
916 { 978 {
917 switch (table_id) 979 switch (table_id)
918 { 980 {
919 case SCT_NIT: 981 case SCT_NIT:
982 case SCT_NIT_OTHER:
920 { 983 {
921 U16 descriptor_end_offset; 984 U16 descriptor_end_offset;
922 985
923 DEC_I (hv, 16, network_id); 986 DEC_I (hv, 16, network_id);
924 decode_field (2); // reserved 987 decode_field (2); // reserved
960 1023
961 case SCT_EIT_PRESENT: 1024 case SCT_EIT_PRESENT:
962 case SCT_EIT_PRESENT_OTHER: 1025 case SCT_EIT_PRESENT_OTHER:
963 case SCT_EIT_SCHEDULE0...SCT_EIT_SCHEDULE15: //GCC 1026 case SCT_EIT_SCHEDULE0...SCT_EIT_SCHEDULE15: //GCC
964 case SCT_EIT_SCHEDULE_OTHER0...SCT_EIT_SCHEDULE_OTHER15: //GCC 1027 case SCT_EIT_SCHEDULE_OTHER0...SCT_EIT_SCHEDULE_OTHER15: //GCC
1028 {
965 DEC_I (hv, 16, service_id); 1029 DEC_I (hv, 16, service_id);
966 decode_field (2); 1030 decode_field (2);
967 DEC_I (hv, 5, version_number); 1031 DEC_I (hv, 5, version_number);
968 DEC_I (hv, 1, current_next_indicator); 1032 DEC_I (hv, 1, current_next_indicator);
969 DEC_I (hv, 8, section_number); 1033 DEC_I (hv, 8, section_number);
970 DEC_I (hv, 8, last_section_number); 1034 DEC_I (hv, 8, last_section_number);
971 DEC_I (hv, 16, transport_stream_id); 1035 DEC_I (hv, 16, transport_stream_id);
972 DEC_I (hv, 16, original_network_id); 1036 DEC_I (hv, 16, original_network_id);
973 DEC_I (hv, 8, segment_last_section_number); 1037 DEC_I (hv, 8, segment_last_section_number);
974 DEC_I (hv, 8, last_table_id); 1038 DEC_I (hv, 8, last_table_id);
975 1039
976 AV *events = newAV (); 1040 AV *events = newAV ();
977 HVS (hv, events, newRV_noinc ((SV *)events)); 1041 HVS (hv, events, newRV_noinc ((SV *)events));
978 1042
979 while (end - dec_ofs > 32) 1043 while (end - dec_ofs > 32)
980 { 1044 {
981 long dll; 1045 long dll;
982 AV *desc; 1046 AV *desc;
983 HV *ev = newHV (); 1047 HV *ev = newHV ();
984 av_push (events, newRV_noinc ((SV *)ev)); 1048 av_push (events, newRV_noinc ((SV *)ev));
985 1049
986 DEC_I (ev, 16, event_id); 1050 DEC_I (ev, 16, event_id);
987 DEC_I (ev, 16, start_time_mjd); 1051 DEC_I (ev, 16, start_time_mjd);
988 DEC_I (ev, 24, start_time_hms); 1052 DEC_I (ev, 24, start_time_hms);
989 DEC_I (ev, 24, duration); 1053 DEC_I (ev, 24, duration);
990 DEC_I (ev, 3, running_status); 1054 DEC_I (ev, 3, running_status);
991 DEC_I (ev, 1, free_CA_mode); 1055 DEC_I (ev, 1, free_CA_mode);
992 1056
993 dll = dec_ofs + (decode_field (12) << 3); 1057 dll = dec_ofs + (decode_field (12) << 3);
994 1058
995 desc = decode_descriptors (dll); 1059 desc = decode_descriptors (dll);
996 HVS (ev, descriptors, newRV_noinc ((SV *)desc)); 1060 HVS (ev, descriptors, newRV_noinc ((SV *)desc));
997 } 1061 }
998 1062
999 decode_field (32); // skip CRC 1063 decode_field (32); // skip CRC
1064 }
1000 1065
1001 break; 1066 break;
1002 1067
1003 case SCT_SDT: 1068 case SCT_SDT:
1004 case SCT_SDT_OTHER: 1069 case SCT_SDT_OTHER:

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines