diff --git a/common/ca_ci.cpp b/common/ca_ci.cpp index 0f6c05d..c608cdf 100644 --- a/common/ca_ci.cpp +++ b/common/ca_ci.cpp @@ -1011,6 +1011,44 @@ void cCA::setSource(eDVBCISlot* slot) case TUNER_D: fprintf(ci, "D"); break; +#if BOXMODEL_VUSOLO4K + case TUNER_E: + fprintf(ci, "E"); + break; + case TUNER_F: + fprintf(ci, "F"); + break; + case TUNER_G: + fprintf(ci, "G"); + break; + case TUNER_H: + fprintf(ci, "H"); + break; + case TUNER_I: + fprintf(ci, "I"); + break; + case TUNER_J: + fprintf(ci, "J"); + break; + case TUNER_K: + fprintf(ci, "K"); + break; + case TUNER_L: + fprintf(ci, "L"); + break; + case TUNER_M: + fprintf(ci, "M"); + break; + case TUNER_N: + fprintf(ci, "N"); + break; + case TUNER_O: + fprintf(ci, "O"); + break; + case TUNER_P: + fprintf(ci, "P"); + break; +#endif } fclose(ci); } @@ -1025,7 +1063,11 @@ void cCA::setInputs() char choices[64]; FILE * fd = 0; +#if BOXMODEL_VUSOLO4K + for (int number = 0; number < 16; number++) // tuner A to P, input 0 to 15 +#else for (int number = 0; number < 4; number++) // tuner A to D, input 0 to 3 +#endif { snprintf(choices, 64, "/proc/stb/tsmux/input%d_choices", number); if(access(choices, R_OK) < 0) @@ -1086,6 +1128,44 @@ void cCA::setInputSource(eDVBCISlot* slot, bool ci) case TUNER_D: fprintf(input, "D"); break; +#if BOXMODEL_VUSOLO4K + case TUNER_E: + fprintf(input, "E"); + break; + case TUNER_F: + fprintf(input, "F"); + break; + case TUNER_G: + fprintf(input, "G"); + break; + case TUNER_H: + fprintf(input, "H"); + break; + case TUNER_I: + fprintf(input, "I"); + break; + case TUNER_J: + fprintf(input, "J"); + break; + case TUNER_K: + fprintf(input, "K"); + break; + case TUNER_L: + fprintf(input, "L"); + break; + case TUNER_M: + fprintf(input, "M"); + break; + case TUNER_N: + fprintf(input, "N"); + break; + case TUNER_O: + fprintf(input, "O"); + break; + case TUNER_P: + fprintf(input, "P"); + break; +#endif } } fclose(input); diff --git a/include/ca_ci.h b/include/ca_ci.h index 5a75650..ee15f94 100644 --- a/include/ca_ci.h +++ b/include/ca_ci.h @@ -1,6 +1,7 @@ #ifndef __CA_H_ #define __CA_H_ +#include #include #include #include @@ -126,6 +127,20 @@ typedef enum { TUNER_B, TUNER_C, TUNER_D +#if BOXMODEL_VUSOLO4K + , TUNER_E + , TUNER_F + , TUNER_G + , TUNER_H + , TUNER_I + , TUNER_J + , TUNER_K + , TUNER_L + , TUNER_M + , TUNER_N + , TUNER_O + , TUNER_P +#endif } source_t; typedef enum { diff --git a/include/dmx_hal.h b/include/dmx_hal.h index 4463b70..8ad5f3d 100644 --- a/include/dmx_hal.h +++ b/include/dmx_hal.h @@ -18,6 +18,7 @@ #ifndef __dmx_hal__ #define __dmx_hal__ +#include #include #include #include @@ -36,7 +37,11 @@ extern "C" { #include +#if BOXMODEL_VUSOLO4K +#define MAX_DMX_UNITS 16 +#else #define MAX_DMX_UNITS 4 +#endif typedef enum { diff --git a/libarmbox/dmx.cpp b/libarmbox/dmx.cpp index 10f2f32..400303f 100644 --- a/libarmbox/dmx.cpp +++ b/libarmbox/dmx.cpp @@ -20,6 +20,7 @@ * along with this program. If not, see . */ +#include #include #include #include @@ -75,7 +76,11 @@ static const char *DMX_T[] = { static int dmx_source[NUM_DEMUX] = { 0, 0, 0, 0 }; /* map the device numbers. */ +#if BOXMODEL_VUSOLO4K +#define NUM_DEMUXDEV 16 +#else #define NUM_DEMUXDEV 8 +#endif static const char *devname[NUM_DEMUXDEV] = { "/dev/dvb/adapter0/demux0", "/dev/dvb/adapter0/demux1", @@ -85,9 +90,23 @@ static const char *devname[NUM_DEMUXDEV] = { "/dev/dvb/adapter0/demux5", "/dev/dvb/adapter0/demux6", "/dev/dvb/adapter0/demux7" +#if BOXMODEL_VUSOLO4K + , "/dev/dvb/adapter0/demux8" + , "/dev/dvb/adapter0/demux9" + , "/dev/dvb/adapter0/demux10" + , "/dev/dvb/adapter0/demux11" + , "/dev/dvb/adapter0/demux12" + , "/dev/dvb/adapter0/demux13" + , "/dev/dvb/adapter0/demux14" + , "/dev/dvb/adapter0/demux15" +#endif }; /* did we already DMX_SET_SOURCE on that demux device? */ +#if BOXMODEL_VUSOLO4K +static bool init[NUM_DEMUXDEV] = { false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false }; +#else static bool init[NUM_DEMUXDEV] = { false, false, false, false, false, false, false, false }; +#endif typedef struct dmx_pdata { int last_source; diff --git a/libduckbox/hardware_caps.c b/libduckbox/hardware_caps.c index 8550149..5382929 100644 --- a/libduckbox/hardware_caps.c +++ b/libduckbox/hardware_caps.c @@ -48,6 +48,8 @@ hw_caps_t *get_hwcaps(void) caps.has_fan = 0; caps.has_CI = 2; caps.display_can_set_brightness = 1; + caps.display_type = HW_DISPLAY_LINE_TEXT; + caps.display_xres = 12; } else if (!strncmp(buf, "ufs912", 6)) { strcpy(caps.boxvendor, "DUCKBOX"); @@ -111,6 +113,8 @@ hw_caps_t *get_hwcaps(void) caps.has_fan = 0; caps.has_CI = 2; caps.display_can_set_brightness = 1; + caps.display_type = HW_DISPLAY_LINE_TEXT; + caps.display_xres = 12; } else if (!strncmp(buf, "octagon1008", 11)) { strcpy(caps.boxvendor, "DUCKBOX"); @@ -122,6 +126,8 @@ hw_caps_t *get_hwcaps(void) caps.has_fan = 0; caps.has_CI = 2; caps.display_can_set_brightness = 1; + caps.display_type = HW_DISPLAY_LINE_TEXT; + caps.display_xres = 8; } else if (!strncmp(buf, "hs7110", 6)) { strcpy(caps.boxvendor, "DUCKBOX"); @@ -188,6 +194,8 @@ hw_caps_t *get_hwcaps(void) caps.has_fan = 1; caps.has_CI = 2; caps.display_can_set_brightness = 1; + caps.display_type = HW_DISPLAY_LINE_TEXT; + caps.display_xres = 14; } else if (!strncmp(buf, "cuberevo-250hd", 4)) { strcpy(caps.boxvendor, "DUCKBOX"); @@ -274,10 +282,14 @@ hw_caps_t *get_hwcaps(void) strcpy(caps.boxname, buf); caps.can_shutdown = 1; caps.has_HDMI = 1; - caps.has_SCART = 2; - caps.can_cec = 0; + caps.has_SCART = 1; + caps.has_SCART_input = 1; + caps.can_cec = 1; caps.has_fan = 0; caps.has_CI = 2; + caps.display_can_set_brightness = 1; + caps.display_type = HW_DISPLAY_LINE_TEXT; + caps.display_xres = 8; } else if (!strncmp(buf, "arivalink200", 12)) { strcpy(caps.boxvendor, "DUCKBOX"); diff --git a/libeplayer3-arm/main/exteplayer.c b/libeplayer3-arm/main/exteplayer.c index cba7d2a..8ebce36 100644 --- a/libeplayer3-arm/main/exteplayer.c +++ b/libeplayer3-arm/main/exteplayer.c @@ -679,6 +679,7 @@ static int ParseParams(int argc, char *argv[], PlayFiles_t *playbackFiles, int * int main(int argc, char *argv[]) { system("echo 'encoder' > /proc/stb/avs/0/input"); + pthread_t termThread; int isTermThreadStarted = 0;