diff --git a/acinclude.m4 b/acinclude.m4 index b4df65c..c37940c 100644 --- a/acinclude.m4 +++ b/acinclude.m4 @@ -146,7 +146,7 @@ AC_ARG_WITH(boxmodel, AS_HELP_STRING([--with-boxmodel], [valid for generic: raspi]) 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 spark: spark, spark7162]) -AS_HELP_STRING([], [valid for armbox: hd51, hd60, bre2ze4k, vusolo4k, vuzero4k, h7]) +AS_HELP_STRING([], [valid for armbox: hd51, hd60, bre2ze4k, vusolo4k, vuduo4k, vuzero4k, h7]) AS_HELP_STRING([], [valid for mipsbox: vuduo]), [case "${withval}" in 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) @@ -163,7 +163,7 @@ AS_HELP_STRING([], [valid for mipsbox: vuduo]), AC_MSG_ERROR([unknown model $withval for boxtype $BOXTYPE]) fi ;; - hd51|hd60|bre2ze4k|vusolo4k|vuzero4k|h7) + hd51|hd60|bre2ze4k|vusolo4k|vuduo4k|vuzero4k|h7) if test "$BOXTYPE" = "armbox"; then BOXMODEL="$withval" else @@ -224,6 +224,7 @@ AM_CONDITIONAL(BOXMODEL_HD51, test "$BOXMODEL" = "hd51") AM_CONDITIONAL(BOXMODEL_HD60, test "$BOXMODEL" = "hd60") AM_CONDITIONAL(BOXMODEL_BRE2ZE4K, test "$BOXMODEL" = "bre2ze4k") AM_CONDITIONAL(BOXMODEL_VUSOLO4K, test "$BOXMODEL" = "vusolo4k") +AM_CONDITIONAL(BOXMODEL_VUDUO4K, test "$BOXMODEL" = "vuduo4k") AM_CONDITIONAL(BOXMODEL_VUZERO4K, test "$BOXMODEL" = "vuzero4k") AM_CONDITIONAL(BOXMODEL_VUDUO, test "$BOXMODEL" = "vuduo") AM_CONDITIONAL(BOXMODEL_H7, test "$BOXMODEL" = "h7") @@ -307,6 +308,8 @@ elif test "$BOXMODEL" = "bre2ze4k"; then AC_DEFINE(BOXMODEL_BRE2ZE4K, 1, [bre2ze4k]) elif test "$BOXMODEL" = "vusolo4k"; then AC_DEFINE(BOXMODEL_VUSOLO4K, 1, [vusolo4k]) +elif test "$BOXMODEL" = "vuduo4k"; then + AC_DEFINE(BOXMODEL_VUDUO4K, 1, [vuduo4k]) 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 c46e028..7399a8c 100644 --- a/common/ca_ci.cpp +++ b/common/ca_ci.cpp @@ -234,7 +234,7 @@ static bool transmitData(eDVBCISlot* slot, unsigned char* d, int len) { printf("%s -> %s len(%d)\n", FILENAME, __func__, len); -#if BOXMODEL_VUSOLO4K +#if BOXMODEL_VUSOLO4K || BOXMODEL_VUDUO4K #if y_debug for (int i = 0; i < len; i++) printf("%02x ", d[i]); @@ -1017,7 +1017,7 @@ void cCA::setSource(eDVBCISlot* slot) case TUNER_D: fprintf(ci, "D"); break; -#if BOXMODEL_VUSOLO4K +#if BOXMODEL_VUSOLO4K || BOXMODEL_VUDUO4K case TUNER_E: fprintf(ci, "E"); break; @@ -1069,7 +1069,7 @@ void cCA::setInputs() char choices[64]; FILE * fd = 0; -#if BOXMODEL_VUSOLO4K +#if BOXMODEL_VUSOLO4K || BOXMODEL_VUDUO4K 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 @@ -1134,7 +1134,7 @@ void cCA::setInputSource(eDVBCISlot* slot, bool ci) case TUNER_D: fprintf(input, "D"); break; -#if BOXMODEL_VUSOLO4K +#if BOXMODEL_VUSOLO4K || BOXMODEL_VUDUO4K case TUNER_E: fprintf(input, "E"); break; diff --git a/include/ca_ci.h b/include/ca_ci.h index 353e2f5..4fc90c6 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 +#if BOXMODEL_VUSOLO4K || BOXMODEL_VUDUO4K , TUNER_E , TUNER_F , TUNER_G diff --git a/include/dmx_hal.h b/include/dmx_hal.h index 56b411f..e9ad643 100644 --- a/include/dmx_hal.h +++ b/include/dmx_hal.h @@ -37,7 +37,7 @@ extern "C" { #include -#if BOXMODEL_VUSOLO4K +#if BOXMODEL_VUSOLO4K || BOXMODEL_VUDUO4K #define MAX_DMX_UNITS 16 #else #define MAX_DMX_UNITS 4 diff --git a/libarmbox/audio.cpp b/libarmbox/audio.cpp index 3e2e952..49dd574 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 +#if BOXMODEL_VUSOLO4K || BOXMODEL_VUDUO4K ioctl(clipfd, SNDCTL_DSP_RESET); #endif close(clipfd); diff --git a/libarmbox/dmx.cpp b/libarmbox/dmx.cpp index 6d9cade..a4c00bb 100644 --- a/libarmbox/dmx.cpp +++ b/libarmbox/dmx.cpp @@ -71,20 +71,20 @@ static const char *DMX_T[] = { /* this is the number of different cDemux() units, not the number of * /dev/dvb/.../demuxX devices! */ -#if BOXMODEL_VUSOLO4K +#if BOXMODEL_VUSOLO4K || BOXMODEL_VUDUO4K #define NUM_DEMUX 16 #else #define NUM_DEMUX 4 #endif /* the current source of each cDemux unit */ -#if BOXMODEL_VUSOLO4K +#if BOXMODEL_VUSOLO4K || BOXMODEL_VUDUO4K 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 /* map the device numbers. */ -#if BOXMODEL_VUSOLO4K +#if BOXMODEL_VUSOLO4K || BOXMODEL_VUDUO4K #define NUM_DEMUXDEV 16 #else #define NUM_DEMUXDEV 8 @@ -98,7 +98,7 @@ static const char *devname[NUM_DEMUXDEV] = { "/dev/dvb/adapter0/demux5", "/dev/dvb/adapter0/demux6", "/dev/dvb/adapter0/demux7" -#if BOXMODEL_VUSOLO4K +#if BOXMODEL_VUSOLO4K || BOXMODEL_VUDUO4K , "/dev/dvb/adapter0/demux8" , "/dev/dvb/adapter0/demux9" , "/dev/dvb/adapter0/demux10" @@ -110,7 +110,7 @@ static const char *devname[NUM_DEMUXDEV] = { #endif }; /* did we already DMX_SET_SOURCE on that demux device? */ -#if BOXMODEL_VUSOLO4K +#if BOXMODEL_VUSOLO4K || BOXMODEL_VUDUO4K 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 }; diff --git a/libarmbox/hardware_caps.c b/libarmbox/hardware_caps.c index b0ac3fd..cd610e2 100644 --- a/libarmbox/hardware_caps.c +++ b/libarmbox/hardware_caps.c @@ -47,6 +47,24 @@ hw_caps_t *get_hwcaps(void) strcpy(caps.boxname, "SOLO4K"); strcpy(caps.boxarch, "BCM7376"); #endif +#if BOXMODEL_VUDUO4K + initialized = 1; + caps.has_CI = 2; + 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 = 1; + strcpy(caps.boxvendor, "VU+"); + strcpy(caps.boxname, "DUO4K"); + strcpy(caps.boxarch, "BCM7278"); +#endif #if BOXMODEL_VUZERO4K initialized = 1; caps.has_CI = 1; diff --git a/libarmbox/init.cpp b/libarmbox/init.cpp index 573266e..53b9707 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 +#if BOXMODEL_VUSOLO4K || BOXMODEL_VUDUO4K const char mode_fcc[] = { "enable" }; proc_put("/proc/stb/frontend/fbc/fcc", mode_fcc, strlen(mode_fcc)); #endif