diff --git a/configure.ac b/configure.ac index 6da3d63c6..900f8f21a 100644 --- a/configure.ac +++ b/configure.ac @@ -250,6 +250,7 @@ if test -e ${srcdir}/lib/libcoolstream2/cs_frontpanel.h; then fi HWLIB_CFLAGS='-I$(top_srcdir)/lib/libcoolstream2 -I$(top_srcdir)/src/zapit/include/private' fi +HWLIB_CFLAGS="$HWLIB_CFLAGS "'-I$(top_srcdir)/lib/hardware/coolstream' fi # hack, so that framebuffer.h does not need to be included everywhere... @@ -313,6 +314,7 @@ data/y-web/scripts/Makefile data/y-web/styles/Makefile lib/Makefile lib/connection/Makefile +lib/hardware/coolstream/Makefile lib/jsoncpp/Makefile lib/libconfigfile/Makefile lib/libdvbsub/Makefile diff --git a/lib/Makefile.am b/lib/Makefile.am index bc4b8f2e5..63e00773d 100644 --- a/lib/Makefile.am +++ b/lib/Makefile.am @@ -17,3 +17,8 @@ if ENABLE_UPNP SUBDIRS += \ libupnpclient endif + +if BOXTYPE_COOL +SUBDIRS += \ + hardware/coolstream +endif diff --git a/lib/hardware/coolstream/Makefile.am b/lib/hardware/coolstream/Makefile.am new file mode 100644 index 000000000..359ce20b2 --- /dev/null +++ b/lib/hardware/coolstream/Makefile.am @@ -0,0 +1,12 @@ +noinst_LIBRARIES = libhwcaps.a + +AM_CXXFLAGS = -fno-rtti -fno-exceptions -fno-strict-aliasing + +if BOXMODEL_CS_HD2 +AM_CPPFLAGS = -I$(top_srcdir)/lib/libcoolstream2 +else +AM_CPPFLAGS = -I$(top_srcdir)/lib/libcoolstream +endif + +libhwcaps_a_SOURCES = \ + hardware_caps.cpp diff --git a/lib/hardware/coolstream/hardware_caps.cpp b/lib/hardware/coolstream/hardware_caps.cpp new file mode 100644 index 000000000..216a6dcae --- /dev/null +++ b/lib/hardware/coolstream/hardware_caps.cpp @@ -0,0 +1,72 @@ +/* + * determine the capabilities of the hardware. + * part of libstb-hal + * + * (C) 2010-2012,2016 Stefan Seyfried + * + * License: GPL v2 or later + */ +#include "cs_api.h" +#include +#include +#include "hardware_caps.h" + +static int initialized = 0; +static hw_caps_t caps; + +hw_caps_t *get_hwcaps(void) { + if (initialized) + return ∩︀ + int rev = cs_get_revision(); + caps.has_fan = (rev < 8); + caps.has_HDMI = 1; + caps.has_SCART = (rev != 10); + caps.has_SCART_input = 0; + caps.has_YUV_cinch = 1; + caps.can_shutdown = (rev > 7); + caps.can_cec = 1; + caps.display_type = HW_DISPLAY_LINE_TEXT; + caps.display_xres = 12; + caps.display_yres = 0; + caps.can_set_display_brightness = 1; + caps.can_ar_14_9 = 1; + caps.can_ps_14_9 = 1; + caps.force_tuner_2G = 0; + strcpy(caps.boxvendor, "Coolstream"); + /* list of boxnames from neutrinoyparser.cpp */ + strcpy(caps.boxarch, "Nevis"); + switch (rev) { + case 6: + case 7: // Black Stallion Edition + strcpy(caps.boxname, "HD1"); + caps.force_tuner_2G = 1; + break; + case 8: + strcpy(caps.boxname, "Neo"); + caps.force_tuner_2G = 1; + break; + case 9: + strcpy(caps.boxname, "Tank"); + strcpy(caps.boxarch, "Apollo"); + break; + case 10: + strcpy(caps.boxname, "Zee"); + caps.force_tuner_2G = 1; + break; + case 11: + strcpy(caps.boxname, "Trinity"); + strcpy(caps.boxarch, "Shiner"); + break; + case 12: + strcpy(caps.boxname, "Zee2"); + strcpy(caps.boxarch, "Kronos"); + break; + default: + strcpy(caps.boxname, "UNKNOWN_BOX"); + strcpy(caps.boxarch, "Unknown"); + fprintf(stderr, "[%s] unhandled box revision %d\n", __func__, rev); + } + initialized = 1; + return ∩︀ +} + diff --git a/lib/hardware/coolstream/hardware_caps.h b/lib/hardware/coolstream/hardware_caps.h new file mode 100644 index 000000000..aaea1334e --- /dev/null +++ b/lib/hardware/coolstream/hardware_caps.h @@ -0,0 +1,43 @@ +/* + * determine the capabilities of the hardware. + * part of libstb-hal + * + * (C) 2010-2012,2016 Stefan Seyfried + * + * License: GPL v2 or later + */ +#ifndef __HARDWARE_CAPS_H__ +#define __HARDWARE_CAPS_H__ + +typedef enum +{ + HW_DISPLAY_NONE, + HW_DISPLAY_LED_NUM, /* simple 7 segment LED display */ + HW_DISPLAY_LINE_TEXT, /* 1 line text display */ + HW_DISPLAY_GFX +} display_type_t; + + +typedef struct hw_caps +{ + int has_fan; + int has_HDMI; + int has_SCART; + int has_SCART_input; + int has_YUV_cinch; + int can_shutdown; + int can_cec; + int can_ar_14_9; /* video drivers have 14:9 aspect ratio mode */ + int can_ps_14_9; /* video drivers have 14:9 panscan mode */ + int force_tuner_2G; /* force DVB-S2 even though driver may not advertise it */ + display_type_t display_type; + int display_xres; /* x resolution or chars per line */ + int display_yres; + int can_set_display_brightness; + char boxvendor[64]; + char boxname[64]; + char boxarch[64]; +} hw_caps_t; + +hw_caps_t *get_hwcaps(void); +#endif diff --git a/src/Makefile.am b/src/Makefile.am index 1d452bd8f..73843b7d0 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -142,6 +142,8 @@ neutrino_LDADD += \ endif if BOXTYPE_COOL +neutrino_LDADD += \ + $(top_builddir)/lib/hardware/coolstream/libhwcaps.a neutrino_LDADD += -lcoolstream-mt -lca-sc if ENABLE_TMSDK else diff --git a/src/neutrino.cpp b/src/neutrino.cpp index 0a15d9969..0b9848d3a 100644 --- a/src/neutrino.cpp +++ b/src/neutrino.cpp @@ -2036,6 +2036,8 @@ TIMER_START(); cs_api_init(); cs_register_messenger(CSSendMessage); + g_info.hw_caps = get_hwcaps(); + g_Locale = new CLocaleManager; int loadSettingsErg = loadSetup(NEUTRINO_SETTINGS_FILE); diff --git a/src/system/settings.h b/src/system/settings.h index 64b6423c4..c6e352b85 100644 --- a/src/system/settings.h +++ b/src/system/settings.h @@ -39,6 +39,8 @@ #include #include // UTF8 +#include + #include #include @@ -924,6 +926,7 @@ struct SglobalInfo unsigned char box_Type; delivery_system_t delivery_system; bool has_fan; + hw_caps_t *hw_caps; }; const int RECORDING_OFF = 0;