diff --git a/acinclude.m4 b/acinclude.m4 index 658bf46..43a6baa 100644 --- a/acinclude.m4 +++ b/acinclude.m4 @@ -90,7 +90,7 @@ AC_ARG_WITH(boxmodel, AS_HELP_STRING([--with-boxmodel], [valid for generic: generic, raspi]) AS_HELP_STRING([], [valid for spark: spark, spark7162]) AS_HELP_STRING([], [valid for duckbox: ufs910, ufs912, ufs913, ufs922, atevio7500, fortis_hdbox, octagon1008, hs7110, hs7810a, hs7119, hs7819, dp7000, cuberevo, cuberevo_mini, cuberevo_mini2, cuberevo_250hd, cuberevo_2000hd, cuberevo_3000hd, ipbox9900, ipbox99, ipbox55, arivalink200, tf7700, hl101]) -AS_HELP_STRING([], [valid for armbox: hd51, hd60, bre2ze4k, vusolo4k, vuduo4k, vuultimo4k, vuzero4k]) +AS_HELP_STRING([], [valid for armbox: hd51, hd60, bre2ze4k, vusolo4k, vuduo4k, vuultimo4k, vuuno4k, vuuno4kse, vuzero4k]) AS_HELP_STRING([], [valid for mipsbox: vuduo]), [case "${withval}" in generic|raspi) @@ -114,7 +114,7 @@ AS_HELP_STRING([], [valid for mipsbox: vuduo]), AC_MSG_ERROR([unknown model $withval for boxtype $BOXTYPE]) fi ;; - hd51|hd60|bre2ze4k|vusolo4k|vuduo4k|vuultimo4k|vuzero4k) + hd51|hd60|bre2ze4k|vusolo4k|vuduo4k|vuultimo4k|vuuno4k|vuuno4kse|vuzero4k) if test "$BOXTYPE" = "armbox"; then BOXMODEL="$withval" else @@ -184,6 +184,8 @@ AM_CONDITIONAL(BOXMODEL_BRE2ZE4K, test "$BOXMODEL" = "bre2ze4k") AM_CONDITIONAL(BOXMODEL_VUSOLO4K, test "$BOXMODEL" = "vusolo4k") AM_CONDITIONAL(BOXMODEL_VUDUO4K, test "$BOXMODEL" = "vuduo4k") AM_CONDITIONAL(BOXMODEL_VUULTIMO4K, test "$BOXMODEL" = "vuultimo4k") +AM_CONDITIONAL(BOXMODEL_VUUNO4K, test "$BOXMODEL" = "vuuno4k") +AM_CONDITIONAL(BOXMODEL_VUUNO4KSE, test "$BOXMODEL" = "vuuno4kse") AM_CONDITIONAL(BOXMODEL_VUZERO4K, test "$BOXMODEL" = "vuzero4k") # mipsbox @@ -276,6 +278,10 @@ elif test "$BOXMODEL" = "vuduo4k"; then AC_DEFINE(BOXMODEL_VUDUO4K, 1, [vuduo4k]) elif test "$BOXMODEL" = "vuultimo4k"; then AC_DEFINE(BOXMODEL_VUULTIMO4K, 1, [vuultimo4k]) +elif test "$BOXMODEL" = "vuuno4k"; then + AC_DEFINE(BOXMODEL_VUUNO4K, 1, [vuuno4k]) +elif test "$BOXMODEL" = "vuuno4kse"; then + AC_DEFINE(BOXMODEL_VUUNO4KSE, 1, [vuuno4kse]) elif test "$BOXMODEL" = "vuzero4k"; then AC_DEFINE(BOXMODEL_VUZERO4K, 1, [vuzero4k]) elif test "$BOXMODEL" = "vuduo"; then diff --git a/common/ca_ci.cpp b/common/ca_ci.cpp index be0dd2c..1c5a4a1 100644 --- a/common/ca_ci.cpp +++ b/common/ca_ci.cpp @@ -1098,7 +1098,7 @@ void cCA::setInputs() #if BOXMODEL_VUULTIMO4K for (int number = 0; number < 24; number++) // tuner A to X, input 0 to 23 #else -#if BOXMODEL_VUSOLO4K || BOXMODEL_VUDUO4K +#if BOXMODEL_VUSOLO4K || BOXMODEL_VUDUO4K || BOXMODEL_VUUNO4KSE 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 @@ -1164,7 +1164,7 @@ void cCA::setInputSource(eDVBCISlot* slot, bool ci) case TUNER_D: fprintf(input, "D"); break; -#if BOXMODEL_VUSOLO4K || BOXMODEL_VUDUO4K || BOXMODEL_VUULTIMO4K +#if BOXMODEL_VUSOLO4K || BOXMODEL_VUDUO4K || BOXMODEL_VUULTIMO4K || BOXMODEL_VUUNO4KSE || BOXMODEL_VUUNO4K case TUNER_E: fprintf(input, "E"); break; diff --git a/include/ca_ci.h b/include/ca_ci.h index 5897626..e47dd8d 100644 --- a/include/ca_ci.h +++ b/include/ca_ci.h @@ -127,7 +127,7 @@ typedef enum { TUNER_B, TUNER_C, TUNER_D -#if BOXMODEL_VUSOLO4K || BOXMODEL_VUDUO4K || BOXMODEL_VUULTIMO4K +#if BOXMODEL_VUSOLO4K || BOXMODEL_VUDUO4K || BOXMODEL_VUULTIMO4K || BOXMODEL_VUUNO4KSE || BOXMODEL_VUUNO4K , TUNER_E , TUNER_F , TUNER_G diff --git a/include/dmx_hal.h b/include/dmx_hal.h index a8eb72f..a68051c 100644 --- a/include/dmx_hal.h +++ b/include/dmx_hal.h @@ -40,7 +40,7 @@ extern "C" { #if BOXMODEL_VUULTIMO4K #define MAX_DMX_UNITS 24 #else -#if BOXMODEL_VUSOLO4K || BOXMODEL_VUDUO4K +#if BOXMODEL_VUSOLO4K || BOXMODEL_VUDUO4K || BOXMODEL_VUUNO4KSE || BOXMODEL_VUUNO4K #define MAX_DMX_UNITS 16 #else #define MAX_DMX_UNITS 4 diff --git a/libarmbox/audio.cpp b/libarmbox/audio.cpp index 5d056bb..65cf738 100644 --- a/libarmbox/audio.cpp +++ b/libarmbox/audio.cpp @@ -337,7 +337,7 @@ int cAudio::StopClip() hal_info("%s: clipfd not yet opened\n", __FUNCTION__); return -1; } -#if BOXMODEL_VUSOLO4K || BOXMODEL_VUDUO4K || BOXMODEL_VUULTIMO4K || BOXMODEL_VUZERO4K +#if BOXMODEL_VUSOLO4K || BOXMODEL_VUDUO4K || BOXMODEL_VUULTIMO4K || BOXMODEL_VUZERO4K || BOXMODEL_VUUNO4KSE || BOXMODEL_VUUNO4K ioctl(clipfd, SNDCTL_DSP_RESET); #endif close(clipfd); diff --git a/libarmbox/dmx.cpp b/libarmbox/dmx.cpp index a4c00bb..cceb90c 100644 --- a/libarmbox/dmx.cpp +++ b/libarmbox/dmx.cpp @@ -71,24 +71,36 @@ static const char *DMX_T[] = { /* this is the number of different cDemux() units, not the number of * /dev/dvb/.../demuxX devices! */ -#if BOXMODEL_VUSOLO4K || BOXMODEL_VUDUO4K +#if BOXMODEL_VUULTIMO4K +#define NUM_DEMUX 24 +#else +#if BOXMODEL_VUSOLO4K || BOXMODEL_VUDUO4K || BOXMODEL_VUUNO4KSE || BOXMODEL_VUUNO4K #define NUM_DEMUX 16 #else #define NUM_DEMUX 4 #endif +#endif /* the current source of each cDemux unit */ -#if BOXMODEL_VUSOLO4K || BOXMODEL_VUDUO4K +#if BOXMODEL_VUULTIMO4K +static int dmx_source[NUM_DEMUX] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; +#else +#if BOXMODEL_VUSOLO4K || BOXMODEL_VUDUO4K || BOXMODEL_VUUNO4KSE || BOXMODEL_VUUNO4K static int dmx_source[NUM_DEMUX] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; #else static int dmx_source[NUM_DEMUX] = { 0, 0, 0, 0 }; #endif +#endif /* map the device numbers. */ -#if BOXMODEL_VUSOLO4K || BOXMODEL_VUDUO4K +#if BOXMODEL_VUULTIMO4K +#define NUM_DEMUXDEV 24 +#else +#if BOXMODEL_VUSOLO4K || BOXMODEL_VUDUO4K || BOXMODEL_VUUNO4KSE || BOXMODEL_VUUNO4K #define NUM_DEMUXDEV 16 #else #define NUM_DEMUXDEV 8 #endif +#endif static const char *devname[NUM_DEMUXDEV] = { "/dev/dvb/adapter0/demux0", "/dev/dvb/adapter0/demux1", @@ -98,7 +110,7 @@ static const char *devname[NUM_DEMUXDEV] = { "/dev/dvb/adapter0/demux5", "/dev/dvb/adapter0/demux6", "/dev/dvb/adapter0/demux7" -#if BOXMODEL_VUSOLO4K || BOXMODEL_VUDUO4K +#if BOXMODEL_VUSOLO4K || BOXMODEL_VUDUO4K || BOXMODEL_VUULTIMO4K || BOXMODEL_VUUNO4KSE || BOXMODEL_VUUNO4K , "/dev/dvb/adapter0/demux8" , "/dev/dvb/adapter0/demux9" , "/dev/dvb/adapter0/demux10" @@ -107,14 +119,28 @@ static const char *devname[NUM_DEMUXDEV] = { , "/dev/dvb/adapter0/demux13" , "/dev/dvb/adapter0/demux14" , "/dev/dvb/adapter0/demux15" +#if BOXMODEL_VUULTIMO4K + , "/dev/dvb/adapter0/demux16" + , "/dev/dvb/adapter0/demux17" + , "/dev/dvb/adapter0/demux18" + , "/dev/dvb/adapter0/demux19" + , "/dev/dvb/adapter0/demux20" + , "/dev/dvb/adapter0/demux21" + , "/dev/dvb/adapter0/demux22" + , "/dev/dvb/adapter0/demux23" +#endif #endif }; /* did we already DMX_SET_SOURCE on that demux device? */ -#if BOXMODEL_VUSOLO4K || BOXMODEL_VUDUO4K +#if BOXMODEL_VUULTIMO4K +static bool init[NUM_DEMUXDEV] = { false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false }; +#else +#if BOXMODEL_VUSOLO4K || BOXMODEL_VUDUO4K || BOXMODEL_VUUNO4KSE || BOXMODEL_VUUNO4K 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 +#endif typedef struct dmx_pdata { int last_source; diff --git a/libarmbox/hardware_caps.c b/libarmbox/hardware_caps.c index c163cff..b1a8324 100644 --- a/libarmbox/hardware_caps.c +++ b/libarmbox/hardware_caps.c @@ -99,6 +99,40 @@ hw_caps_t *get_hwcaps(void) strcpy(caps.boxname, "ZERO4K"); strcpy(caps.boxarch, "BCM72604"); #endif +#if BOXMODEL_VUUNO4KSE + initialized = 1; + caps.has_CI = 1; + caps.can_cec = 1; + caps.can_shutdown = 1; + caps.display_xres = 480; + caps.display_yres = 320; + caps.display_type = HW_DISPLAY_GFX; + caps.display_can_deepstandby = 0; // 0 because we use graphlcd/lcd4linux + caps.display_can_set_brightness = 0; // 0 because we use graphlcd/lcd4linux + caps.display_has_statusline = 0; // 0 because we use graphlcd/lcd4linux + caps.has_button_timer = 1; + caps.has_button_vformat = 0 + caps.has_HDMI = 2; + strcpy(caps.boxvendor, "VU+"); + strcpy(caps.boxname, "UNO4KSE"); + strcpy(caps.boxarch, "BCM7252S"); +#endif +#if BOXMODEL_VUUNO4K + initialized = 1; + caps.has_CI = 1; + caps.can_cec = 1; + caps.can_shutdown = 1; + caps.display_type = HW_DISPLAY_NONE; + caps.display_can_deepstandby = 0; + caps.display_can_set_brightness = 0; + caps.display_has_statusline = 0; + caps.has_button_timer = 1; + caps.has_button_vformat = 0; + caps.has_HDMI = 1; + strcpy(caps.boxvendor, "VU+"); + strcpy(caps.boxname, "UNO4K"); + strcpy(caps.boxarch, "BCM7252S"); +#endif #if BOXMODEL_HD51 initialized = 1; caps.has_CI = 1; diff --git a/libarmbox/init.cpp b/libarmbox/init.cpp index 56d91f3..8cee454 100644 --- a/libarmbox/init.cpp +++ b/libarmbox/init.cpp @@ -38,7 +38,7 @@ void hal_api_init() proc_put("/proc/stb/fb/dst_width", buffer, strlen(buffer)); sprintf(buffer, "%x", 1); proc_put("/proc/stb/fb/dst_apply", buffer, strlen(buffer)); -#if BOXMODEL_VUSOLO4K || BOXMODEL_VUDUO4K || BOXMODEL_VUULTIMO4K +#if BOXMODEL_VUSOLO4K || BOXMODEL_VUDUO4K || BOXMODEL_VUULTIMO4K || BOXMODEL_VUUNO4KSE || BOXMODEL_VUUNO4K const char mode_fcc[] = { "enable" }; proc_put("/proc/stb/frontend/fbc/fcc", mode_fcc, strlen(mode_fcc)); #endif