From c1ba54dde2cd6b71f0dbc15064a63b0600b0df0f Mon Sep 17 00:00:00 2001 From: BPanther Date: Tue, 31 Dec 2019 00:25:09 +0100 Subject: [PATCH] more s2x stuff Origin commit data ------------------ Branch: ni/coolstream Commit: https://github.com/neutrino-images/ni-neutrino/commit/674e842687dbd9344e508caf8f721ce2437bdbe8 Author: BPanther Date: 2019-12-31 (Tue, 31 Dec 2019) ------------------ No further description and justification available within origin commit message! ------------------ This commit was generated by Migit --- data/locale/deutsch.locale | 24 +- data/locale/english.locale | 24 +- src/gui/scan_setup.cpp | 50 ++- src/system/locals.h | 22 ++ src/system/locals_intern.h | 22 ++ src/zapit/include/private/linux/dvb/dmx.h | 175 ++++++++++ .../include/private/linux/dvb/frontend.h | 34 +- src/zapit/include/zapit/client/zapitclient.h | 60 ++-- src/zapit/include/zapit/frontend_types.h | 5 +- src/zapit/src/frontend.cpp | 303 +++++++++++++++++- src/zapit/src/getservices.cpp | 9 + 11 files changed, 659 insertions(+), 69 deletions(-) diff --git a/data/locale/deutsch.locale b/data/locale/deutsch.locale index 752b76959..b63f024e3 100644 --- a/data/locale/deutsch.locale +++ b/data/locale/deutsch.locale @@ -523,6 +523,24 @@ extra.fec_7_8 7/8 extra.fec_8_9 8/9 extra.fec_9_10 9/10 extra.fec_auto Auto +extra.fec_13_45 13/45 +extra.fec_9_20 9/20 +extra.fec_11_20 11/20 +extra.fec_23_36 23/36 +extra.fec_25_36 25/36 +extra.fec_13_18 13/18 +extra.fec_26_45 26/45 +extra.fec_28_45 28/45 +extra.fec_7_9 7/9 +extra.fec_77_90 77/90 +extra.fec_32_45 32/45 +extra.fec_11_15 11/15 +extra.fec_1_2_L 1/2L +extra.fec_8_15_L 8/15L +extra.fec_3_5_L 3/5L +extra.fec_2_3_L 2/3L +extra.fec_5_9_L 5/9L +extra.fec_26_45_L 26/45L extra.key_current_transponder Aktueller Transponder extra.key_format_mode Videoformat extra.key_help Hilfe @@ -584,6 +602,7 @@ extra.tp_delsys_dtmb DTMB extra.tp_delsys_dvbc DVB-C extra.tp_delsys_dvbs DVB-S extra.tp_delsys_dvbs2 DVB-S2 +extra.tp_delsys_dvbs2x DVB-S2X extra.tp_delsys_dvbt DVB-T extra.tp_delsys_dvbt2 DVB-T2 extra.tp_delsys_isdbc ISDB-C @@ -613,13 +632,16 @@ extra.tp_hierarchy_none None extra.tp_mod Modulation extra.tp_mod_128 QAM/128 extra.tp_mod_16 QAM/16 +extra.tp_mod_16a 16APSK extra.tp_mod_256 QAM/256 extra.tp_mod_32 QAM/32 +extra.tp_mod_32a 32APSK extra.tp_mod_4 QPSK extra.tp_mod_4_nr QAM/4-NR extra.tp_mod_64 QAM/64 extra.tp_mod_8 8PSK -extra.tp_mod_auto QAM/AUTO +extra.tp_mod_8a 8APSK +extra.tp_mod_auto AUTO extra.tp_pilot Pilot extra.tp_pilot_auto Auto (HW) extra.tp_pilot_auto_sw Auto (SW) diff --git a/data/locale/english.locale b/data/locale/english.locale index 23a6b0183..ebe2e4ca5 100644 --- a/data/locale/english.locale +++ b/data/locale/english.locale @@ -523,6 +523,24 @@ extra.fec_7_8 7/8 extra.fec_8_9 8/9 extra.fec_9_10 9/10 extra.fec_auto Auto +extra.fec_13_45 13/45 +extra.fec_9_20 9/20 +extra.fec_11_20 11/20 +extra.fec_23_36 23/36 +extra.fec_25_36 25/36 +extra.fec_13_18 13/18 +extra.fec_26_45 26/45 +extra.fec_28_45 28/45 +extra.fec_7_9 7/9 +extra.fec_77_90 77/90 +extra.fec_32_45 32/45 +extra.fec_11_15 11/15 +extra.fec_1_2_L 1/2L +extra.fec_8_15_L 8/15L +extra.fec_3_5_L 3/5L +extra.fec_2_3_L 2/3L +extra.fec_5_9_L 5/9L +extra.fec_26_45_L 26/45L extra.key_current_transponder Current transponder extra.key_format_mode Video format extra.key_help Help @@ -584,6 +602,7 @@ extra.tp_delsys_dtmb DTMB extra.tp_delsys_dvbc DVB-C extra.tp_delsys_dvbs DVB-S extra.tp_delsys_dvbs2 DVB-S2 +extra.tp_delsys_dvbs2x DVB-S2X extra.tp_delsys_dvbt DVB-T extra.tp_delsys_dvbt2 DVB-T2 extra.tp_delsys_isdbc ISDB-C @@ -613,13 +632,16 @@ extra.tp_hierarchy_none None extra.tp_mod Modulation extra.tp_mod_128 QAM/128 extra.tp_mod_16 QAM/16 +extra.tp_mod_16a 16APSK extra.tp_mod_256 QAM/256 extra.tp_mod_32 QAM/32 +extra.tp_mod_32a 32APSK extra.tp_mod_4 QPSK extra.tp_mod_4_nr QAM/4-NR extra.tp_mod_64 QAM/64 extra.tp_mod_8 8PSK -extra.tp_mod_auto QAM/AUTO +extra.tp_mod_8a 8APSK +extra.tp_mod_auto AUTO extra.tp_pilot Pilot extra.tp_pilot_auto Auto (HW) extra.tp_pilot_auto_sw Auto (SW) diff --git a/src/gui/scan_setup.cpp b/src/gui/scan_setup.cpp index 82781d022..9a8c672c0 100644 --- a/src/gui/scan_setup.cpp +++ b/src/gui/scan_setup.cpp @@ -104,11 +104,12 @@ const CMenuOptionChooser::keyval SATSETUP_DISEQC_OPTIONS[SATSETUP_DISEQC_OPTION_ // { SMATV_REMOTE_TUNING, LOCALE_SATSETUP_SMATVREMOTE } }; -#define SATSETUP_SCANTP_DELSYS_COUNT 5 +#define SATSETUP_SCANTP_DELSYS_COUNT 6 const CMenuOptionChooser::keyval SATSETUP_SCANTP_DELSYS[SATSETUP_SCANTP_DELSYS_COUNT] = { { DVB_S, LOCALE_EXTRA_TP_DELSYS_DVBS }, { DVB_S2, LOCALE_EXTRA_TP_DELSYS_DVBS2 }, + { DVB_S2X, LOCALE_EXTRA_TP_DELSYS_DVBS2X }, { DSS, LOCALE_EXTRA_TP_DELSYS_DSS }, { ISDBS, LOCALE_EXTRA_TP_DELSYS_ISDBS }, { TURBO, LOCALE_EXTRA_TP_DELSYS_TURBO } @@ -130,22 +131,40 @@ const CMenuOptionChooser::keyval TERRSETUP_SCANTP_DELSYS[TERRSETUP_SCANTP_DELSYS { ISDBT, LOCALE_EXTRA_TP_DELSYS_ISDBT } }; -#define SATSETUP_SCANTP_FEC_COUNT 10 -//#define CABLESETUP_SCANTP_FEC_COUNT 5 +#define SATSETUP_SCANTP_FEC_COUNT 28 const CMenuOptionChooser::keyval SATSETUP_SCANTP_FEC[SATSETUP_SCANTP_FEC_COUNT] = { // S - { FEC_1_2, LOCALE_EXTRA_FEC_1_2 }, - { FEC_2_3, LOCALE_EXTRA_FEC_2_3 }, - { FEC_3_4, LOCALE_EXTRA_FEC_3_4 }, - { FEC_5_6, LOCALE_EXTRA_FEC_5_6 }, - { FEC_7_8, LOCALE_EXTRA_FEC_7_8 }, - { FEC_AUTO, LOCALE_EXTRA_FEC_AUTO }, + { FEC_1_2, LOCALE_EXTRA_FEC_1_2 }, + { FEC_2_3, LOCALE_EXTRA_FEC_2_3 }, + { FEC_3_4, LOCALE_EXTRA_FEC_3_4 }, + { FEC_5_6, LOCALE_EXTRA_FEC_5_6 }, + { FEC_7_8, LOCALE_EXTRA_FEC_7_8 }, + { FEC_AUTO, LOCALE_EXTRA_FEC_AUTO }, // S2 - { FEC_3_5, LOCALE_EXTRA_FEC_3_5 }, - { FEC_4_5, LOCALE_EXTRA_FEC_4_5 }, - { FEC_8_9, LOCALE_EXTRA_FEC_8_9 }, - { FEC_9_10, LOCALE_EXTRA_FEC_9_10 } + { FEC_3_5, LOCALE_EXTRA_FEC_3_5 }, + { FEC_4_5, LOCALE_EXTRA_FEC_4_5 }, + { FEC_8_9, LOCALE_EXTRA_FEC_8_9 }, + { FEC_9_10, LOCALE_EXTRA_FEC_9_10 }, + // S2X + { FEC_13_45, LOCALE_EXTRA_FEC_13_45 }, + { FEC_9_20, LOCALE_EXTRA_FEC_9_20 }, + { FEC_11_20, LOCALE_EXTRA_FEC_11_20 }, + { FEC_23_36, LOCALE_EXTRA_FEC_23_36 }, + { FEC_25_36, LOCALE_EXTRA_FEC_25_36 }, + { FEC_13_18, LOCALE_EXTRA_FEC_13_18 }, + { FEC_26_45, LOCALE_EXTRA_FEC_26_45 }, + { FEC_28_45, LOCALE_EXTRA_FEC_28_45 }, + { FEC_7_9, LOCALE_EXTRA_FEC_7_9 }, + { FEC_77_90, LOCALE_EXTRA_FEC_77_90 }, + { FEC_32_45, LOCALE_EXTRA_FEC_32_45 }, + { FEC_11_15, LOCALE_EXTRA_FEC_11_15 }, + { FEC_1_2_L, LOCALE_EXTRA_FEC_1_2_L }, + { FEC_8_15_L, LOCALE_EXTRA_FEC_8_15_L }, + { FEC_3_5_L, LOCALE_EXTRA_FEC_3_5_L }, + { FEC_2_3_L, LOCALE_EXTRA_FEC_2_3_L }, + { FEC_5_9_L, LOCALE_EXTRA_FEC_5_9_L }, + { FEC_26_45_L, LOCALE_EXTRA_FEC_26_45_L } }; #if 0 @@ -256,11 +275,14 @@ const CMenuOptionChooser::keyval TERRSETUP_SCANTP_TRANSMIT_MODE[TERRSETUP_SCANTP { TRANSMISSION_MODE_AUTO, LOCALE_EXTRA_TP_TRANSMIT_MODE_AUTO } }; -#define SATSETUP_SCANTP_MOD_COUNT 3 +#define SATSETUP_SCANTP_MOD_COUNT 6 const CMenuOptionChooser::keyval SATSETUP_SCANTP_MOD[SATSETUP_SCANTP_MOD_COUNT] = { { QPSK, LOCALE_EXTRA_TP_MOD_4 }, { PSK_8, LOCALE_EXTRA_TP_MOD_8 }, + { APSK_8, LOCALE_EXTRA_TP_MOD_8A }, + { APSK_16, LOCALE_EXTRA_TP_MOD_16A }, + { APSK_32, LOCALE_EXTRA_TP_MOD_32A }, { QAM_AUTO, LOCALE_EXTRA_TP_MOD_AUTO } }; diff --git a/src/system/locals.h b/src/system/locals.h index 9e7586c5f..476210112 100644 --- a/src/system/locals.h +++ b/src/system/locals.h @@ -550,6 +550,24 @@ typedef enum LOCALE_EXTRA_FEC_8_9, LOCALE_EXTRA_FEC_9_10, LOCALE_EXTRA_FEC_AUTO, + LOCALE_EXTRA_FEC_13_45, + LOCALE_EXTRA_FEC_9_20, + LOCALE_EXTRA_FEC_11_20, + LOCALE_EXTRA_FEC_23_36, + LOCALE_EXTRA_FEC_25_36, + LOCALE_EXTRA_FEC_13_18, + LOCALE_EXTRA_FEC_26_45, + LOCALE_EXTRA_FEC_28_45, + LOCALE_EXTRA_FEC_7_9, + LOCALE_EXTRA_FEC_77_90, + LOCALE_EXTRA_FEC_32_45, + LOCALE_EXTRA_FEC_11_15, + LOCALE_EXTRA_FEC_1_2_L, + LOCALE_EXTRA_FEC_8_15_L, + LOCALE_EXTRA_FEC_3_5_L, + LOCALE_EXTRA_FEC_2_3_L, + LOCALE_EXTRA_FEC_5_9_L, + LOCALE_EXTRA_FEC_26_45_L, LOCALE_EXTRA_KEY_CURRENT_TRANSPONDER, LOCALE_EXTRA_KEY_FORMAT_MODE, LOCALE_EXTRA_KEY_HELP, @@ -611,6 +629,7 @@ typedef enum LOCALE_EXTRA_TP_DELSYS_DVBC, LOCALE_EXTRA_TP_DELSYS_DVBS, LOCALE_EXTRA_TP_DELSYS_DVBS2, + LOCALE_EXTRA_TP_DELSYS_DVBS2X, LOCALE_EXTRA_TP_DELSYS_DVBT, LOCALE_EXTRA_TP_DELSYS_DVBT2, LOCALE_EXTRA_TP_DELSYS_ISDBC, @@ -640,12 +659,15 @@ typedef enum LOCALE_EXTRA_TP_MOD, LOCALE_EXTRA_TP_MOD_128, LOCALE_EXTRA_TP_MOD_16, + LOCALE_EXTRA_TP_MOD_16A, LOCALE_EXTRA_TP_MOD_256, LOCALE_EXTRA_TP_MOD_32, + LOCALE_EXTRA_TP_MOD_32A, LOCALE_EXTRA_TP_MOD_4, LOCALE_EXTRA_TP_MOD_4_NR, LOCALE_EXTRA_TP_MOD_64, LOCALE_EXTRA_TP_MOD_8, + LOCALE_EXTRA_TP_MOD_8A, LOCALE_EXTRA_TP_MOD_AUTO, LOCALE_EXTRA_TP_PILOT, LOCALE_EXTRA_TP_PILOT_AUTO, diff --git a/src/system/locals_intern.h b/src/system/locals_intern.h index 7693860a5..ab8d186f8 100644 --- a/src/system/locals_intern.h +++ b/src/system/locals_intern.h @@ -550,6 +550,24 @@ const char * locale_real_names[] = "extra.fec_8_9", "extra.fec_9_10", "extra.fec_auto", + "extra.fec_13_45", + "extra.fec_9_20", + "extra.fec_11_20", + "extra.fec_23_36", + "extra.fec_25_36", + "extra.fec_13_18", + "extra.fec_26_45", + "extra.fec_28_45", + "extra.fec_7_9", + "extra.fec_77_90", + "extra.fec_32_45", + "extra.fec_11_15", + "extra.fec_1_2_L", + "extra.fec_8_15_L", + "extra.fec_3_5_L", + "extra.fec_2_3_L", + "extra.fec_5_9_L", + "extra.fec_26_45_L", "extra.key_current_transponder", "extra.key_format_mode", "extra.key_help", @@ -611,6 +629,7 @@ const char * locale_real_names[] = "extra.tp_delsys_dvbc", "extra.tp_delsys_dvbs", "extra.tp_delsys_dvbs2", + "extra.tp_delsys_dvbs2x", "extra.tp_delsys_dvbt", "extra.tp_delsys_dvbt2", "extra.tp_delsys_isdbc", @@ -640,12 +659,15 @@ const char * locale_real_names[] = "extra.tp_mod", "extra.tp_mod_128", "extra.tp_mod_16", + "extra.tp_mod_16a", "extra.tp_mod_256", "extra.tp_mod_32", + "extra.tp_mod_32a", "extra.tp_mod_4", "extra.tp_mod_4_nr", "extra.tp_mod_64", "extra.tp_mod_8", + "extra.tp_mod_8a", "extra.tp_mod_auto", "extra.tp_pilot", "extra.tp_pilot_auto", diff --git a/src/zapit/include/private/linux/dvb/dmx.h b/src/zapit/include/private/linux/dvb/dmx.h index b4fb650d9..65e60471e 100644 --- a/src/zapit/include/private/linux/dvb/dmx.h +++ b/src/zapit/include/private/linux/dvb/dmx.h @@ -77,6 +77,129 @@ typedef enum dmx_ts_pes DMX_PES_SUBTITLE3, DMX_PES_PCR3, +#if BOXMODEL_VUSOLO4K || BOXMODEL_VUDUO4K || BOXMODEL_VUULTIMO4K || BOXMODEL_VUUNO4KSE + DMX_PES_AUDIO4, + DMX_PES_VIDEO4, + DMX_PES_TELETEXT4, + DMX_PES_SUBTITLE4, + DMX_PES_PCR4, + + DMX_PES_AUDIO5, + DMX_PES_VIDEO5, + DMX_PES_TELETEXT5, + DMX_PES_SUBTITLE5, + DMX_PES_PCR5, + + DMX_PES_AUDIO6, + DMX_PES_VIDEO6, + DMX_PES_TELETEXT6, + DMX_PES_SUBTITLE6, + DMX_PES_PCR6, + + DMX_PES_AUDIO7, + DMX_PES_VIDEO7, + DMX_PES_TELETEXT7, + DMX_PES_SUBTITLE7, + DMX_PES_PCR7, + + DMX_PES_AUDIO8, + DMX_PES_VIDEO8, + DMX_PES_TELETEXT8, + DMX_PES_SUBTITLE8, + DMX_PES_PCR8, + + DMX_PES_AUDIO9, + DMX_PES_VIDEO9, + DMX_PES_TELETEXT9, + DMX_PES_SUBTITLE9, + DMX_PES_PCR9, + + DMX_PES_AUDIO10, + DMX_PES_VIDEO10, + DMX_PES_TELETEXT10, + DMX_PES_SUBTITLE10, + DMX_PES_PCR10, + + DMX_PES_AUDIO11, + DMX_PES_VIDEO11, + DMX_PES_TELETEXT11, + DMX_PES_SUBTITLE11, + DMX_PES_PCR11, + + DMX_PES_AUDIO12, + DMX_PES_VIDEO12, + DMX_PES_TELETEXT12, + DMX_PES_SUBTITLE12, + DMX_PES_PCR12, + + DMX_PES_AUDIO13, + DMX_PES_VIDEO13, + DMX_PES_TELETEXT13, + DMX_PES_SUBTITLE13, + DMX_PES_PCR13, + + DMX_PES_AUDIO14, + DMX_PES_VIDEO14, + DMX_PES_TELETEXT14, + DMX_PES_SUBTITLE14, + DMX_PES_PCR14, + + DMX_PES_AUDIO15, + DMX_PES_VIDEO15, + DMX_PES_TELETEXT15, + DMX_PES_SUBTITLE15, + DMX_PES_PCR15, + +#if BOXMODEL_VUULTIMO4K + DMX_PES_AUDIO16, + DMX_PES_VIDEO16, + DMX_PES_TELETEXT16, + DMX_PES_SUBTITLE16, + DMX_PES_PCR16, + + DMX_PES_AUDIO17, + DMX_PES_VIDEO17, + DMX_PES_TELETEXT17, + DMX_PES_SUBTITLE17, + DMX_PES_PCR17, + + DMX_PES_AUDIO18, + DMX_PES_VIDEO18, + DMX_PES_TELETEXT18, + DMX_PES_SUBTITLE18, + DMX_PES_PCR18, + + DMX_PES_AUDIO19, + DMX_PES_VIDEO19, + DMX_PES_TELETEXT19, + DMX_PES_SUBTITLE19, + DMX_PES_PCR19, + + DMX_PES_AUDIO20, + DMX_PES_VIDEO20, + DMX_PES_TELETEXT20, + DMX_PES_SUBTITLE20, + DMX_PES_PCR20, + + DMX_PES_AUDIO21, + DMX_PES_VIDEO21, + DMX_PES_TELETEXT21, + DMX_PES_SUBTITLE21, + DMX_PES_PCR21, + + DMX_PES_AUDIO22, + DMX_PES_VIDEO22, + DMX_PES_TELETEXT22, + DMX_PES_SUBTITLE22, + DMX_PES_PCR22, + + DMX_PES_AUDIO23, + DMX_PES_VIDEO23, + DMX_PES_TELETEXT23, + DMX_PES_SUBTITLE23, + DMX_PES_PCR23, +#endif +#endif DMX_PES_OTHER } dmx_pes_type_t; @@ -127,10 +250,62 @@ typedef enum { DMX_SOURCE_FRONT1, DMX_SOURCE_FRONT2, DMX_SOURCE_FRONT3, +#if BOXMODEL_VUSOLO4K || BOXMODEL_VUDUO4K || BOXMODEL_VUULTIMO4K || BOXMODEL_VUUNO4KSE + DMX_SOURCE_FRONT4, + DMX_SOURCE_FRONT5, + DMX_SOURCE_FRONT6, + DMX_SOURCE_FRONT7, + DMX_SOURCE_FRONT8, + DMX_SOURCE_FRONT9, + DMX_SOURCE_FRONT10, + DMX_SOURCE_FRONT11, + DMX_SOURCE_FRONT12, + DMX_SOURCE_FRONT13, + DMX_SOURCE_FRONT14, + DMX_SOURCE_FRONT15, +#if BOXMODEL_VUULTIMO4K + DMX_SOURCE_FRONT16, + DMX_SOURCE_FRONT17, + DMX_SOURCE_FRONT18, + DMX_SOURCE_FRONT19, + DMX_SOURCE_FRONT20, + DMX_SOURCE_FRONT21, + DMX_SOURCE_FRONT22, + DMX_SOURCE_FRONT23, +#endif +#endif +#if BOXMODEL_VUPLUS4K + DMX_SOURCE_DVR0 = 32, +#else DMX_SOURCE_DVR0 = 16, +#endif DMX_SOURCE_DVR1, DMX_SOURCE_DVR2, DMX_SOURCE_DVR3 +#if BOXMODEL_VUSOLO4K || BOXMODEL_VUDUO4K || BOXMODEL_VUULTIMO4K || BOXMODEL_VUUNO4KSE + , DMX_SOURCE_DVR4 + , DMX_SOURCE_DVR5 + , DMX_SOURCE_DVR6 + , DMX_SOURCE_DVR7 + , DMX_SOURCE_DVR8 + , DMX_SOURCE_DVR9 + , DMX_SOURCE_DVR10 + , DMX_SOURCE_DVR11 + , DMX_SOURCE_DVR12 + , DMX_SOURCE_DVR13 + , DMX_SOURCE_DVR14 + , DMX_SOURCE_DVR15 +#if BOXMODEL_VUULTIMO4K + , DMX_SOURCE_DVR16 + , DMX_SOURCE_DVR17 + , DMX_SOURCE_DVR18 + , DMX_SOURCE_DVR19 + , DMX_SOURCE_DVR20 + , DMX_SOURCE_DVR21 + , DMX_SOURCE_DVR22 + , DMX_SOURCE_DVR23 +#endif +#endif } dmx_source_t; struct dmx_stc { diff --git a/src/zapit/include/private/linux/dvb/frontend.h b/src/zapit/include/private/linux/dvb/frontend.h index 838c05ede..d849d56b6 100644 --- a/src/zapit/include/private/linux/dvb/frontend.h +++ b/src/zapit/include/private/linux/dvb/frontend.h @@ -164,12 +164,30 @@ typedef enum fe_code_rate { FEC_AUTO, FEC_3_5, FEC_9_10, - FEC_2_5 + FEC_2_5, + FEC_13_45=13, + FEC_9_20=14, + FEC_11_20=15, + FEC_23_36=16, + FEC_25_36=17, + FEC_13_18=18, + FEC_26_45=19, + FEC_28_45=20, + FEC_7_9=21, + FEC_77_90=22, + FEC_32_45=23, + FEC_11_15=24, + FEC_1_2_L=25, + FEC_8_15_L=26, + FEC_3_5_L=27, + FEC_2_3_L=28, + FEC_5_9_L=29, + FEC_26_45_L=30 } fe_code_rate_t; typedef enum fe_modulation { - QPSK, + QPSK, // mod=1 QAM_16, QAM_32, QAM_64, @@ -178,11 +196,12 @@ typedef enum fe_modulation { QAM_AUTO, VSB_8, VSB_16, - PSK_8, - APSK_16, - APSK_32, + PSK_8, // mod=2 ==> S2(X) + APSK_16, // mod=4 ==> S2(X) 16APSK + APSK_32, // mod=5 ==> S2(X) 32APSK ==> ?? 64APSK, 128APSK, 256APSK (mod= 6,7,8) DQPSK, - QAM_4_NR + QAM_4_NR, + APSK_8 // mod=3 ==> S2(X) 8APSK } fe_modulation_t; typedef enum fe_transmit_mode { @@ -409,7 +428,8 @@ typedef enum fe_delivery_system { SYS_DAB, SYS_DVBT2, SYS_TURBO, - SYS_DVBC_ANNEX_C + SYS_DVBC_ANNEX_C, + SYS_DVBS2X = 21 } fe_delivery_system_t; /* backward compatibility */ diff --git a/src/zapit/include/zapit/client/zapitclient.h b/src/zapit/include/zapit/client/zapitclient.h index ede7568ab..a10b92fbd 100644 --- a/src/zapit/include/zapit/client/zapitclient.h +++ b/src/zapit/include/zapit/client/zapitclient.h @@ -28,6 +28,7 @@ /* zapit */ #include "zapittypes.h" +#include #include #define CHANNEL_NAME_SIZE 40 @@ -151,9 +152,9 @@ class CZapitClient:public CBasicClient struct responseGetBouquets { unsigned int bouquet_nr; - char name[30]; - bool locked; - bool hidden; + char name[30]; + bool locked; + bool hidden; }; typedef std::vector BouquetList; @@ -162,7 +163,7 @@ class CZapitClient:public CBasicClient { unsigned int nr; t_channel_id channel_id; - char name[CHANNEL_NAME_SIZE]; + char name[CHANNEL_NAME_SIZE]; t_satellite_position satellitePosition; unsigned char service_type; }; @@ -184,12 +185,12 @@ class CZapitClient:public CBasicClient #define DESC_MAX_LEN 38 //component descriptor name length + " (AC3)" struct responseGetAPIDs { - uint32_t pid; - char desc[DESC_MAX_LEN]; - int is_ac3; - int is_aac; - int is_eac3; - int component_tag; + uint32_t pid; + char desc[DESC_MAX_LEN]; + int is_ac3; + int is_aac; + int is_eac3; + int component_tag; }; typedef std::vector APIDList; @@ -211,16 +212,16 @@ class CZapitClient:public CBasicClient t_original_network_id onid; t_service_id sid; t_transport_stream_id tsid; - unsigned short vpid; - unsigned short vtype; - unsigned short apid; - unsigned short pcrpid; - unsigned short vtxtpid; - unsigned int tsfrequency; - unsigned char polarisation; - unsigned char diseqc; - unsigned short pmtpid; - unsigned short pmt_version; + unsigned short vpid; + unsigned short vtype; + unsigned short apid; + unsigned short pcrpid; + unsigned short vtxtpid; + unsigned int tsfrequency; + unsigned char polarisation; + unsigned char diseqc; + unsigned short pmtpid; + unsigned short pmt_version; uint32_t rate; fe_code_rate fec; }; @@ -246,11 +247,11 @@ class CZapitClient:public CBasicClient unsigned int sig; unsigned int snr; unsigned long ber; - // maybe later... - // int has_lock; - // int has_signal; - // int has_sync; - // int has_carrier; + // maybe later... + // int has_lock; + // int has_signal; + // int has_sync; + // int has_carrier; }; @@ -339,8 +340,8 @@ class CZapitClient:public CBasicClient /* reloads channels and services*/ void reinitChannels(); - /* called when sectionsd updates currentservices.xml */ - void reloadCurrentServices(); + /* called when sectionsd updates currentservices.xml */ + void reloadCurrentServices(); /* get current APID-List */ void getPIDS( responseGetPIDs& pids ); @@ -383,6 +384,8 @@ class CZapitClient:public CBasicClient /* send diseqc 1.2 motor command */ void sendMotorCommand(uint8_t cmdtype, uint8_t address, uint8_t cmd, uint8_t num_parameters, uint8_t param1, uint8_t param2); + //CFrontend GetLiveFrontend() { return live_fe; }; + /****************************************/ /* */ /* Scanning stuff */ @@ -421,7 +424,7 @@ class CZapitClient:public CBasicClient void setScanBouquetMode(const bouquetMode mode); /* set Scan-Type for channel search */ - //void setScanType(const scanType mode); + //void setScanType(const scanType mode); /* get FrontEnd Signal Params */ //void getFESignal (struct responseFESignal& f); @@ -536,5 +539,4 @@ class CZapitClient:public CBasicClient #define PAL 0 #define NTSC 1 - #endif diff --git a/src/zapit/include/zapit/frontend_types.h b/src/zapit/include/zapit/frontend_types.h index 615d7703e..37acb4f45 100644 --- a/src/zapit/include/zapit/frontend_types.h +++ b/src/zapit/include/zapit/frontend_types.h @@ -39,10 +39,12 @@ #define ZAPIT_DS_ISDBS 0x00000200 #define ZAPIT_DS_ISDBC 0x00000400 #define ZAPIT_DS_ISDBT 0x00000800 -#define ZAPIT_DS_MASK 0x00000FFF // WARNING: update this mask if delivery systems are added. +#define ZAPIT_DS_DVB_S2X 0x00001000 +#define ZAPIT_DS_MASK 0x0000FFFF // WARNING: update this mask if delivery systems are added. // Delivery Method #define ZAPIT_DM_SAT (ZAPIT_DS_DVB_S | \ ZAPIT_DS_DVB_S2 | \ + ZAPIT_DS_DVB_S2X| \ ZAPIT_DS_DSS | \ ZAPIT_DS_TURBO | \ ZAPIT_DS_ISDBS) @@ -93,6 +95,7 @@ typedef enum { ISDBS = ZAPIT_DS_ISDBS, ISDBC = ZAPIT_DS_ISDBC, ISDBT = ZAPIT_DS_ISDBT, + DVB_S2X = ZAPIT_DS_DVB_S2X, // ALL_SAT = ZAPIT_DM_SAT, ALL_CABLE = ZAPIT_DM_CABLE, diff --git a/src/zapit/src/frontend.cpp b/src/zapit/src/frontend.cpp index 5baf58a04..b8e6745fb 100644 --- a/src/zapit/src/frontend.cpp +++ b/src/zapit/src/frontend.cpp @@ -63,7 +63,7 @@ extern int zapit_debug; #define SYMBOL_RATE 4 #define DELIVERY_SYSTEM 5 #define INNER_FEC 6 -// DVB-S/S2 specific +// DVB-S/S2/S2X specific #define PILOTS 7 #define ROLLOFF 8 #define MIS 9 @@ -177,15 +177,15 @@ static const struct dtv_property dvbt2_cmdargs[] = { timer_start); \ if(tmin > timer_msec) tmin = timer_msec; \ if(tmax < timer_msec) tmax = timer_msec; \ - printf("[fe%d/%d] %s: %u msec (min %u max %u)\n", \ - adapter, fenumber, label, timer_msec, tmin, tmax); + printf("[fe%d/%d] %s: %u msec (min %u max %u)\n", \ + adapter, fenumber, label, timer_msec, tmin, tmax); #define SETCMD(c, d) { \ prop[cmdseq.num].cmd = (c); \ prop[cmdseq.num].u.data = (d); \ if (cmdseq.num++ > DTV_IOCTL_MAX_MSGS) { \ - printf("ERROR: too many tuning commands on frontend %d/%d", adapter, fenumber);\ - return; \ + printf("ERROR: too many tuning commands on frontend %d/%d", adapter, fenumber); \ + return; \ } \ } @@ -201,7 +201,25 @@ typedef enum dvb_fec { f3_5, f4_5, f9_10, - fNone = 15 + fNone = 15, + f13_45, + f9_20, + f11_20, + f23_36, + f25_36, + f13_18, + f26_45, + f28_45, + f7_9, + f77_90, + f32_45, + f11_15, + f1_2_L, + f8_15_L, + f3_5_L, + f2_3_L, + f5_9_L, + f26_45_L } dvb_fec_t; static fe_sec_voltage_t unicable_lowvolt = SEC_VOLTAGE_13; @@ -274,6 +292,7 @@ bool CFrontend::Open(bool init) if (adapter == -1) { deliverySystemMask |= DVB_S; deliverySystemMask |= DVB_S2; + deliverySystemMask |= DVB_S2X; info.type = FE_QPSK; strcpy(info.name, "dummyfe"); return false; @@ -286,9 +305,7 @@ bool CFrontend::Open(bool init) mutex.unlock(); return false; } - getFEInfo(); - } currentTransponder.setTransponderId(0); @@ -352,7 +369,7 @@ void CFrontend::getFEInfo(void) if (ret == 0) { for (uint32_t i = 0; i < prop[0].u.buffer.len; i++) { if (i >= MAX_DELSYS) { - printf("ERROR: too many delivery systems on frontend %d/%d", adapter, fenumber); + printf("ERROR: too many delivery systems on frontend %d/%d\n", adapter, fenumber); break; } @@ -376,11 +393,15 @@ void CFrontend::getFEInfo(void) deliverySystemMask |= DVB_S2; isMultistream = info.caps & FE_CAN_MULTISTREAM; break; + case SYS_DVBS2X: + deliverySystemMask |= DVB_S2X; + isMultistream = info.caps & FE_CAN_MULTISTREAM; + break; case SYS_DTMB: deliverySystemMask |= DTMB; break; default: - printf("ERROR: too many delivery systems on frontend %d/%d", adapter, fenumber); + printf("ERROR: delivery system unknown on frontend %d/%d (delivery_system: %d)\n", adapter, fenumber, (fe_delivery_system_t)prop[0].u.buffer.data[i]); continue; } @@ -396,6 +417,7 @@ void CFrontend::getFEInfo(void) case FE_QPSK: deliverySystemMask |= DVB_S; deliverySystemMask |= DVB_S2; + deliverySystemMask |= DVB_S2X; break; case FE_OFDM: deliverySystemMask |= DVB_T; @@ -555,9 +577,63 @@ fe_code_rate_t CFrontend::getCodeRate(const uint8_t fec_inner, delivery_system_t case f9_10: fec = FEC_9_10; break; + case f13_45: + fec = FEC_13_45; + break; + case f9_20: + fec = FEC_9_20; + break; + case f11_20: + fec = FEC_11_20; + break; + case f23_36: + fec = FEC_23_36; + break; + case f25_36: + fec = FEC_25_36; + break; + case f13_18: + fec = FEC_13_18; + break; + case f26_45: + fec = FEC_26_45; + break; + case f28_45: + fec = FEC_28_45; + break; + case f7_9: + fec = FEC_7_9; + break; + case f77_90: + fec = FEC_77_90; + break; + case f32_45: + fec = FEC_32_45; + break; + case f11_15: + fec = FEC_11_15; + break; + case f1_2_L: + fec = FEC_1_2_L; + break; + case f8_15_L: + fec = FEC_8_15_L; + break; + case f3_5_L: + fec = FEC_3_5_L; + break; + case f2_3_L: + fec = FEC_2_3_L; + break; + case f5_9_L: + fec = FEC_5_9_L; + break; + case f26_45_L: + fec = FEC_26_45_L; + break; default: if (zapit_debug) - printf("no valid fec for DVB-S2 set.. !!\n"); + printf("No valid fec for DVB-S2/DVB-S2X set!\n"); /* fall through */ case fAuto: fec = FEC_AUTO; @@ -734,7 +810,7 @@ fe_status_t CFrontend::getStatus(void) const return (fe_status_t) (event.status & FE_HAS_LOCK); } -#if 0 +#if 0 //never used FrontendParameters CFrontend::getFrontend(void) const { @@ -767,7 +843,7 @@ uint16_t CFrontend::getSignalNoiseRatio(void) const return snr; } -#if 0 +#if 0 //never used uint32_t CFrontend::getUncorrectedBlocks(void) const { @@ -930,6 +1006,62 @@ void CFrontend::getXMLDelsysFEC(fe_code_rate_t xmlfec, delivery_system_t & delsy case FEC_S2_8PSK_9_10: fec = FEC_9_10; break; +#if 0 // TODO + case FEC_13_45: + fec = FEC_13_45; + break; + case FEC_9_20: + fec = FEC_9_20; + break; + case FEC_11_20: + fec = FEC_11_20; + break; + case FEC_23_36: + fec = FEC_23_36; + break; + case FEC_25_36: + fec = FEC_25_36; + break; + case FEC_13_18: + fec = FEC_13_18; + break; + case FEC_26_45: + fec = FEC_26_45; + break; + case FEC_28_45: + fec = FEC_28_45; + break; + case FEC_7_9: + fec = FEC_7_9; + break; + case FEC_77_90: + fec = FEC_77_90; + break; + case FEC_32_45: + fec = FEC_32_45; + break; + case FEC_11_15: + fec = FEC_11_15; + break; + case FEC_1_2_L: + fec = FEC_1_2_L; + break; + case FEC_8_15_L: + fec = FEC_8_15_L; + break; + case FEC_3_5_L: + fec = FEC_3_5_L; + break; + case FEC_2_3_L: + fec = FEC_2_3_L; + break; + case FEC_5_9_L: + fec = FEC_5_9_L; + break; + case FEC_26_45_L: + fec = FEC_26_45_L; + break; +#endif default: printf("[frontend] getXMLDelsysFEC: unknown FEC: %d !!!\n", xmlfec); /* fall through */ @@ -957,7 +1089,30 @@ void CFrontend::getDelSys(delivery_system_t delsys, int f, int m, const char *&f mod = "8PSK"; break; default: - printf("[frontend] unknown modulation %d!\n", m); + printf("[frontend] unknown DVB-S2 modulation %d!\n", m); + mod = "UNKNOWN"; + } + break; + case DVB_S2X: + sys = "DVB-S2X"; + switch (m) { + case QPSK: + mod = "QPSK"; + break; + case PSK_8: + mod = "8PSK"; + break; + case APSK_8: + mod = "8APSK"; + break; + case APSK_16: + mod = "16APSK"; + break; + case APSK_32: + mod = "32APSK"; + break; + default: + printf("[frontend] unknown DVB-S2X modulation %d!\n", m); mod = "UNKNOWN"; } break; @@ -1063,6 +1218,60 @@ void CFrontend::getDelSys(delivery_system_t delsys, int f, int m, const char *&f fec = "0"; break; #endif + case FEC_13_45: + fec = "13/45"; + break; + case FEC_9_20: + fec = "9/20"; + break; + case FEC_11_20: + fec = "11/20"; + break; + case FEC_23_36: + fec = "23/36"; + break; + case FEC_25_36: + fec = "25/36"; + break; + case FEC_13_18: + fec = "13/18"; + break; + case FEC_26_45: + fec = "26/45"; + break; + case FEC_28_45: + fec = "28/45"; + break; + case FEC_7_9: + fec = "7/9"; + break; + case FEC_77_90: + fec = "77/90"; + break; + case FEC_32_45: + fec = "32/45"; + break; + case FEC_11_15: + fec = "11/15"; + break; + case FEC_1_2_L: + fec = "1/2L"; + break; + case FEC_8_15_L: + fec = "8/15L"; + break; + case FEC_3_5_L: + fec = "3/5L"; + break; + case FEC_2_3_L: + fec = "2/3L"; + break; + case FEC_5_9_L: + fec = "5/9L"; + break; + case FEC_26_45_L: + fec = "26/45L"; + break; default: INFO("[frontend] getDelSys: unknown FEC: %d !!!\n", f); /* fall through */ @@ -1083,6 +1292,9 @@ fe_delivery_system_t CFrontend::getFEDeliverySystem(delivery_system_t Delsys) case DVB_S2: delsys = SYS_DVBS2; break; + case DVB_S2X: + delsys = SYS_DVBS2X; + break; case DVB_T: delsys = SYS_DVBT; break; @@ -1172,6 +1384,9 @@ uint32_t CFrontend::getXMLDeliverySystem(delivery_system_t delsys) case ISDBT: delnr = 11; break; + case DVB_S2X: + delnr = 12; + break; default: printf("%s: unknown delivery system (%d)\n", __FUNCTION__, delsys); delnr = 0; @@ -1291,6 +1506,60 @@ bool CFrontend::buildProperties(const FrontendParameters *feparams, struct dtv_p fec = FEC_NONE; break; #endif + case FEC_13_45: + fec = FEC_13_45; + break; + case FEC_9_20: + fec = FEC_9_20; + break; + case FEC_11_20: + fec = FEC_11_20; + break; + case FEC_23_36: + fec = FEC_23_36; + break; + case FEC_25_36: + fec = FEC_25_36; + break; + case FEC_13_18: + fec = FEC_13_18; + break; + case FEC_26_45: + fec = FEC_26_45; + break; + case FEC_28_45: + fec = FEC_28_45; + break; + case FEC_7_9: + fec = FEC_7_9; + break; + case FEC_77_90: + fec = FEC_77_90; + break; + case FEC_32_45: + fec = FEC_32_45; + break; + case FEC_11_15: + fec = FEC_11_15; + break; + case FEC_1_2_L: + fec = FEC_1_2_L; + break; + case FEC_8_15_L: + fec = FEC_8_15_L; + break; + case FEC_3_5_L: + fec = FEC_3_5_L; + break; + case FEC_2_3_L: + fec = FEC_2_3_L; + break; + case FEC_5_9_L: + fec = FEC_5_9_L; + break; + case FEC_26_45_L: + fec = FEC_26_45_L; + break; default: INFO("[fe%d/%d] DEMOD: unknown FEC: %d\n", adapter, fenumber, fec_inner); /* fall through */ @@ -1318,7 +1587,8 @@ bool CFrontend::buildProperties(const FrontendParameters *feparams, struct dtv_p switch (feparams->delsys) { case DVB_S: case DVB_S2: - if (feparams->delsys == DVB_S2) { + case DVB_S2X: + if (feparams->delsys == DVB_S2 || feparams->delsys == DVB_S2X) { nrOfProps = FE_DVBS2_PROPS; memcpy(cmdseq.props, dvbs2_cmdargs, sizeof(dvbs2_cmdargs)); @@ -1394,7 +1664,7 @@ bool CFrontend::buildProperties(const FrontendParameters *feparams, struct dtv_p currentVoltage == SEC_VOLTAGE_18, config.uni_lnb); - cmdseq.num += nrOfProps; + cmdseq.num += nrOfProps; return true; } @@ -1841,6 +2111,7 @@ int CFrontend::setParameters(transponder *TP, bool nowait) switch (feparams.delsys) { case DVB_S: case DVB_S2: + case DVB_S2X: if (freq < lnbSwitch) { high_band = false; freq_offset = lnbOffsetLow; diff --git a/src/zapit/src/getservices.cpp b/src/zapit/src/getservices.cpp index 1603b8bee..6adf6105b 100644 --- a/src/zapit/src/getservices.cpp +++ b/src/zapit/src/getservices.cpp @@ -715,6 +715,15 @@ void CServiceManager::ParseSatTransponders(delivery_system_t delsys, xmlNodePtr case 2: // 8PSK feparams.modulation = PSK_8; break; + case 3: // 8APSK + feparams.modulation = APSK_8; + break; + case 4: // 16APSK + feparams.modulation = APSK_16; + break; + case 5: // 32APSK + feparams.modulation = APSK_32; + break; default: feparams.modulation = QAM_AUTO; fprintf(stderr, "[getservices] %s: unknown modulation %d!\n", __func__, modulation);