From b41267f19ddb2bc6fbe8f38337f0fe7140d4f9ab Mon Sep 17 00:00:00 2001 From: redblue-pkt Date: Thu, 4 Oct 2018 00:26:23 +0200 Subject: [PATCH 01/52] fix segfault in backward Origin commit data ------------------ Branch: master Commit: https://github.com/neutrino-images/ni-libstb-hal/commit/7381cf04bb6a90def7311c41cece3695e3da8bd0 Author: redblue-pkt Date: 2018-10-04 (Thu, 04 Oct 2018) ------------------ No further description and justification available within origin commit message! ------------------ This commit was generated by Migit --- .gitignore | 3 +++ libeplayer3-arm/playback/playback.c | 4 ++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index 303dfee..a92a185 100644 --- a/.gitignore +++ b/.gitignore @@ -19,3 +19,6 @@ Makefile.in *.o *.Plo *.Po + +git-* +go_* diff --git a/libeplayer3-arm/playback/playback.c b/libeplayer3-arm/playback/playback.c index 257fb67..96566e0 100644 --- a/libeplayer3-arm/playback/playback.c +++ b/libeplayer3-arm/playback/playback.c @@ -578,7 +578,7 @@ static int PlaybackFastBackward(Context_t *context, int *speed) context->playback->BackWard = 0; context->playback->SlowMotion = 0; context->playback->Speed = 0; - context->output->Command(context, OUTPUT_AUDIOMUTE, "0"); + //context->output->Command(context, OUTPUT_AUDIOMUTE, "0"); } else { @@ -589,7 +589,7 @@ static int PlaybackFastBackward(Context_t *context, int *speed) context->playback->SlowMotion = 0; context->playback->Speed = *speed; context->playback->isSeeking = 1; - context->output->Command(context, OUTPUT_AUDIOMUTE, "1"); + //context->output->Command(context, OUTPUT_AUDIOMUTE, "1"); playback_printf(1, "Speed: %d, Backward: %d\n", context->playback->Speed, context->playback->BackWard); } From 5024f89b820f69665dff95e149ebd3beabf79663 Mon Sep 17 00:00:00 2001 From: redblue-pkt Date: Thu, 4 Oct 2018 00:45:42 +0200 Subject: [PATCH 02/52] fix fastforward Origin commit data ------------------ Branch: master Commit: https://github.com/neutrino-images/ni-libstb-hal/commit/d339238260227d1863df98ba4e313e3e28227a41 Author: redblue-pkt Date: 2018-10-04 (Thu, 04 Oct 2018) ------------------ No further description and justification available within origin commit message! ------------------ This commit was generated by Migit --- libeplayer3-arm/playback/playback.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/libeplayer3-arm/playback/playback.c b/libeplayer3-arm/playback/playback.c index 96566e0..4ec98be 100644 --- a/libeplayer3-arm/playback/playback.c +++ b/libeplayer3-arm/playback/playback.c @@ -399,6 +399,7 @@ static int32_t PlaybackContinue(Context_t *context) if (context->playback->SlowMotion || context->playback->isForwarding || context->playback->BackWard) context->output->Command(context, OUTPUT_CLEAR, NULL); + context->output->Command(context, OUTPUT_PAUSE, NULL); context->output->Command(context, OUTPUT_CONTINUE, NULL); if (context->playback->BackWard) @@ -539,7 +540,7 @@ static int PlaybackFastForward(Context_t *context, int *speed) context->playback->Speed = *speed; playback_printf(20, "Speed: %d x {%d}\n", *speed, context->playback->Speed); context->output->Command(context, OUTPUT_FASTFORWARD, NULL); - context->output->Command(context, OUTPUT_CONTINUE, NULL); + //context->output->Command(context, OUTPUT_CONTINUE, NULL); } else { From e424956024c723b032aab3a9afb257c34a79f25c Mon Sep 17 00:00:00 2001 From: redblue-pkt Date: Thu, 4 Oct 2018 00:55:37 +0200 Subject: [PATCH 03/52] fix mute, sound volume Origin commit data ------------------ Branch: master Commit: https://github.com/neutrino-images/ni-libstb-hal/commit/1b1d00261918a9f8606fbec19dcd55eacb8b021f Author: redblue-pkt Date: 2018-10-04 (Thu, 04 Oct 2018) ------------------ No further description and justification available within origin commit message! ------------------ This commit was generated by Migit --- libarmbox/audio.cpp | 38 +++++++++++++++++++++----------------- 1 file changed, 21 insertions(+), 17 deletions(-) diff --git a/libarmbox/audio.cpp b/libarmbox/audio.cpp index 8265447..c5d315c 100644 --- a/libarmbox/audio.cpp +++ b/libarmbox/audio.cpp @@ -67,6 +67,7 @@ void cAudio::closeDevice(void) int cAudio::do_mute(bool enable, bool remember) { lt_debug("%s(%d, %d)\n", __FUNCTION__, enable, remember); + char str[4]; if (remember) @@ -75,14 +76,12 @@ int cAudio::do_mute(bool enable, bool remember) sprintf(str, "%d", Muted); proc_put("/proc/stb/audio/j1_mute", str, strlen(str)); - if (!enable) + if (fd > 0) { - int f = open("/proc/stb/avs/0/volume", O_RDWR); - read(f, str, 4); - close(f); - str[3] = '\0'; - proc_put("/proc/stb/avs/0/volume", str, strlen(str)); + if (ioctl(fd, AUDIO_SET_MUTE, enable) < 0) + perror("AUDIO_SET_MUTE"); } + return 0; } @@ -102,23 +101,28 @@ int cAudio::setVolume(unsigned int left, unsigned int right) volume = (left + right) / 2; int v = map_volume(volume); -#if 0 - if (clipfd != -1 && mixer_fd != -1) { - int tmp = 0; - /* not sure if left / right is correct here, but it is always the same anyways ;-) */ - if (! Muted) - tmp = left << 8 | right; - int ret = ioctl(mixer_fd, MIXER_WRITE(mixer_num), &tmp); - if (ret == -1) - lt_info("%s: MIXER_WRITE(%d),%04x: %m\n", __func__, mixer_num, tmp); - return ret; + + // convert to -1dB steps + left = map_volume(volume); + right = map_volume(volume); + //now range is 63..0, where 0 is loudest + + audio_mixer_t mixer; + + mixer.volume_left = left; + mixer.volume_right = right; + + if (fd > 0) + { + if (ioctl(fd, AUDIO_SET_MIXER, &mixer) < 0) + perror("AUDIO_SET_MIXER"); } -#endif char str[4]; sprintf(str, "%d", v); proc_put("/proc/stb/avs/0/volume", str, strlen(str)); + return 0; } From 65dc5d1363158c52db31be727f10a8ef036bff77 Mon Sep 17 00:00:00 2001 From: redblue-pkt Date: Thu, 4 Oct 2018 01:00:45 +0200 Subject: [PATCH 04/52] try to fix slowly close internet radio/music player Origin commit data ------------------ Branch: master Commit: https://github.com/neutrino-images/ni-libstb-hal/commit/fd335a563f08a853b5420081e39a69510979a6c8 Author: redblue-pkt Date: 2018-10-04 (Thu, 04 Oct 2018) ------------------ No further description and justification available within origin commit message! ------------------ This commit was generated by Migit --- libarmbox/audio.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/libarmbox/audio.cpp b/libarmbox/audio.cpp index c5d315c..d1170f9 100644 --- a/libarmbox/audio.cpp +++ b/libarmbox/audio.cpp @@ -314,6 +314,7 @@ int cAudio::WriteClip(unsigned char *buffer, int size) int cAudio::StopClip() { lt_debug("%s\n", __FUNCTION__); +#if 0 if (clipfd < 0) { lt_info("%s: clipfd not yet opened\n", __FUNCTION__); return -1; @@ -325,6 +326,7 @@ int cAudio::StopClip() mixer_fd = -1; } setVolume(volume, volume); +#endif return 0; }; From c26a84366ad45a83208b0a061dd77a36c44d1d35 Mon Sep 17 00:00:00 2001 From: redblue-pkt Date: Thu, 4 Oct 2018 01:13:39 +0200 Subject: [PATCH 05/52] update audio streamtype Origin commit data ------------------ Branch: master Commit: https://github.com/neutrino-images/ni-libstb-hal/commit/803aa065fc6ff33f69a5cc9a6e420e7d80c5638c Author: redblue-pkt Date: 2018-10-04 (Thu, 04 Oct 2018) ------------------ No further description and justification available within origin commit message! ------------------ This commit was generated by Migit --- libarmbox/audio.cpp | 53 ++++++++++++++++++++----------------------- libarmbox/audio_lib.h | 29 +++++++++++------------ 2 files changed, 39 insertions(+), 43 deletions(-) diff --git a/libarmbox/audio.cpp b/libarmbox/audio.cpp index d1170f9..7bae671 100644 --- a/libarmbox/audio.cpp +++ b/libarmbox/audio.cpp @@ -150,41 +150,36 @@ void cAudio::SetSyncMode(AVSYNC_TYPE Mode) ioctl(fd, AUDIO_SET_AV_SYNC, Mode); } -#define AUDIO_STREAMTYPE_AC3 0 -#define AUDIO_STREAMTYPE_MPEG 1 -#define AUDIO_STREAMTYPE_DTS 2 -#define AUDIO_STREAMTYPE_AAC 8 -#define AUDIO_STREAMTYPE_AACHE 9 - void cAudio::SetStreamType(AUDIO_FORMAT type) { - int bypass = AUDIO_STREAMTYPE_MPEG; - lt_debug("%s %d\n", __FUNCTION__, type); - StreamType = type; + const char *AF[] = { + "AUDIO_STREAMTYPE_AC3", + "AUDIO_STREAMTYPE_MPEG", + "AUDIO_STREAMTYPE_DTS", + "AUDIO_STREAMTYPE_LPCM", + "AUDIO_STREAMTYPE_AAC", + "AUDIO_STREAMTYPE_AAC_HE", + "AUDIO_STREAMTYPE_MP3", + "AUDIO_STREAMTYPE_AAC_PLUS", + "AUDIO_STREAMTYPE_DTS_HD", + "AUDIO_STREAMTYPE_WMA", + "AUDIO_STREAMTYPE_WMA_PRO", + "AUDIO_STREAMTYPE_AC3_PLUS", + "AUDIO_STREAMTYPE_AMR", + "AUDIO_STREAMTYPE_RAW" + }; - switch (type) + lt_info("%s - type=%s\n", __FUNCTION__, AF[type]); + + if (ioctl(fd, AUDIO_SET_BYPASS_MODE, type) < 0) { - case AUDIO_FMT_DD_PLUS: - case AUDIO_FMT_DOLBY_DIGITAL: - bypass = AUDIO_STREAMTYPE_AC3; - break; - case AUDIO_FMT_AAC: - bypass = AUDIO_STREAMTYPE_AAC; - break; - case AUDIO_FMT_AAC_PLUS: - bypass = AUDIO_STREAMTYPE_AACHE; - break; - case AUDIO_FMT_DTS: - bypass = AUDIO_STREAMTYPE_DTS; - break; - default: - break; + perror("AUDIO_SET_BYPASS_MODE"); + return; } - // Normaly the encoding should be set using AUDIO_SET_ENCODING - // But as we implemented the behavior to bypass (cause of e2) this is correct here - if (ioctl(fd, AUDIO_SET_BYPASS_MODE, bypass) < 0) - lt_info("%s: AUDIO_SET_BYPASS_MODE failed (%m)\n", __func__); + StreamType = type; + + return; } int cAudio::setChannel(int channel) diff --git a/libarmbox/audio_lib.h b/libarmbox/audio_lib.h index 1fb896f..2bcd073 100644 --- a/libarmbox/audio_lib.h +++ b/libarmbox/audio_lib.h @@ -20,20 +20,21 @@ typedef enum { typedef enum { - AUDIO_FMT_AUTO = 0, - AUDIO_FMT_MPEG, - AUDIO_FMT_MP3, - AUDIO_FMT_DOLBY_DIGITAL, - AUDIO_FMT_BASIC = AUDIO_FMT_DOLBY_DIGITAL, - AUDIO_FMT_AAC, - AUDIO_FMT_AAC_PLUS, - AUDIO_FMT_DD_PLUS, - AUDIO_FMT_DTS, - AUDIO_FMT_AVS, - AUDIO_FMT_MLP, - AUDIO_FMT_WMA, - AUDIO_FMT_MPG1, // TD only. For Movieplayer / cPlayback - AUDIO_FMT_ADVANCED = AUDIO_FMT_MLP + AUDIO_FMT_UNKNOWN = -1, + AUDIO_FMT_DOLBY_DIGITAL = 0, + AUDIO_FMT_MPEG = 1, + AUDIO_FMT_DTS = 2, + AUDIO_FMT_LPCM = 6, + AUDIO_FMT_AAC = 8, + AUDIO_FMT_AAC_HE = 9, + AUDIO_FMT_MP3 = 0xa, + AUDIO_FMT_AAC_PLUS = 0xb, + AUDIO_FMT_DTS_HD = 0x10, + AUDIO_FMT_WMA = 0x20, + AUDIO_FMT_WMA_PRO = 0x21, + AUDIO_FMT_DD_PLUS = 0x22, + AUDIO_FMT_AMR = 0x23, + AUDIO_FMT_RAW = 0xf } AUDIO_FORMAT; class mixerVolume; From 85971b74ca7b49b048da3759e3c288cfe3c69476 Mon Sep 17 00:00:00 2001 From: redblue-pkt Date: Thu, 4 Oct 2018 01:25:00 +0200 Subject: [PATCH 06/52] update video streamtype Origin commit data ------------------ Branch: master Commit: https://github.com/neutrino-images/ni-libstb-hal/commit/d6b32edaa7d0cd1eb035e3404a12dee2359037ea Author: redblue-pkt Date: 2018-10-04 (Thu, 04 Oct 2018) ------------------ No further description and justification available within origin commit message! ------------------ This commit was generated by Migit --- libarmbox/video.cpp | 56 +++++++++++++------------------------------ libarmbox/video_lib.h | 25 ++++++++++++------- 2 files changed, 34 insertions(+), 47 deletions(-) diff --git a/libarmbox/video.cpp b/libarmbox/video.cpp index f9991d0..bbb860c 100644 --- a/libarmbox/video.cpp +++ b/libarmbox/video.cpp @@ -140,15 +140,6 @@ static const char *vid_modes[] = { "720p50" // VIDEO_STD_AUTO }; -#define VIDEO_STREAMTYPE_MPEG2 0 -#define VIDEO_STREAMTYPE_MPEG4_H264 1 -#define VIDEO_STREAMTYPE_VC1 3 -#define VIDEO_STREAMTYPE_MPEG4_Part2 4 -#define VIDEO_STREAMTYPE_VC1_SM 5 -#define VIDEO_STREAMTYPE_MPEG1 6 -#define VIDEO_STREAMTYPE_H265_HEVC 7 -#define VIDEO_STREAMTYPE_AVS 16 - ssize_t write_all(int fd, const void *buf, size_t count) { int retval; @@ -760,39 +751,26 @@ void cVideo::SetSyncMode(AVSYNC_TYPE mode) int cVideo::SetStreamType(VIDEO_FORMAT type) { - static const char *VF[] = { - "VIDEO_FORMAT_MPEG2", - "VIDEO_FORMAT_MPEG4", - "VIDEO_FORMAT_VC1", - "VIDEO_FORMAT_JPEG", - "VIDEO_FORMAT_GIF", - "VIDEO_FORMAT_PNG" + const char *VF[] = { + "VIDEO_STREAMTYPE_MPEG2", + "VIDEO_STREAMTYPE_MPEG4_H264", + "VIDEO_STREAMTYPE_MPEG4_H263", + "VIDEO_STREAMTYPE_VC1", + "VIDEO_STREAMTYPE_MPEG4_Part2", + "VIDEO_STREAMTYPE_VC1_SM", + "VIDEO_STREAMTYPE_MPEG1", + "VIDEO_STREAMTYPE_DIVX311" + "VIDEO_STREAMTYPE_H265_HEVC", + "VIDEO_STREAMTYPE_AVS" }; - int t; - lt_debug("#%d: %s type=%s\n", devnum, __func__, VF[type]); - switch (type) - { - case VIDEO_FORMAT_MPEG4_H264: - t = VIDEO_STREAMTYPE_MPEG4_H264; - break; - case VIDEO_FORMAT_MPEG4_H265: - t = VIDEO_STREAMTYPE_H265_HEVC; - break; - case VIDEO_FORMAT_AVS: - t = VIDEO_STREAMTYPE_AVS; - break; - case VIDEO_FORMAT_VC1: - t = VIDEO_STREAMTYPE_VC1; - break; - case VIDEO_FORMAT_MPEG2: - default: - t = VIDEO_STREAMTYPE_MPEG2; - break; - } + lt_info("%s - type=%s\n", __FUNCTION__, VF[type]); + + if (ioctl( fd, VIDEO_SET_STREAMTYPE, type) < 0) + perror("VIDEO_SET_STREAMTYPE"); + + StreamType = type; - if (ioctl(fd, VIDEO_SET_STREAMTYPE, t) < 0) - lt_info("%s VIDEO_SET_STREAMTYPE(%d) failed: %m\n", __func__, t); return 0; } diff --git a/libarmbox/video_lib.h b/libarmbox/video_lib.h index 1631cb4..30164a3 100644 --- a/libarmbox/video_lib.h +++ b/libarmbox/video_lib.h @@ -33,14 +33,23 @@ typedef enum { } COLOR_FORMAT; typedef enum { - VIDEO_FORMAT_MPEG2 = 0, - VIDEO_FORMAT_MPEG4_H264, - VIDEO_FORMAT_VC1, - VIDEO_FORMAT_JPEG, - VIDEO_FORMAT_GIF, - VIDEO_FORMAT_PNG, - VIDEO_FORMAT_MPEG4_H265, - VIDEO_FORMAT_AVS = 16 + VIDEO_STREAMTYPE_UNKNOWN = -1, + VIDEO_STREAMTYPE_MPEG2 = 0, + VIDEO_STREAMTYPE_MPEG4_H264 = 1, + VIDEO_STREAMTYPE_H263 = 2, + VIDEO_STREAMTYPE_VC1 = 3, + VIDEO_STREAMTYPE_MPEG4_Part2 = 4, + VIDEO_STREAMTYPE_VC1_SM = 5, + VIDEO_STREAMTYPE_MPEG1 = 6, + VIDEO_STREAMTYPE_MPEG4_H265 = 7, + VIDEO_STREAMTYPE_VB8 = 8, + VIDEO_STREAMTYPE_VB9 = 9, + VIDEO_STREAMTYPE_XVID = 10, + VIDEO_STREAMTYPE_DIVX311 = 13, + VIDEO_STREAMTYPE_DIVX4 = 14, + VIDEO_STREAMTYPE_DIVX5 = 15, + VIDEO_STREAMTYPE_VB6 = 18, + VIDEO_STREAMTYPE_SPARK = 21 } VIDEO_FORMAT; typedef enum { From 5ae053b9b8669aaebf13514c6af203bca4ac881c Mon Sep 17 00:00:00 2001 From: redblue-pkt Date: Thu, 4 Oct 2018 01:39:50 +0200 Subject: [PATCH 07/52] update SetControl() Origin commit data ------------------ Branch: master Commit: https://github.com/neutrino-images/ni-libstb-hal/commit/6c591461f8c2038183c60c3d96a28d4d911a0e3b Author: redblue-pkt Date: 2018-10-04 (Thu, 04 Oct 2018) ------------------ No further description and justification available within origin commit message! ------------------ This commit was generated by Migit --- libarmbox/video.cpp | 42 ++++++++++++++++++++++++++++++++++++++++-- libarmbox/video_lib.h | 17 +++++++++++++++++ 2 files changed, 57 insertions(+), 2 deletions(-) diff --git a/libarmbox/video.cpp b/libarmbox/video.cpp index bbb860c..d0143cc 100644 --- a/libarmbox/video.cpp +++ b/libarmbox/video.cpp @@ -787,7 +787,8 @@ void cVideo::SetDemux(cDemux *) lt_debug("#%d %s not implemented yet\n", devnum, __func__); } -void cVideo::SetControl(int control, int value) { +void cVideo::SetControl(int control, int value) +{ const char *p = NULL; switch (control) { case VIDEO_CONTROL_BRIGHTNESS: @@ -806,10 +807,47 @@ void cVideo::SetControl(int control, int value) { hue = value; p = "/proc/stb/vmpeg/0/pep_hue"; break; + case VIDEO_CONTROL_SHARPNESS: + sharpness = value; + p = "/proc/stb/vmpeg/0/pep_sharpness"; + break; + case VIDEO_CONTROL_BLOCK_NOISE_REDUCTION: + block_noise_reduction = value; + p = "/proc/stb/vmpeg/0/pep_block_noise_reduction"; + break; + case VIDEO_CONTROL_MOSQUITO_NOISE_REDUCTION: + mosquito_noise_reduction = value; + p = "/proc/stb/vmpeg/0/pep_mosquito_noise_reduction"; + break; + case VIDEO_CONTROL_DIGITAL_CONTOUR_REMOVAL: + digital_contour_removal = value; + p = "/proc/stb/vmpeg/0/pep_digital_contour_removal"; + break; + case VIDEO_CONTROL_AUTO_FLESH: + auto_flesh = value; + p = "/proc/stb/vmpeg/0/pep_auto_flesh"; + break; + case VIDEO_CONTROL_GREEN_BOOST: + green_boost = value; + p = "/proc/stb/vmpeg/0/pep_green_boost"; + break; + case VIDEO_CONTROL_BLUE_BOOST: + blue_boost = value; + p = "/proc/stb/vmpeg/0/pep_blue_boost"; + break; + case VIDEO_CONTROL_DYNAMIC_CONTRAST: + dynamic_contrast = value; + p = "/proc/stb/vmpeg/0/pep_dynamic_contrast"; + break; + case VIDEO_CONTROL_SCALER_SHARPNESS: + scaler_sharpness = value; + p = "/proc/stb/vmpeg/0/pep_scaler_sharpness"; + break; } if (p) { char buf[20]; - int len = snprintf(buf, sizeof(buf), "%x00\n", value); + int fix_value = value * 256; + int len = snprintf(buf, sizeof(buf), "%0.8X", fix_value); if (len < (int) sizeof(buf)) proc_put(p, buf, len); } diff --git a/libarmbox/video_lib.h b/libarmbox/video_lib.h index 30164a3..508304e 100644 --- a/libarmbox/video_lib.h +++ b/libarmbox/video_lib.h @@ -140,6 +140,14 @@ typedef enum VIDEO_CONTROL_SATURATION, VIDEO_CONTROL_HUE, VIDEO_CONTROL_SHARPNESS, + VIDEO_CONTROL_BLOCK_NOISE_REDUCTION, + VIDEO_CONTROL_MOSQUITO_NOISE_REDUCTION, + VIDEO_CONTROL_DIGITAL_CONTOUR_REMOVAL, + VIDEO_CONTROL_AUTO_FLESH, + VIDEO_CONTROL_GREEN_BOOST, + VIDEO_CONTROL_BLUE_BOOST, + VIDEO_CONTROL_DYNAMIC_CONTRAST, + VIDEO_CONTROL_SCALER_SHARPNESS, VIDEO_CONTROL_MAX = VIDEO_CONTROL_SHARPNESS } VIDEO_CONTROL; @@ -187,6 +195,15 @@ class cVideo int contrast; int saturation; int hue; + int sharpness; + int block_noise_reduction; + int mosquito_noise_reduction; + int digital_contour_removal; + int auto_flesh; + int green_boost; + int blue_boost; + int dynamic_contrast; + int scaler_sharpness; /* used internally by dmx */ int64_t GetPTS(void); From ca703761ac17a473cece68b91b3359f6c30fb9b1 Mon Sep 17 00:00:00 2001 From: redblue-pkt Date: Thu, 4 Oct 2018 01:46:27 +0200 Subject: [PATCH 08/52] update SetColorFormat() Origin commit data ------------------ Branch: master Commit: https://github.com/neutrino-images/ni-libstb-hal/commit/a8e0f5726f2ff11e8fd8a94222082513ad8771f1 Author: redblue-pkt Date: 2018-10-04 (Thu, 04 Oct 2018) ------------------ No further description and justification available within origin commit message! ------------------ This commit was generated by Migit --- libarmbox/video.cpp | 15 +++++++++++---- libarmbox/video_lib.h | 4 +++- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/libarmbox/video.cpp b/libarmbox/video.cpp index d0143cc..a7422de 100644 --- a/libarmbox/video.cpp +++ b/libarmbox/video.cpp @@ -853,7 +853,8 @@ void cVideo::SetControl(int control, int value) } } -void cVideo::SetColorFormat(COLOR_FORMAT color_format) { +void cVideo::SetColorFormat(COLOR_FORMAT color_format) +{ const char *p = NULL; switch(color_format) { case COLORFORMAT_RGB: @@ -868,14 +869,20 @@ void cVideo::SetColorFormat(COLOR_FORMAT color_format) { case COLORFORMAT_SVIDEO: p = "svideo"; break; + case COLORFORMAT_HDMI_AUTO: + p = "Edid(Auto)"; + break; case COLORFORMAT_HDMI_RGB: - p = "hdmi_rgb"; + p = "Hdmi_Rgb"; break; case COLORFORMAT_HDMI_YCBCR444: - p = "hdmi_yuv"; + p = "444"; break; case COLORFORMAT_HDMI_YCBCR422: - p = "hdmi_422"; + p = "422"; + break; + case COLORFORMAT_HDMI_YCBCR420: + p = "420"; break; } if (p) diff --git a/libarmbox/video_lib.h b/libarmbox/video_lib.h index 508304e..f8c665e 100644 --- a/libarmbox/video_lib.h +++ b/libarmbox/video_lib.h @@ -27,9 +27,11 @@ typedef enum { COLORFORMAT_YUV, COLORFORMAT_CVBS, COLORFORMAT_SVIDEO, + COLORFORMAT_HDMI_AUTO, COLORFORMAT_HDMI_RGB, COLORFORMAT_HDMI_YCBCR444, - COLORFORMAT_HDMI_YCBCR422 + COLORFORMAT_HDMI_YCBCR422, + COLORFORMAT_HDMI_YCBCR420 } COLOR_FORMAT; typedef enum { From 7086f86710cf877096ac6438fbf782e822eb700f Mon Sep 17 00:00:00 2001 From: redblue-pkt Date: Thu, 4 Oct 2018 03:45:40 +0200 Subject: [PATCH 09/52] add codec info Origin commit data ------------------ Branch: master Commit: https://github.com/neutrino-images/ni-libstb-hal/commit/cc591a39d63e6edb80733e4cb2f9ed128e58b1c3 Author: redblue-pkt Date: 2018-10-04 (Thu, 04 Oct 2018) ------------------ No further description and justification available within origin commit message! ------------------ This commit was generated by Migit --- libarmbox/playback_libeplayer3.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/libarmbox/playback_libeplayer3.cpp b/libarmbox/playback_libeplayer3.cpp index 8a3cf8f..b0bc5ed 100644 --- a/libarmbox/playback_libeplayer3.cpp +++ b/libarmbox/playback_libeplayer3.cpp @@ -553,7 +553,13 @@ void cPlayback::FindAllPids(int *apids, unsigned int *ac3flags, unsigned int *nu ac3flags[j] = 0; //todo else ac3flags[j] = 0; //todo - language[j] = std::string(_lang); + std::string _language = ""; + _language += std::string(_lang); + _language += " - "; + _language += "("; + _language += TrackList[i + 1]; + _language += ")"; + language[j] = _language; } } free(TrackList[i]); From b5ba5ab8548c2d3c3bf83bc748d4e68078a61429 Mon Sep 17 00:00:00 2001 From: redblue-pkt Date: Thu, 4 Oct 2018 03:50:48 +0200 Subject: [PATCH 10/52] fix no sound after play video Origin commit data ------------------ Branch: master Commit: https://github.com/neutrino-images/ni-libstb-hal/commit/f3d6ba01135a26a3a7070b44c714c3f46fecb3f5 Author: redblue-pkt Date: 2018-10-04 (Thu, 04 Oct 2018) ------------------ No further description and justification available within origin commit message! ------------------ This commit was generated by Migit --- libarmbox/audio.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libarmbox/audio.cpp b/libarmbox/audio.cpp index 7bae671..d6af373 100644 --- a/libarmbox/audio.cpp +++ b/libarmbox/audio.cpp @@ -42,7 +42,7 @@ void cAudio::openDevice(void) if ((fd = open(AUDIO_DEVICE, O_RDWR)) < 0) lt_info("openDevice: open failed (%m)\n"); fcntl(fd, F_SETFD, FD_CLOEXEC); - do_mute(true, false); + //do_mute(true, false); } else lt_info("openDevice: already open (fd = %d)\n", fd); From ab7b740bb3555f38bb19d2639f1ed98519620118 Mon Sep 17 00:00:00 2001 From: Thilo Graf Date: Fri, 5 Oct 2018 13:58:11 +0200 Subject: [PATCH 11/52] libarmbox/video.cpp: fix possible broken build possible error: "error: '0' flag ignored with precision and '%X' gnu_printf format [-Werror=format=]" Origin commit data ------------------ Branch: master Commit: https://github.com/neutrino-images/ni-libstb-hal/commit/8c6fb577937a89a6f63a60456616b60c129d836b Author: Thilo Graf Date: 2018-10-05 (Fri, 05 Oct 2018) ------------------ This commit was generated by Migit --- libarmbox/video.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libarmbox/video.cpp b/libarmbox/video.cpp index a7422de..ab5d7ff 100644 --- a/libarmbox/video.cpp +++ b/libarmbox/video.cpp @@ -847,7 +847,7 @@ void cVideo::SetControl(int control, int value) if (p) { char buf[20]; int fix_value = value * 256; - int len = snprintf(buf, sizeof(buf), "%0.8X", fix_value); + int len = snprintf(buf, sizeof(buf), "%.8X", fix_value); if (len < (int) sizeof(buf)) proc_put(p, buf, len); } From 80fe5a4c8ddbbc4f2cdc055378b2d0ca5f9c14a5 Mon Sep 17 00:00:00 2001 From: max_10 Date: Sat, 6 Oct 2018 19:58:35 +0200 Subject: [PATCH 12/52] Revert "update video streamtype" This reverts commit 85971b74ca7b49b048da3759e3c288cfe3c69476. Origin commit data ------------------ Branch: master Commit: https://github.com/neutrino-images/ni-libstb-hal/commit/651388538714f9f355a27743ce1329888ffade27 Author: max_10 Date: 2018-10-06 (Sat, 06 Oct 2018) ------------------ This commit was generated by Migit --- libarmbox/video.cpp | 56 ++++++++++++++++++++++++++++++------------- libarmbox/video_lib.h | 25 +++++++------------ 2 files changed, 47 insertions(+), 34 deletions(-) diff --git a/libarmbox/video.cpp b/libarmbox/video.cpp index ab5d7ff..73fc02a 100644 --- a/libarmbox/video.cpp +++ b/libarmbox/video.cpp @@ -140,6 +140,15 @@ static const char *vid_modes[] = { "720p50" // VIDEO_STD_AUTO }; +#define VIDEO_STREAMTYPE_MPEG2 0 +#define VIDEO_STREAMTYPE_MPEG4_H264 1 +#define VIDEO_STREAMTYPE_VC1 3 +#define VIDEO_STREAMTYPE_MPEG4_Part2 4 +#define VIDEO_STREAMTYPE_VC1_SM 5 +#define VIDEO_STREAMTYPE_MPEG1 6 +#define VIDEO_STREAMTYPE_H265_HEVC 7 +#define VIDEO_STREAMTYPE_AVS 16 + ssize_t write_all(int fd, const void *buf, size_t count) { int retval; @@ -751,26 +760,39 @@ void cVideo::SetSyncMode(AVSYNC_TYPE mode) int cVideo::SetStreamType(VIDEO_FORMAT type) { - const char *VF[] = { - "VIDEO_STREAMTYPE_MPEG2", - "VIDEO_STREAMTYPE_MPEG4_H264", - "VIDEO_STREAMTYPE_MPEG4_H263", - "VIDEO_STREAMTYPE_VC1", - "VIDEO_STREAMTYPE_MPEG4_Part2", - "VIDEO_STREAMTYPE_VC1_SM", - "VIDEO_STREAMTYPE_MPEG1", - "VIDEO_STREAMTYPE_DIVX311" - "VIDEO_STREAMTYPE_H265_HEVC", - "VIDEO_STREAMTYPE_AVS" + static const char *VF[] = { + "VIDEO_FORMAT_MPEG2", + "VIDEO_FORMAT_MPEG4", + "VIDEO_FORMAT_VC1", + "VIDEO_FORMAT_JPEG", + "VIDEO_FORMAT_GIF", + "VIDEO_FORMAT_PNG" }; + int t; + lt_debug("#%d: %s type=%s\n", devnum, __func__, VF[type]); - lt_info("%s - type=%s\n", __FUNCTION__, VF[type]); - - if (ioctl( fd, VIDEO_SET_STREAMTYPE, type) < 0) - perror("VIDEO_SET_STREAMTYPE"); - - StreamType = type; + switch (type) + { + case VIDEO_FORMAT_MPEG4_H264: + t = VIDEO_STREAMTYPE_MPEG4_H264; + break; + case VIDEO_FORMAT_MPEG4_H265: + t = VIDEO_STREAMTYPE_H265_HEVC; + break; + case VIDEO_FORMAT_AVS: + t = VIDEO_STREAMTYPE_AVS; + break; + case VIDEO_FORMAT_VC1: + t = VIDEO_STREAMTYPE_VC1; + break; + case VIDEO_FORMAT_MPEG2: + default: + t = VIDEO_STREAMTYPE_MPEG2; + break; + } + if (ioctl(fd, VIDEO_SET_STREAMTYPE, t) < 0) + lt_info("%s VIDEO_SET_STREAMTYPE(%d) failed: %m\n", __func__, t); return 0; } diff --git a/libarmbox/video_lib.h b/libarmbox/video_lib.h index f8c665e..adbb5fb 100644 --- a/libarmbox/video_lib.h +++ b/libarmbox/video_lib.h @@ -35,23 +35,14 @@ typedef enum { } COLOR_FORMAT; typedef enum { - VIDEO_STREAMTYPE_UNKNOWN = -1, - VIDEO_STREAMTYPE_MPEG2 = 0, - VIDEO_STREAMTYPE_MPEG4_H264 = 1, - VIDEO_STREAMTYPE_H263 = 2, - VIDEO_STREAMTYPE_VC1 = 3, - VIDEO_STREAMTYPE_MPEG4_Part2 = 4, - VIDEO_STREAMTYPE_VC1_SM = 5, - VIDEO_STREAMTYPE_MPEG1 = 6, - VIDEO_STREAMTYPE_MPEG4_H265 = 7, - VIDEO_STREAMTYPE_VB8 = 8, - VIDEO_STREAMTYPE_VB9 = 9, - VIDEO_STREAMTYPE_XVID = 10, - VIDEO_STREAMTYPE_DIVX311 = 13, - VIDEO_STREAMTYPE_DIVX4 = 14, - VIDEO_STREAMTYPE_DIVX5 = 15, - VIDEO_STREAMTYPE_VB6 = 18, - VIDEO_STREAMTYPE_SPARK = 21 + VIDEO_FORMAT_MPEG2 = 0, + VIDEO_FORMAT_MPEG4_H264, + VIDEO_FORMAT_VC1, + VIDEO_FORMAT_JPEG, + VIDEO_FORMAT_GIF, + VIDEO_FORMAT_PNG, + VIDEO_FORMAT_MPEG4_H265, + VIDEO_FORMAT_AVS = 16 } VIDEO_FORMAT; typedef enum { From f5c6e902104b6d3be4e55e3412a9218796f9810d Mon Sep 17 00:00:00 2001 From: max_10 Date: Sat, 6 Oct 2018 19:58:51 +0200 Subject: [PATCH 13/52] Revert "update audio streamtype" This reverts commit c26a84366ad45a83208b0a061dd77a36c44d1d35. Origin commit data ------------------ Branch: master Commit: https://github.com/neutrino-images/ni-libstb-hal/commit/49c36c7a6f006e9353677fda14ed564ef5eb8727 Author: max_10 Date: 2018-10-06 (Sat, 06 Oct 2018) ------------------ This commit was generated by Migit --- libarmbox/audio.cpp | 57 +++++++++++++++++++++++-------------------- libarmbox/audio_lib.h | 29 +++++++++++----------- 2 files changed, 45 insertions(+), 41 deletions(-) diff --git a/libarmbox/audio.cpp b/libarmbox/audio.cpp index d6af373..809b594 100644 --- a/libarmbox/audio.cpp +++ b/libarmbox/audio.cpp @@ -150,36 +150,41 @@ void cAudio::SetSyncMode(AVSYNC_TYPE Mode) ioctl(fd, AUDIO_SET_AV_SYNC, Mode); } +#define AUDIO_STREAMTYPE_AC3 0 +#define AUDIO_STREAMTYPE_MPEG 1 +#define AUDIO_STREAMTYPE_DTS 2 +#define AUDIO_STREAMTYPE_AAC 8 +#define AUDIO_STREAMTYPE_AACHE 9 + void cAudio::SetStreamType(AUDIO_FORMAT type) { - const char *AF[] = { - "AUDIO_STREAMTYPE_AC3", - "AUDIO_STREAMTYPE_MPEG", - "AUDIO_STREAMTYPE_DTS", - "AUDIO_STREAMTYPE_LPCM", - "AUDIO_STREAMTYPE_AAC", - "AUDIO_STREAMTYPE_AAC_HE", - "AUDIO_STREAMTYPE_MP3", - "AUDIO_STREAMTYPE_AAC_PLUS", - "AUDIO_STREAMTYPE_DTS_HD", - "AUDIO_STREAMTYPE_WMA", - "AUDIO_STREAMTYPE_WMA_PRO", - "AUDIO_STREAMTYPE_AC3_PLUS", - "AUDIO_STREAMTYPE_AMR", - "AUDIO_STREAMTYPE_RAW" - }; - - lt_info("%s - type=%s\n", __FUNCTION__, AF[type]); - - if (ioctl(fd, AUDIO_SET_BYPASS_MODE, type) < 0) - { - perror("AUDIO_SET_BYPASS_MODE"); - return; - } - + int bypass = AUDIO_STREAMTYPE_MPEG; + lt_debug("%s %d\n", __FUNCTION__, type); StreamType = type; - return; + switch (type) + { + case AUDIO_FMT_DD_PLUS: + case AUDIO_FMT_DOLBY_DIGITAL: + bypass = AUDIO_STREAMTYPE_AC3; + break; + case AUDIO_FMT_AAC: + bypass = AUDIO_STREAMTYPE_AAC; + break; + case AUDIO_FMT_AAC_PLUS: + bypass = AUDIO_STREAMTYPE_AACHE; + break; + case AUDIO_FMT_DTS: + bypass = AUDIO_STREAMTYPE_DTS; + break; + default: + break; + } + + // Normaly the encoding should be set using AUDIO_SET_ENCODING + // But as we implemented the behavior to bypass (cause of e2) this is correct here + if (ioctl(fd, AUDIO_SET_BYPASS_MODE, bypass) < 0) + lt_info("%s: AUDIO_SET_BYPASS_MODE failed (%m)\n", __func__); } int cAudio::setChannel(int channel) diff --git a/libarmbox/audio_lib.h b/libarmbox/audio_lib.h index 2bcd073..1fb896f 100644 --- a/libarmbox/audio_lib.h +++ b/libarmbox/audio_lib.h @@ -20,21 +20,20 @@ typedef enum { typedef enum { - AUDIO_FMT_UNKNOWN = -1, - AUDIO_FMT_DOLBY_DIGITAL = 0, - AUDIO_FMT_MPEG = 1, - AUDIO_FMT_DTS = 2, - AUDIO_FMT_LPCM = 6, - AUDIO_FMT_AAC = 8, - AUDIO_FMT_AAC_HE = 9, - AUDIO_FMT_MP3 = 0xa, - AUDIO_FMT_AAC_PLUS = 0xb, - AUDIO_FMT_DTS_HD = 0x10, - AUDIO_FMT_WMA = 0x20, - AUDIO_FMT_WMA_PRO = 0x21, - AUDIO_FMT_DD_PLUS = 0x22, - AUDIO_FMT_AMR = 0x23, - AUDIO_FMT_RAW = 0xf + AUDIO_FMT_AUTO = 0, + AUDIO_FMT_MPEG, + AUDIO_FMT_MP3, + AUDIO_FMT_DOLBY_DIGITAL, + AUDIO_FMT_BASIC = AUDIO_FMT_DOLBY_DIGITAL, + AUDIO_FMT_AAC, + AUDIO_FMT_AAC_PLUS, + AUDIO_FMT_DD_PLUS, + AUDIO_FMT_DTS, + AUDIO_FMT_AVS, + AUDIO_FMT_MLP, + AUDIO_FMT_WMA, + AUDIO_FMT_MPG1, // TD only. For Movieplayer / cPlayback + AUDIO_FMT_ADVANCED = AUDIO_FMT_MLP } AUDIO_FORMAT; class mixerVolume; From 5d033999403912f63c9358294f88bc97e4b8560a Mon Sep 17 00:00:00 2001 From: TangoCash Date: Sat, 6 Oct 2018 18:43:59 +0200 Subject: [PATCH 14/52] arm another fix fastforward Origin commit data ------------------ Branch: master Commit: https://github.com/neutrino-images/ni-libstb-hal/commit/9a2aee3d7c3904519cd7d841fec3434a69c95b6f Author: TangoCash Date: 2018-10-06 (Sat, 06 Oct 2018) ------------------ No further description and justification available within origin commit message! ------------------ This commit was generated by Migit --- libeplayer3-arm/playback/playback.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/libeplayer3-arm/playback/playback.c b/libeplayer3-arm/playback/playback.c index 4ec98be..b8fe5bb 100644 --- a/libeplayer3-arm/playback/playback.c +++ b/libeplayer3-arm/playback/playback.c @@ -399,9 +399,6 @@ static int32_t PlaybackContinue(Context_t *context) if (context->playback->SlowMotion || context->playback->isForwarding || context->playback->BackWard) context->output->Command(context, OUTPUT_CLEAR, NULL); - context->output->Command(context, OUTPUT_PAUSE, NULL); - context->output->Command(context, OUTPUT_CONTINUE, NULL); - if (context->playback->BackWard) context->output->Command(context, OUTPUT_AUDIOMUTE, "0"); @@ -411,6 +408,8 @@ static int32_t PlaybackContinue(Context_t *context) context->playback->BackWard = 0; context->playback->SlowMotion = 0; context->playback->Speed = 1; + + context->output->Command(context, OUTPUT_CONTINUE, NULL); } else { @@ -540,7 +539,7 @@ static int PlaybackFastForward(Context_t *context, int *speed) context->playback->Speed = *speed; playback_printf(20, "Speed: %d x {%d}\n", *speed, context->playback->Speed); context->output->Command(context, OUTPUT_FASTFORWARD, NULL); - //context->output->Command(context, OUTPUT_CONTINUE, NULL); + context->output->Command(context, OUTPUT_CONTINUE, NULL); } else { From 106ab1e4b6de65967c7325cb48b3323f1b96f430 Mon Sep 17 00:00:00 2001 From: Frankenstone Date: Sun, 7 Oct 2018 09:57:38 +0200 Subject: [PATCH 15/52] arm hardware: fast forward, mute audio when passthrough AC3 / DTS -thx DboxOldie Origin commit data ------------------ Branch: master Commit: https://github.com/neutrino-images/ni-libstb-hal/commit/8b70d8db333d443656efb69912a5ee80ba8eb57e Author: Frankenstone Date: 2018-10-07 (Sun, 07 Oct 2018) ------------------ This commit was generated by Migit --- libeplayer3-arm/playback/playback.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/libeplayer3-arm/playback/playback.c b/libeplayer3-arm/playback/playback.c index b8fe5bb..781bf4f 100644 --- a/libeplayer3-arm/playback/playback.c +++ b/libeplayer3-arm/playback/playback.c @@ -399,7 +399,7 @@ static int32_t PlaybackContinue(Context_t *context) if (context->playback->SlowMotion || context->playback->isForwarding || context->playback->BackWard) context->output->Command(context, OUTPUT_CLEAR, NULL); - if (context->playback->BackWard) + if (context->playback->BackWard || context->playback->isForwarding) context->output->Command(context, OUTPUT_AUDIOMUTE, "0"); context->playback->isPaused = 0; @@ -539,6 +539,7 @@ static int PlaybackFastForward(Context_t *context, int *speed) context->playback->Speed = *speed; playback_printf(20, "Speed: %d x {%d}\n", *speed, context->playback->Speed); context->output->Command(context, OUTPUT_FASTFORWARD, NULL); + context->output->Command(context, OUTPUT_AUDIOMUTE, "1"); context->output->Command(context, OUTPUT_CONTINUE, NULL); } else From 5c9f4b34e7b4209b8fdcd1e2a5a633a75e912226 Mon Sep 17 00:00:00 2001 From: Frankenstone Date: Sun, 7 Oct 2018 09:57:38 +0200 Subject: [PATCH 16/52] arm hardware: fast forward, mute audio when passthrough AC3 / DTS -thx DboxOldie Origin commit data ------------------ Branch: master Commit: https://github.com/neutrino-images/ni-libstb-hal/commit/f1c505ad4f5e91bf14306f2f2a6e69f72f3133ee Author: Frankenstone Date: 2018-10-07 (Sun, 07 Oct 2018) ------------------ This commit was generated by Migit --- libeplayer3-arm/playback/playback.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/libeplayer3-arm/playback/playback.c b/libeplayer3-arm/playback/playback.c index b8fe5bb..781bf4f 100644 --- a/libeplayer3-arm/playback/playback.c +++ b/libeplayer3-arm/playback/playback.c @@ -399,7 +399,7 @@ static int32_t PlaybackContinue(Context_t *context) if (context->playback->SlowMotion || context->playback->isForwarding || context->playback->BackWard) context->output->Command(context, OUTPUT_CLEAR, NULL); - if (context->playback->BackWard) + if (context->playback->BackWard || context->playback->isForwarding) context->output->Command(context, OUTPUT_AUDIOMUTE, "0"); context->playback->isPaused = 0; @@ -539,6 +539,7 @@ static int PlaybackFastForward(Context_t *context, int *speed) context->playback->Speed = *speed; playback_printf(20, "Speed: %d x {%d}\n", *speed, context->playback->Speed); context->output->Command(context, OUTPUT_FASTFORWARD, NULL); + context->output->Command(context, OUTPUT_AUDIOMUTE, "1"); context->output->Command(context, OUTPUT_CONTINUE, NULL); } else From 85de1049caf89455d01e324b96d67aafc15c74c5 Mon Sep 17 00:00:00 2001 From: TangoCash Date: Sun, 7 Oct 2018 12:00:41 +0200 Subject: [PATCH 17/52] libarmbox: move hdmi_cec to own class, add basic cec-remote support cec-remote will print received commands in log for now Origin commit data ------------------ Branch: master Commit: https://github.com/neutrino-images/ni-libstb-hal/commit/b244b6a6a49dadc648031ee5e59b7f5687f6ed6f Author: TangoCash Date: 2018-10-07 (Sun, 07 Oct 2018) ------------------ This commit was generated by Migit --- libarmbox/Makefile.am | 3 +- libarmbox/hdmi_cec.cpp | 495 +++++++++++++++++++++++++++++++++++++++++ libarmbox/hdmi_cec.h | 66 ++++++ libarmbox/video.cpp | 221 +----------------- libarmbox/video_lib.h | 23 -- 5 files changed, 570 insertions(+), 238 deletions(-) create mode 100644 libarmbox/hdmi_cec.cpp create mode 100644 libarmbox/hdmi_cec.h diff --git a/libarmbox/Makefile.am b/libarmbox/Makefile.am index 4d5c162..d8453df 100644 --- a/libarmbox/Makefile.am +++ b/libarmbox/Makefile.am @@ -20,7 +20,8 @@ libarmbox_la_SOURCES = \ video.cpp \ audio.cpp \ init.cpp \ - record.cpp + record.cpp \ + hdmi_cec.cpp if ENABLE_GSTREAMER_10 libarmbox_la_SOURCES += \ diff --git a/libarmbox/hdmi_cec.cpp b/libarmbox/hdmi_cec.cpp new file mode 100644 index 0000000..5edf404 --- /dev/null +++ b/libarmbox/hdmi_cec.cpp @@ -0,0 +1,495 @@ +/* + Copyright (C) 2018 TangoCash + + License: GPLv2 + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +*/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include "linux-uapi-cec.h" +#include "hdmi_cec.h" +#include "lt_debug.h" + +#define lt_debug(args...) _lt_debug(TRIPLE_DEBUG_VIDEO, this, args) +#define lt_info(args...) _lt_info(TRIPLE_DEBUG_VIDEO, this, args) +#define lt_debug_c(args...) _lt_debug(TRIPLE_DEBUG_VIDEO, NULL, args) +#define lt_info_c(args...) _lt_info(TRIPLE_DEBUG_VIDEO, NULL, args) + +#define fop(cmd, args...) ({ \ + int _r; \ + if (fd >= 0) { \ + if ((_r = ::cmd(fd, args)) < 0) \ + lt_info(#cmd"(fd, "#args")\n"); \ + else \ + lt_debug(#cmd"(fd, "#args")\n");\ + } \ + else { _r = fd; } \ + _r; \ +}) + +#define CEC_DEVICE "/dev/cec0" + +hdmi_cec * hdmi_cec::hdmi_cec_instance = NULL; + +hdmi_cec::hdmi_cec() +{ + standby_cec_activ = autoview_cec_activ = false; + hdmiFd = -1; + if (hdmiFd == -1) + hdmiFd = open(CEC_DEVICE, O_RDWR | O_CLOEXEC); + Start(); +} + +hdmi_cec::~hdmi_cec() +{ + if (hdmiFd >= 0) + { + close(hdmiFd); + hdmiFd = -1; + } +} + +hdmi_cec* hdmi_cec::getInstance() +{ + if (hdmi_cec_instance == NULL) + hdmi_cec_instance = new hdmi_cec(); + return hdmi_cec_instance; +} + +bool hdmi_cec::SetCECMode(VIDEO_HDMI_CEC_MODE _deviceType) +{ + physicalAddress[0] = 0x10; + physicalAddress[1] = 0x00; + logicalAddress = 1; + + if (_deviceType == VIDEO_HDMI_CEC_MODE_OFF) + { + if (hdmiFd >= 0) + { + close(hdmiFd); + hdmiFd = -1; + Stop(); + } + return false; + } + else + deviceType = _deviceType; + + if (hdmiFd == -1) + { + hdmiFd = open(CEC_DEVICE, O_RDWR | O_CLOEXEC); + Start(); + } + + if (hdmiFd >= 0) + { + __u32 monitor = CEC_MODE_INITIATOR | CEC_MODE_FOLLOWER; + struct cec_caps caps = {}; + + if (ioctl(hdmiFd, CEC_ADAP_G_CAPS, &caps) < 0) + lt_info("%s: CEC get caps failed (%m)\n", __func__); + + if (caps.capabilities & CEC_CAP_LOG_ADDRS) + { + struct cec_log_addrs laddrs = {}; + + if (ioctl(hdmiFd, CEC_ADAP_S_LOG_ADDRS, &laddrs) < 0) + lt_info("%s: CEC reset log addr failed (%m)\n", __func__); + + memset(&laddrs, 0, sizeof(laddrs)); + + /* + * NOTE: cec_version, osd_name and deviceType should be made configurable, + * CEC_ADAP_S_LOG_ADDRS delayed till the desired values are available + * (saves us some startup speed as well, polling for a free logical address + * takes some time) + */ + laddrs.cec_version = CEC_OP_CEC_VERSION_2_0; + strcpy(laddrs.osd_name, "neutrino"); + laddrs.vendor_id = CEC_VENDOR_ID_NONE; + + switch (deviceType) + { + case CEC_LOG_ADDR_TV: + laddrs.log_addr_type[laddrs.num_log_addrs] = CEC_LOG_ADDR_TYPE_TV; + laddrs.all_device_types[laddrs.num_log_addrs] = CEC_OP_ALL_DEVTYPE_TV; + laddrs.primary_device_type[laddrs.num_log_addrs] = CEC_OP_PRIM_DEVTYPE_TV; + break; + case CEC_LOG_ADDR_RECORD_1: + laddrs.log_addr_type[laddrs.num_log_addrs] = CEC_LOG_ADDR_TYPE_RECORD; + laddrs.all_device_types[laddrs.num_log_addrs] = CEC_OP_ALL_DEVTYPE_RECORD; + laddrs.primary_device_type[laddrs.num_log_addrs] = CEC_OP_PRIM_DEVTYPE_RECORD; + break; + case CEC_LOG_ADDR_TUNER_1: + laddrs.log_addr_type[laddrs.num_log_addrs] = CEC_LOG_ADDR_TYPE_TUNER; + laddrs.all_device_types[laddrs.num_log_addrs] = CEC_OP_ALL_DEVTYPE_TUNER; + laddrs.primary_device_type[laddrs.num_log_addrs] = CEC_OP_PRIM_DEVTYPE_TUNER; + break; + case CEC_LOG_ADDR_PLAYBACK_1: + laddrs.log_addr_type[laddrs.num_log_addrs] = CEC_LOG_ADDR_TYPE_PLAYBACK; + laddrs.all_device_types[laddrs.num_log_addrs] = CEC_OP_ALL_DEVTYPE_PLAYBACK; + laddrs.primary_device_type[laddrs.num_log_addrs] = CEC_OP_PRIM_DEVTYPE_PLAYBACK; + break; + case CEC_LOG_ADDR_AUDIOSYSTEM: + laddrs.log_addr_type[laddrs.num_log_addrs] = CEC_LOG_ADDR_TYPE_AUDIOSYSTEM; + laddrs.all_device_types[laddrs.num_log_addrs] = CEC_OP_ALL_DEVTYPE_AUDIOSYSTEM; + laddrs.primary_device_type[laddrs.num_log_addrs] = CEC_OP_PRIM_DEVTYPE_AUDIOSYSTEM; + break; + default: + laddrs.log_addr_type[laddrs.num_log_addrs] = CEC_LOG_ADDR_TYPE_UNREGISTERED; + laddrs.all_device_types[laddrs.num_log_addrs] = CEC_OP_ALL_DEVTYPE_SWITCH; + laddrs.primary_device_type[laddrs.num_log_addrs] = CEC_OP_PRIM_DEVTYPE_SWITCH; + break; + } + laddrs.num_log_addrs++; + + if (ioctl(hdmiFd, CEC_ADAP_S_LOG_ADDRS, &laddrs) < 0) + lt_info("%s: CEC set log addr failed (%m)\n", __func__); + } + + if (ioctl(hdmiFd, CEC_S_MODE, &monitor) < 0) + lt_info("%s: CEC monitor failed (%m)\n", __func__); + + GetCECAddressInfo(); + + if(autoview_cec_activ) + SetCECState(false); + + return true; + + } + return false; +} + +void hdmi_cec::GetCECAddressInfo() +{ + if (hdmiFd >= 0) + { + struct addressinfo addressinfo; + + __u16 phys_addr; + struct cec_log_addrs laddrs = {}; + + ::ioctl(hdmiFd, CEC_ADAP_G_PHYS_ADDR, &phys_addr); + addressinfo.physical[0] = (phys_addr >> 8) & 0xff; + addressinfo.physical[1] = phys_addr & 0xff; + + ::ioctl(hdmiFd, CEC_ADAP_G_LOG_ADDRS, &laddrs); + addressinfo.logical = laddrs.log_addr[0]; + + switch (laddrs.log_addr_type[0]) + { + case CEC_LOG_ADDR_TYPE_TV: + addressinfo.type = CEC_LOG_ADDR_TV; + break; + case CEC_LOG_ADDR_TYPE_RECORD: + addressinfo.type = CEC_LOG_ADDR_RECORD_1; + break; + case CEC_LOG_ADDR_TYPE_TUNER: + addressinfo.type = CEC_LOG_ADDR_TUNER_1; + break; + case CEC_LOG_ADDR_TYPE_PLAYBACK: + addressinfo.type = CEC_LOG_ADDR_PLAYBACK_1; + break; + case CEC_LOG_ADDR_TYPE_AUDIOSYSTEM: + addressinfo.type = CEC_LOG_ADDR_AUDIOSYSTEM; + break; + case CEC_LOG_ADDR_TYPE_UNREGISTERED: + default: + addressinfo.type = CEC_LOG_ADDR_UNREGISTERED; + break; + } + + deviceType = addressinfo.type; + logicalAddress = addressinfo.logical; + if (memcmp(physicalAddress, addressinfo.physical, sizeof(physicalAddress))) + { + lt_info("%s: detected physical address change: %02X%02X --> %02X%02X\n", __func__, physicalAddress[0], physicalAddress[1], addressinfo.physical[0], addressinfo.physical[1]); + memcpy(physicalAddress, addressinfo.physical, sizeof(physicalAddress)); + ReportPhysicalAddress(); + } + } +} + +void hdmi_cec::ReportPhysicalAddress() +{ + struct cec_message txmessage; + txmessage.address = 0x0f; /* broadcast */ + txmessage.data[0] = CEC_MSG_REPORT_PHYSICAL_ADDR; + txmessage.data[1] = physicalAddress[0]; + txmessage.data[2] = physicalAddress[1]; + txmessage.data[3] = deviceType; + txmessage.length = 4; + SendCECMessage(txmessage); +} + +void hdmi_cec::SendCECMessage(struct cec_message &txmessage) +{ + if (hdmiFd >= 0) + { + char str[txmessage.length*6]; + for (int i = 0; i < txmessage.length; i++) + { + sprintf(str+(i*6),"(0x%02X)", txmessage.data[i]); + } + lt_info("[CEC] send message %s\n",str); + struct cec_msg msg; + cec_msg_init(&msg, logicalAddress, txmessage.address); + memcpy(&msg.msg[1], txmessage.data, txmessage.length); + msg.len = txmessage.length + 1; + ioctl(hdmiFd, CEC_TRANSMIT, &msg); + } +} + +void hdmi_cec::SetCECAutoStandby(bool state) +{ + standby_cec_activ = state; +} + +void hdmi_cec::SetCECAutoView(bool state) +{ + autoview_cec_activ = state; +} + +void hdmi_cec::SetCECState(bool state) +{ + struct cec_message message; + + if ((standby_cec_activ) && state) + { + message.address = CEC_OP_PRIM_DEVTYPE_TV; + message.data[0] = CEC_MSG_STANDBY; + message.length = 1; + SendCECMessage(message); + } + + if ((autoview_cec_activ) && !state) + { + message.address = CEC_OP_PRIM_DEVTYPE_TV; + message.data[0] = CEC_MSG_IMAGE_VIEW_ON; + message.length = 1; + SendCECMessage(message); + usleep(10000); + message.address = 0x0f; /* broadcast */ + message.data[0] = CEC_MSG_ACTIVE_SOURCE; + message.data[1] = physicalAddress[0]; + message.data[2] = physicalAddress[1]; + message.length = 3; + SendCECMessage(message); + } + +} + +long hdmi_cec::translateKey(unsigned char code) +{ + long key = 0; + switch (code) + { + case 0x32: + key = 0x8b; + break; + case 0x20: + key = 0x0b; + break; + case 0x21: + key = 0x02; + break; + case 0x22: + key = 0x03; + break; + case 0x23: + key = 0x04; + break; + case 0x24: + key = 0x05; + break; + case 0x25: + key = 0x06; + break; + case 0x26: + key = 0x07; + break; + case 0x27: + key = 0x08; + break; + case 0x28: + key = 0x09; + break; + case 0x29: + key = 0x0a; + break; + case 0x30: + key = 0x192; + break; + case 0x31: + key = 0x193; + break; + case 0x44: + key = 0xcf; + break; + case 0x45: + key = 0x80; + break; + case 0x46: + key = 0x77; + break; + case 0x47: + key = 0xa7; + break; + case 0x48: + key = 0xa8; + break; + case 0x49: + key = 0xd0; + break; + case 0x53: + key = 0x166; + break; + case 0x54: + key = 0x16a; + break; + case 0x60: + key = 0xcf; + break; + case 0x61: + key = 0xa4; + break; + case 0x62: + key = 0xa7; + break; + case 0x64: + key = 0x80; + break; + case 0x00: + key = 0x160; + break; + case 0x03: + key = 0x69; + break; + case 0x04: + key = 0x6a; + break; + case 0x01: + key = 0x67; + break; + case 0x02: + key = 0x6c; + break; + case 0x0d: + key = 0xae; + break; + case 0x72: + key = 0x18e; + break; + case 0x71: + key = 0x191; + break; + case 0x73: + key = 0x18f; + break; + case 0x74: + key = 0x190; + break; + default: + key = 0x8b; + break; + } + return key; +} + +bool hdmi_cec::Start() +{ + if (running) + return false; + + if (hdmiFd == -1) + return false; + + running = true; + return (OpenThreads::Thread::start() == 0); +} + +bool hdmi_cec::Stop() +{ + if (!running) + return false; + + running = false; + + return (OpenThreads::Thread::join() == 0); +} + +void hdmi_cec::run() +{ + while (running) + { + Receive(); + } +} + +void hdmi_cec::Receive() +{ + bool hasdata = false; + struct cec_message rxmessage; + + struct cec_msg msg; + if (::ioctl(hdmiFd, CEC_RECEIVE, &msg) >= 0) + { + rxmessage.length = msg.len - 1; + memcpy(&rxmessage.data, &msg.msg[1], rxmessage.length); + hasdata = true; + } + + if (hasdata) + { + bool keypressed = false; + static unsigned char pressedkey = 0; + + char str[rxmessage.length*6]; + for (int i = 0; i < rxmessage.length; i++) + { + sprintf(str+(i*6),"(0x%02X)", rxmessage.data[i]); + } + lt_info("[CEC] received message %s\n", str); + + switch (rxmessage.data[0]) + { + case 0x44: /* key pressed */ + keypressed = true; + pressedkey = rxmessage.data[1]; + case 0x45: /* key released */ + { + long code = translateKey(pressedkey); + if (keypressed) + code |= 0x80000000; + lt_info("[CEC] received key %ld\n",code); + break; + } + } + } +} diff --git a/libarmbox/hdmi_cec.h b/libarmbox/hdmi_cec.h new file mode 100644 index 0000000..0dc97cb --- /dev/null +++ b/libarmbox/hdmi_cec.h @@ -0,0 +1,66 @@ +/* + Copyright (C) 2018 TangoCash + + License: GPLv2 + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +*/ + +#include +#include + +#include "video_lib.h" + +struct cec_message +{ + unsigned char address; + unsigned char length; + unsigned char data[256]; +} __attribute__((packed)); + +struct addressinfo +{ + unsigned char logical; + unsigned char physical[2]; + unsigned char type; +}; + +class hdmi_cec : public OpenThreads::Thread +{ +private: + hdmi_cec(); + static hdmi_cec *hdmi_cec_instance; + void run(); + bool Start(); + bool Stop(); + void Receive(); + unsigned char physicalAddress[2]; + bool autoview_cec_activ; + unsigned char deviceType, logicalAddress; + int hdmiFd; + long translateKey(unsigned char code); +protected: + bool running; +public: + ~hdmi_cec(); + static hdmi_cec* getInstance(); + bool SetCECMode(VIDEO_HDMI_CEC_MODE); + void SetCECAutoView(bool); + void SetCECAutoStandby(bool); + void GetCECAddressInfo(); + void SendCECMessage(struct cec_message &message); + void SetCECState(bool state); + void ReportPhysicalAddress(); + bool standby_cec_activ; +}; diff --git a/libarmbox/video.cpp b/libarmbox/video.cpp index 73fc02a..e05f3c3 100644 --- a/libarmbox/video.cpp +++ b/libarmbox/video.cpp @@ -36,7 +36,7 @@ #include #include "video_lib.h" #include "lt_debug.h" -#include "linux-uapi-cec.h" +#include "hdmi_cec.h" #include @@ -326,8 +326,6 @@ cVideo::cVideo(int, void *, void *, unsigned int unit) } else devnum = unit; fd = -1; - hdmiFd = -1; - standby_cec_activ = autoview_cec_activ = false; openDevice(); setAVInput(ENCODER); } @@ -336,8 +334,8 @@ cVideo::~cVideo(void) { if(fd >= 0) setAVInput(AUX); - if (standby_cec_activ && fd >= 0) - SetCECState(true); + if (hdmi_cec::getInstance()->standby_cec_activ && fd >= 0) + hdmi_cec::getInstance()->SetCECState(true); closeDevice(); } @@ -640,7 +638,7 @@ void cVideo::Standby(unsigned int bOn) setAVInput(ENCODER); } video_standby = bOn; - SetCECState(video_standby); + hdmi_cec::getInstance()->SetCECState(video_standby); } int cVideo::getBlank(void) @@ -1171,220 +1169,15 @@ bool cVideo::GetScreenImage(unsigned char * &out_data, int &xres, int &yres, boo bool cVideo::SetCECMode(VIDEO_HDMI_CEC_MODE _deviceType) { - physicalAddress[0] = 0x10; - physicalAddress[1] = 0x00; - logicalAddress = 1; - - if (_deviceType == VIDEO_HDMI_CEC_MODE_OFF) - { - if (hdmiFd >= 0) { - close(hdmiFd); - hdmiFd = -1; - } - return false; - } - else - deviceType = _deviceType; - - if (hdmiFd == -1) - hdmiFd = open("/dev/cec0", O_RDWR | O_CLOEXEC); - - if (hdmiFd >= 0) - { - __u32 monitor = CEC_MODE_INITIATOR | CEC_MODE_FOLLOWER; - struct cec_caps caps = {}; - - if (ioctl(hdmiFd, CEC_ADAP_G_CAPS, &caps) < 0) - lt_info("%s: CEC get caps failed (%m)\n", __func__); - - if (caps.capabilities & CEC_CAP_LOG_ADDRS) - { - struct cec_log_addrs laddrs = {}; - - if (ioctl(hdmiFd, CEC_ADAP_S_LOG_ADDRS, &laddrs) < 0) - lt_info("%s: CEC reset log addr failed (%m)\n", __func__); - - memset(&laddrs, 0, sizeof(laddrs)); - - /* - * NOTE: cec_version, osd_name and deviceType should be made configurable, - * CEC_ADAP_S_LOG_ADDRS delayed till the desired values are available - * (saves us some startup speed as well, polling for a free logical address - * takes some time) - */ - laddrs.cec_version = CEC_OP_CEC_VERSION_2_0; - strcpy(laddrs.osd_name, "neutrino"); - laddrs.vendor_id = CEC_VENDOR_ID_NONE; - - switch (deviceType) - { - case CEC_LOG_ADDR_TV: - laddrs.log_addr_type[laddrs.num_log_addrs] = CEC_LOG_ADDR_TYPE_TV; - laddrs.all_device_types[laddrs.num_log_addrs] = CEC_OP_ALL_DEVTYPE_TV; - laddrs.primary_device_type[laddrs.num_log_addrs] = CEC_OP_PRIM_DEVTYPE_TV; - break; - case CEC_LOG_ADDR_RECORD_1: - laddrs.log_addr_type[laddrs.num_log_addrs] = CEC_LOG_ADDR_TYPE_RECORD; - laddrs.all_device_types[laddrs.num_log_addrs] = CEC_OP_ALL_DEVTYPE_RECORD; - laddrs.primary_device_type[laddrs.num_log_addrs] = CEC_OP_PRIM_DEVTYPE_RECORD; - break; - case CEC_LOG_ADDR_TUNER_1: - laddrs.log_addr_type[laddrs.num_log_addrs] = CEC_LOG_ADDR_TYPE_TUNER; - laddrs.all_device_types[laddrs.num_log_addrs] = CEC_OP_ALL_DEVTYPE_TUNER; - laddrs.primary_device_type[laddrs.num_log_addrs] = CEC_OP_PRIM_DEVTYPE_TUNER; - break; - case CEC_LOG_ADDR_PLAYBACK_1: - laddrs.log_addr_type[laddrs.num_log_addrs] = CEC_LOG_ADDR_TYPE_PLAYBACK; - laddrs.all_device_types[laddrs.num_log_addrs] = CEC_OP_ALL_DEVTYPE_PLAYBACK; - laddrs.primary_device_type[laddrs.num_log_addrs] = CEC_OP_PRIM_DEVTYPE_PLAYBACK; - break; - case CEC_LOG_ADDR_AUDIOSYSTEM: - laddrs.log_addr_type[laddrs.num_log_addrs] = CEC_LOG_ADDR_TYPE_AUDIOSYSTEM; - laddrs.all_device_types[laddrs.num_log_addrs] = CEC_OP_ALL_DEVTYPE_AUDIOSYSTEM; - laddrs.primary_device_type[laddrs.num_log_addrs] = CEC_OP_PRIM_DEVTYPE_AUDIOSYSTEM; - break; - default: - laddrs.log_addr_type[laddrs.num_log_addrs] = CEC_LOG_ADDR_TYPE_UNREGISTERED; - laddrs.all_device_types[laddrs.num_log_addrs] = CEC_OP_ALL_DEVTYPE_SWITCH; - laddrs.primary_device_type[laddrs.num_log_addrs] = CEC_OP_PRIM_DEVTYPE_SWITCH; - break; - } - laddrs.num_log_addrs++; - - if (ioctl(hdmiFd, CEC_ADAP_S_LOG_ADDRS, &laddrs) < 0) - lt_info("%s: CEC set log addr failed (%m)\n", __func__); - } - - if (ioctl(hdmiFd, CEC_S_MODE, &monitor) < 0) - lt_info("%s: CEC monitor failed (%m)\n", __func__); - - GetCECAddressInfo(); - - if(autoview_cec_activ) - SetCECState(false); - - return true; - - } - return false; -} - -void cVideo::GetCECAddressInfo() -{ - if (hdmiFd >= 0) - { - struct addressinfo addressinfo; - - __u16 phys_addr; - struct cec_log_addrs laddrs = {}; - - ::ioctl(hdmiFd, CEC_ADAP_G_PHYS_ADDR, &phys_addr); - addressinfo.physical[0] = (phys_addr >> 8) & 0xff; - addressinfo.physical[1] = phys_addr & 0xff; - - ::ioctl(hdmiFd, CEC_ADAP_G_LOG_ADDRS, &laddrs); - addressinfo.logical = laddrs.log_addr[0]; - - switch (laddrs.log_addr_type[0]) - { - case CEC_LOG_ADDR_TYPE_TV: - addressinfo.type = CEC_LOG_ADDR_TV; - break; - case CEC_LOG_ADDR_TYPE_RECORD: - addressinfo.type = CEC_LOG_ADDR_RECORD_1; - break; - case CEC_LOG_ADDR_TYPE_TUNER: - addressinfo.type = CEC_LOG_ADDR_TUNER_1; - break; - case CEC_LOG_ADDR_TYPE_PLAYBACK: - addressinfo.type = CEC_LOG_ADDR_PLAYBACK_1; - break; - case CEC_LOG_ADDR_TYPE_AUDIOSYSTEM: - addressinfo.type = CEC_LOG_ADDR_AUDIOSYSTEM; - break; - case CEC_LOG_ADDR_TYPE_UNREGISTERED: - default: - addressinfo.type = CEC_LOG_ADDR_UNREGISTERED; - break; - } - - deviceType = addressinfo.type; - logicalAddress = addressinfo.logical; - if (memcmp(physicalAddress, addressinfo.physical, sizeof(physicalAddress))) - { - lt_info("%s: detected physical address change: %02X%02X --> %02X%02X", __func__, physicalAddress[0], physicalAddress[1], addressinfo.physical[0], addressinfo.physical[1]); - memcpy(physicalAddress, addressinfo.physical, sizeof(physicalAddress)); - ReportPhysicalAddress(); - // addressChanged((physicalAddress[0] << 8) | physicalAddress[1]); - } - } -} - -void cVideo::ReportPhysicalAddress() -{ - struct cec_message txmessage; - txmessage.address = 0x0f; /* broadcast */ - txmessage.data[0] = CEC_MSG_REPORT_PHYSICAL_ADDR; - txmessage.data[1] = physicalAddress[0]; - txmessage.data[2] = physicalAddress[1]; - txmessage.data[3] = deviceType; - txmessage.length = 4; - SendCECMessage(txmessage); -} - -void cVideo::SendCECMessage(struct cec_message &message) -{ - if (hdmiFd >= 0) - { - lt_info("[CEC] send message"); - for (int i = 0; i < message.length; i++) - { - lt_info(" %02X", message.data[i]); - } - lt_info("\n"); - struct cec_msg msg; - cec_msg_init(&msg, logicalAddress, message.address); - memcpy(&msg.msg[1], message.data, message.length); - msg.len = message.length + 1; - ioctl(hdmiFd, CEC_TRANSMIT, &msg); - } + return hdmi_cec::getInstance()->SetCECMode(_deviceType); } void cVideo::SetCECAutoStandby(bool state) { - standby_cec_activ = state; + hdmi_cec::getInstance()->SetCECAutoStandby(state); } void cVideo::SetCECAutoView(bool state) { - autoview_cec_activ = state; -} - -void cVideo::SetCECState(bool state) -{ - struct cec_message message; - - if ((standby_cec_activ) && state){ - message.address = CEC_OP_PRIM_DEVTYPE_TV; - message.data[0] = CEC_MSG_STANDBY; - message.length = 1; - SendCECMessage(message); - } - - if ((autoview_cec_activ) && !state){ - message.address = CEC_OP_PRIM_DEVTYPE_TV; - message.data[0] = CEC_MSG_IMAGE_VIEW_ON; - message.length = 1; - SendCECMessage(message); - usleep(10000); - message.address = 0x0f; /* broadcast */ - message.data[0] = CEC_MSG_ACTIVE_SOURCE; - //message.data[1] = ((((int)physicalAddress >> 12) & 0xf) << 4) + (((int)physicalAddress >> 8) & 0xf); - //message.data[2] = ((((int)physicalAddress >> 4) & 0xf) << 4) + (((int)physicalAddress >> 0) & 0xf); - message.data[1] = physicalAddress[0]; - message.data[2] = physicalAddress[1]; - message.length = 3; - SendCECMessage(message); - } - + hdmi_cec::getInstance()->SetCECAutoView(state); } diff --git a/libarmbox/video_lib.h b/libarmbox/video_lib.h index adbb5fb..86bbd24 100644 --- a/libarmbox/video_lib.h +++ b/libarmbox/video_lib.h @@ -144,20 +144,6 @@ typedef enum VIDEO_CONTROL_MAX = VIDEO_CONTROL_SHARPNESS } VIDEO_CONTROL; -struct cec_message -{ - unsigned char address; - unsigned char length; - unsigned char data[256]; -}__attribute__((packed)); -#define cec_rx_message cec_message -struct addressinfo -{ - unsigned char logical; - unsigned char physical[2]; - unsigned char type; -}; - class cDemux; class cPlayback; @@ -201,11 +187,6 @@ class cVideo /* used internally by dmx */ int64_t GetPTS(void); - unsigned char physicalAddress[2]; - bool standby_cec_activ,autoview_cec_activ; - unsigned char deviceType, logicalAddress; - int hdmiFd; - public: /* constructor & destructor */ cVideo(int mode, void *, void *, unsigned int unit = 0); @@ -250,10 +231,6 @@ class cVideo bool SetCECMode(VIDEO_HDMI_CEC_MODE); void SetCECAutoView(bool); void SetCECAutoStandby(bool); - void GetCECAddressInfo(); - void SendCECMessage(struct cec_message &message); - void SetCECState(bool state); - void ReportPhysicalAddress(); void ShowPicture(const char * fname); void StopPicture(); void Standby(unsigned int bOn); From 3ce9018d4abbdcc7ecbcd0cb3b54065e3e5ce123 Mon Sep 17 00:00:00 2001 From: TangoCash Date: Sun, 7 Oct 2018 18:43:31 +0200 Subject: [PATCH 18/52] libarmbox: fix hdmi_cec handling Origin commit data ------------------ Branch: master Commit: https://github.com/neutrino-images/ni-libstb-hal/commit/be9014704723f22e21fb16a6ac5e91c5a9a99854 Author: TangoCash Date: 2018-10-07 (Sun, 07 Oct 2018) ------------------ No further description and justification available within origin commit message! ------------------ This commit was generated by Migit --- libarmbox/hdmi_cec.cpp | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/libarmbox/hdmi_cec.cpp b/libarmbox/hdmi_cec.cpp index 5edf404..ddea9b6 100644 --- a/libarmbox/hdmi_cec.cpp +++ b/libarmbox/hdmi_cec.cpp @@ -60,9 +60,6 @@ hdmi_cec::hdmi_cec() { standby_cec_activ = autoview_cec_activ = false; hdmiFd = -1; - if (hdmiFd == -1) - hdmiFd = open(CEC_DEVICE, O_RDWR | O_CLOEXEC); - Start(); } hdmi_cec::~hdmi_cec() @@ -89,21 +86,18 @@ bool hdmi_cec::SetCECMode(VIDEO_HDMI_CEC_MODE _deviceType) if (_deviceType == VIDEO_HDMI_CEC_MODE_OFF) { - if (hdmiFd >= 0) - { - close(hdmiFd); - hdmiFd = -1; - Stop(); - } + Stop(); + lt_debug("CEC OFF %s\n", __func__); return false; } else deviceType = _deviceType; + lt_debug("CEC ON %s\n", __func__); + if (hdmiFd == -1) { - hdmiFd = open(CEC_DEVICE, O_RDWR | O_CLOEXEC); - Start(); + hdmiFd = open(CEC_DEVICE, O_RDWR | O_NONBLOCK); } if (hdmiFd >= 0) @@ -180,6 +174,7 @@ bool hdmi_cec::SetCECMode(VIDEO_HDMI_CEC_MODE _deviceType) if(autoview_cec_activ) SetCECState(false); + Start(); return true; } @@ -441,12 +436,18 @@ bool hdmi_cec::Stop() running = false; + if (hdmiFd >= 0) + { + close(hdmiFd); + hdmiFd = -1; + } + return (OpenThreads::Thread::join() == 0); } void hdmi_cec::run() { - while (running) + while (running && (hdmiFd >= 0)) { Receive(); } From c2e32b9fd3287bd72ae45415b302a01f993ab507 Mon Sep 17 00:00:00 2001 From: TangoCash Date: Sun, 7 Oct 2018 22:21:38 +0200 Subject: [PATCH 19/52] libarmbox: hdmi_cec add some more output Origin commit data ------------------ Branch: master Commit: https://github.com/neutrino-images/ni-libstb-hal/commit/6dff0a19c9bea93867b4ae324b173efa35a77a26 Author: TangoCash Date: 2018-10-07 (Sun, 07 Oct 2018) ------------------ No further description and justification available within origin commit message! ------------------ This commit was generated by Migit --- libarmbox/hdmi_cec.cpp | 26 +- libarmbox/hdmi_cec_types.h | 600 +++++++++++++++++++++++++++++++++++++ 2 files changed, 619 insertions(+), 7 deletions(-) create mode 100644 libarmbox/hdmi_cec_types.h diff --git a/libarmbox/hdmi_cec.cpp b/libarmbox/hdmi_cec.cpp index ddea9b6..a45597d 100644 --- a/libarmbox/hdmi_cec.cpp +++ b/libarmbox/hdmi_cec.cpp @@ -33,8 +33,12 @@ #include "linux-uapi-cec.h" #include "hdmi_cec.h" +#include "hdmi_cec_types.h" #include "lt_debug.h" +#define RED "\x1B[31m" +#define NORMAL "\x1B[0m" + #define lt_debug(args...) _lt_debug(TRIPLE_DEBUG_VIDEO, this, args) #define lt_info(args...) _lt_info(TRIPLE_DEBUG_VIDEO, this, args) #define lt_debug_c(args...) _lt_debug(TRIPLE_DEBUG_VIDEO, NULL, args) @@ -250,9 +254,9 @@ void hdmi_cec::SendCECMessage(struct cec_message &txmessage) char str[txmessage.length*6]; for (int i = 0; i < txmessage.length; i++) { - sprintf(str+(i*6),"(0x%02X)", txmessage.data[i]); + sprintf(str+(i*6),"[0x%02X]", txmessage.data[i]); } - lt_info("[CEC] send message %s\n",str); + lt_info("[CEC] send message '%s' (%s)\n", ToString((cec_opcode)txmessage.data[0]), str); struct cec_msg msg; cec_msg_init(&msg, logicalAddress, txmessage.address); memcpy(&msg.msg[1], txmessage.data, txmessage.length); @@ -474,21 +478,29 @@ void hdmi_cec::Receive() char str[rxmessage.length*6]; for (int i = 0; i < rxmessage.length; i++) { - sprintf(str+(i*6),"(0x%02X)", rxmessage.data[i]); + sprintf(str+(i*6),"[0x%02X]", rxmessage.data[i]); } - lt_info("[CEC] received message %s\n", str); + lt_info("[CEC] received message '%s' (%s)\n", ToString((cec_opcode)rxmessage.data[0]), str); switch (rxmessage.data[0]) { - case 0x44: /* key pressed */ + case CEC_MSG_DEVICE_VENDOR_ID: + { + uint64_t iVendorId = ((uint64_t)rxmessage.data[1] << 16) + + ((uint64_t)rxmessage.data[2] << 8) + + (uint64_t)rxmessage.data[3]; + lt_info("[CEC] decoded message '%s' (%s)\n", ToString((cec_opcode)rxmessage.data[0]), ToString((cec_vendor_id)iVendorId)); + break; + } + case CEC_MSG_USER_CONTROL_PRESSED: /* key pressed */ keypressed = true; pressedkey = rxmessage.data[1]; - case 0x45: /* key released */ + case CEC_MSG_USER_CONTROL_RELEASED: /* key released */ { long code = translateKey(pressedkey); if (keypressed) code |= 0x80000000; - lt_info("[CEC] received key %ld\n",code); + lt_info("[CEC] decoded key %s (%ld)\n",ToString((cec_user_control_code)pressedkey), code); break; } } diff --git a/libarmbox/hdmi_cec_types.h b/libarmbox/hdmi_cec_types.h new file mode 100644 index 0000000..f5808af --- /dev/null +++ b/libarmbox/hdmi_cec_types.h @@ -0,0 +1,600 @@ +typedef enum cec_vendor_id +{ + CEC_VENDOR_TOSHIBA = 0x000039, + CEC_VENDOR_SAMSUNG = 0x0000F0, + CEC_VENDOR_DENON = 0x0005CD, + CEC_VENDOR_MARANTZ = 0x000678, + CEC_VENDOR_LOEWE = 0x000982, + CEC_VENDOR_ONKYO = 0x0009B0, + CEC_VENDOR_MEDION = 0x000CB8, + CEC_VENDOR_TOSHIBA2 = 0x000CE7, + CEC_VENDOR_PULSE_EIGHT = 0x001582, + CEC_VENDOR_HARMAN_KARDON2 = 0x001950, + CEC_VENDOR_GOOGLE = 0x001A11, + CEC_VENDOR_AKAI = 0x0020C7, + CEC_VENDOR_AOC = 0x002467, + CEC_VENDOR_PANASONIC = 0x008045, + CEC_VENDOR_PHILIPS = 0x00903E, + CEC_VENDOR_DAEWOO = 0x009053, + CEC_VENDOR_YAMAHA = 0x00A0DE, + CEC_VENDOR_GRUNDIG = 0x00D0D5, + CEC_VENDOR_PIONEER = 0x00E036, + CEC_VENDOR_LG = 0x00E091, + CEC_VENDOR_SHARP = 0x08001F, + CEC_VENDOR_SONY = 0x080046, + CEC_VENDOR_BROADCOM = 0x18C086, + CEC_VENDOR_SHARP2 = 0x534850, + CEC_VENDOR_VIZIO = 0x6B746D, + CEC_VENDOR_BENQ = 0x8065E9, + CEC_VENDOR_HARMAN_KARDON = 0x9C645E, + CEC_VENDOR_UNKNOWN = 0 +} cec_vendor_id; + +typedef enum cec_user_control_code +{ + CEC_USER_CONTROL_CODE_SELECT = 0x00, + CEC_USER_CONTROL_CODE_UP = 0x01, + CEC_USER_CONTROL_CODE_DOWN = 0x02, + CEC_USER_CONTROL_CODE_LEFT = 0x03, + CEC_USER_CONTROL_CODE_RIGHT = 0x04, + CEC_USER_CONTROL_CODE_RIGHT_UP = 0x05, + CEC_USER_CONTROL_CODE_RIGHT_DOWN = 0x06, + CEC_USER_CONTROL_CODE_LEFT_UP = 0x07, + CEC_USER_CONTROL_CODE_LEFT_DOWN = 0x08, + CEC_USER_CONTROL_CODE_ROOT_MENU = 0x09, + CEC_USER_CONTROL_CODE_SETUP_MENU = 0x0A, + CEC_USER_CONTROL_CODE_CONTENTS_MENU = 0x0B, + CEC_USER_CONTROL_CODE_FAVORITE_MENU = 0x0C, + CEC_USER_CONTROL_CODE_EXIT = 0x0D, + // reserved: 0x0E, 0x0F + CEC_USER_CONTROL_CODE_TOP_MENU = 0x10, + CEC_USER_CONTROL_CODE_DVD_MENU = 0x11, + // reserved: 0x12 ... 0x1C + CEC_USER_CONTROL_CODE_NUMBER_ENTRY_MODE = 0x1D, + CEC_USER_CONTROL_CODE_NUMBER11 = 0x1E, + CEC_USER_CONTROL_CODE_NUMBER12 = 0x1F, + CEC_USER_CONTROL_CODE_NUMBER0 = 0x20, + CEC_USER_CONTROL_CODE_NUMBER1 = 0x21, + CEC_USER_CONTROL_CODE_NUMBER2 = 0x22, + CEC_USER_CONTROL_CODE_NUMBER3 = 0x23, + CEC_USER_CONTROL_CODE_NUMBER4 = 0x24, + CEC_USER_CONTROL_CODE_NUMBER5 = 0x25, + CEC_USER_CONTROL_CODE_NUMBER6 = 0x26, + CEC_USER_CONTROL_CODE_NUMBER7 = 0x27, + CEC_USER_CONTROL_CODE_NUMBER8 = 0x28, + CEC_USER_CONTROL_CODE_NUMBER9 = 0x29, + CEC_USER_CONTROL_CODE_DOT = 0x2A, + CEC_USER_CONTROL_CODE_ENTER = 0x2B, + CEC_USER_CONTROL_CODE_CLEAR = 0x2C, + CEC_USER_CONTROL_CODE_NEXT_FAVORITE = 0x2F, + CEC_USER_CONTROL_CODE_CHANNEL_UP = 0x30, + CEC_USER_CONTROL_CODE_CHANNEL_DOWN = 0x31, + CEC_USER_CONTROL_CODE_PREVIOUS_CHANNEL = 0x32, + CEC_USER_CONTROL_CODE_SOUND_SELECT = 0x33, + CEC_USER_CONTROL_CODE_INPUT_SELECT = 0x34, + CEC_USER_CONTROL_CODE_DISPLAY_INFORMATION = 0x35, + CEC_USER_CONTROL_CODE_HELP = 0x36, + CEC_USER_CONTROL_CODE_PAGE_UP = 0x37, + CEC_USER_CONTROL_CODE_PAGE_DOWN = 0x38, + // reserved: 0x39 ... 0x3F + CEC_USER_CONTROL_CODE_POWER = 0x40, + CEC_USER_CONTROL_CODE_VOLUME_UP = 0x41, + CEC_USER_CONTROL_CODE_VOLUME_DOWN = 0x42, + CEC_USER_CONTROL_CODE_MUTE = 0x43, + CEC_USER_CONTROL_CODE_PLAY = 0x44, + CEC_USER_CONTROL_CODE_STOP = 0x45, + CEC_USER_CONTROL_CODE_PAUSE = 0x46, + CEC_USER_CONTROL_CODE_RECORD = 0x47, + CEC_USER_CONTROL_CODE_REWIND = 0x48, + CEC_USER_CONTROL_CODE_FAST_FORWARD = 0x49, + CEC_USER_CONTROL_CODE_EJECT = 0x4A, + CEC_USER_CONTROL_CODE_FORWARD = 0x4B, + CEC_USER_CONTROL_CODE_BACKWARD = 0x4C, + CEC_USER_CONTROL_CODE_STOP_RECORD = 0x4D, + CEC_USER_CONTROL_CODE_PAUSE_RECORD = 0x4E, + // reserved: 0x4F + CEC_USER_CONTROL_CODE_ANGLE = 0x50, + CEC_USER_CONTROL_CODE_SUB_PICTURE = 0x51, + CEC_USER_CONTROL_CODE_VIDEO_ON_DEMAND = 0x52, + CEC_USER_CONTROL_CODE_ELECTRONIC_PROGRAM_GUIDE = 0x53, + CEC_USER_CONTROL_CODE_TIMER_PROGRAMMING = 0x54, + CEC_USER_CONTROL_CODE_INITIAL_CONFIGURATION = 0x55, + CEC_USER_CONTROL_CODE_SELECT_BROADCAST_TYPE = 0x56, + CEC_USER_CONTROL_CODE_SELECT_SOUND_PRESENTATION = 0x57, + // reserved: 0x58 ... 0x5F + CEC_USER_CONTROL_CODE_PLAY_FUNCTION = 0x60, + CEC_USER_CONTROL_CODE_PAUSE_PLAY_FUNCTION = 0x61, + CEC_USER_CONTROL_CODE_RECORD_FUNCTION = 0x62, + CEC_USER_CONTROL_CODE_PAUSE_RECORD_FUNCTION = 0x63, + CEC_USER_CONTROL_CODE_STOP_FUNCTION = 0x64, + CEC_USER_CONTROL_CODE_MUTE_FUNCTION = 0x65, + CEC_USER_CONTROL_CODE_RESTORE_VOLUME_FUNCTION = 0x66, + CEC_USER_CONTROL_CODE_TUNE_FUNCTION = 0x67, + CEC_USER_CONTROL_CODE_SELECT_MEDIA_FUNCTION = 0x68, + CEC_USER_CONTROL_CODE_SELECT_AV_INPUT_FUNCTION = 0x69, + CEC_USER_CONTROL_CODE_SELECT_AUDIO_INPUT_FUNCTION = 0x6A, + CEC_USER_CONTROL_CODE_POWER_TOGGLE_FUNCTION = 0x6B, + CEC_USER_CONTROL_CODE_POWER_OFF_FUNCTION = 0x6C, + CEC_USER_CONTROL_CODE_POWER_ON_FUNCTION = 0x6D, + // reserved: 0x6E ... 0x70 + CEC_USER_CONTROL_CODE_F1_BLUE = 0x71, + CEC_USER_CONTROL_CODE_F2_RED = 0X72, + CEC_USER_CONTROL_CODE_F3_GREEN = 0x73, + CEC_USER_CONTROL_CODE_F4_YELLOW = 0x74, + CEC_USER_CONTROL_CODE_F5 = 0x75, + CEC_USER_CONTROL_CODE_DATA = 0x76, + // reserved: 0x77 ... 0xFF + CEC_USER_CONTROL_CODE_AN_RETURN = 0x91, // return (Samsung) + CEC_USER_CONTROL_CODE_AN_CHANNELS_LIST = 0x96, // channels list (Samsung) + CEC_USER_CONTROL_CODE_MAX = 0x96, + CEC_USER_CONTROL_CODE_UNKNOWN = 0xFF +} cec_user_control_code; + +typedef enum cec_opcode +{ + CEC_OPCODE_ACTIVE_SOURCE = 0x82, + CEC_OPCODE_IMAGE_VIEW_ON = 0x04, + CEC_OPCODE_TEXT_VIEW_ON = 0x0D, + CEC_OPCODE_INACTIVE_SOURCE = 0x9D, + CEC_OPCODE_REQUEST_ACTIVE_SOURCE = 0x85, + CEC_OPCODE_ROUTING_CHANGE = 0x80, + CEC_OPCODE_ROUTING_INFORMATION = 0x81, + CEC_OPCODE_SET_STREAM_PATH = 0x86, + CEC_OPCODE_STANDBY = 0x36, + CEC_OPCODE_RECORD_OFF = 0x0B, + CEC_OPCODE_RECORD_ON = 0x09, + CEC_OPCODE_RECORD_STATUS = 0x0A, + CEC_OPCODE_RECORD_TV_SCREEN = 0x0F, + CEC_OPCODE_CLEAR_ANALOGUE_TIMER = 0x33, + CEC_OPCODE_CLEAR_DIGITAL_TIMER = 0x99, + CEC_OPCODE_CLEAR_EXTERNAL_TIMER = 0xA1, + CEC_OPCODE_SET_ANALOGUE_TIMER = 0x34, + CEC_OPCODE_SET_DIGITAL_TIMER = 0x97, + CEC_OPCODE_SET_EXTERNAL_TIMER = 0xA2, + CEC_OPCODE_SET_TIMER_PROGRAM_TITLE = 0x67, + CEC_OPCODE_TIMER_CLEARED_STATUS = 0x43, + CEC_OPCODE_TIMER_STATUS = 0x35, + CEC_OPCODE_CEC_VERSION = 0x9E, + CEC_OPCODE_GET_CEC_VERSION = 0x9F, + CEC_OPCODE_GIVE_PHYSICAL_ADDRESS = 0x83, + CEC_OPCODE_GET_MENU_LANGUAGE = 0x91, + CEC_OPCODE_REPORT_PHYSICAL_ADDRESS = 0x84, + CEC_OPCODE_SET_MENU_LANGUAGE = 0x32, + CEC_OPCODE_DECK_CONTROL = 0x42, + CEC_OPCODE_DECK_STATUS = 0x1B, + CEC_OPCODE_GIVE_DECK_STATUS = 0x1A, + CEC_OPCODE_PLAY = 0x41, + CEC_OPCODE_GIVE_TUNER_DEVICE_STATUS = 0x08, + CEC_OPCODE_SELECT_ANALOGUE_SERVICE = 0x92, + CEC_OPCODE_SELECT_DIGITAL_SERVICE = 0x93, + CEC_OPCODE_TUNER_DEVICE_STATUS = 0x07, + CEC_OPCODE_TUNER_STEP_DECREMENT = 0x06, + CEC_OPCODE_TUNER_STEP_INCREMENT = 0x05, + CEC_OPCODE_DEVICE_VENDOR_ID = 0x87, + CEC_OPCODE_GIVE_DEVICE_VENDOR_ID = 0x8C, + CEC_OPCODE_VENDOR_COMMAND = 0x89, + CEC_OPCODE_VENDOR_COMMAND_WITH_ID = 0xA0, + CEC_OPCODE_VENDOR_REMOTE_BUTTON_DOWN = 0x8A, + CEC_OPCODE_VENDOR_REMOTE_BUTTON_UP = 0x8B, + CEC_OPCODE_SET_OSD_STRING = 0x64, + CEC_OPCODE_GIVE_OSD_NAME = 0x46, + CEC_OPCODE_SET_OSD_NAME = 0x47, + CEC_OPCODE_MENU_REQUEST = 0x8D, + CEC_OPCODE_MENU_STATUS = 0x8E, + CEC_OPCODE_USER_CONTROL_PRESSED = 0x44, + CEC_OPCODE_USER_CONTROL_RELEASE = 0x45, + CEC_OPCODE_GIVE_DEVICE_POWER_STATUS = 0x8F, + CEC_OPCODE_REPORT_POWER_STATUS = 0x90, + CEC_OPCODE_FEATURE_ABORT = 0x00, + CEC_OPCODE_ABORT = 0xFF, + CEC_OPCODE_GIVE_AUDIO_STATUS = 0x71, + CEC_OPCODE_GIVE_SYSTEM_AUDIO_MODE_STATUS = 0x7D, + CEC_OPCODE_REPORT_AUDIO_STATUS = 0x7A, + CEC_OPCODE_SET_SYSTEM_AUDIO_MODE = 0x72, + CEC_OPCODE_SYSTEM_AUDIO_MODE_REQUEST = 0x70, + CEC_OPCODE_SYSTEM_AUDIO_MODE_STATUS = 0x7E, + CEC_OPCODE_SET_AUDIO_RATE = 0x9A, + + /* CEC 1.4 */ + CEC_OPCODE_START_ARC = 0xC0, + CEC_OPCODE_REPORT_ARC_STARTED = 0xC1, + CEC_OPCODE_REPORT_ARC_ENDED = 0xC2, + CEC_OPCODE_REQUEST_ARC_START = 0xC3, + CEC_OPCODE_REQUEST_ARC_END = 0xC4, + CEC_OPCODE_END_ARC = 0xC5, + CEC_OPCODE_CDC = 0xF8, + /* when this opcode is set, no opcode will be sent to the device. this is one of the reserved numbers */ + CEC_OPCODE_NONE = 0xFD +} cec_opcode; + +static const char *ToString(const cec_opcode opcode) +{ + switch (opcode) + { + case CEC_OPCODE_ACTIVE_SOURCE: + return "active source"; + case CEC_OPCODE_IMAGE_VIEW_ON: + return "image view on"; + case CEC_OPCODE_TEXT_VIEW_ON: + return "text view on"; + case CEC_OPCODE_INACTIVE_SOURCE: + return "inactive source"; + case CEC_OPCODE_REQUEST_ACTIVE_SOURCE: + return "request active source"; + case CEC_OPCODE_ROUTING_CHANGE: + return "routing change"; + case CEC_OPCODE_ROUTING_INFORMATION: + return "routing information"; + case CEC_OPCODE_SET_STREAM_PATH: + return "set stream path"; + case CEC_OPCODE_STANDBY: + return "standby"; + case CEC_OPCODE_RECORD_OFF: + return "record off"; + case CEC_OPCODE_RECORD_ON: + return "record on"; + case CEC_OPCODE_RECORD_STATUS: + return "record status"; + case CEC_OPCODE_RECORD_TV_SCREEN: + return "record tv screen"; + case CEC_OPCODE_CLEAR_ANALOGUE_TIMER: + return "clear analogue timer"; + case CEC_OPCODE_CLEAR_DIGITAL_TIMER: + return "clear digital timer"; + case CEC_OPCODE_CLEAR_EXTERNAL_TIMER: + return "clear external timer"; + case CEC_OPCODE_SET_ANALOGUE_TIMER: + return "set analogue timer"; + case CEC_OPCODE_SET_DIGITAL_TIMER: + return "set digital timer"; + case CEC_OPCODE_SET_EXTERNAL_TIMER: + return "set external timer"; + case CEC_OPCODE_SET_TIMER_PROGRAM_TITLE: + return "set timer program title"; + case CEC_OPCODE_TIMER_CLEARED_STATUS: + return "timer cleared status"; + case CEC_OPCODE_TIMER_STATUS: + return "timer status"; + case CEC_OPCODE_CEC_VERSION: + return "cec version"; + case CEC_OPCODE_GET_CEC_VERSION: + return "get cec version"; + case CEC_OPCODE_GIVE_PHYSICAL_ADDRESS: + return "give physical address"; + case CEC_OPCODE_GET_MENU_LANGUAGE: + return "get menu language"; + case CEC_OPCODE_REPORT_PHYSICAL_ADDRESS: + return "report physical address"; + case CEC_OPCODE_SET_MENU_LANGUAGE: + return "set menu language"; + case CEC_OPCODE_DECK_CONTROL: + return "deck control"; + case CEC_OPCODE_DECK_STATUS: + return "deck status"; + case CEC_OPCODE_GIVE_DECK_STATUS: + return "give deck status"; + case CEC_OPCODE_PLAY: + return "play"; + case CEC_OPCODE_GIVE_TUNER_DEVICE_STATUS: + return "give tuner status"; + case CEC_OPCODE_SELECT_ANALOGUE_SERVICE: + return "select analogue service"; + case CEC_OPCODE_SELECT_DIGITAL_SERVICE: + return "set digital service"; + case CEC_OPCODE_TUNER_DEVICE_STATUS: + return "tuner device status"; + case CEC_OPCODE_TUNER_STEP_DECREMENT: + return "tuner step decrement"; + case CEC_OPCODE_TUNER_STEP_INCREMENT: + return "tuner step increment"; + case CEC_OPCODE_DEVICE_VENDOR_ID: + return "device vendor id"; + case CEC_OPCODE_GIVE_DEVICE_VENDOR_ID: + return "give device vendor id"; + case CEC_OPCODE_VENDOR_COMMAND: + return "vendor command"; + case CEC_OPCODE_VENDOR_COMMAND_WITH_ID: + return "vendor command with id"; + case CEC_OPCODE_VENDOR_REMOTE_BUTTON_DOWN: + return "vendor remote button down"; + case CEC_OPCODE_VENDOR_REMOTE_BUTTON_UP: + return "vendor remote button up"; + case CEC_OPCODE_SET_OSD_STRING: + return "set osd string"; + case CEC_OPCODE_GIVE_OSD_NAME: + return "give osd name"; + case CEC_OPCODE_SET_OSD_NAME: + return "set osd name"; + case CEC_OPCODE_MENU_REQUEST: + return "menu request"; + case CEC_OPCODE_MENU_STATUS: + return "menu status"; + case CEC_OPCODE_USER_CONTROL_PRESSED: + return "user control pressed"; + case CEC_OPCODE_USER_CONTROL_RELEASE: + return "user control release"; + case CEC_OPCODE_GIVE_DEVICE_POWER_STATUS: + return "give device power status"; + case CEC_OPCODE_REPORT_POWER_STATUS: + return "report power status"; + case CEC_OPCODE_FEATURE_ABORT: + return "feature abort"; + case CEC_OPCODE_ABORT: + return "abort"; + case CEC_OPCODE_GIVE_AUDIO_STATUS: + return "give audio status"; + case CEC_OPCODE_GIVE_SYSTEM_AUDIO_MODE_STATUS: + return "give audio mode status"; + case CEC_OPCODE_REPORT_AUDIO_STATUS: + return "report audio status"; + case CEC_OPCODE_SET_SYSTEM_AUDIO_MODE: + return "set system audio mode"; + case CEC_OPCODE_SYSTEM_AUDIO_MODE_REQUEST: + return "system audio mode request"; + case CEC_OPCODE_SYSTEM_AUDIO_MODE_STATUS: + return "system audio mode status"; + case CEC_OPCODE_SET_AUDIO_RATE: + return "set audio rate"; + case CEC_OPCODE_START_ARC: + return "start ARC"; + case CEC_OPCODE_REPORT_ARC_STARTED: + return "report ARC started"; + case CEC_OPCODE_REPORT_ARC_ENDED: + return "report ARC ended"; + case CEC_OPCODE_REQUEST_ARC_START: + return "request ARC start"; + case CEC_OPCODE_REQUEST_ARC_END: + return "request ARC end"; + case CEC_OPCODE_END_ARC: + return "end ARC"; + case CEC_OPCODE_CDC: + return "CDC"; + case CEC_OPCODE_NONE: + return "poll"; + default: + return "UNKNOWN"; + } +} + +static const char *ToString(const cec_vendor_id vendor) +{ + switch (vendor) + { + case CEC_VENDOR_SAMSUNG: + return "Samsung"; + case CEC_VENDOR_LG: + return "LG"; + case CEC_VENDOR_PANASONIC: + return "Panasonic"; + case CEC_VENDOR_PIONEER: + return "Pioneer"; + case CEC_VENDOR_ONKYO: + return "Onkyo"; + case CEC_VENDOR_YAMAHA: + return "Yamaha"; + case CEC_VENDOR_PHILIPS: + return "Philips"; + case CEC_VENDOR_SONY: + return "Sony"; + case CEC_VENDOR_TOSHIBA: + case CEC_VENDOR_TOSHIBA2: + return "Toshiba"; + case CEC_VENDOR_AKAI: + return "Akai"; + case CEC_VENDOR_AOC: + return "AOC"; + case CEC_VENDOR_BENQ: + return "Benq"; + case CEC_VENDOR_DAEWOO: + return "Daewoo"; + case CEC_VENDOR_GRUNDIG: + return "Grundig"; + case CEC_VENDOR_MEDION: + return "Medion"; + case CEC_VENDOR_SHARP: + case CEC_VENDOR_SHARP2: + return "Sharp"; + case CEC_VENDOR_VIZIO: + return "Vizio"; + case CEC_VENDOR_BROADCOM: + return "Broadcom"; + case CEC_VENDOR_LOEWE: + return "Loewe"; + case CEC_VENDOR_DENON: + return "Denon"; + case CEC_VENDOR_MARANTZ: + return "Marantz"; + case CEC_VENDOR_HARMAN_KARDON: + case CEC_VENDOR_HARMAN_KARDON2: + return "Harman/Kardon"; + case CEC_VENDOR_PULSE_EIGHT: + return "Pulse Eight"; + case CEC_VENDOR_GOOGLE: + return "Google"; + default: + return "Unknown"; + } +} + +static const char *ToString(const cec_user_control_code key) +{ + switch (key) + { + case CEC_USER_CONTROL_CODE_SELECT: + return "select"; + case CEC_USER_CONTROL_CODE_UP: + return "up"; + case CEC_USER_CONTROL_CODE_DOWN: + return "down"; + case CEC_USER_CONTROL_CODE_LEFT: + return "left"; + case CEC_USER_CONTROL_CODE_RIGHT: + return "right"; + case CEC_USER_CONTROL_CODE_RIGHT_UP: + return "right+up"; + case CEC_USER_CONTROL_CODE_RIGHT_DOWN: + return "right+down"; + case CEC_USER_CONTROL_CODE_LEFT_UP: + return "left+up"; + case CEC_USER_CONTROL_CODE_LEFT_DOWN: + return "left+down"; + case CEC_USER_CONTROL_CODE_ROOT_MENU: + return "root menu"; + case CEC_USER_CONTROL_CODE_SETUP_MENU: + return "setup menu"; + case CEC_USER_CONTROL_CODE_CONTENTS_MENU: + return "contents menu"; + case CEC_USER_CONTROL_CODE_FAVORITE_MENU: + return "favourite menu"; + case CEC_USER_CONTROL_CODE_EXIT: + return "exit"; + case CEC_USER_CONTROL_CODE_TOP_MENU: + return "top menu"; + case CEC_USER_CONTROL_CODE_DVD_MENU: + return "dvd menu"; + case CEC_USER_CONTROL_CODE_NUMBER_ENTRY_MODE: + return "number entry mode"; + case CEC_USER_CONTROL_CODE_NUMBER11: + return "11"; + case CEC_USER_CONTROL_CODE_NUMBER12: + return "12"; + case CEC_USER_CONTROL_CODE_NUMBER0: + return "0"; + case CEC_USER_CONTROL_CODE_NUMBER1: + return "1"; + case CEC_USER_CONTROL_CODE_NUMBER2: + return "2"; + case CEC_USER_CONTROL_CODE_NUMBER3: + return "3"; + case CEC_USER_CONTROL_CODE_NUMBER4: + return "4"; + case CEC_USER_CONTROL_CODE_NUMBER5: + return "5"; + case CEC_USER_CONTROL_CODE_NUMBER6: + return "6"; + case CEC_USER_CONTROL_CODE_NUMBER7: + return "7"; + case CEC_USER_CONTROL_CODE_NUMBER8: + return "8"; + case CEC_USER_CONTROL_CODE_NUMBER9: + return "9"; + case CEC_USER_CONTROL_CODE_DOT: + return "."; + case CEC_USER_CONTROL_CODE_ENTER: + return "enter"; + case CEC_USER_CONTROL_CODE_CLEAR: + return "clear"; + case CEC_USER_CONTROL_CODE_NEXT_FAVORITE: + return "next favourite"; + case CEC_USER_CONTROL_CODE_CHANNEL_UP: + return "channel up"; + case CEC_USER_CONTROL_CODE_CHANNEL_DOWN: + return "channel down"; + case CEC_USER_CONTROL_CODE_PREVIOUS_CHANNEL: + return "previous channel"; + case CEC_USER_CONTROL_CODE_SOUND_SELECT: + return "sound select"; + case CEC_USER_CONTROL_CODE_INPUT_SELECT: + return "input select"; + case CEC_USER_CONTROL_CODE_DISPLAY_INFORMATION: + return "display information"; + case CEC_USER_CONTROL_CODE_HELP: + return "help"; + case CEC_USER_CONTROL_CODE_PAGE_UP: + return "page up"; + case CEC_USER_CONTROL_CODE_PAGE_DOWN: + return "page down"; + case CEC_USER_CONTROL_CODE_POWER: + return "power"; + case CEC_USER_CONTROL_CODE_VOLUME_UP: + return "volume up"; + case CEC_USER_CONTROL_CODE_VOLUME_DOWN: + return "volume down"; + case CEC_USER_CONTROL_CODE_MUTE: + return "mute"; + case CEC_USER_CONTROL_CODE_PLAY: + return "play"; + case CEC_USER_CONTROL_CODE_STOP: + return "stop"; + case CEC_USER_CONTROL_CODE_PAUSE: + return "pause"; + case CEC_USER_CONTROL_CODE_RECORD: + return "record"; + case CEC_USER_CONTROL_CODE_REWIND: + return "rewind"; + case CEC_USER_CONTROL_CODE_FAST_FORWARD: + return "Fast forward"; + case CEC_USER_CONTROL_CODE_EJECT: + return "eject"; + case CEC_USER_CONTROL_CODE_FORWARD: + return "forward"; + case CEC_USER_CONTROL_CODE_BACKWARD: + return "backward"; + case CEC_USER_CONTROL_CODE_STOP_RECORD: + return "stop record"; + case CEC_USER_CONTROL_CODE_PAUSE_RECORD: + return "pause record"; + case CEC_USER_CONTROL_CODE_ANGLE: + return "angle"; + case CEC_USER_CONTROL_CODE_SUB_PICTURE: + return "sub picture"; + case CEC_USER_CONTROL_CODE_VIDEO_ON_DEMAND: + return "video on demand"; + case CEC_USER_CONTROL_CODE_ELECTRONIC_PROGRAM_GUIDE: + return "electronic program guide"; + case CEC_USER_CONTROL_CODE_TIMER_PROGRAMMING: + return "timer programming"; + case CEC_USER_CONTROL_CODE_INITIAL_CONFIGURATION: + return "initial configuration"; + case CEC_USER_CONTROL_CODE_SELECT_BROADCAST_TYPE: + return "select broadcast type"; + case CEC_USER_CONTROL_CODE_SELECT_SOUND_PRESENTATION: + return "select sound presentation"; + case CEC_USER_CONTROL_CODE_PLAY_FUNCTION: + return "play (function)"; + case CEC_USER_CONTROL_CODE_PAUSE_PLAY_FUNCTION: + return "pause play (function)"; + case CEC_USER_CONTROL_CODE_RECORD_FUNCTION: + return "record (function)"; + case CEC_USER_CONTROL_CODE_PAUSE_RECORD_FUNCTION: + return "pause record (function)"; + case CEC_USER_CONTROL_CODE_STOP_FUNCTION: + return "stop (function)"; + case CEC_USER_CONTROL_CODE_MUTE_FUNCTION: + return "mute (function)"; + case CEC_USER_CONTROL_CODE_RESTORE_VOLUME_FUNCTION: + return "restore volume"; + case CEC_USER_CONTROL_CODE_TUNE_FUNCTION: + return "tune"; + case CEC_USER_CONTROL_CODE_SELECT_MEDIA_FUNCTION: + return "select media"; + case CEC_USER_CONTROL_CODE_SELECT_AV_INPUT_FUNCTION: + return "select AV input"; + case CEC_USER_CONTROL_CODE_SELECT_AUDIO_INPUT_FUNCTION: + return "select audio input"; + case CEC_USER_CONTROL_CODE_POWER_TOGGLE_FUNCTION: + return "power toggle"; + case CEC_USER_CONTROL_CODE_POWER_OFF_FUNCTION: + return "power off"; + case CEC_USER_CONTROL_CODE_POWER_ON_FUNCTION: + return "power on"; + case CEC_USER_CONTROL_CODE_F1_BLUE: + return "F1 (blue)"; + case CEC_USER_CONTROL_CODE_F2_RED: + return "F2 (red)"; + case CEC_USER_CONTROL_CODE_F3_GREEN: + return "F3 (green)"; + case CEC_USER_CONTROL_CODE_F4_YELLOW: + return "F4 (yellow)"; + case CEC_USER_CONTROL_CODE_F5: + return "F5"; + case CEC_USER_CONTROL_CODE_DATA: + return "data"; + case CEC_USER_CONTROL_CODE_AN_RETURN: + return "return (Samsung)"; + case CEC_USER_CONTROL_CODE_AN_CHANNELS_LIST: + return "channels list (Samsung)"; + default: + return "unknown"; + } +} From e1496d6890ed3f86a9e485eca73f0a9426e60432 Mon Sep 17 00:00:00 2001 From: TangoCash Date: Sun, 7 Oct 2018 23:00:29 +0200 Subject: [PATCH 20/52] libarmbox: hdmi_cec better readability Origin commit data ------------------ Branch: master Commit: https://github.com/neutrino-images/ni-libstb-hal/commit/8657b2d04cfa7788e88dcea5a08c5d5e3e79b722 Author: TangoCash Date: 2018-10-07 (Sun, 07 Oct 2018) ------------------ No further description and justification available within origin commit message! ------------------ This commit was generated by Migit --- libarmbox/hdmi_cec.cpp | 144 +++++++++++++++++++++-------------------- libarmbox/hdmi_cec.h | 20 ++++++ 2 files changed, 93 insertions(+), 71 deletions(-) diff --git a/libarmbox/hdmi_cec.cpp b/libarmbox/hdmi_cec.cpp index a45597d..195887e 100644 --- a/libarmbox/hdmi_cec.cpp +++ b/libarmbox/hdmi_cec.cpp @@ -31,6 +31,8 @@ #include #include +#include + #include "linux-uapi-cec.h" #include "hdmi_cec.h" #include "hdmi_cec_types.h" @@ -309,113 +311,113 @@ long hdmi_cec::translateKey(unsigned char code) long key = 0; switch (code) { - case 0x32: - key = 0x8b; + case CEC_USER_CONTROL_CODE_PREVIOUS_CHANNEL: + key = KEY_MENU; break; - case 0x20: - key = 0x0b; + case CEC_USER_CONTROL_CODE_NUMBER0: + key = KEY_0; break; - case 0x21: - key = 0x02; + case CEC_USER_CONTROL_CODE_NUMBER1: + key = KEY_1; break; - case 0x22: - key = 0x03; + case CEC_USER_CONTROL_CODE_NUMBER2: + key = KEY_2; break; - case 0x23: - key = 0x04; + case CEC_USER_CONTROL_CODE_NUMBER3: + key = KEY_3; break; - case 0x24: - key = 0x05; + case CEC_USER_CONTROL_CODE_NUMBER4: + key = KEY_4; break; - case 0x25: - key = 0x06; + case CEC_USER_CONTROL_CODE_NUMBER5: + key = KEY_5; break; - case 0x26: - key = 0x07; + case CEC_USER_CONTROL_CODE_NUMBER6: + key = KEY_6; break; - case 0x27: - key = 0x08; + case CEC_USER_CONTROL_CODE_NUMBER7: + key = KEY_7; break; - case 0x28: - key = 0x09; + case CEC_USER_CONTROL_CODE_NUMBER8: + key = KEY_8; break; - case 0x29: - key = 0x0a; + case CEC_USER_CONTROL_CODE_NUMBER9: + key = KEY_9; break; - case 0x30: - key = 0x192; + case CEC_USER_CONTROL_CODE_CHANNEL_UP: + key = KEY_CHANNELUP; break; - case 0x31: - key = 0x193; + case CEC_USER_CONTROL_CODE_CHANNEL_DOWN: + key = KEY_CHANNELDOWN; break; - case 0x44: - key = 0xcf; + case CEC_USER_CONTROL_CODE_PLAY: + key = KEY_PLAY; break; - case 0x45: - key = 0x80; + case CEC_USER_CONTROL_CODE_STOP: + key = KEY_STOP; break; - case 0x46: - key = 0x77; + case CEC_USER_CONTROL_CODE_PAUSE: + key = KEY_PAUSE; break; - case 0x47: - key = 0xa7; + case CEC_USER_CONTROL_CODE_RECORD: + key = KEY_RECORD; break; - case 0x48: - key = 0xa8; + case CEC_USER_CONTROL_CODE_REWIND: + key = KEY_REWIND; break; - case 0x49: - key = 0xd0; + case CEC_USER_CONTROL_CODE_FAST_FORWARD: + key = KEY_FASTFORWARD; break; - case 0x53: - key = 0x166; + case CEC_USER_CONTROL_CODE_ELECTRONIC_PROGRAM_GUIDE: + key = KEY_INFO; break; - case 0x54: - key = 0x16a; + case CEC_USER_CONTROL_CODE_TIMER_PROGRAMMING: + key = KEY_PROGRAM; break; - case 0x60: - key = 0xcf; + case CEC_USER_CONTROL_CODE_PLAY_FUNCTION: + key = KEY_PLAY; break; - case 0x61: - key = 0xa4; + case CEC_USER_CONTROL_CODE_PAUSE_PLAY_FUNCTION: + key = KEY_PLAYPAUSE; break; - case 0x62: - key = 0xa7; + case CEC_USER_CONTROL_CODE_RECORD_FUNCTION: + key = KEY_RECORD; break; - case 0x64: - key = 0x80; + case CEC_USER_CONTROL_CODE_STOP_FUNCTION: + key = KEY_STOP; break; - case 0x00: - key = 0x160; + case CEC_USER_CONTROL_CODE_SELECT: + key = KEY_OK; break; - case 0x03: - key = 0x69; + case CEC_USER_CONTROL_CODE_LEFT: + key = KEY_LEFT; break; - case 0x04: - key = 0x6a; + case CEC_USER_CONTROL_CODE_RIGHT: + key = KEY_RIGHT; break; - case 0x01: - key = 0x67; + case CEC_USER_CONTROL_CODE_UP: + key = KEY_UP; break; - case 0x02: - key = 0x6c; + case CEC_USER_CONTROL_CODE_DOWN: + key = KEY_DOWN; break; - case 0x0d: - key = 0xae; + case CEC_USER_CONTROL_CODE_EXIT: + key = KEY_EXIT; break; - case 0x72: - key = 0x18e; + case CEC_USER_CONTROL_CODE_F2_RED: + key = KEY_RED; break; - case 0x71: - key = 0x191; + case CEC_USER_CONTROL_CODE_F3_GREEN: + key = KEY_GREEN; break; - case 0x73: - key = 0x18f; + case CEC_USER_CONTROL_CODE_F4_YELLOW: + key = KEY_YELLOW; break; - case 0x74: - key = 0x190; + case CEC_USER_CONTROL_CODE_F1_BLUE: + key = KEY_BLUE; break; default: - key = 0x8b; + key = KEY_MENU; break; } return key; diff --git a/libarmbox/hdmi_cec.h b/libarmbox/hdmi_cec.h index 0dc97cb..9654e73 100644 --- a/libarmbox/hdmi_cec.h +++ b/libarmbox/hdmi_cec.h @@ -22,6 +22,26 @@ #include "video_lib.h" +#ifndef KEY_OK +#define KEY_OK 0x160 +#endif + +#ifndef KEY_RED +#define KEY_RED 0x18e +#endif + +#ifndef KEY_GREEN +#define KEY_GREEN 0x18f +#endif + +#ifndef KEY_YELLOW +#define KEY_YELLOW 0x190 +#endif + +#ifndef KEY_BLUE +#define KEY_BLUE 0x191 +#endif + struct cec_message { unsigned char address; From afc5a046c3f8daf67a06eb8ef21cb88e03459921 Mon Sep 17 00:00:00 2001 From: TangoCash Date: Mon, 8 Oct 2018 16:23:15 +0200 Subject: [PATCH 21/52] libarmbox: hdmi_cec fixx segfault on DDT, align log Origin commit data ------------------ Branch: master Commit: https://github.com/neutrino-images/ni-libstb-hal/commit/cfcc23955dd1ebd19ec35dff75a100f97b229c67 Author: TangoCash Date: 2018-10-08 (Mon, 08 Oct 2018) ------------------ No further description and justification available within origin commit message! ------------------ This commit was generated by Migit --- libarmbox/hdmi_cec.cpp | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/libarmbox/hdmi_cec.cpp b/libarmbox/hdmi_cec.cpp index 195887e..ef279f3 100644 --- a/libarmbox/hdmi_cec.cpp +++ b/libarmbox/hdmi_cec.cpp @@ -62,6 +62,9 @@ hdmi_cec * hdmi_cec::hdmi_cec_instance = NULL; +//hack to get an instance before first call +hdmi_cec * CEC = hdmi_cec::getInstance(); + hdmi_cec::hdmi_cec() { standby_cec_activ = autoview_cec_activ = false; @@ -80,7 +83,10 @@ hdmi_cec::~hdmi_cec() hdmi_cec* hdmi_cec::getInstance() { if (hdmi_cec_instance == NULL) + { hdmi_cec_instance = new hdmi_cec(); + lt_debug("[CEC] new instance created \n"); + } return hdmi_cec_instance; } @@ -93,13 +99,13 @@ bool hdmi_cec::SetCECMode(VIDEO_HDMI_CEC_MODE _deviceType) if (_deviceType == VIDEO_HDMI_CEC_MODE_OFF) { Stop(); - lt_debug("CEC OFF %s\n", __func__); + lt_debug("[CEC] switch off %s\n", __func__); return false; } else deviceType = _deviceType; - lt_debug("CEC ON %s\n", __func__); + lt_debug("[CEC] switch on %s\n", __func__); if (hdmiFd == -1) { @@ -112,14 +118,14 @@ bool hdmi_cec::SetCECMode(VIDEO_HDMI_CEC_MODE _deviceType) struct cec_caps caps = {}; if (ioctl(hdmiFd, CEC_ADAP_G_CAPS, &caps) < 0) - lt_info("%s: CEC get caps failed (%m)\n", __func__); + lt_info("[CEC] %s: get caps failed (%m)\n", __func__); if (caps.capabilities & CEC_CAP_LOG_ADDRS) { struct cec_log_addrs laddrs = {}; if (ioctl(hdmiFd, CEC_ADAP_S_LOG_ADDRS, &laddrs) < 0) - lt_info("%s: CEC reset log addr failed (%m)\n", __func__); + lt_info("[CEC] %s: reset log addr failed (%m)\n", __func__); memset(&laddrs, 0, sizeof(laddrs)); @@ -169,11 +175,11 @@ bool hdmi_cec::SetCECMode(VIDEO_HDMI_CEC_MODE _deviceType) laddrs.num_log_addrs++; if (ioctl(hdmiFd, CEC_ADAP_S_LOG_ADDRS, &laddrs) < 0) - lt_info("%s: CEC set log addr failed (%m)\n", __func__); + lt_info("[CEC] %s: et log addr failed (%m)\n", __func__); } if (ioctl(hdmiFd, CEC_S_MODE, &monitor) < 0) - lt_info("%s: CEC monitor failed (%m)\n", __func__); + lt_info("[CEC] %s: monitor failed (%m)\n", __func__); GetCECAddressInfo(); @@ -230,7 +236,7 @@ void hdmi_cec::GetCECAddressInfo() logicalAddress = addressinfo.logical; if (memcmp(physicalAddress, addressinfo.physical, sizeof(physicalAddress))) { - lt_info("%s: detected physical address change: %02X%02X --> %02X%02X\n", __func__, physicalAddress[0], physicalAddress[1], addressinfo.physical[0], addressinfo.physical[1]); + lt_info("[CEC] %s: detected physical address change: %02X%02X --> %02X%02X\n", __func__, physicalAddress[0], physicalAddress[1], addressinfo.physical[0], addressinfo.physical[1]); memcpy(physicalAddress, addressinfo.physical, sizeof(physicalAddress)); ReportPhysicalAddress(); } From 1e4089ddfee7a975faa063f9f3dbd21dd60dcf3d Mon Sep 17 00:00:00 2001 From: TangoCash Date: Mon, 8 Oct 2018 16:27:52 +0200 Subject: [PATCH 22/52] libarmbox: hdmi_cec typo Origin commit data ------------------ Branch: master Commit: https://github.com/neutrino-images/ni-libstb-hal/commit/22aeddf8646c47853532b777a22a6489aead2377 Author: TangoCash Date: 2018-10-08 (Mon, 08 Oct 2018) ------------------ No further description and justification available within origin commit message! ------------------ This commit was generated by Migit --- libarmbox/hdmi_cec.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libarmbox/hdmi_cec.cpp b/libarmbox/hdmi_cec.cpp index ef279f3..cc4db35 100644 --- a/libarmbox/hdmi_cec.cpp +++ b/libarmbox/hdmi_cec.cpp @@ -85,7 +85,7 @@ hdmi_cec* hdmi_cec::getInstance() if (hdmi_cec_instance == NULL) { hdmi_cec_instance = new hdmi_cec(); - lt_debug("[CEC] new instance created \n"); + lt_debug_c("[CEC] new instance created \n"); } return hdmi_cec_instance; } From 54cde341e6590c9951bcfeabac9819fb0a3615a3 Mon Sep 17 00:00:00 2001 From: TangoCash Date: Tue, 9 Oct 2018 22:11:01 +0200 Subject: [PATCH 23/52] libarmbox: hmdi_cec emit received keys, report power status Origin commit data ------------------ Branch: master Commit: https://github.com/neutrino-images/ni-libstb-hal/commit/4bf182cb85e54698fec27e876994386dbe2a9f9a Author: TangoCash Date: 2018-10-09 (Tue, 09 Oct 2018) ------------------ No further description and justification available within origin commit message! ------------------ This commit was generated by Migit --- libarmbox/hdmi_cec.cpp | 115 +++++++++++++++++++++++++++++++------ libarmbox/hdmi_cec.h | 36 +++++------- libarmbox/hdmi_cec_types.h | 68 ++++++++++++++++++++++ 3 files changed, 180 insertions(+), 39 deletions(-) diff --git a/libarmbox/hdmi_cec.cpp b/libarmbox/hdmi_cec.cpp index cc4db35..a30e115 100644 --- a/libarmbox/hdmi_cec.cpp +++ b/libarmbox/hdmi_cec.cpp @@ -59,6 +59,7 @@ }) #define CEC_DEVICE "/dev/cec0" +#define RC_DEVICE "/dev/input/event1" hdmi_cec * hdmi_cec::hdmi_cec_instance = NULL; @@ -67,7 +68,7 @@ hdmi_cec * CEC = hdmi_cec::getInstance(); hdmi_cec::hdmi_cec() { - standby_cec_activ = autoview_cec_activ = false; + standby_cec_activ = autoview_cec_activ = standby = false; hdmiFd = -1; } @@ -246,7 +247,8 @@ void hdmi_cec::GetCECAddressInfo() void hdmi_cec::ReportPhysicalAddress() { struct cec_message txmessage; - txmessage.address = 0x0f; /* broadcast */ + txmessage.initiator = logicalAddress; + txmessage.destination = CEC_LOG_ADDR_BROADCAST; txmessage.data[0] = CEC_MSG_REPORT_PHYSICAL_ADDR; txmessage.data[1] = physicalAddress[0]; txmessage.data[2] = physicalAddress[1]; @@ -264,9 +266,9 @@ void hdmi_cec::SendCECMessage(struct cec_message &txmessage) { sprintf(str+(i*6),"[0x%02X]", txmessage.data[i]); } - lt_info("[CEC] send message '%s' (%s)\n", ToString((cec_opcode)txmessage.data[0]), str); + lt_info("[CEC] send message 0x%02X >> 0x%02X '%s' (%s)\n", txmessage.initiator, txmessage.destination, ToString((cec_opcode)txmessage.data[0]), str); struct cec_msg msg; - cec_msg_init(&msg, logicalAddress, txmessage.address); + cec_msg_init(&msg, txmessage.initiator, txmessage.destination); memcpy(&msg.msg[1], txmessage.data, txmessage.length); msg.len = txmessage.length + 1; ioctl(hdmiFd, CEC_TRANSMIT, &msg); @@ -287,9 +289,12 @@ void hdmi_cec::SetCECState(bool state) { struct cec_message message; + standby = state; + if ((standby_cec_activ) && state) { - message.address = CEC_OP_PRIM_DEVTYPE_TV; + message.initiator = logicalAddress; + message.destination = CEC_OP_PRIM_DEVTYPE_TV; message.data[0] = CEC_MSG_STANDBY; message.length = 1; SendCECMessage(message); @@ -297,12 +302,22 @@ void hdmi_cec::SetCECState(bool state) if ((autoview_cec_activ) && !state) { - message.address = CEC_OP_PRIM_DEVTYPE_TV; + message.initiator = logicalAddress; + message.destination = CEC_OP_PRIM_DEVTYPE_AUDIOSYSTEM; + message.data[0] = CEC_MSG_GIVE_SYSTEM_AUDIO_MODE_STATUS; + message.length = 1; + SendCECMessage(message); + usleep(10000); + + message.initiator = logicalAddress; + message.destination = CEC_OP_PRIM_DEVTYPE_TV; message.data[0] = CEC_MSG_IMAGE_VIEW_ON; message.length = 1; SendCECMessage(message); usleep(10000); - message.address = 0x0f; /* broadcast */ + + message.initiator = logicalAddress; + message.destination = CEC_LOG_ADDR_BROADCAST; message.data[0] = CEC_MSG_ACTIVE_SOURCE; message.data[1] = physicalAddress[0]; message.data[2] = physicalAddress[1]; @@ -469,11 +484,15 @@ void hdmi_cec::Receive() { bool hasdata = false; struct cec_message rxmessage; + struct cec_message txmessage; struct cec_msg msg; if (::ioctl(hdmiFd, CEC_RECEIVE, &msg) >= 0) { rxmessage.length = msg.len - 1; + rxmessage.initiator = cec_msg_initiator(&msg); + rxmessage.destination = cec_msg_destination(&msg); + rxmessage.opcode = cec_msg_opcode(&msg); memcpy(&rxmessage.data, &msg.msg[1], rxmessage.length); hasdata = true; } @@ -488,29 +507,91 @@ void hdmi_cec::Receive() { sprintf(str+(i*6),"[0x%02X]", rxmessage.data[i]); } - lt_info("[CEC] received message '%s' (%s)\n", ToString((cec_opcode)rxmessage.data[0]), str); + lt_info("[CEC] received message 0x%02X << 0x%02X '%s' (%s)\n", rxmessage.destination, rxmessage.initiator, ToString((cec_opcode)rxmessage.opcode), str); - switch (rxmessage.data[0]) + switch (rxmessage.opcode) { - case CEC_MSG_DEVICE_VENDOR_ID: + case CEC_OPCODE_DEVICE_VENDOR_ID: + case CEC_OPCODE_VENDOR_COMMAND_WITH_ID: { uint64_t iVendorId = ((uint64_t)rxmessage.data[1] << 16) + - ((uint64_t)rxmessage.data[2] << 8) + - (uint64_t)rxmessage.data[3]; - lt_info("[CEC] decoded message '%s' (%s)\n", ToString((cec_opcode)rxmessage.data[0]), ToString((cec_vendor_id)iVendorId)); + ((uint64_t)rxmessage.data[2] << 8) + + (uint64_t)rxmessage.data[3]; + lt_info("[CEC] decoded message '%s' (%s)\n", ToString((cec_opcode)rxmessage.opcode), ToString((cec_vendor_id)iVendorId)); break; } - case CEC_MSG_USER_CONTROL_PRESSED: /* key pressed */ + case CEC_OPCODE_GIVE_DEVICE_POWER_STATUS: + { + txmessage.destination = rxmessage.initiator; + txmessage.initiator = rxmessage.destination; + txmessage.data[0] = GetResponseOpcode((cec_opcode)rxmessage.opcode); + txmessage.data[1] = standby ? CEC_POWER_STATUS_STANDBY : CEC_POWER_STATUS_ON; + txmessage.length = 2; + SendCECMessage(txmessage); + break; + } + case CEC_OPCODE_USER_CONTROL_PRESSED: /* key pressed */ keypressed = true; pressedkey = rxmessage.data[1]; - case CEC_MSG_USER_CONTROL_RELEASED: /* key released */ + case CEC_OPCODE_USER_CONTROL_RELEASE: /* key released */ { long code = translateKey(pressedkey); - if (keypressed) - code |= 0x80000000; lt_info("[CEC] decoded key %s (%ld)\n",ToString((cec_user_control_code)pressedkey), code); + handleCode(code,keypressed); break; } } } } + +void hdmi_cec::handleCode(long code, bool keypressed) +{ + int evd = open(RC_DEVICE, O_RDWR); + if (evd < 0) + { + perror("opening " RC_DEVICE " failed"); + return; + } + if (keypressed) + { + if (rc_send(evd, code, KEY_PRESSED) < 0) + { + perror("writing 'KEY_PRESSED' event failed"); + close(evd); + return; + } + rc_sync(evd); + } + else + { + if (rc_send(evd, code, KEY_RELEASED) < 0) + { + perror("writing 'KEY_RELEASED' event failed"); + close(evd); + return; + } + rc_sync(evd); + } + close(evd); +} + +int hdmi_cec::rc_send(int fd, unsigned int code, unsigned int value) +{ + struct input_event ev; + + ev.type = EV_KEY; + ev.code = code; + ev.value = value; + return write(fd, &ev, sizeof(ev)); +} + +void hdmi_cec::rc_sync(int fd) +{ + struct input_event ev; + + gettimeofday(&ev.time, NULL); + ev.type = EV_SYN; + ev.code = SYN_REPORT; + ev.value = 0; + write(fd, &ev, sizeof(ev)); +} diff --git a/libarmbox/hdmi_cec.h b/libarmbox/hdmi_cec.h index 9654e73..65604d7 100644 --- a/libarmbox/hdmi_cec.h +++ b/libarmbox/hdmi_cec.h @@ -22,31 +22,13 @@ #include "video_lib.h" -#ifndef KEY_OK -#define KEY_OK 0x160 -#endif - -#ifndef KEY_RED -#define KEY_RED 0x18e -#endif - -#ifndef KEY_GREEN -#define KEY_GREEN 0x18f -#endif - -#ifndef KEY_YELLOW -#define KEY_YELLOW 0x190 -#endif - -#ifndef KEY_BLUE -#define KEY_BLUE 0x191 -#endif - struct cec_message { - unsigned char address; - unsigned char length; + unsigned char initiator; + unsigned char destination; + unsigned char opcode; unsigned char data[256]; + unsigned char length; } __attribute__((packed)); struct addressinfo @@ -56,6 +38,12 @@ struct addressinfo unsigned char type; }; +enum { + KEY_RELEASED = 0, + KEY_PRESSED, + KEY_AUTOREPEAT +}; + class hdmi_cec : public OpenThreads::Thread { private: @@ -70,6 +58,10 @@ private: unsigned char deviceType, logicalAddress; int hdmiFd; long translateKey(unsigned char code); + void handleCode(long code, bool keypressed); + int rc_send(int fd, unsigned int code, unsigned int value); + void rc_sync(int fd); + bool standby; protected: bool running; public: diff --git a/libarmbox/hdmi_cec_types.h b/libarmbox/hdmi_cec_types.h index f5808af..beb3e4f 100644 --- a/libarmbox/hdmi_cec_types.h +++ b/libarmbox/hdmi_cec_types.h @@ -207,6 +207,37 @@ typedef enum cec_opcode CEC_OPCODE_NONE = 0xFD } cec_opcode; +typedef enum cec_logical_address +{ + CECDEVICE_UNKNOWN = -1, //not a valid logical address + CECDEVICE_TV = 0, + CECDEVICE_RECORDINGDEVICE1 = 1, + CECDEVICE_RECORDINGDEVICE2 = 2, + CECDEVICE_TUNER1 = 3, + CECDEVICE_PLAYBACKDEVICE1 = 4, + CECDEVICE_AUDIOSYSTEM = 5, + CECDEVICE_TUNER2 = 6, + CECDEVICE_TUNER3 = 7, + CECDEVICE_PLAYBACKDEVICE2 = 8, + CECDEVICE_RECORDINGDEVICE3 = 9, + CECDEVICE_TUNER4 = 10, + CECDEVICE_PLAYBACKDEVICE3 = 11, + CECDEVICE_RESERVED1 = 12, + CECDEVICE_RESERVED2 = 13, + CECDEVICE_FREEUSE = 14, + CECDEVICE_UNREGISTERED = 15, + CECDEVICE_BROADCAST = 15 +} cec_logical_address; + +typedef enum cec_power_status +{ + CEC_POWER_STATUS_ON = 0x00, + CEC_POWER_STATUS_STANDBY = 0x01, + CEC_POWER_STATUS_IN_TRANSITION_STANDBY_TO_ON = 0x02, + CEC_POWER_STATUS_IN_TRANSITION_ON_TO_STANDBY = 0x03, + CEC_POWER_STATUS_UNKNOWN = 0x99 +} cec_power_status; + static const char *ToString(const cec_opcode opcode) { switch (opcode) @@ -598,3 +629,40 @@ static const char *ToString(const cec_user_control_code key) return "unknown"; } } + +static cec_opcode GetResponseOpcode(cec_opcode opcode) +{ + switch (opcode) + { + case CEC_OPCODE_REQUEST_ACTIVE_SOURCE: + return CEC_OPCODE_ACTIVE_SOURCE; + case CEC_OPCODE_GET_CEC_VERSION: + return CEC_OPCODE_CEC_VERSION; + case CEC_OPCODE_GIVE_PHYSICAL_ADDRESS: + return CEC_OPCODE_REPORT_PHYSICAL_ADDRESS; + case CEC_OPCODE_GET_MENU_LANGUAGE: + return CEC_OPCODE_SET_MENU_LANGUAGE; + case CEC_OPCODE_GIVE_DECK_STATUS: + return CEC_OPCODE_DECK_STATUS; + case CEC_OPCODE_GIVE_TUNER_DEVICE_STATUS: + return CEC_OPCODE_TUNER_DEVICE_STATUS; + case CEC_OPCODE_GIVE_DEVICE_VENDOR_ID: + return CEC_OPCODE_DEVICE_VENDOR_ID; + case CEC_OPCODE_GIVE_OSD_NAME: + return CEC_OPCODE_SET_OSD_NAME; + case CEC_OPCODE_MENU_REQUEST: + return CEC_OPCODE_MENU_STATUS; + case CEC_OPCODE_GIVE_DEVICE_POWER_STATUS: + return CEC_OPCODE_REPORT_POWER_STATUS; + case CEC_OPCODE_GIVE_AUDIO_STATUS: + return CEC_OPCODE_REPORT_AUDIO_STATUS; + case CEC_OPCODE_GIVE_SYSTEM_AUDIO_MODE_STATUS: + return CEC_OPCODE_SYSTEM_AUDIO_MODE_STATUS; + case CEC_OPCODE_SYSTEM_AUDIO_MODE_REQUEST: + return CEC_OPCODE_SET_SYSTEM_AUDIO_MODE; + default: + break; + } + + return CEC_OPCODE_NONE; +} From 514d31cbd3e2db676cdf66f719cbd6292d137d81 Mon Sep 17 00:00:00 2001 From: TangoCash Date: Tue, 9 Oct 2018 23:10:21 +0200 Subject: [PATCH 24/52] libarmbox: hdmi_cec fix device Origin commit data ------------------ Branch: master Commit: https://github.com/neutrino-images/ni-libstb-hal/commit/851163927ed7d8f959f3a4052f2f9a62736cd45e Author: TangoCash Date: 2018-10-09 (Tue, 09 Oct 2018) ------------------ No further description and justification available within origin commit message! ------------------ This commit was generated by Migit --- libarmbox/hdmi_cec.cpp | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/libarmbox/hdmi_cec.cpp b/libarmbox/hdmi_cec.cpp index a30e115..5d45bc9 100644 --- a/libarmbox/hdmi_cec.cpp +++ b/libarmbox/hdmi_cec.cpp @@ -20,6 +20,7 @@ #include #include #include +#include #include #include #include @@ -110,7 +111,7 @@ bool hdmi_cec::SetCECMode(VIDEO_HDMI_CEC_MODE _deviceType) if (hdmiFd == -1) { - hdmiFd = open(CEC_DEVICE, O_RDWR | O_NONBLOCK); + hdmiFd = open(CEC_DEVICE, O_RDWR | O_CLOEXEC); } if (hdmiFd >= 0) @@ -462,6 +463,8 @@ bool hdmi_cec::Stop() return false; running = false; + + OpenThreads::Thread::cancel(); if (hdmiFd >= 0) { @@ -474,9 +477,16 @@ bool hdmi_cec::Stop() void hdmi_cec::run() { - while (running && (hdmiFd >= 0)) + OpenThreads::Thread::setCancelModeAsynchronous(); + struct pollfd pfd; + + pfd.fd = hdmiFd; + pfd.events = (POLLIN | POLLPRI); + + while (running) { - Receive(); + if (poll(&pfd, 1, 0) > 0) + Receive(); } } From afff0fadf416408442244a5855036f24aabacd0e Mon Sep 17 00:00:00 2001 From: TangoCash Date: Wed, 10 Oct 2018 23:45:51 +0200 Subject: [PATCH 25/52] libarmbox: hdmi_cec switch debug log to INIT (not used by armbox elsewhere), to debug hdmi_cec separatly from video Origin commit data ------------------ Branch: master Commit: https://github.com/neutrino-images/ni-libstb-hal/commit/14c8559d6632c49fbea80e264a6a57de0dcd33ad Author: TangoCash Date: 2018-10-10 (Wed, 10 Oct 2018) ------------------ No further description and justification available within origin commit message! ------------------ This commit was generated by Migit --- libarmbox/hdmi_cec.cpp | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/libarmbox/hdmi_cec.cpp b/libarmbox/hdmi_cec.cpp index 5d45bc9..0eed4ab 100644 --- a/libarmbox/hdmi_cec.cpp +++ b/libarmbox/hdmi_cec.cpp @@ -42,10 +42,10 @@ #define RED "\x1B[31m" #define NORMAL "\x1B[0m" -#define lt_debug(args...) _lt_debug(TRIPLE_DEBUG_VIDEO, this, args) -#define lt_info(args...) _lt_info(TRIPLE_DEBUG_VIDEO, this, args) -#define lt_debug_c(args...) _lt_debug(TRIPLE_DEBUG_VIDEO, NULL, args) -#define lt_info_c(args...) _lt_info(TRIPLE_DEBUG_VIDEO, NULL, args) +#define lt_debug(args...) _lt_debug(TRIPLE_DEBUG_INIT, this, args) +#define lt_info(args...) _lt_info(TRIPLE_DEBUG_INIT, this, args) +#define lt_debug_c(args...) _lt_debug(TRIPLE_DEBUG_INIT, NULL, args) +#define lt_info_c(args...) _lt_info(TRIPLE_DEBUG_INIT, NULL, args) #define fop(cmd, args...) ({ \ int _r; \ @@ -120,14 +120,14 @@ bool hdmi_cec::SetCECMode(VIDEO_HDMI_CEC_MODE _deviceType) struct cec_caps caps = {}; if (ioctl(hdmiFd, CEC_ADAP_G_CAPS, &caps) < 0) - lt_info("[CEC] %s: get caps failed (%m)\n", __func__); + lt_debug("[CEC] %s: get caps failed (%m)\n", __func__); if (caps.capabilities & CEC_CAP_LOG_ADDRS) { struct cec_log_addrs laddrs = {}; if (ioctl(hdmiFd, CEC_ADAP_S_LOG_ADDRS, &laddrs) < 0) - lt_info("[CEC] %s: reset log addr failed (%m)\n", __func__); + lt_debug("[CEC] %s: reset log addr failed (%m)\n", __func__); memset(&laddrs, 0, sizeof(laddrs)); @@ -177,11 +177,11 @@ bool hdmi_cec::SetCECMode(VIDEO_HDMI_CEC_MODE _deviceType) laddrs.num_log_addrs++; if (ioctl(hdmiFd, CEC_ADAP_S_LOG_ADDRS, &laddrs) < 0) - lt_info("[CEC] %s: et log addr failed (%m)\n", __func__); + lt_debug("[CEC] %s: et log addr failed (%m)\n", __func__); } if (ioctl(hdmiFd, CEC_S_MODE, &monitor) < 0) - lt_info("[CEC] %s: monitor failed (%m)\n", __func__); + lt_debug("[CEC] %s: monitor failed (%m)\n", __func__); GetCECAddressInfo(); @@ -527,7 +527,7 @@ void hdmi_cec::Receive() uint64_t iVendorId = ((uint64_t)rxmessage.data[1] << 16) + ((uint64_t)rxmessage.data[2] << 8) + (uint64_t)rxmessage.data[3]; - lt_info("[CEC] decoded message '%s' (%s)\n", ToString((cec_opcode)rxmessage.opcode), ToString((cec_vendor_id)iVendorId)); + lt_debug("[CEC] decoded message '%s' (%s)\n", ToString((cec_opcode)rxmessage.opcode), ToString((cec_vendor_id)iVendorId)); break; } case CEC_OPCODE_GIVE_DEVICE_POWER_STATUS: @@ -546,7 +546,7 @@ void hdmi_cec::Receive() case CEC_OPCODE_USER_CONTROL_RELEASE: /* key released */ { long code = translateKey(pressedkey); - lt_info("[CEC] decoded key %s (%ld)\n",ToString((cec_user_control_code)pressedkey), code); + lt_debug("[CEC] decoded key %s (%ld)\n",ToString((cec_user_control_code)pressedkey), code); handleCode(code,keypressed); break; } @@ -559,14 +559,14 @@ void hdmi_cec::handleCode(long code, bool keypressed) int evd = open(RC_DEVICE, O_RDWR); if (evd < 0) { - perror("opening " RC_DEVICE " failed"); + lt_debug("[CEC] opening " RC_DEVICE " failed"); return; } if (keypressed) { if (rc_send(evd, code, KEY_PRESSED) < 0) { - perror("writing 'KEY_PRESSED' event failed"); + lt_debug("[CEC] writing 'KEY_PRESSED' event failed"); close(evd); return; } @@ -576,7 +576,7 @@ void hdmi_cec::handleCode(long code, bool keypressed) { if (rc_send(evd, code, KEY_RELEASED) < 0) { - perror("writing 'KEY_RELEASED' event failed"); + lt_debug("[CEC] writing 'KEY_RELEASED' event failed"); close(evd); return; } From 6a1687d8c246a5917d72d1ac893e4b541a79bb23 Mon Sep 17 00:00:00 2001 From: TangoCash Date: Sun, 14 Oct 2018 10:38:15 +0200 Subject: [PATCH 26/52] libarmbox: hdmi_cec add option to regulate audio systems volume via CEC, better log readability Origin commit data ------------------ Branch: master Commit: https://github.com/neutrino-images/ni-libstb-hal/commit/151e70c173c02c98851319c042eb79ad73f8c85f Author: TangoCash Date: 2018-10-14 (Sun, 14 Oct 2018) ------------------ No further description and justification available within origin commit message! ------------------ This commit was generated by Migit --- include/video_hal.h | 1 + libarmbox/hdmi_cec.cpp | 72 +++++++++++++++++++++++++++++++++++--- libarmbox/hdmi_cec.h | 24 ++++++++++--- libarmbox/hdmi_cec_types.h | 40 +++++++++++++++++++++ 4 files changed, 128 insertions(+), 9 deletions(-) diff --git a/include/video_hal.h b/include/video_hal.h index db01265..0ea7d6c 100644 --- a/include/video_hal.h +++ b/include/video_hal.h @@ -7,6 +7,7 @@ #include "../libspark/video_lib.h" #elif HAVE_ARM_HARDWARE #include "../libarmbox/video_lib.h" +#include "../libarmbox/hdmi_cec.h" #elif HAVE_AZBOX_HARDWARE #include "../azbox/video_lib.h" #elif HAVE_GENERIC_HARDWARE diff --git a/libarmbox/hdmi_cec.cpp b/libarmbox/hdmi_cec.cpp index 0eed4ab..c34c2a5 100644 --- a/libarmbox/hdmi_cec.cpp +++ b/libarmbox/hdmi_cec.cpp @@ -69,8 +69,9 @@ hdmi_cec * CEC = hdmi_cec::getInstance(); hdmi_cec::hdmi_cec() { - standby_cec_activ = autoview_cec_activ = standby = false; + standby_cec_activ = autoview_cec_activ = standby = muted = false; hdmiFd = -1; + volume = 0; } hdmi_cec::~hdmi_cec() @@ -267,7 +268,7 @@ void hdmi_cec::SendCECMessage(struct cec_message &txmessage) { sprintf(str+(i*6),"[0x%02X]", txmessage.data[i]); } - lt_info("[CEC] send message 0x%02X >> 0x%02X '%s' (%s)\n", txmessage.initiator, txmessage.destination, ToString((cec_opcode)txmessage.data[0]), str); + lt_info("[CEC] send message %s to %s (0x%02X>>0x%02X) '%s' (%s)\n",ToString((cec_logical_address)txmessage.initiator), txmessage.destination == 0xf ? "all" : ToString((cec_logical_address)txmessage.destination), txmessage.initiator, txmessage.destination, ToString((cec_opcode)txmessage.data[0]), str); struct cec_msg msg; cec_msg_init(&msg, txmessage.initiator, txmessage.destination); memcpy(&msg.msg[1], txmessage.data, txmessage.length); @@ -324,6 +325,9 @@ void hdmi_cec::SetCECState(bool state) message.data[2] = physicalAddress[1]; message.length = 3; SendCECMessage(message); + usleep(10000); + + request_audio_status(); } } @@ -517,10 +521,20 @@ void hdmi_cec::Receive() { sprintf(str+(i*6),"[0x%02X]", rxmessage.data[i]); } - lt_info("[CEC] received message 0x%02X << 0x%02X '%s' (%s)\n", rxmessage.destination, rxmessage.initiator, ToString((cec_opcode)rxmessage.opcode), str); + lt_info("[CEC] received message %s to %s (0x%02X>>0x%02X) '%s' (%s)\n",ToString((cec_logical_address)rxmessage.initiator), rxmessage.destination == 0xf ? "all" : ToString((cec_logical_address)rxmessage.destination), rxmessage.initiator, rxmessage.destination, ToString((cec_opcode)rxmessage.opcode), str); switch (rxmessage.opcode) { + case CEC_OPCODE_REPORT_AUDIO_STATUS: + { + muted = ((rxmessage.data[1] & 0x80) == 0x80); + volume = rxmessage.data[1] & 0x7F; + if (muted) + lt_debug("[CEC] %s volume muted\n", ToString((cec_logical_address)rxmessage.initiator)); + else + lt_debug("[CEC] %s volume %d \n", ToString((cec_logical_address)rxmessage.initiator), volume); + break; + } case CEC_OPCODE_DEVICE_VENDOR_ID: case CEC_OPCODE_VENDOR_COMMAND_WITH_ID: { @@ -564,7 +578,7 @@ void hdmi_cec::handleCode(long code, bool keypressed) } if (keypressed) { - if (rc_send(evd, code, KEY_PRESSED) < 0) + if (rc_send(evd, code, CEC_KEY_PRESSED) < 0) { lt_debug("[CEC] writing 'KEY_PRESSED' event failed"); close(evd); @@ -574,7 +588,7 @@ void hdmi_cec::handleCode(long code, bool keypressed) } else { - if (rc_send(evd, code, KEY_RELEASED) < 0) + if (rc_send(evd, code, CEC_KEY_RELEASED) < 0) { lt_debug("[CEC] writing 'KEY_RELEASED' event failed"); close(evd); @@ -605,3 +619,51 @@ void hdmi_cec::rc_sync(int fd) ev.value = 0; write(fd, &ev, sizeof(ev)); } + +void hdmi_cec::send_key(unsigned char key, unsigned char destination) +{ + struct cec_message txmessage; + txmessage.destination = destination; + txmessage.initiator = logicalAddress; + txmessage.data[0] = CEC_OPCODE_USER_CONTROL_PRESSED; + txmessage.data[1] = key; + txmessage.length = 2; + SendCECMessage(txmessage); + usleep(10000); + + txmessage.destination = destination; + txmessage.initiator = logicalAddress; + txmessage.data[0] = CEC_OPCODE_USER_CONTROL_RELEASE; + txmessage.data[1] = key; + txmessage.length = 2; + SendCECMessage(txmessage); +} + +void hdmi_cec::request_audio_status() +{ + struct cec_message txmessage; + txmessage.destination = CEC_OP_PRIM_DEVTYPE_AUDIOSYSTEM; + txmessage.initiator = logicalAddress; + txmessage.data[0] = CEC_OPCODE_GIVE_AUDIO_STATUS; + txmessage.length = 1; + SendCECMessage(txmessage); +} + +void hdmi_cec::vol_up() +{ + send_key(CEC_USER_CONTROL_CODE_VOLUME_UP, CEC_OP_PRIM_DEVTYPE_AUDIOSYSTEM); + usleep(50000); + request_audio_status(); +} +void hdmi_cec::vol_down() +{ + send_key(CEC_USER_CONTROL_CODE_VOLUME_DOWN, CEC_OP_PRIM_DEVTYPE_AUDIOSYSTEM); + usleep(50000); + request_audio_status(); +} +void hdmi_cec::toggle_mute() +{ + send_key(CEC_USER_CONTROL_CODE_MUTE, CEC_OP_PRIM_DEVTYPE_AUDIOSYSTEM); + usleep(50000); + request_audio_status(); +} diff --git a/libarmbox/hdmi_cec.h b/libarmbox/hdmi_cec.h index 65604d7..ebd463d 100644 --- a/libarmbox/hdmi_cec.h +++ b/libarmbox/hdmi_cec.h @@ -38,10 +38,11 @@ struct addressinfo unsigned char type; }; -enum { - KEY_RELEASED = 0, - KEY_PRESSED, - KEY_AUTOREPEAT +enum +{ + CEC_KEY_RELEASED = 0, + CEC_KEY_PRESSED, + CEC_KEY_AUTOREPEAT }; class hdmi_cec : public OpenThreads::Thread @@ -62,6 +63,10 @@ private: int rc_send(int fd, unsigned int code, unsigned int value); void rc_sync(int fd); bool standby; + void send_key(unsigned char key, unsigned char destination); + void request_audio_status(); + bool muted; + int volume; protected: bool running; public: @@ -75,4 +80,15 @@ public: void SetCECState(bool state); void ReportPhysicalAddress(); bool standby_cec_activ; + void vol_up(); + void vol_down(); + void toggle_mute(); + int GetVolume() + { + return volume; + }; + bool isMuted() + { + return muted; + }; }; diff --git a/libarmbox/hdmi_cec_types.h b/libarmbox/hdmi_cec_types.h index beb3e4f..7d2453b 100644 --- a/libarmbox/hdmi_cec_types.h +++ b/libarmbox/hdmi_cec_types.h @@ -630,6 +630,46 @@ static const char *ToString(const cec_user_control_code key) } } +static const char *ToString(cec_logical_address la) +{ + switch (la & 0xf) + { + case CECDEVICE_TV: + return "TV"; + case CECDEVICE_RECORDINGDEVICE1: + return "Recording Device 1"; + case CECDEVICE_RECORDINGDEVICE2: + return "Recording Device 2"; + case CECDEVICE_TUNER1: + return "Tuner 1"; + case CECDEVICE_PLAYBACKDEVICE1: + return "Playback Device 1"; + case CECDEVICE_AUDIOSYSTEM: + return "Audio System"; + case CECDEVICE_TUNER2: + return "Tuner 2"; + case CECDEVICE_TUNER3: + return "Tuner 3"; + case CECDEVICE_PLAYBACKDEVICE2: + return "Playback Device 2"; + case CECDEVICE_RECORDINGDEVICE3: + return "Recording Device 3"; + case CECDEVICE_TUNER4: + return "Tuner 4"; + case CECDEVICE_PLAYBACKDEVICE3: + return "Playback Device 3"; + case CECDEVICE_RESERVED1: + return "Reserved 1"; + case CECDEVICE_RESERVED2: + return "Reserved 2"; + case CECDEVICE_FREEUSE: + return "Free use"; + case CECDEVICE_UNREGISTERED: + default: + return "Unregistered"; + } +} + static cec_opcode GetResponseOpcode(cec_opcode opcode) { switch (opcode) From 922072dc6c6a6b06e6419f51192b333c0877d5b8 Mon Sep 17 00:00:00 2001 From: TangoCash Date: Sun, 14 Oct 2018 10:38:15 +0200 Subject: [PATCH 27/52] libarmbox: hdmi_cec add option to regulate audio systems volume via CEC, better log readability Origin commit data ------------------ Branch: master Commit: https://github.com/neutrino-images/ni-libstb-hal/commit/c717ff1df9073627e5c19ddbcb07a72a7576d75f Author: TangoCash Date: 2018-10-14 (Sun, 14 Oct 2018) ------------------ No further description and justification available within origin commit message! ------------------ This commit was generated by Migit --- include/video_hal.h | 1 + libarmbox/hdmi_cec.cpp | 72 +++++++++++++++++++++++++++++++++++--- libarmbox/hdmi_cec.h | 24 ++++++++++--- libarmbox/hdmi_cec_types.h | 40 +++++++++++++++++++++ 4 files changed, 128 insertions(+), 9 deletions(-) diff --git a/include/video_hal.h b/include/video_hal.h index db01265..0ea7d6c 100644 --- a/include/video_hal.h +++ b/include/video_hal.h @@ -7,6 +7,7 @@ #include "../libspark/video_lib.h" #elif HAVE_ARM_HARDWARE #include "../libarmbox/video_lib.h" +#include "../libarmbox/hdmi_cec.h" #elif HAVE_AZBOX_HARDWARE #include "../azbox/video_lib.h" #elif HAVE_GENERIC_HARDWARE diff --git a/libarmbox/hdmi_cec.cpp b/libarmbox/hdmi_cec.cpp index 0eed4ab..c34c2a5 100644 --- a/libarmbox/hdmi_cec.cpp +++ b/libarmbox/hdmi_cec.cpp @@ -69,8 +69,9 @@ hdmi_cec * CEC = hdmi_cec::getInstance(); hdmi_cec::hdmi_cec() { - standby_cec_activ = autoview_cec_activ = standby = false; + standby_cec_activ = autoview_cec_activ = standby = muted = false; hdmiFd = -1; + volume = 0; } hdmi_cec::~hdmi_cec() @@ -267,7 +268,7 @@ void hdmi_cec::SendCECMessage(struct cec_message &txmessage) { sprintf(str+(i*6),"[0x%02X]", txmessage.data[i]); } - lt_info("[CEC] send message 0x%02X >> 0x%02X '%s' (%s)\n", txmessage.initiator, txmessage.destination, ToString((cec_opcode)txmessage.data[0]), str); + lt_info("[CEC] send message %s to %s (0x%02X>>0x%02X) '%s' (%s)\n",ToString((cec_logical_address)txmessage.initiator), txmessage.destination == 0xf ? "all" : ToString((cec_logical_address)txmessage.destination), txmessage.initiator, txmessage.destination, ToString((cec_opcode)txmessage.data[0]), str); struct cec_msg msg; cec_msg_init(&msg, txmessage.initiator, txmessage.destination); memcpy(&msg.msg[1], txmessage.data, txmessage.length); @@ -324,6 +325,9 @@ void hdmi_cec::SetCECState(bool state) message.data[2] = physicalAddress[1]; message.length = 3; SendCECMessage(message); + usleep(10000); + + request_audio_status(); } } @@ -517,10 +521,20 @@ void hdmi_cec::Receive() { sprintf(str+(i*6),"[0x%02X]", rxmessage.data[i]); } - lt_info("[CEC] received message 0x%02X << 0x%02X '%s' (%s)\n", rxmessage.destination, rxmessage.initiator, ToString((cec_opcode)rxmessage.opcode), str); + lt_info("[CEC] received message %s to %s (0x%02X>>0x%02X) '%s' (%s)\n",ToString((cec_logical_address)rxmessage.initiator), rxmessage.destination == 0xf ? "all" : ToString((cec_logical_address)rxmessage.destination), rxmessage.initiator, rxmessage.destination, ToString((cec_opcode)rxmessage.opcode), str); switch (rxmessage.opcode) { + case CEC_OPCODE_REPORT_AUDIO_STATUS: + { + muted = ((rxmessage.data[1] & 0x80) == 0x80); + volume = rxmessage.data[1] & 0x7F; + if (muted) + lt_debug("[CEC] %s volume muted\n", ToString((cec_logical_address)rxmessage.initiator)); + else + lt_debug("[CEC] %s volume %d \n", ToString((cec_logical_address)rxmessage.initiator), volume); + break; + } case CEC_OPCODE_DEVICE_VENDOR_ID: case CEC_OPCODE_VENDOR_COMMAND_WITH_ID: { @@ -564,7 +578,7 @@ void hdmi_cec::handleCode(long code, bool keypressed) } if (keypressed) { - if (rc_send(evd, code, KEY_PRESSED) < 0) + if (rc_send(evd, code, CEC_KEY_PRESSED) < 0) { lt_debug("[CEC] writing 'KEY_PRESSED' event failed"); close(evd); @@ -574,7 +588,7 @@ void hdmi_cec::handleCode(long code, bool keypressed) } else { - if (rc_send(evd, code, KEY_RELEASED) < 0) + if (rc_send(evd, code, CEC_KEY_RELEASED) < 0) { lt_debug("[CEC] writing 'KEY_RELEASED' event failed"); close(evd); @@ -605,3 +619,51 @@ void hdmi_cec::rc_sync(int fd) ev.value = 0; write(fd, &ev, sizeof(ev)); } + +void hdmi_cec::send_key(unsigned char key, unsigned char destination) +{ + struct cec_message txmessage; + txmessage.destination = destination; + txmessage.initiator = logicalAddress; + txmessage.data[0] = CEC_OPCODE_USER_CONTROL_PRESSED; + txmessage.data[1] = key; + txmessage.length = 2; + SendCECMessage(txmessage); + usleep(10000); + + txmessage.destination = destination; + txmessage.initiator = logicalAddress; + txmessage.data[0] = CEC_OPCODE_USER_CONTROL_RELEASE; + txmessage.data[1] = key; + txmessage.length = 2; + SendCECMessage(txmessage); +} + +void hdmi_cec::request_audio_status() +{ + struct cec_message txmessage; + txmessage.destination = CEC_OP_PRIM_DEVTYPE_AUDIOSYSTEM; + txmessage.initiator = logicalAddress; + txmessage.data[0] = CEC_OPCODE_GIVE_AUDIO_STATUS; + txmessage.length = 1; + SendCECMessage(txmessage); +} + +void hdmi_cec::vol_up() +{ + send_key(CEC_USER_CONTROL_CODE_VOLUME_UP, CEC_OP_PRIM_DEVTYPE_AUDIOSYSTEM); + usleep(50000); + request_audio_status(); +} +void hdmi_cec::vol_down() +{ + send_key(CEC_USER_CONTROL_CODE_VOLUME_DOWN, CEC_OP_PRIM_DEVTYPE_AUDIOSYSTEM); + usleep(50000); + request_audio_status(); +} +void hdmi_cec::toggle_mute() +{ + send_key(CEC_USER_CONTROL_CODE_MUTE, CEC_OP_PRIM_DEVTYPE_AUDIOSYSTEM); + usleep(50000); + request_audio_status(); +} diff --git a/libarmbox/hdmi_cec.h b/libarmbox/hdmi_cec.h index 65604d7..ebd463d 100644 --- a/libarmbox/hdmi_cec.h +++ b/libarmbox/hdmi_cec.h @@ -38,10 +38,11 @@ struct addressinfo unsigned char type; }; -enum { - KEY_RELEASED = 0, - KEY_PRESSED, - KEY_AUTOREPEAT +enum +{ + CEC_KEY_RELEASED = 0, + CEC_KEY_PRESSED, + CEC_KEY_AUTOREPEAT }; class hdmi_cec : public OpenThreads::Thread @@ -62,6 +63,10 @@ private: int rc_send(int fd, unsigned int code, unsigned int value); void rc_sync(int fd); bool standby; + void send_key(unsigned char key, unsigned char destination); + void request_audio_status(); + bool muted; + int volume; protected: bool running; public: @@ -75,4 +80,15 @@ public: void SetCECState(bool state); void ReportPhysicalAddress(); bool standby_cec_activ; + void vol_up(); + void vol_down(); + void toggle_mute(); + int GetVolume() + { + return volume; + }; + bool isMuted() + { + return muted; + }; }; diff --git a/libarmbox/hdmi_cec_types.h b/libarmbox/hdmi_cec_types.h index beb3e4f..7d2453b 100644 --- a/libarmbox/hdmi_cec_types.h +++ b/libarmbox/hdmi_cec_types.h @@ -630,6 +630,46 @@ static const char *ToString(const cec_user_control_code key) } } +static const char *ToString(cec_logical_address la) +{ + switch (la & 0xf) + { + case CECDEVICE_TV: + return "TV"; + case CECDEVICE_RECORDINGDEVICE1: + return "Recording Device 1"; + case CECDEVICE_RECORDINGDEVICE2: + return "Recording Device 2"; + case CECDEVICE_TUNER1: + return "Tuner 1"; + case CECDEVICE_PLAYBACKDEVICE1: + return "Playback Device 1"; + case CECDEVICE_AUDIOSYSTEM: + return "Audio System"; + case CECDEVICE_TUNER2: + return "Tuner 2"; + case CECDEVICE_TUNER3: + return "Tuner 3"; + case CECDEVICE_PLAYBACKDEVICE2: + return "Playback Device 2"; + case CECDEVICE_RECORDINGDEVICE3: + return "Recording Device 3"; + case CECDEVICE_TUNER4: + return "Tuner 4"; + case CECDEVICE_PLAYBACKDEVICE3: + return "Playback Device 3"; + case CECDEVICE_RESERVED1: + return "Reserved 1"; + case CECDEVICE_RESERVED2: + return "Reserved 2"; + case CECDEVICE_FREEUSE: + return "Free use"; + case CECDEVICE_UNREGISTERED: + default: + return "Unregistered"; + } +} + static cec_opcode GetResponseOpcode(cec_opcode opcode) { switch (opcode) From b1e78594faed95af00c0baace7ef02f735ae4710 Mon Sep 17 00:00:00 2001 From: TangoCash Date: Mon, 15 Oct 2018 22:13:39 +0200 Subject: [PATCH 28/52] libeplayer3-arm: fix h265 playback Origin commit data ------------------ Branch: master Commit: https://github.com/neutrino-images/ni-libstb-hal/commit/2024f58f21d8d4f4e29d68af004c82ef0ffc46e9 Author: TangoCash Date: 2018-10-15 (Mon, 15 Oct 2018) ------------------ No further description and justification available within origin commit message! ------------------ This commit was generated by Migit --- libeplayer3-arm/container/container_ffmpeg.c | 1 + 1 file changed, 1 insertion(+) diff --git a/libeplayer3-arm/container/container_ffmpeg.c b/libeplayer3-arm/container/container_ffmpeg.c index 59fa887..769fe56 100644 --- a/libeplayer3-arm/container/container_ffmpeg.c +++ b/libeplayer3-arm/container/container_ffmpeg.c @@ -894,6 +894,7 @@ static void FFMPEGThread(Context_t *context) avOut.width = videoTrack->width; avOut.height = videoTrack->height; avOut.type = "video"; + avOut.infoFlags = 0; if (avContextTab[cAVIdx]->iformat->flags & AVFMT_TS_DISCONT) { From a327cbe51795d70ec9e79712e3cd44e682e6415d Mon Sep 17 00:00:00 2001 From: TangoCash Date: Fri, 19 Oct 2018 16:42:45 +0200 Subject: [PATCH 29/52] liabarmbox: hdmi_cec return volume in percent, correct msg length Origin commit data ------------------ Branch: master Commit: https://github.com/neutrino-images/ni-libstb-hal/commit/dd77bfac671410aaaaa45a50508aa0c80a917308 Author: TangoCash Date: 2018-10-19 (Fri, 19 Oct 2018) ------------------ No further description and justification available within origin commit message! ------------------ This commit was generated by Migit --- libarmbox/hdmi_cec.cpp | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/libarmbox/hdmi_cec.cpp b/libarmbox/hdmi_cec.cpp index c34c2a5..8fda736 100644 --- a/libarmbox/hdmi_cec.cpp +++ b/libarmbox/hdmi_cec.cpp @@ -528,7 +528,7 @@ void hdmi_cec::Receive() case CEC_OPCODE_REPORT_AUDIO_STATUS: { muted = ((rxmessage.data[1] & 0x80) == 0x80); - volume = rxmessage.data[1] & 0x7F; + volume = ((rxmessage.data[1] & 0x7F) / 127.0) * 100.0; if (muted) lt_debug("[CEC] %s volume muted\n", ToString((cec_logical_address)rxmessage.initiator)); else @@ -634,8 +634,7 @@ void hdmi_cec::send_key(unsigned char key, unsigned char destination) txmessage.destination = destination; txmessage.initiator = logicalAddress; txmessage.data[0] = CEC_OPCODE_USER_CONTROL_RELEASE; - txmessage.data[1] = key; - txmessage.length = 2; + txmessage.length = 1; SendCECMessage(txmessage); } From cfb23d61c59bbef2971e045c733cd0edfae825d6 Mon Sep 17 00:00:00 2001 From: TangoCash Date: Fri, 19 Oct 2018 16:42:45 +0200 Subject: [PATCH 30/52] liabarmbox: hdmi_cec return volume in percent, correct msg length Origin commit data ------------------ Branch: master Commit: https://github.com/neutrino-images/ni-libstb-hal/commit/bd853ec045becb5d0a20555656c375591d567442 Author: TangoCash Date: 2018-10-19 (Fri, 19 Oct 2018) ------------------ No further description and justification available within origin commit message! ------------------ This commit was generated by Migit --- libarmbox/hdmi_cec.cpp | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/libarmbox/hdmi_cec.cpp b/libarmbox/hdmi_cec.cpp index c34c2a5..8fda736 100644 --- a/libarmbox/hdmi_cec.cpp +++ b/libarmbox/hdmi_cec.cpp @@ -528,7 +528,7 @@ void hdmi_cec::Receive() case CEC_OPCODE_REPORT_AUDIO_STATUS: { muted = ((rxmessage.data[1] & 0x80) == 0x80); - volume = rxmessage.data[1] & 0x7F; + volume = ((rxmessage.data[1] & 0x7F) / 127.0) * 100.0; if (muted) lt_debug("[CEC] %s volume muted\n", ToString((cec_logical_address)rxmessage.initiator)); else @@ -634,8 +634,7 @@ void hdmi_cec::send_key(unsigned char key, unsigned char destination) txmessage.destination = destination; txmessage.initiator = logicalAddress; txmessage.data[0] = CEC_OPCODE_USER_CONTROL_RELEASE; - txmessage.data[1] = key; - txmessage.length = 2; + txmessage.length = 1; SendCECMessage(txmessage); } From b624296e6e83e588a32b1a08da28a90c0cf3c6a0 Mon Sep 17 00:00:00 2001 From: TangoCash Date: Wed, 31 Oct 2018 23:29:51 +0100 Subject: [PATCH 31/52] add first experimental support for ax hd60 Origin commit data ------------------ Branch: master Commit: https://github.com/neutrino-images/ni-libstb-hal/commit/954a6aa3dcdbf04fcd367ee919ea87a26a6bfa8a Author: TangoCash Date: 2018-10-31 (Wed, 31 Oct 2018) ------------------ No further description and justification available within origin commit message! ------------------ This commit was generated by Migit --- acinclude.m4 | 16 +++++++++++++++- libarmbox/hardware_caps.c | 19 ++++++++++++++++++- 2 files changed, 33 insertions(+), 2 deletions(-) diff --git a/acinclude.m4 b/acinclude.m4 index 6b9232b..5d68143 100644 --- a/acinclude.m4 +++ b/acinclude.m4 @@ -219,6 +219,10 @@ AC_ARG_WITH(boxtype, BOXTYPE="armbox" BOXMODEL="$withval" ;; + hd60) + BOXTYPE="armbox" + BOXMODEL="$withval" + ;; *) AC_MSG_ERROR([bad value $withval for --with-boxtype]) ;; @@ -229,7 +233,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, vusolo4k]), +AS_HELP_STRING([], [valid for armbox: hd51, hd60, vusolo4k]), [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) if test "$BOXTYPE" = "duckbox"; then @@ -259,6 +263,13 @@ AS_HELP_STRING([], [valid for armbox: hd51, vusolo4k]), AC_MSG_ERROR([unknown model $withval for boxtype $BOXTYPE]) fi ;; + hd60) + if test "$BOXTYPE" = "armbox"; then + BOXMODEL="$withval" + else + AC_MSG_ERROR([unknown model $withval for boxtype $BOXTYPE]) + fi + ;; raspi) if test "$BOXTYPE" = "generic"; then BOXMODEL="$withval" @@ -310,6 +321,7 @@ AM_CONDITIONAL(BOXMODEL_TF7700, test "$BOXMODEL" = "tf7700") AM_CONDITIONAL(BOXMODEL_HL101, test "$BOXMODEL" = "hl101") AM_CONDITIONAL(BOXMODEL_HD51, test "$BOXMODEL" = "hd51") +AM_CONDITIONAL(BOXMODEL_HD60, test "$BOXMODEL" = "hd60") AM_CONDITIONAL(BOXMODEL_VUSOLO4K, test "$BOXMODEL" = "vusolo4k") AM_CONDITIONAL(BOXMODEL_RASPI, test "$BOXMODEL" = "raspi") @@ -385,6 +397,8 @@ elif test "$BOXMODEL" = "hl101"; then AC_DEFINE(BOXMODEL_HL101, 1, [hl101]) elif test "$BOXMODEL" = "hd51"; then AC_DEFINE(BOXMODEL_HD51, 1, [hd51]) +elif test "$BOXMODEL" = "hd60"; then + AC_DEFINE(BOXMODEL_HD60, 1, [hd60]) elif test "$BOXMODEL" = "vusolo4k"; then AC_DEFINE(BOXMODEL_VUSOLO4K, 1, [vusolo4k]) elif test "$BOXMODEL" = "raspi"; then diff --git a/libarmbox/hardware_caps.c b/libarmbox/hardware_caps.c index 782e35d..919499c 100644 --- a/libarmbox/hardware_caps.c +++ b/libarmbox/hardware_caps.c @@ -45,7 +45,8 @@ hw_caps_t *get_hwcaps(void) strcpy(caps.boxvendor, "VU"); strcpy(caps.boxname, "SOLO4K"); strcpy(caps.boxarch, "BCM7376"); -#else +#endif +#if BOXMODEL_HD51 initialized = 1; caps.has_CI = 1; caps.can_cec = 1; @@ -60,6 +61,22 @@ hw_caps_t *get_hwcaps(void) strcpy(caps.boxvendor, "AX-Technologies"); strcpy(caps.boxname, "HD51"); strcpy(caps.boxarch, "BCM7251S"); +#endif +#if BOXMODEL_HD60 + initialized = 1; + caps.has_CI = 0; + caps.can_cec = 1; + caps.can_shutdown = 1; + caps.display_xres = 4; + caps.display_type = HW_DISPLAY_LED_NUM; + caps.display_can_deepstandby = 0; + caps.display_can_set_brightness = 1; + caps.display_has_statusline = 0; + caps.has_button_timer = 1; + caps.has_HDMI = 1; + strcpy(caps.boxvendor, "AX-Technologies"); + strcpy(caps.boxname, "HD60"); + strcpy(caps.boxarch, "HI3798M"); #endif return ∩︀ } From e89176813e09991ffd361aa2ad21ea22fce4647f Mon Sep 17 00:00:00 2001 From: TangoCash Date: Wed, 31 Oct 2018 23:29:51 +0100 Subject: [PATCH 32/52] add first experimental support for ax hd60 Origin commit data ------------------ Branch: master Commit: https://github.com/neutrino-images/ni-libstb-hal/commit/e1ee33e4824c78dab856590b6c6e7dfefa44b802 Author: TangoCash Date: 2018-10-31 (Wed, 31 Oct 2018) ------------------ No further description and justification available within origin commit message! ------------------ This commit was generated by Migit --- acinclude.m4 | 16 +++++++++++++++- libarmbox/hardware_caps.c | 19 ++++++++++++++++++- 2 files changed, 33 insertions(+), 2 deletions(-) diff --git a/acinclude.m4 b/acinclude.m4 index 6b9232b..5d68143 100644 --- a/acinclude.m4 +++ b/acinclude.m4 @@ -219,6 +219,10 @@ AC_ARG_WITH(boxtype, BOXTYPE="armbox" BOXMODEL="$withval" ;; + hd60) + BOXTYPE="armbox" + BOXMODEL="$withval" + ;; *) AC_MSG_ERROR([bad value $withval for --with-boxtype]) ;; @@ -229,7 +233,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, vusolo4k]), +AS_HELP_STRING([], [valid for armbox: hd51, hd60, vusolo4k]), [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) if test "$BOXTYPE" = "duckbox"; then @@ -259,6 +263,13 @@ AS_HELP_STRING([], [valid for armbox: hd51, vusolo4k]), AC_MSG_ERROR([unknown model $withval for boxtype $BOXTYPE]) fi ;; + hd60) + if test "$BOXTYPE" = "armbox"; then + BOXMODEL="$withval" + else + AC_MSG_ERROR([unknown model $withval for boxtype $BOXTYPE]) + fi + ;; raspi) if test "$BOXTYPE" = "generic"; then BOXMODEL="$withval" @@ -310,6 +321,7 @@ AM_CONDITIONAL(BOXMODEL_TF7700, test "$BOXMODEL" = "tf7700") AM_CONDITIONAL(BOXMODEL_HL101, test "$BOXMODEL" = "hl101") AM_CONDITIONAL(BOXMODEL_HD51, test "$BOXMODEL" = "hd51") +AM_CONDITIONAL(BOXMODEL_HD60, test "$BOXMODEL" = "hd60") AM_CONDITIONAL(BOXMODEL_VUSOLO4K, test "$BOXMODEL" = "vusolo4k") AM_CONDITIONAL(BOXMODEL_RASPI, test "$BOXMODEL" = "raspi") @@ -385,6 +397,8 @@ elif test "$BOXMODEL" = "hl101"; then AC_DEFINE(BOXMODEL_HL101, 1, [hl101]) elif test "$BOXMODEL" = "hd51"; then AC_DEFINE(BOXMODEL_HD51, 1, [hd51]) +elif test "$BOXMODEL" = "hd60"; then + AC_DEFINE(BOXMODEL_HD60, 1, [hd60]) elif test "$BOXMODEL" = "vusolo4k"; then AC_DEFINE(BOXMODEL_VUSOLO4K, 1, [vusolo4k]) elif test "$BOXMODEL" = "raspi"; then diff --git a/libarmbox/hardware_caps.c b/libarmbox/hardware_caps.c index 782e35d..919499c 100644 --- a/libarmbox/hardware_caps.c +++ b/libarmbox/hardware_caps.c @@ -45,7 +45,8 @@ hw_caps_t *get_hwcaps(void) strcpy(caps.boxvendor, "VU"); strcpy(caps.boxname, "SOLO4K"); strcpy(caps.boxarch, "BCM7376"); -#else +#endif +#if BOXMODEL_HD51 initialized = 1; caps.has_CI = 1; caps.can_cec = 1; @@ -60,6 +61,22 @@ hw_caps_t *get_hwcaps(void) strcpy(caps.boxvendor, "AX-Technologies"); strcpy(caps.boxname, "HD51"); strcpy(caps.boxarch, "BCM7251S"); +#endif +#if BOXMODEL_HD60 + initialized = 1; + caps.has_CI = 0; + caps.can_cec = 1; + caps.can_shutdown = 1; + caps.display_xres = 4; + caps.display_type = HW_DISPLAY_LED_NUM; + caps.display_can_deepstandby = 0; + caps.display_can_set_brightness = 1; + caps.display_has_statusline = 0; + caps.has_button_timer = 1; + caps.has_HDMI = 1; + strcpy(caps.boxvendor, "AX-Technologies"); + strcpy(caps.boxname, "HD60"); + strcpy(caps.boxarch, "HI3798M"); #endif return ∩︀ } From a33a1d4db2efed0abbf697d56c259f125dfabb3a Mon Sep 17 00:00:00 2001 From: max_10 Date: Wed, 14 Nov 2018 23:26:32 +0100 Subject: [PATCH 33/52] acinclude.m4: remove obsolete boxtype code Origin commit data ------------------ Branch: master Commit: https://github.com/neutrino-images/ni-libstb-hal/commit/0b7614c46901d44dafcb4d6f37c1570a9232e710 Author: max_10 Date: 2018-11-14 (Wed, 14 Nov 2018) Origin message was: ------------------ - acinclude.m4: remove obsolete boxtype code ------------------ No further description and justification available within origin commit message! ------------------ This commit was generated by Migit --- acinclude.m4 | 84 ++-------------------------------------------------- 1 file changed, 3 insertions(+), 81 deletions(-) diff --git a/acinclude.m4 b/acinclude.m4 index 5d68143..f332234 100644 --- a/acinclude.m4 +++ b/acinclude.m4 @@ -154,75 +154,11 @@ dnl end workaround AC_DEFUN([TUXBOX_BOXTYPE], [ AC_ARG_WITH(boxtype, - AS_HELP_STRING([--with-boxtype], [valid values: tripledragon, spark, azbox, generic, armbox, duckbox, spark7162]), + AS_HELP_STRING([--with-boxtype], [valid values: tripledragon, spark, azbox, generic, armbox, duckbox]), [case "${withval}" in - tripledragon|azbox|generic|armbox) + tripledragon|spark|azbox|generic|armbox|duckbox) BOXTYPE="$withval" ;; - spark|spark7162) - BOXTYPE="spark" - BOXMODEL="$withval" - ;; - dm*) - BOXTYPE="dreambox" - BOXMODEL="$withval" - ;; - ufs*) - BOXTYPE="duckbox" - BOXMODEL="$withval" - ;; - atevio*) - BOXTYPE="duckbox" - BOXMODEL="$withval" - ;; - fortis*) - BOXTYPE="duckbox" - BOXMODEL="$withval" - ;; - octagon*) - BOXTYPE="duckbox" - BOXMODEL="$withval" - ;; - hs7*) - BOXTYPE="duckbox" - BOXMODEL="$withval" - ;; - dp*) - BOXTYPE="duckbox" - BOXMODEL="$withval" - ;; - cuberevo*) - BOXTYPE="duckbox" - BOXMODEL="$withval" - ;; - ipbox*) - BOXTYPE="duckbox" - BOXMODEL="$withval" - ;; - arivalink200) - BOXTYPE="duckbox" - BOXMODEL="$withval" - ;; - tf*) - BOXTYPE="duckbox" - BOXMODEL="$withval" - ;; - hl101) - BOXTYPE="duckbox" - BOXMODEL="$withval" - ;; - vusolo4k) - BOXTYPE="armbox" - BOXMODEL="$withval" - ;; - hd51) - BOXTYPE="armbox" - BOXMODEL="$withval" - ;; - hd60) - BOXTYPE="armbox" - BOXMODEL="$withval" - ;; *) AC_MSG_ERROR([bad value $withval for --with-boxtype]) ;; @@ -249,21 +185,7 @@ AS_HELP_STRING([], [valid for armbox: hd51, hd60, vusolo4k]), AC_MSG_ERROR([unknown model $withval for boxtype $BOXTYPE]) fi ;; - vusolo4k) - if test "$BOXTYPE" = "armbox"; then - BOXMODEL="$withval" - else - AC_MSG_ERROR([unknown model $withval for boxtype $BOXTYPE]) - fi - ;; - hd51) - if test "$BOXTYPE" = "armbox"; then - BOXMODEL="$withval" - else - AC_MSG_ERROR([unknown model $withval for boxtype $BOXTYPE]) - fi - ;; - hd60) + hd51|hd60|vusolo4k) if test "$BOXTYPE" = "armbox"; then BOXMODEL="$withval" else From a664590fb0956eec3ba73eea365ba1a1b73605ce Mon Sep 17 00:00:00 2001 From: Frankenstone Date: Fri, 16 Nov 2018 20:45:11 +0100 Subject: [PATCH 34/52] acinclude.m4: simplify and unify code Origin commit data ------------------ Branch: master Commit: https://github.com/neutrino-images/ni-libstb-hal/commit/1811d90597a719d84adc5b4d78b5176b437abbec Author: Frankenstone Date: 2018-11-16 (Fri, 16 Nov 2018) ------------------ No further description and justification available within origin commit message! ------------------ This commit was generated by Migit --- acinclude.m4 | 26 ++------------------------ 1 file changed, 2 insertions(+), 24 deletions(-) diff --git a/acinclude.m4 b/acinclude.m4 index 5d68143..b4b470e 100644 --- a/acinclude.m4 +++ b/acinclude.m4 @@ -211,15 +211,7 @@ AC_ARG_WITH(boxtype, BOXTYPE="duckbox" BOXMODEL="$withval" ;; - vusolo4k) - BOXTYPE="armbox" - BOXMODEL="$withval" - ;; - hd51) - BOXTYPE="armbox" - BOXMODEL="$withval" - ;; - hd60) + hd51|hd60|vusolo4k) BOXTYPE="armbox" BOXMODEL="$withval" ;; @@ -249,21 +241,7 @@ AS_HELP_STRING([], [valid for armbox: hd51, hd60, vusolo4k]), AC_MSG_ERROR([unknown model $withval for boxtype $BOXTYPE]) fi ;; - vusolo4k) - if test "$BOXTYPE" = "armbox"; then - BOXMODEL="$withval" - else - AC_MSG_ERROR([unknown model $withval for boxtype $BOXTYPE]) - fi - ;; - hd51) - if test "$BOXTYPE" = "armbox"; then - BOXMODEL="$withval" - else - AC_MSG_ERROR([unknown model $withval for boxtype $BOXTYPE]) - fi - ;; - hd60) + hd51|hd60|vusolo4k) if test "$BOXTYPE" = "armbox"; then BOXMODEL="$withval" else From fa6b0438c904b9b2ef18fbb21ff436d942727d46 Mon Sep 17 00:00:00 2001 From: TangoCash Date: Wed, 21 Nov 2018 21:49:11 +0100 Subject: [PATCH 35/52] add support for wwio bre2ze4k Origin commit data ------------------ Branch: master Commit: https://github.com/neutrino-images/ni-libstb-hal/commit/9b9f459d468f75c40eafe5fb4318182224f59a81 Author: TangoCash Date: 2018-11-21 (Wed, 21 Nov 2018) ------------------ No further description and justification available within origin commit message! ------------------ This commit was generated by Migit --- acinclude.m4 | 7 +++++-- libarmbox/hardware_caps.c | 16 ++++++++++++++++ 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/acinclude.m4 b/acinclude.m4 index f332234..26bf1e1 100644 --- a/acinclude.m4 +++ b/acinclude.m4 @@ -169,7 +169,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, vusolo4k]), +AS_HELP_STRING([], [valid for armbox: hd51, hd60, vusolo4k, bre2ze4k]), [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) if test "$BOXTYPE" = "duckbox"; then @@ -185,7 +185,7 @@ AS_HELP_STRING([], [valid for armbox: hd51, hd60, vusolo4k]), AC_MSG_ERROR([unknown model $withval for boxtype $BOXTYPE]) fi ;; - hd51|hd60|vusolo4k) + hd51|hd60|vusolo4k|bre2ze4k) if test "$BOXTYPE" = "armbox"; then BOXMODEL="$withval" else @@ -245,6 +245,7 @@ AM_CONDITIONAL(BOXMODEL_HL101, test "$BOXMODEL" = "hl101") AM_CONDITIONAL(BOXMODEL_HD51, test "$BOXMODEL" = "hd51") AM_CONDITIONAL(BOXMODEL_HD60, test "$BOXMODEL" = "hd60") AM_CONDITIONAL(BOXMODEL_VUSOLO4K, test "$BOXMODEL" = "vusolo4k") +AM_CONDITIONAL(BOXMODEL_BRE2ZE4K, test "$BOXMODEL" = "bre2ze4k") AM_CONDITIONAL(BOXMODEL_RASPI, test "$BOXMODEL" = "raspi") @@ -323,6 +324,8 @@ elif test "$BOXMODEL" = "hd60"; then AC_DEFINE(BOXMODEL_HD60, 1, [hd60]) elif test "$BOXMODEL" = "vusolo4k"; then AC_DEFINE(BOXMODEL_VUSOLO4K, 1, [vusolo4k]) +elif test "$BOXMODEL" = "bre2ze4k"; then + AC_DEFINE(BOXMODEL_BRE2ZE4K, 1, [bre2ze4k]) elif test "$BOXMODEL" = "raspi"; then AC_DEFINE(BOXMODEL_RASPI, 1, [raspberry pi]) fi diff --git a/libarmbox/hardware_caps.c b/libarmbox/hardware_caps.c index 919499c..22911f5 100644 --- a/libarmbox/hardware_caps.c +++ b/libarmbox/hardware_caps.c @@ -77,6 +77,22 @@ hw_caps_t *get_hwcaps(void) strcpy(caps.boxvendor, "AX-Technologies"); strcpy(caps.boxname, "HD60"); strcpy(caps.boxarch, "HI3798M"); +#endif +#if BOXMODEL_BRE2ZE4K + initialized = 1; + caps.has_CI = 1; + caps.can_cec = 1; + caps.can_shutdown = 1; + caps.display_xres = 4; + caps.display_type = HW_DISPLAY_LED_NUM; + caps.display_can_deepstandby = 0; + caps.display_can_set_brightness = 1; + caps.display_has_statusline = 0; + caps.has_button_timer = 1; + caps.has_HDMI = 1; + strcpy(caps.boxvendor, "WWIO"); + strcpy(caps.boxname, "BRE2ZE4K"); + strcpy(caps.boxarch, "BCM7251S"); #endif return ∩︀ } From da1a437ef77a700f52df4072831bcf26425ce1a3 Mon Sep 17 00:00:00 2001 From: GetAway Date: Sat, 1 Dec 2018 10:38:17 +0100 Subject: [PATCH 36/52] libarmbox: introduce has_button_vformat Origin commit data ------------------ Branch: master Commit: https://github.com/neutrino-images/ni-libstb-hal/commit/3f0f80e0d0bf6adb90933edbb86c1b77eca397d0 Author: GetAway Date: 2018-12-01 (Sat, 01 Dec 2018) ------------------ No further description and justification available within origin commit message! ------------------ This commit was generated by Migit --- include/hardware_caps.h | 1 + libarmbox/hardware_caps.c | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/include/hardware_caps.h b/include/hardware_caps.h index 3a553ca..44a11a9 100644 --- a/include/hardware_caps.h +++ b/include/hardware_caps.h @@ -40,6 +40,7 @@ typedef struct hw_caps int display_can_deepstandby; int display_has_statusline; int has_button_timer; + int has_button_vformat; char boxvendor[64]; char boxname[64]; char boxarch[64]; diff --git a/libarmbox/hardware_caps.c b/libarmbox/hardware_caps.c index 22911f5..c5ee366 100644 --- a/libarmbox/hardware_caps.c +++ b/libarmbox/hardware_caps.c @@ -41,6 +41,7 @@ hw_caps_t *get_hwcaps(void) caps.display_can_set_brightness = 1; caps.display_has_statusline = 1; caps.has_button_timer = 1; + caps.has_button_vformat = 0; caps.has_HDMI = 1; strcpy(caps.boxvendor, "VU"); strcpy(caps.boxname, "SOLO4K"); @@ -57,6 +58,7 @@ hw_caps_t *get_hwcaps(void) caps.display_can_set_brightness = 1; caps.display_has_statusline = 0; caps.has_button_timer = 1; + caps.has_button_vformat = 0; caps.has_HDMI = 1; strcpy(caps.boxvendor, "AX-Technologies"); strcpy(caps.boxname, "HD51"); @@ -73,6 +75,7 @@ hw_caps_t *get_hwcaps(void) caps.display_can_set_brightness = 1; caps.display_has_statusline = 0; caps.has_button_timer = 1; + caps.has_button_vformat = 0; caps.has_HDMI = 1; strcpy(caps.boxvendor, "AX-Technologies"); strcpy(caps.boxname, "HD60"); @@ -89,6 +92,7 @@ hw_caps_t *get_hwcaps(void) caps.display_can_set_brightness = 1; caps.display_has_statusline = 0; caps.has_button_timer = 1; + caps.has_button_vformat = 1; caps.has_HDMI = 1; strcpy(caps.boxvendor, "WWIO"); strcpy(caps.boxname, "BRE2ZE4K"); From a9cdfb8fe7e394531782878c03d779a9988c5c51 Mon Sep 17 00:00:00 2001 From: vanhofen Date: Sat, 22 Dec 2018 20:17:14 +0100 Subject: [PATCH 37/52] remove obsolete compatibility headers Origin commit data ------------------ Branch: master Commit: https://github.com/neutrino-images/ni-libstb-hal/commit/68d8bda1e547c38c7cc27647fa716cb876eab004 Author: vanhofen Date: 2018-12-22 (Sat, 22 Dec 2018) Origin message was: ------------------ - remove obsolete compatibility headers ------------------ No further description and justification available within origin commit message! ------------------ This commit was generated by Migit --- Makefile.am | 3 --- include/dmx_cs.h | 1 - include/init_cs.h | 2 -- include/video_cs.h | 1 - 4 files changed, 7 deletions(-) delete mode 100644 include/dmx_cs.h delete mode 100644 include/init_cs.h delete mode 100644 include/video_cs.h diff --git a/Makefile.am b/Makefile.am index c26789f..0f2f2d6 100644 --- a/Makefile.am +++ b/Makefile.am @@ -72,16 +72,13 @@ pkginclude_HEADERS = \ include/cs_api.h \ include/ca_ci.h \ include/cs_types.h \ - include/dmx_cs.h \ include/dmx_hal.h \ include/glfb.h \ include/hardware_caps.h \ - include/init_cs.h \ include/init_td.h \ include/mmi.h \ include/playback.h \ include/playback_hal.h \ include/pwrmngr.h \ include/record_hal.h \ - include/video_cs.h \ include/video_hal.h diff --git a/include/dmx_cs.h b/include/dmx_cs.h deleted file mode 100644 index 7f86974..0000000 --- a/include/dmx_cs.h +++ /dev/null @@ -1 +0,0 @@ -#include "dmx_hal.h" diff --git a/include/init_cs.h b/include/init_cs.h deleted file mode 100644 index 609c3e1..0000000 --- a/include/init_cs.h +++ /dev/null @@ -1,2 +0,0 @@ -#warning using init_cs.h from libstb-hal -#include "init_td.h" diff --git a/include/video_cs.h b/include/video_cs.h deleted file mode 100644 index f1d48d4..0000000 --- a/include/video_cs.h +++ /dev/null @@ -1 +0,0 @@ -#include "video_hal.h" From 818e38734ef03b08b3aa3d63803fb0ee57b3b0af Mon Sep 17 00:00:00 2001 From: vanhofen Date: Sat, 22 Dec 2018 20:17:14 +0100 Subject: [PATCH 38/52] unify handling of ca header Origin commit data ------------------ Branch: master Commit: https://github.com/neutrino-images/ni-libstb-hal/commit/c83f81fa5e07a279604f264e7948260e03a5476b Author: vanhofen Date: 2018-12-22 (Sat, 22 Dec 2018) Origin message was: ------------------ - unify handling of ca header ------------------ No further description and justification available within origin commit message! ------------------ This commit was generated by Migit --- Makefile.am | 3 +-- include/ca_ci.h | 6 +++--- include/ca_cs.h | 1 - include/{ca.h => ca_hal.h} | 6 +++--- include/cs_frontpanel.h | 6 +++--- libdvbci/dvbci_mmi.cpp | 2 +- 6 files changed, 11 insertions(+), 13 deletions(-) delete mode 100644 include/ca_cs.h rename include/{ca.h => ca_hal.h} (98%) diff --git a/Makefile.am b/Makefile.am index 0f2f2d6..3503a30 100644 --- a/Makefile.am +++ b/Makefile.am @@ -67,8 +67,7 @@ endif pkginclude_HEADERS = \ include/audio_hal.h \ - include/ca_cs.h \ - include/ca.h \ + include/ca_hal.h \ include/cs_api.h \ include/ca_ci.h \ include/cs_types.h \ diff --git a/include/ca_ci.h b/include/ca_ci.h index ee15f94..1ef8d48 100644 --- a/include/ca_ci.h +++ b/include/ca_ci.h @@ -1,5 +1,5 @@ -#ifndef __CA_H_ -#define __CA_H_ +#ifndef __ca_ci__ +#define __ca_ci__ #include #include @@ -362,4 +362,4 @@ public: virtual ~cCA(); }; -#endif ///__CA_H_ +#endif // __ca_ci__ diff --git a/include/ca_cs.h b/include/ca_cs.h deleted file mode 100644 index dae70d6..0000000 --- a/include/ca_cs.h +++ /dev/null @@ -1 +0,0 @@ -#include "ca.h" diff --git a/include/ca.h b/include/ca_hal.h similarity index 98% rename from include/ca.h rename to include/ca_hal.h index a087805..67796e3 100644 --- a/include/ca.h +++ b/include/ca_hal.h @@ -4,8 +4,8 @@ #if HAVE_DUCKBOX_HARDWARE || HAVE_ARM_HARDWARE #include "ca_ci.h" #else -#ifndef __CA_LIBTRIPLE_H_ -#define __CA_LIBTRIPLE_H_ +#ifndef __ca_hal__ +#define __ca_hal__ #include #include "cs_types.h" @@ -122,5 +122,5 @@ public: virtual ~cCA(); }; -#endif // __CA_LIBTRIPLE_H_ +#endif // __ca_hal__ #endif // HAVE_DUCKBOX_HARDWARE diff --git a/include/cs_frontpanel.h b/include/cs_frontpanel.h index ce35f11..9d9336b 100644 --- a/include/cs_frontpanel.h +++ b/include/cs_frontpanel.h @@ -1,5 +1,5 @@ -#ifndef __DUCKBOX_VFD__ -#define __DUCKBOX_VFD__ +#ifndef __CS_FRONTPANEL_H_ +#define __CS_FRONTPANEL_H_ #define VFDDISPLAYCHARS 0xc0425a00 #define VFDWRITECGRAM 0x40425a01 @@ -317,4 +317,4 @@ typedef struct { bool number_support; } fp_display_caps_t; -#endif /* __DUCKBOX_VFD__ */ +#endif // __CS_FRONTPANEL_H_ diff --git a/libdvbci/dvbci_mmi.cpp b/libdvbci/dvbci_mmi.cpp index b8c2794..2bd1928 100644 --- a/libdvbci/dvbci_mmi.cpp +++ b/libdvbci/dvbci_mmi.cpp @@ -5,7 +5,7 @@ #include #include "dvbci_mmi.h" -#include +#include eDVBCIMMISession::eDVBCIMMISession(eDVBCISlot *tslot) { From f3dcd28bc87406a9ef4f15573afe679e18a27d82 Mon Sep 17 00:00:00 2001 From: vanhofen Date: Sat, 22 Dec 2018 20:17:14 +0100 Subject: [PATCH 39/52] unify handling of playback header Origin commit data ------------------ Branch: master Commit: https://github.com/neutrino-images/ni-libstb-hal/commit/91137035de3c5b127c3a752816aee41a09304f2d Author: vanhofen Date: 2018-12-22 (Sat, 22 Dec 2018) Origin message was: ------------------ - unify handling of playback header ------------------ No further description and justification available within origin commit message! ------------------ This commit was generated by Migit --- Makefile.am | 1 - azbox/playback.cpp | 2 +- azbox/{playback.h => playback_lib.h} | 6 +++--- common/ca.cpp | 2 +- generic-pc/playback.cpp | 2 +- generic-pc/{playback.h => playback_lib.h} | 0 include/playback.h | 2 -- include/playback_hal.h | 6 +++--- raspi/playback.h | 1 - raspi/playback_lib.h | 1 + 10 files changed, 10 insertions(+), 13 deletions(-) rename azbox/{playback.h => playback_lib.h} (95%) rename generic-pc/{playback.h => playback_lib.h} (100%) delete mode 100644 include/playback.h delete mode 120000 raspi/playback.h create mode 120000 raspi/playback_lib.h diff --git a/Makefile.am b/Makefile.am index 3503a30..0c7769c 100644 --- a/Makefile.am +++ b/Makefile.am @@ -76,7 +76,6 @@ pkginclude_HEADERS = \ include/hardware_caps.h \ include/init_td.h \ include/mmi.h \ - include/playback.h \ include/playback_hal.h \ include/pwrmngr.h \ include/record_hal.h \ diff --git a/azbox/playback.cpp b/azbox/playback.cpp index 1e656f3..c387c6f 100644 --- a/azbox/playback.cpp +++ b/azbox/playback.cpp @@ -50,7 +50,7 @@ #define IN_FILE "/tmp/rmfp.in2" #define OUT_FILE "/tmp/rmfp.out2" -#include "playback.h" +#include "playback_lib.h" extern "C"{ #include "e2mruainclude.h" diff --git a/azbox/playback.h b/azbox/playback_lib.h similarity index 95% rename from azbox/playback.h rename to azbox/playback_lib.h index c56c69e..6997acb 100644 --- a/azbox/playback.h +++ b/azbox/playback_lib.h @@ -1,5 +1,5 @@ -#ifndef __PLAYBACK_H -#define __PLAYBACK_H +#ifndef __PLAYBACK_LIB_H_ +#define __PLAYBACK_LIB_H_ #include #include @@ -59,4 +59,4 @@ class cPlayback void DMNotify(int Event, void *pTsBuf, void *Tag); #endif }; -#endif +#endif // __PLAYBACK_LIB_H_ diff --git a/common/ca.cpp b/common/ca.cpp index f6ebea2..17f37aa 100644 --- a/common/ca.cpp +++ b/common/ca.cpp @@ -1,6 +1,6 @@ #include -#include "ca.h" +#include "ca_hal.h" #include "lt_debug.h" #define lt_debug(args...) _lt_debug(TRIPLE_DEBUG_CA, this, args) diff --git a/generic-pc/playback.cpp b/generic-pc/playback.cpp index 5e9c4ac..fe5a7e7 100644 --- a/generic-pc/playback.cpp +++ b/generic-pc/playback.cpp @@ -1,6 +1,6 @@ #include -#include "playback.h" +#include "playback_lib.h" static const char * FILENAME = "playback-dummy"; diff --git a/generic-pc/playback.h b/generic-pc/playback_lib.h similarity index 100% rename from generic-pc/playback.h rename to generic-pc/playback_lib.h diff --git a/include/playback.h b/include/playback.h deleted file mode 100644 index c62544b..0000000 --- a/include/playback.h +++ /dev/null @@ -1,2 +0,0 @@ -#include -#include "playback_hal.h" diff --git a/include/playback_hal.h b/include/playback_hal.h index 5891fd2..690f4ab 100644 --- a/include/playback_hal.h +++ b/include/playback_hal.h @@ -12,15 +12,15 @@ #include "../libarmbox/playback_libeplayer3.h" #endif #elif HAVE_AZBOX_HARDWARE -#include "../azbox/playback.h" +#include "../azbox/playback_lib.h" #elif HAVE_GENERIC_HARDWARE #if BOXMODEL_RASPI -#include "../raspi/playback.h" +#include "../raspi/playback_lib.h" #else #if ENABLE_GSTREAMER #include "../generic-pc/playback_gst.h" #else -#include "../generic-pc/playback.h" +#include "../generic-pc/playback_lib.h" #endif #endif #else diff --git a/raspi/playback.h b/raspi/playback.h deleted file mode 120000 index 1363d92..0000000 --- a/raspi/playback.h +++ /dev/null @@ -1 +0,0 @@ -../generic-pc/playback.h \ No newline at end of file diff --git a/raspi/playback_lib.h b/raspi/playback_lib.h new file mode 120000 index 0000000..5738cee --- /dev/null +++ b/raspi/playback_lib.h @@ -0,0 +1 @@ +../generic-pc/playback_lib.h \ No newline at end of file From 44123d7476377100a75cd4a6f3de45506bf61ad2 Mon Sep 17 00:00:00 2001 From: vanhofen Date: Sun, 23 Dec 2018 22:33:56 +0100 Subject: [PATCH 40/52] move azbox code to libazbox directory Origin commit data ------------------ Branch: master Commit: https://github.com/neutrino-images/ni-libstb-hal/commit/bcc5c7ccdbe690ca98ca614fcfc2522d02661c47 Author: vanhofen Date: 2018-12-23 (Sun, 23 Dec 2018) Origin message was: ------------------ - move azbox code to libazbox directory ------------------ No further description and justification available within origin commit message! ------------------ This commit was generated by Migit --- Makefile.am | 4 ++-- configure.ac | 10 +++++----- {azbox => libazbox}/Makefile.am | 0 {azbox => libazbox}/audio.cpp | 0 {azbox => libazbox}/audio_lib.h | 0 {azbox => libazbox}/dmx.cpp | 0 {azbox => libazbox}/e2mruainclude.h | 0 {azbox => libazbox}/hardware_caps.c | 0 {azbox => libazbox}/init.cpp | 0 {azbox => libazbox}/playback.cpp | 0 {azbox => libazbox}/playback_lib.h | 0 {azbox => libazbox}/record.cpp | 0 {azbox => libazbox}/record_lib.h | 0 {azbox => libazbox}/video.cpp | 0 {azbox => libazbox}/video_lib.h | 0 15 files changed, 7 insertions(+), 7 deletions(-) rename {azbox => libazbox}/Makefile.am (100%) rename {azbox => libazbox}/audio.cpp (100%) rename {azbox => libazbox}/audio_lib.h (100%) rename {azbox => libazbox}/dmx.cpp (100%) rename {azbox => libazbox}/e2mruainclude.h (100%) rename {azbox => libazbox}/hardware_caps.c (100%) rename {azbox => libazbox}/init.cpp (100%) rename {azbox => libazbox}/playback.cpp (100%) rename {azbox => libazbox}/playback_lib.h (100%) rename {azbox => libazbox}/record.cpp (100%) rename {azbox => libazbox}/record_lib.h (100%) rename {azbox => libazbox}/video.cpp (100%) rename {azbox => libazbox}/video_lib.h (100%) diff --git a/Makefile.am b/Makefile.am index 0c7769c..2a0c746 100644 --- a/Makefile.am +++ b/Makefile.am @@ -19,9 +19,9 @@ libstb_hal_la_LIBADD += \ libtriple/libtriple.la endif if BOXTYPE_AZBOX -SUBDIRS += azbox +SUBDIRS += libazbox libstb_hal_la_LIBADD += \ - azbox/libazbox.la + libazbox/libazbox.la endif if BOXTYPE_GENERIC if BOXMODEL_RASPI diff --git a/configure.ac b/configure.ac index e149c33..f541823 100644 --- a/configure.ac +++ b/configure.ac @@ -89,15 +89,15 @@ fi AC_OUTPUT([ Makefile common/Makefile -libeplayer3/Makefile -libeplayer3-arm/Makefile -azbox/Makefile generic-pc/Makefile +libarmbox/Makefile +libazbox/Makefile libduckbox/Makefile libdvbci/Makefile -libtriple/Makefile +libeplayer3/Makefile +libeplayer3-arm/Makefile libspark/Makefile -libarmbox/Makefile +libtriple/Makefile raspi/Makefile tools/Makefile ]) diff --git a/azbox/Makefile.am b/libazbox/Makefile.am similarity index 100% rename from azbox/Makefile.am rename to libazbox/Makefile.am diff --git a/azbox/audio.cpp b/libazbox/audio.cpp similarity index 100% rename from azbox/audio.cpp rename to libazbox/audio.cpp diff --git a/azbox/audio_lib.h b/libazbox/audio_lib.h similarity index 100% rename from azbox/audio_lib.h rename to libazbox/audio_lib.h diff --git a/azbox/dmx.cpp b/libazbox/dmx.cpp similarity index 100% rename from azbox/dmx.cpp rename to libazbox/dmx.cpp diff --git a/azbox/e2mruainclude.h b/libazbox/e2mruainclude.h similarity index 100% rename from azbox/e2mruainclude.h rename to libazbox/e2mruainclude.h diff --git a/azbox/hardware_caps.c b/libazbox/hardware_caps.c similarity index 100% rename from azbox/hardware_caps.c rename to libazbox/hardware_caps.c diff --git a/azbox/init.cpp b/libazbox/init.cpp similarity index 100% rename from azbox/init.cpp rename to libazbox/init.cpp diff --git a/azbox/playback.cpp b/libazbox/playback.cpp similarity index 100% rename from azbox/playback.cpp rename to libazbox/playback.cpp diff --git a/azbox/playback_lib.h b/libazbox/playback_lib.h similarity index 100% rename from azbox/playback_lib.h rename to libazbox/playback_lib.h diff --git a/azbox/record.cpp b/libazbox/record.cpp similarity index 100% rename from azbox/record.cpp rename to libazbox/record.cpp diff --git a/azbox/record_lib.h b/libazbox/record_lib.h similarity index 100% rename from azbox/record_lib.h rename to libazbox/record_lib.h diff --git a/azbox/video.cpp b/libazbox/video.cpp similarity index 100% rename from azbox/video.cpp rename to libazbox/video.cpp diff --git a/azbox/video_lib.h b/libazbox/video_lib.h similarity index 100% rename from azbox/video_lib.h rename to libazbox/video_lib.h From 735e8ccbdbef4c4292c9fe40cb49095203d6cd61 Mon Sep 17 00:00:00 2001 From: vanhofen Date: Sun, 23 Dec 2018 22:33:56 +0100 Subject: [PATCH 41/52] move raspi code to libraspi directory Origin commit data ------------------ Branch: master Commit: https://github.com/neutrino-images/ni-libstb-hal/commit/e55aab61fb1e392b56090eb12bcd4e6a5b3b3aaa Author: vanhofen Date: 2018-12-23 (Sun, 23 Dec 2018) Origin message was: ------------------ - move raspi code to libraspi directory ------------------ No further description and justification available within origin commit message! ------------------ This commit was generated by Migit --- Makefile.am | 4 ++-- configure.ac | 2 +- {raspi => libraspi}/Makefile.am | 0 {raspi => libraspi}/audio.cpp | 0 {raspi => libraspi}/audio_lib.h | 0 {raspi => libraspi}/dmx.cpp | 0 {raspi => libraspi}/dmx_cs.h | 0 {raspi => libraspi}/dmx_lib.h | 0 {raspi => libraspi}/glfb.cpp | 0 {raspi => libraspi}/glfb.h | 0 {raspi => libraspi}/hardware_caps.c | 0 {raspi => libraspi}/init.cpp | 0 {raspi => libraspi}/playback.cpp | 0 {raspi => libraspi}/playback_lib.h | 0 {raspi => libraspi}/record.cpp | 0 {raspi => libraspi}/record_lib.h | 0 {raspi => libraspi}/video.cpp | 0 {raspi => libraspi}/video_lib.h | 0 18 files changed, 3 insertions(+), 3 deletions(-) rename {raspi => libraspi}/Makefile.am (100%) rename {raspi => libraspi}/audio.cpp (100%) rename {raspi => libraspi}/audio_lib.h (100%) rename {raspi => libraspi}/dmx.cpp (100%) rename {raspi => libraspi}/dmx_cs.h (100%) rename {raspi => libraspi}/dmx_lib.h (100%) rename {raspi => libraspi}/glfb.cpp (100%) rename {raspi => libraspi}/glfb.h (100%) rename {raspi => libraspi}/hardware_caps.c (100%) rename {raspi => libraspi}/init.cpp (100%) rename {raspi => libraspi}/playback.cpp (100%) rename {raspi => libraspi}/playback_lib.h (100%) rename {raspi => libraspi}/record.cpp (100%) rename {raspi => libraspi}/record_lib.h (100%) rename {raspi => libraspi}/video.cpp (100%) rename {raspi => libraspi}/video_lib.h (100%) diff --git a/Makefile.am b/Makefile.am index 2a0c746..dd44a46 100644 --- a/Makefile.am +++ b/Makefile.am @@ -25,9 +25,9 @@ libstb_hal_la_LIBADD += \ endif if BOXTYPE_GENERIC if BOXMODEL_RASPI -SUBDIRS += raspi +SUBDIRS += libraspi libstb_hal_la_LIBADD += \ - raspi/libraspi.la + libraspi/libraspi.la else SUBDIRS += generic-pc libstb_hal_la_LIBADD += \ diff --git a/configure.ac b/configure.ac index f541823..c66a156 100644 --- a/configure.ac +++ b/configure.ac @@ -96,9 +96,9 @@ libduckbox/Makefile libdvbci/Makefile libeplayer3/Makefile libeplayer3-arm/Makefile +libraspi/Makefile libspark/Makefile libtriple/Makefile -raspi/Makefile tools/Makefile ]) diff --git a/raspi/Makefile.am b/libraspi/Makefile.am similarity index 100% rename from raspi/Makefile.am rename to libraspi/Makefile.am diff --git a/raspi/audio.cpp b/libraspi/audio.cpp similarity index 100% rename from raspi/audio.cpp rename to libraspi/audio.cpp diff --git a/raspi/audio_lib.h b/libraspi/audio_lib.h similarity index 100% rename from raspi/audio_lib.h rename to libraspi/audio_lib.h diff --git a/raspi/dmx.cpp b/libraspi/dmx.cpp similarity index 100% rename from raspi/dmx.cpp rename to libraspi/dmx.cpp diff --git a/raspi/dmx_cs.h b/libraspi/dmx_cs.h similarity index 100% rename from raspi/dmx_cs.h rename to libraspi/dmx_cs.h diff --git a/raspi/dmx_lib.h b/libraspi/dmx_lib.h similarity index 100% rename from raspi/dmx_lib.h rename to libraspi/dmx_lib.h diff --git a/raspi/glfb.cpp b/libraspi/glfb.cpp similarity index 100% rename from raspi/glfb.cpp rename to libraspi/glfb.cpp diff --git a/raspi/glfb.h b/libraspi/glfb.h similarity index 100% rename from raspi/glfb.h rename to libraspi/glfb.h diff --git a/raspi/hardware_caps.c b/libraspi/hardware_caps.c similarity index 100% rename from raspi/hardware_caps.c rename to libraspi/hardware_caps.c diff --git a/raspi/init.cpp b/libraspi/init.cpp similarity index 100% rename from raspi/init.cpp rename to libraspi/init.cpp diff --git a/raspi/playback.cpp b/libraspi/playback.cpp similarity index 100% rename from raspi/playback.cpp rename to libraspi/playback.cpp diff --git a/raspi/playback_lib.h b/libraspi/playback_lib.h similarity index 100% rename from raspi/playback_lib.h rename to libraspi/playback_lib.h diff --git a/raspi/record.cpp b/libraspi/record.cpp similarity index 100% rename from raspi/record.cpp rename to libraspi/record.cpp diff --git a/raspi/record_lib.h b/libraspi/record_lib.h similarity index 100% rename from raspi/record_lib.h rename to libraspi/record_lib.h diff --git a/raspi/video.cpp b/libraspi/video.cpp similarity index 100% rename from raspi/video.cpp rename to libraspi/video.cpp diff --git a/raspi/video_lib.h b/libraspi/video_lib.h similarity index 100% rename from raspi/video_lib.h rename to libraspi/video_lib.h From 1cf0b7bbcad8918cb815251760f9d5deee92142b Mon Sep 17 00:00:00 2001 From: vanhofen Date: Sun, 23 Dec 2018 22:33:56 +0100 Subject: [PATCH 42/52] move generic-pc code to libgeneric-pc directory Origin commit data ------------------ Branch: master Commit: https://github.com/neutrino-images/ni-libstb-hal/commit/9c52b69d61e7b7601f8f734a1dc96bee0922beb4 Author: vanhofen Date: 2018-12-23 (Sun, 23 Dec 2018) Origin message was: ------------------ - move generic-pc code to libgeneric-pc directory ------------------ No further description and justification available within origin commit message! ------------------ This commit was generated by Migit --- Makefile.am | 2 +- configure.ac | 2 +- {generic-pc => libgeneric-pc}/Makefile.am | 0 {generic-pc => libgeneric-pc}/audio.cpp | 0 {generic-pc => libgeneric-pc}/audio_lib.h | 0 {generic-pc => libgeneric-pc}/clutterfb.cpp | 0 {generic-pc => libgeneric-pc}/dmx.cpp | 0 {generic-pc => libgeneric-pc}/glfb.cpp | 0 {generic-pc => libgeneric-pc}/glfb_priv.h | 0 {generic-pc => libgeneric-pc}/hardware_caps.c | 0 {generic-pc => libgeneric-pc}/init.cpp | 0 {generic-pc => libgeneric-pc}/playback.cpp | 0 {generic-pc => libgeneric-pc}/playback_gst.h | 0 {generic-pc => libgeneric-pc}/playback_gst_01.cpp | 0 {generic-pc => libgeneric-pc}/playback_gst_10.cpp | 0 {generic-pc => libgeneric-pc}/playback_lib.h | 0 {generic-pc => libgeneric-pc}/record.cpp | 0 {generic-pc => libgeneric-pc}/record_lib.h | 0 {generic-pc => libgeneric-pc}/video.cpp | 0 {generic-pc => libgeneric-pc}/video_lib.h | 0 20 files changed, 2 insertions(+), 2 deletions(-) rename {generic-pc => libgeneric-pc}/Makefile.am (100%) rename {generic-pc => libgeneric-pc}/audio.cpp (100%) rename {generic-pc => libgeneric-pc}/audio_lib.h (100%) rename {generic-pc => libgeneric-pc}/clutterfb.cpp (100%) rename {generic-pc => libgeneric-pc}/dmx.cpp (100%) rename {generic-pc => libgeneric-pc}/glfb.cpp (100%) rename {generic-pc => libgeneric-pc}/glfb_priv.h (100%) rename {generic-pc => libgeneric-pc}/hardware_caps.c (100%) rename {generic-pc => libgeneric-pc}/init.cpp (100%) rename {generic-pc => libgeneric-pc}/playback.cpp (100%) rename {generic-pc => libgeneric-pc}/playback_gst.h (100%) rename {generic-pc => libgeneric-pc}/playback_gst_01.cpp (100%) rename {generic-pc => libgeneric-pc}/playback_gst_10.cpp (100%) rename {generic-pc => libgeneric-pc}/playback_lib.h (100%) rename {generic-pc => libgeneric-pc}/record.cpp (100%) rename {generic-pc => libgeneric-pc}/record_lib.h (100%) rename {generic-pc => libgeneric-pc}/video.cpp (100%) rename {generic-pc => libgeneric-pc}/video_lib.h (100%) diff --git a/Makefile.am b/Makefile.am index dd44a46..fd883e1 100644 --- a/Makefile.am +++ b/Makefile.am @@ -29,7 +29,7 @@ SUBDIRS += libraspi libstb_hal_la_LIBADD += \ libraspi/libraspi.la else -SUBDIRS += generic-pc +SUBDIRS += libgeneric-pc libstb_hal_la_LIBADD += \ generic-pc/libgeneric.la endif diff --git a/configure.ac b/configure.ac index c66a156..60667e1 100644 --- a/configure.ac +++ b/configure.ac @@ -89,13 +89,13 @@ fi AC_OUTPUT([ Makefile common/Makefile -generic-pc/Makefile libarmbox/Makefile libazbox/Makefile libduckbox/Makefile libdvbci/Makefile libeplayer3/Makefile libeplayer3-arm/Makefile +libgeneric-pc/Makefile libraspi/Makefile libspark/Makefile libtriple/Makefile diff --git a/generic-pc/Makefile.am b/libgeneric-pc/Makefile.am similarity index 100% rename from generic-pc/Makefile.am rename to libgeneric-pc/Makefile.am diff --git a/generic-pc/audio.cpp b/libgeneric-pc/audio.cpp similarity index 100% rename from generic-pc/audio.cpp rename to libgeneric-pc/audio.cpp diff --git a/generic-pc/audio_lib.h b/libgeneric-pc/audio_lib.h similarity index 100% rename from generic-pc/audio_lib.h rename to libgeneric-pc/audio_lib.h diff --git a/generic-pc/clutterfb.cpp b/libgeneric-pc/clutterfb.cpp similarity index 100% rename from generic-pc/clutterfb.cpp rename to libgeneric-pc/clutterfb.cpp diff --git a/generic-pc/dmx.cpp b/libgeneric-pc/dmx.cpp similarity index 100% rename from generic-pc/dmx.cpp rename to libgeneric-pc/dmx.cpp diff --git a/generic-pc/glfb.cpp b/libgeneric-pc/glfb.cpp similarity index 100% rename from generic-pc/glfb.cpp rename to libgeneric-pc/glfb.cpp diff --git a/generic-pc/glfb_priv.h b/libgeneric-pc/glfb_priv.h similarity index 100% rename from generic-pc/glfb_priv.h rename to libgeneric-pc/glfb_priv.h diff --git a/generic-pc/hardware_caps.c b/libgeneric-pc/hardware_caps.c similarity index 100% rename from generic-pc/hardware_caps.c rename to libgeneric-pc/hardware_caps.c diff --git a/generic-pc/init.cpp b/libgeneric-pc/init.cpp similarity index 100% rename from generic-pc/init.cpp rename to libgeneric-pc/init.cpp diff --git a/generic-pc/playback.cpp b/libgeneric-pc/playback.cpp similarity index 100% rename from generic-pc/playback.cpp rename to libgeneric-pc/playback.cpp diff --git a/generic-pc/playback_gst.h b/libgeneric-pc/playback_gst.h similarity index 100% rename from generic-pc/playback_gst.h rename to libgeneric-pc/playback_gst.h diff --git a/generic-pc/playback_gst_01.cpp b/libgeneric-pc/playback_gst_01.cpp similarity index 100% rename from generic-pc/playback_gst_01.cpp rename to libgeneric-pc/playback_gst_01.cpp diff --git a/generic-pc/playback_gst_10.cpp b/libgeneric-pc/playback_gst_10.cpp similarity index 100% rename from generic-pc/playback_gst_10.cpp rename to libgeneric-pc/playback_gst_10.cpp diff --git a/generic-pc/playback_lib.h b/libgeneric-pc/playback_lib.h similarity index 100% rename from generic-pc/playback_lib.h rename to libgeneric-pc/playback_lib.h diff --git a/generic-pc/record.cpp b/libgeneric-pc/record.cpp similarity index 100% rename from generic-pc/record.cpp rename to libgeneric-pc/record.cpp diff --git a/generic-pc/record_lib.h b/libgeneric-pc/record_lib.h similarity index 100% rename from generic-pc/record_lib.h rename to libgeneric-pc/record_lib.h diff --git a/generic-pc/video.cpp b/libgeneric-pc/video.cpp similarity index 100% rename from generic-pc/video.cpp rename to libgeneric-pc/video.cpp diff --git a/generic-pc/video_lib.h b/libgeneric-pc/video_lib.h similarity index 100% rename from generic-pc/video_lib.h rename to libgeneric-pc/video_lib.h From dc6917f4458ee07f15c392d8f86c6f1d339f4ad4 Mon Sep 17 00:00:00 2001 From: vanhofen Date: Sun, 23 Dec 2018 22:33:56 +0100 Subject: [PATCH 43/52] Makefile.am: put commented libtest lines together Origin commit data ------------------ Branch: master Commit: https://github.com/neutrino-images/ni-libstb-hal/commit/9f5b84c764e46eb86abff6efab207a23319d9e54 Author: vanhofen Date: 2018-12-23 (Sun, 23 Dec 2018) Origin message was: ------------------ - Makefile.am: put commented libtest lines together ------------------ No further description and justification available within origin commit message! ------------------ This commit was generated by Migit --- Makefile.am | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Makefile.am b/Makefile.am index fd883e1..e9edd85 100644 --- a/Makefile.am +++ b/Makefile.am @@ -3,12 +3,11 @@ ACLOCAL_AMFLAGS = -I m4 lib_LTLIBRARIES = libstb-hal.la libstb_hal_la_SOURCES = SUBDIRS = common tools -#bin_PROGRAMS = libstb-hal-test libstb_hal_la_LIBADD = \ common/libcommon.la - +#bin_PROGRAMS = libstb-hal-test #libstb_hal_test_SOURCES = libtest.cpp #libstb_hal_test_LDADD = libstb-hal.la From 025afdf66c7d4e4a3fd64f83db9161fbced139b0 Mon Sep 17 00:00:00 2001 From: vanhofen Date: Sun, 23 Dec 2018 22:33:56 +0100 Subject: [PATCH 44/52] move libeplayer3-sh4 code to libeplayer3-sh4 directory; ... rename library to libeplayer3_sh4.la Origin commit data ------------------ Branch: master Commit: https://github.com/neutrino-images/ni-libstb-hal/commit/974a07b900fc5b46567561d2a838913c713f88db Author: vanhofen Date: 2018-12-23 (Sun, 23 Dec 2018) Origin message was: ------------------ - move libeplayer3-sh4 code to libeplayer3-sh4 directory; ... rename library to libeplayer3_sh4.la ------------------ This commit was generated by Migit --- Makefile.am | 8 ++++---- configure.ac | 2 +- {libeplayer3 => libeplayer3-sh4}/Makefile.am | 6 +++--- {libeplayer3 => libeplayer3-sh4}/README | 0 {libeplayer3 => libeplayer3-sh4}/include/input.h | 0 {libeplayer3 => libeplayer3-sh4}/include/manager.h | 0 {libeplayer3 => libeplayer3-sh4}/include/misc.h | 0 {libeplayer3 => libeplayer3-sh4}/include/output.h | 0 {libeplayer3 => libeplayer3-sh4}/include/pes.h | 0 {libeplayer3 => libeplayer3-sh4}/include/player.h | 0 {libeplayer3 => libeplayer3-sh4}/include/writer.h | 0 {libeplayer3 => libeplayer3-sh4}/input.cpp | 0 {libeplayer3 => libeplayer3-sh4}/manager.cpp | 0 {libeplayer3 => libeplayer3-sh4}/output.cpp | 0 {libeplayer3 => libeplayer3-sh4}/player.cpp | 0 {libeplayer3 => libeplayer3-sh4}/writer/aac.cpp | 0 {libeplayer3 => libeplayer3-sh4}/writer/ac3.cpp | 0 {libeplayer3 => libeplayer3-sh4}/writer/divx.cpp | 0 {libeplayer3 => libeplayer3-sh4}/writer/dts.cpp | 0 {libeplayer3 => libeplayer3-sh4}/writer/h263.cpp | 0 {libeplayer3 => libeplayer3-sh4}/writer/h264.cpp | 0 {libeplayer3 => libeplayer3-sh4}/writer/misc.cpp | 0 {libeplayer3 => libeplayer3-sh4}/writer/mp3.cpp | 0 {libeplayer3 => libeplayer3-sh4}/writer/mpeg2.cpp | 0 {libeplayer3 => libeplayer3-sh4}/writer/pcm.cpp | 0 {libeplayer3 => libeplayer3-sh4}/writer/pes.cpp | 0 {libeplayer3 => libeplayer3-sh4}/writer/vc1.cpp | 0 {libeplayer3 => libeplayer3-sh4}/writer/wmv.cpp | 0 {libeplayer3 => libeplayer3-sh4}/writer/writer.cpp | 0 29 files changed, 8 insertions(+), 8 deletions(-) rename {libeplayer3 => libeplayer3-sh4}/Makefile.am (84%) rename {libeplayer3 => libeplayer3-sh4}/README (100%) rename {libeplayer3 => libeplayer3-sh4}/include/input.h (100%) rename {libeplayer3 => libeplayer3-sh4}/include/manager.h (100%) rename {libeplayer3 => libeplayer3-sh4}/include/misc.h (100%) rename {libeplayer3 => libeplayer3-sh4}/include/output.h (100%) rename {libeplayer3 => libeplayer3-sh4}/include/pes.h (100%) rename {libeplayer3 => libeplayer3-sh4}/include/player.h (100%) rename {libeplayer3 => libeplayer3-sh4}/include/writer.h (100%) rename {libeplayer3 => libeplayer3-sh4}/input.cpp (100%) rename {libeplayer3 => libeplayer3-sh4}/manager.cpp (100%) rename {libeplayer3 => libeplayer3-sh4}/output.cpp (100%) rename {libeplayer3 => libeplayer3-sh4}/player.cpp (100%) rename {libeplayer3 => libeplayer3-sh4}/writer/aac.cpp (100%) rename {libeplayer3 => libeplayer3-sh4}/writer/ac3.cpp (100%) rename {libeplayer3 => libeplayer3-sh4}/writer/divx.cpp (100%) rename {libeplayer3 => libeplayer3-sh4}/writer/dts.cpp (100%) rename {libeplayer3 => libeplayer3-sh4}/writer/h263.cpp (100%) rename {libeplayer3 => libeplayer3-sh4}/writer/h264.cpp (100%) rename {libeplayer3 => libeplayer3-sh4}/writer/misc.cpp (100%) rename {libeplayer3 => libeplayer3-sh4}/writer/mp3.cpp (100%) rename {libeplayer3 => libeplayer3-sh4}/writer/mpeg2.cpp (100%) rename {libeplayer3 => libeplayer3-sh4}/writer/pcm.cpp (100%) rename {libeplayer3 => libeplayer3-sh4}/writer/pes.cpp (100%) rename {libeplayer3 => libeplayer3-sh4}/writer/vc1.cpp (100%) rename {libeplayer3 => libeplayer3-sh4}/writer/wmv.cpp (100%) rename {libeplayer3 => libeplayer3-sh4}/writer/writer.cpp (100%) diff --git a/Makefile.am b/Makefile.am index e9edd85..c08f55e 100644 --- a/Makefile.am +++ b/Makefile.am @@ -35,17 +35,17 @@ endif endif if BOXTYPE_SPARK #libstb_hal_test_LDADD += -lasound -SUBDIRS += libspark libeplayer3 +SUBDIRS += libspark libeplayer3-sh4 libstb_hal_la_LIBADD += \ libspark/libspark.la \ - libeplayer3/libeplayer3.la + libeplayer3-sh4/libeplayer3_sh4.la endif if BOXTYPE_DUCKBOX #libstb_hal_test_LDADD += -lasound -SUBDIRS += libduckbox libeplayer3 libdvbci +SUBDIRS += libduckbox libeplayer3-sh4 libdvbci libstb_hal_la_LIBADD += \ libduckbox/libduckbox.la \ - libeplayer3/libeplayer3.la \ + libeplayer3-sh4/libeplayer3_sh4.la \ libdvbci/libdvbci.la endif if BOXTYPE_ARMBOX diff --git a/configure.ac b/configure.ac index 60667e1..df30f91 100644 --- a/configure.ac +++ b/configure.ac @@ -93,8 +93,8 @@ libarmbox/Makefile libazbox/Makefile libduckbox/Makefile libdvbci/Makefile -libeplayer3/Makefile libeplayer3-arm/Makefile +libeplayer3-sh4/Makefile libgeneric-pc/Makefile libraspi/Makefile libspark/Makefile diff --git a/libeplayer3/Makefile.am b/libeplayer3-sh4/Makefile.am similarity index 84% rename from libeplayer3/Makefile.am rename to libeplayer3-sh4/Makefile.am index 814d106..d129566 100644 --- a/libeplayer3/Makefile.am +++ b/libeplayer3-sh4/Makefile.am @@ -1,13 +1,13 @@ AUTOMAKE_OPTIONS = subdir-objects -noinst_LTLIBRARIES = libeplayer3.la +noinst_LTLIBRARIES = libeplayer3_sh4.la AM_CPPFLAGS = -D__STDC_CONSTANT_MACROS -D__STDC_LIMIT_MACROS AM_CPPFLAGS += -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE AM_CPPFLAGS += -I$(srcdir)/include AM_CXXFLAGS = -fno-rtti -fno-exceptions -fno-strict-aliasing -libeplayer3_la_SOURCES = \ +libeplayer3_sh4_la_SOURCES = \ input.cpp output.cpp manager.cpp player.cpp \ writer/writer.cpp \ writer/pes.cpp \ @@ -18,6 +18,6 @@ libeplayer3_la_SOURCES = \ # writer/h264.cpp # writer/h263.cpp writer/vc1.cpp writer/pcm.cpp writer/aac.cpp -LIBEPLAYER3_LIBS = libeplayer3.la +LIBEPLAYER3_LIBS = libeplayer3_sh4.la # -lpthread -lavformat -lavcodec -lavutil -lswresample -lm diff --git a/libeplayer3/README b/libeplayer3-sh4/README similarity index 100% rename from libeplayer3/README rename to libeplayer3-sh4/README diff --git a/libeplayer3/include/input.h b/libeplayer3-sh4/include/input.h similarity index 100% rename from libeplayer3/include/input.h rename to libeplayer3-sh4/include/input.h diff --git a/libeplayer3/include/manager.h b/libeplayer3-sh4/include/manager.h similarity index 100% rename from libeplayer3/include/manager.h rename to libeplayer3-sh4/include/manager.h diff --git a/libeplayer3/include/misc.h b/libeplayer3-sh4/include/misc.h similarity index 100% rename from libeplayer3/include/misc.h rename to libeplayer3-sh4/include/misc.h diff --git a/libeplayer3/include/output.h b/libeplayer3-sh4/include/output.h similarity index 100% rename from libeplayer3/include/output.h rename to libeplayer3-sh4/include/output.h diff --git a/libeplayer3/include/pes.h b/libeplayer3-sh4/include/pes.h similarity index 100% rename from libeplayer3/include/pes.h rename to libeplayer3-sh4/include/pes.h diff --git a/libeplayer3/include/player.h b/libeplayer3-sh4/include/player.h similarity index 100% rename from libeplayer3/include/player.h rename to libeplayer3-sh4/include/player.h diff --git a/libeplayer3/include/writer.h b/libeplayer3-sh4/include/writer.h similarity index 100% rename from libeplayer3/include/writer.h rename to libeplayer3-sh4/include/writer.h diff --git a/libeplayer3/input.cpp b/libeplayer3-sh4/input.cpp similarity index 100% rename from libeplayer3/input.cpp rename to libeplayer3-sh4/input.cpp diff --git a/libeplayer3/manager.cpp b/libeplayer3-sh4/manager.cpp similarity index 100% rename from libeplayer3/manager.cpp rename to libeplayer3-sh4/manager.cpp diff --git a/libeplayer3/output.cpp b/libeplayer3-sh4/output.cpp similarity index 100% rename from libeplayer3/output.cpp rename to libeplayer3-sh4/output.cpp diff --git a/libeplayer3/player.cpp b/libeplayer3-sh4/player.cpp similarity index 100% rename from libeplayer3/player.cpp rename to libeplayer3-sh4/player.cpp diff --git a/libeplayer3/writer/aac.cpp b/libeplayer3-sh4/writer/aac.cpp similarity index 100% rename from libeplayer3/writer/aac.cpp rename to libeplayer3-sh4/writer/aac.cpp diff --git a/libeplayer3/writer/ac3.cpp b/libeplayer3-sh4/writer/ac3.cpp similarity index 100% rename from libeplayer3/writer/ac3.cpp rename to libeplayer3-sh4/writer/ac3.cpp diff --git a/libeplayer3/writer/divx.cpp b/libeplayer3-sh4/writer/divx.cpp similarity index 100% rename from libeplayer3/writer/divx.cpp rename to libeplayer3-sh4/writer/divx.cpp diff --git a/libeplayer3/writer/dts.cpp b/libeplayer3-sh4/writer/dts.cpp similarity index 100% rename from libeplayer3/writer/dts.cpp rename to libeplayer3-sh4/writer/dts.cpp diff --git a/libeplayer3/writer/h263.cpp b/libeplayer3-sh4/writer/h263.cpp similarity index 100% rename from libeplayer3/writer/h263.cpp rename to libeplayer3-sh4/writer/h263.cpp diff --git a/libeplayer3/writer/h264.cpp b/libeplayer3-sh4/writer/h264.cpp similarity index 100% rename from libeplayer3/writer/h264.cpp rename to libeplayer3-sh4/writer/h264.cpp diff --git a/libeplayer3/writer/misc.cpp b/libeplayer3-sh4/writer/misc.cpp similarity index 100% rename from libeplayer3/writer/misc.cpp rename to libeplayer3-sh4/writer/misc.cpp diff --git a/libeplayer3/writer/mp3.cpp b/libeplayer3-sh4/writer/mp3.cpp similarity index 100% rename from libeplayer3/writer/mp3.cpp rename to libeplayer3-sh4/writer/mp3.cpp diff --git a/libeplayer3/writer/mpeg2.cpp b/libeplayer3-sh4/writer/mpeg2.cpp similarity index 100% rename from libeplayer3/writer/mpeg2.cpp rename to libeplayer3-sh4/writer/mpeg2.cpp diff --git a/libeplayer3/writer/pcm.cpp b/libeplayer3-sh4/writer/pcm.cpp similarity index 100% rename from libeplayer3/writer/pcm.cpp rename to libeplayer3-sh4/writer/pcm.cpp diff --git a/libeplayer3/writer/pes.cpp b/libeplayer3-sh4/writer/pes.cpp similarity index 100% rename from libeplayer3/writer/pes.cpp rename to libeplayer3-sh4/writer/pes.cpp diff --git a/libeplayer3/writer/vc1.cpp b/libeplayer3-sh4/writer/vc1.cpp similarity index 100% rename from libeplayer3/writer/vc1.cpp rename to libeplayer3-sh4/writer/vc1.cpp diff --git a/libeplayer3/writer/wmv.cpp b/libeplayer3-sh4/writer/wmv.cpp similarity index 100% rename from libeplayer3/writer/wmv.cpp rename to libeplayer3-sh4/writer/wmv.cpp diff --git a/libeplayer3/writer/writer.cpp b/libeplayer3-sh4/writer/writer.cpp similarity index 100% rename from libeplayer3/writer/writer.cpp rename to libeplayer3-sh4/writer/writer.cpp From 99793f1362454126a30d995fc9e42853ae66eaea Mon Sep 17 00:00:00 2001 From: vanhofen Date: Sun, 23 Dec 2018 22:33:56 +0100 Subject: [PATCH 45/52] align includes and Makefiles to directory changes Origin commit data ------------------ Branch: master Commit: https://github.com/neutrino-images/ni-libstb-hal/commit/52caa02ddce5b7c79675cec4c2bb1f568f147d5c Author: vanhofen Date: 2018-12-23 (Sun, 23 Dec 2018) Origin message was: ------------------ - align includes and Makefiles to directory changes ------------------ No further description and justification available within origin commit message! ------------------ This commit was generated by Migit --- include/audio_hal.h | 6 +++--- include/playback_hal.h | 8 ++++---- include/record_hal.h | 6 +++--- include/video_hal.h | 6 +++--- libduckbox/Makefile.am | 2 +- libspark/Makefile.am | 2 +- 6 files changed, 15 insertions(+), 15 deletions(-) diff --git a/include/audio_hal.h b/include/audio_hal.h index f45ea2d..6ea7a74 100644 --- a/include/audio_hal.h +++ b/include/audio_hal.h @@ -10,12 +10,12 @@ #elif HAVE_ARM_HARDWARE #include "../libarmbox/audio_lib.h" #elif HAVE_AZBOX_HARDWARE -#include "../azbox/audio_lib.h" +#include "../libazbox/audio_lib.h" #elif HAVE_GENERIC_HARDWARE #if BOXMODEL_RASPI -#include "../raspi/audio_lib.h" +#include "../libraspi/audio_lib.h" #else -#include "../generic-pc/audio_lib.h" +#include "../libgeneric-pc/audio_lib.h" #endif #else #error neither HAVE_TRIPLEDRAGON nor HAVE_SPARK_HARDWARE defined diff --git a/include/playback_hal.h b/include/playback_hal.h index 690f4ab..e18cab2 100644 --- a/include/playback_hal.h +++ b/include/playback_hal.h @@ -12,15 +12,15 @@ #include "../libarmbox/playback_libeplayer3.h" #endif #elif HAVE_AZBOX_HARDWARE -#include "../azbox/playback_lib.h" +#include "../libazbox/playback_lib.h" #elif HAVE_GENERIC_HARDWARE #if BOXMODEL_RASPI -#include "../raspi/playback_lib.h" +#include "../libraspi/playback_lib.h" #else #if ENABLE_GSTREAMER -#include "../generic-pc/playback_gst.h" +#include "../libgeneric-pc/playback_gst.h" #else -#include "../generic-pc/playback_lib.h" +#include "../libgeneric-pc/playback_lib.h" #endif #endif #else diff --git a/include/record_hal.h b/include/record_hal.h index 40f50e6..a5b0fdf 100644 --- a/include/record_hal.h +++ b/include/record_hal.h @@ -8,12 +8,12 @@ #elif HAVE_ARM_HARDWARE #include "../libarmbox/record_lib.h" #elif HAVE_AZBOX_HARDWARE -#include "../azbox/record_lib.h" +#include "../libazbox/record_lib.h" #elif HAVE_GENERIC_HARDWARE #if BOXMODEL_RASPI -#include "../raspi/record_lib.h" +#include "../libraspi/record_lib.h" #else -#include "../generic-pc/record_lib.h" +#include "../libgeneric-pc/record_lib.h" #endif #else #error neither HAVE_TRIPLEDRAGON nor HAVE_SPARK_HARDWARE defined diff --git a/include/video_hal.h b/include/video_hal.h index 0ea7d6c..8e30d4c 100644 --- a/include/video_hal.h +++ b/include/video_hal.h @@ -9,12 +9,12 @@ #include "../libarmbox/video_lib.h" #include "../libarmbox/hdmi_cec.h" #elif HAVE_AZBOX_HARDWARE -#include "../azbox/video_lib.h" +#include "../libazbox/video_lib.h" #elif HAVE_GENERIC_HARDWARE #if BOXMODEL_RASPI -#include "../raspi/video_lib.h" +#include "../libraspi/video_lib.h" #else -#include "../generic-pc/video_lib.h" +#include "../libgeneric-pc/video_lib.h" #endif #else #error neither HAVE_TRIPLEDRAGON nor HAVE_SPARK_HARDWARE defined diff --git a/libduckbox/Makefile.am b/libduckbox/Makefile.am index 5b47cab..d636086 100644 --- a/libduckbox/Makefile.am +++ b/libduckbox/Makefile.am @@ -3,7 +3,7 @@ noinst_LTLIBRARIES = libduckbox.la AM_CPPFLAGS = \ -I$(top_srcdir)/common \ -I$(top_srcdir)/include \ - -I$(top_srcdir)/libeplayer3/include + -I$(top_srcdir)/libeplayer3-sh4/include AM_CXXFLAGS = -fno-rtti -fno-exceptions -fno-strict-aliasing diff --git a/libspark/Makefile.am b/libspark/Makefile.am index 74f9837..50efca9 100644 --- a/libspark/Makefile.am +++ b/libspark/Makefile.am @@ -3,7 +3,7 @@ noinst_LTLIBRARIES = libspark.la AM_CPPFLAGS = \ -I$(top_srcdir)/common \ -I$(top_srcdir)/include \ - -I$(top_srcdir)/libeplayer3/include + -I$(top_srcdir)/libeplayer3-sh4/include AM_CXXFLAGS = -fno-rtti -fno-exceptions -fno-strict-aliasing AM_LDFLAGS = \ From a7d79f7b9f341ba9023fa52cd7f79368c65e4102 Mon Sep 17 00:00:00 2001 From: vanhofen Date: Sun, 23 Dec 2018 22:33:56 +0100 Subject: [PATCH 46/52] remove some more obsolete compatibility headers Origin commit data ------------------ Branch: master Commit: https://github.com/neutrino-images/ni-libstb-hal/commit/ff3d970af88724162360791f3016dfd2443bb097 Author: vanhofen Date: 2018-12-23 (Sun, 23 Dec 2018) Origin message was: ------------------ - remove some more obsolete compatibility headers ------------------ No further description and justification available within origin commit message! ------------------ This commit was generated by Migit --- libraspi/dmx.cpp | 2 +- libraspi/dmx_cs.h | 1 - libtriple/playback.h | 1 - 3 files changed, 1 insertion(+), 3 deletions(-) delete mode 100644 libraspi/dmx_cs.h delete mode 100644 libtriple/playback.h diff --git a/libraspi/dmx.cpp b/libraspi/dmx.cpp index 0858a47..e09ecbc 100644 --- a/libraspi/dmx.cpp +++ b/libraspi/dmx.cpp @@ -32,7 +32,7 @@ #include #include #include -#include "dmx_hal.h" +#include "dmx_lib.h" #include "lt_debug.h" #include "video_lib.h" diff --git a/libraspi/dmx_cs.h b/libraspi/dmx_cs.h deleted file mode 100644 index 175d8cb..0000000 --- a/libraspi/dmx_cs.h +++ /dev/null @@ -1 +0,0 @@ -#include "dmx_lib.h" diff --git a/libtriple/playback.h b/libtriple/playback.h deleted file mode 100644 index 6e6b4c5..0000000 --- a/libtriple/playback.h +++ /dev/null @@ -1 +0,0 @@ -#include "playback_td.h" From cb0f746afecea4a6447bcf4d67da511f9d70a81a Mon Sep 17 00:00:00 2001 From: vanhofen Date: Sun, 23 Dec 2018 22:33:56 +0100 Subject: [PATCH 47/52] re-split ca.h/ca_ci.h for a better transparency Origin commit data ------------------ Branch: master Commit: https://github.com/neutrino-images/ni-libstb-hal/commit/b88cb3be6c9fb7ace01dd460999a1d5685cbdc6d Author: vanhofen Date: 2018-12-23 (Sun, 23 Dec 2018) Origin message was: ------------------ - re-split ca.h/ca_ci.h for a better transparency ------------------ No further description and justification available within origin commit message! ------------------ This commit was generated by Migit --- Makefile.am | 3 +- include/ca.h | 119 +++++++++++++++++++++++++++++++++++++++ include/ca_hal.h | 125 +---------------------------------------- libdvbci/dvbci_mmi.cpp | 2 +- 4 files changed, 124 insertions(+), 125 deletions(-) create mode 100644 include/ca.h diff --git a/Makefile.am b/Makefile.am index c08f55e..af6a81b 100644 --- a/Makefile.am +++ b/Makefile.am @@ -66,9 +66,10 @@ endif pkginclude_HEADERS = \ include/audio_hal.h \ + include/ca.h \ + include/ca_ci.h \ include/ca_hal.h \ include/cs_api.h \ - include/ca_ci.h \ include/cs_types.h \ include/dmx_hal.h \ include/glfb.h \ diff --git a/include/ca.h b/include/ca.h new file mode 100644 index 0000000..d615f43 --- /dev/null +++ b/include/ca.h @@ -0,0 +1,119 @@ +#ifndef __ca__ +#define __ca__ + +#include +#include "cs_types.h" +#include +#include +typedef std::vector CaIdVector; +typedef std::vector::iterator CaIdVectorIterator; +typedef std::vector::const_iterator CaIdVectorConstIterator; + +enum CA_INIT_MASK { + CA_INIT_SC = 1, + CA_INIT_CI, + CA_INIT_BOTH +}; + +enum CA_SLOT_TYPE { + CA_SLOT_TYPE_SMARTCARD, + CA_SLOT_TYPE_CI, + CA_SLOT_TYPE_ALL +}; + +enum CA_MESSAGE_FLAGS { + CA_MESSAGE_EMPTY = (1 << 0), + CA_MESSAGE_HAS_PARAM1_DATA = (1 << 1), // Free after use! + CA_MESSAGE_HAS_PARAM1_INT = (1 << 2), + CA_MESSAGE_HAS_PARAM1_PTR = (1 << 3), + CA_MESSAGE_HAS_PARAM2_INT = (1 << 4), + CA_MESSAGE_HAS_PARAM2_PTR = (1 << 5), + CA_MESSAGE_HAS_PARAM2_DATA = (1 << 6), + CA_MESSAGE_HAS_PARAM3_DATA = (1 << 7), // Free after use! + CA_MESSAGE_HAS_PARAM3_INT = (1 << 8), + CA_MESSAGE_HAS_PARAM3_PTR = (1 << 9), + CA_MESSAGE_HAS_PARAM4_INT = (1 << 10), + CA_MESSAGE_HAS_PARAM4_PTR = (1 << 11), + CA_MESSAGE_HAS_PARAM4_DATA = (1 << 12), + CA_MESSAGE_HAS_PARAM5_INT = (1 << 13), + CA_MESSAGE_HAS_PARAM5_PTR = (1 << 14), + CA_MESSAGE_HAS_PARAM5_DATA = (1 << 15), + CA_MESSAGE_HAS_PARAM6_INT = (1 << 16), + CA_MESSAGE_HAS_PARAM6_PTR = (1 << 17), + CA_MESSAGE_HAS_PARAM6_DATA = (1 << 18), + CA_MESSAGE_HAS_PARAM1_LONG = (1 << 19), + CA_MESSAGE_HAS_PARAM2_LONG = (1 << 20), + CA_MESSAGE_HAS_PARAM3_LONG = (1 << 21), + CA_MESSAGE_HAS_PARAM4_LONG = (1 << 22) +}; + +enum CA_MESSAGE_MSGID { + CA_MESSAGE_MSG_INSERTED, + CA_MESSAGE_MSG_REMOVED, + CA_MESSAGE_MSG_INIT_OK, + CA_MESSAGE_MSG_INIT_FAILED, + CA_MESSAGE_MSG_MMI_MENU, + CA_MESSAGE_MSG_MMI_MENU_ENTER, + CA_MESSAGE_MSG_MMI_MENU_ANSWER, + CA_MESSAGE_MSG_MMI_LIST, + CA_MESSAGE_MSG_MMI_TEXT, + CA_MESSAGE_MSG_MMI_REQ_INPUT, + CA_MESSAGE_MSG_MMI_CLOSE, + CA_MESSAGE_MSG_INTERNAL, + CA_MESSAGE_MSG_PMT_ARRIVED, + CA_MESSAGE_MSG_CAPMT_ARRIVED, + CA_MESSAGE_MSG_CAT_ARRIVED, + CA_MESSAGE_MSG_ECM_ARRIVED, + CA_MESSAGE_MSG_EMM_ARRIVED, + CA_MESSAGE_MSG_CHANNEL_CHANGE, + CA_MESSAGE_MSG_GUI_READY, + CA_MESSAGE_MSG_EXIT +}; + +typedef std::set ca_map_t; +typedef ca_map_t::iterator ca_map_iterator_t; + +typedef struct CA_MESSAGE { + uint32_t MsgId; + enum CA_SLOT_TYPE SlotType; + int Slot; + uint32_t Flags; + union { + uint8_t *Data[4]; + uint32_t Param[4]; + void *Ptr[4]; + uint64_t ParamLong[4]; + } Msg; +} CA_MESSAGE; + +class cCA { +private: + cCA(void); +public: + uint32_t GetNumberCISlots(void); + uint32_t GetNumberSmartCardSlots(void); + static cCA *GetInstance(void); + bool SendPMT(int Unit, unsigned char *Data, int Len, CA_SLOT_TYPE SlotType = CA_SLOT_TYPE_ALL); +// bool SendCAPMT(u64 /*Source*/, u8 /*DemuxSource*/, u8 /*DemuxMask*/, const unsigned char * /*CAPMT*/, u32 /*CAPMTLen*/, const unsigned char * /*RawPMT*/, u32 /*RawPMTLen*/) { return true; }; + bool SendCAPMT(u64 /*Source*/, u8 /*DemuxSource*/, u8 /*DemuxMask*/, const unsigned char * /*CAPMT*/, u32 /*CAPMTLen*/, const unsigned char * /*RawPMT*/, u32 /*RawPMTLen*/, enum CA_SLOT_TYPE + /*SlotType*/, unsigned char /*scrambled = 0*/, ca_map_t /*camap = std::set()*/, int /*mode = 0*/, bool /*enabled = false*/) { return true; }; + bool SendMessage(const CA_MESSAGE *Msg); + void SetInitMask(enum CA_INIT_MASK InitMask); + int GetCAIDS(CaIdVector & /*Caids*/) { return 0; }; + bool Start(void); + void Stop(void); + void Ready(bool Set); + void ModuleReset(enum CA_SLOT_TYPE, uint32_t Slot); + bool ModulePresent(enum CA_SLOT_TYPE, uint32_t Slot); + void ModuleName(enum CA_SLOT_TYPE, uint32_t Slot, char *Name); + void MenuEnter(enum CA_SLOT_TYPE, uint32_t Slot); + void MenuAnswer(enum CA_SLOT_TYPE, uint32_t Slot, uint32_t choice); + void InputAnswer(enum CA_SLOT_TYPE, uint32_t Slot, uint8_t * Data, int Len); + void MenuClose(enum CA_SLOT_TYPE, uint32_t Slot); + void SetTSClock(u32 /*Speed*/) { return; }; + bool checkChannelID(u64 /*chanID*/) { return false; }; + void setCheckLiveSlot(int /*check*/) { return; }; + virtual ~cCA(); +}; + +#endif // __ca__ diff --git a/include/ca_hal.h b/include/ca_hal.h index 67796e3..09e964f 100644 --- a/include/ca_hal.h +++ b/include/ca_hal.h @@ -1,126 +1,5 @@ -/* - * dummy functions to implement ca_cs.h interface - */ #if HAVE_DUCKBOX_HARDWARE || HAVE_ARM_HARDWARE #include "ca_ci.h" #else -#ifndef __ca_hal__ -#define __ca_hal__ - -#include -#include "cs_types.h" -#include -#include -typedef std::vector CaIdVector; -typedef std::vector::iterator CaIdVectorIterator; -typedef std::vector::const_iterator CaIdVectorConstIterator; - -enum CA_INIT_MASK { - CA_INIT_SC = 1, - CA_INIT_CI, - CA_INIT_BOTH -}; - -enum CA_SLOT_TYPE { - CA_SLOT_TYPE_SMARTCARD, - CA_SLOT_TYPE_CI, - CA_SLOT_TYPE_ALL -}; - -enum CA_MESSAGE_FLAGS { - CA_MESSAGE_EMPTY = (1 << 0), - CA_MESSAGE_HAS_PARAM1_DATA = (1 << 1), // Free after use! - CA_MESSAGE_HAS_PARAM1_INT = (1 << 2), - CA_MESSAGE_HAS_PARAM1_PTR = (1 << 3), - CA_MESSAGE_HAS_PARAM2_INT = (1 << 4), - CA_MESSAGE_HAS_PARAM2_PTR = (1 << 5), - CA_MESSAGE_HAS_PARAM2_DATA = (1 << 6), - CA_MESSAGE_HAS_PARAM3_DATA = (1 << 7), // Free after use! - CA_MESSAGE_HAS_PARAM3_INT = (1 << 8), - CA_MESSAGE_HAS_PARAM3_PTR = (1 << 9), - CA_MESSAGE_HAS_PARAM4_INT = (1 << 10), - CA_MESSAGE_HAS_PARAM4_PTR = (1 << 11), - CA_MESSAGE_HAS_PARAM4_DATA = (1 << 12), - CA_MESSAGE_HAS_PARAM5_INT = (1 << 13), - CA_MESSAGE_HAS_PARAM5_PTR = (1 << 14), - CA_MESSAGE_HAS_PARAM5_DATA = (1 << 15), - CA_MESSAGE_HAS_PARAM6_INT = (1 << 16), - CA_MESSAGE_HAS_PARAM6_PTR = (1 << 17), - CA_MESSAGE_HAS_PARAM6_DATA = (1 << 18), - CA_MESSAGE_HAS_PARAM1_LONG = (1 << 19), - CA_MESSAGE_HAS_PARAM2_LONG = (1 << 20), - CA_MESSAGE_HAS_PARAM3_LONG = (1 << 21), - CA_MESSAGE_HAS_PARAM4_LONG = (1 << 22) -}; - -enum CA_MESSAGE_MSGID { - CA_MESSAGE_MSG_INSERTED, - CA_MESSAGE_MSG_REMOVED, - CA_MESSAGE_MSG_INIT_OK, - CA_MESSAGE_MSG_INIT_FAILED, - CA_MESSAGE_MSG_MMI_MENU, - CA_MESSAGE_MSG_MMI_MENU_ENTER, - CA_MESSAGE_MSG_MMI_MENU_ANSWER, - CA_MESSAGE_MSG_MMI_LIST, - CA_MESSAGE_MSG_MMI_TEXT, - CA_MESSAGE_MSG_MMI_REQ_INPUT, - CA_MESSAGE_MSG_MMI_CLOSE, - CA_MESSAGE_MSG_INTERNAL, - CA_MESSAGE_MSG_PMT_ARRIVED, - CA_MESSAGE_MSG_CAPMT_ARRIVED, - CA_MESSAGE_MSG_CAT_ARRIVED, - CA_MESSAGE_MSG_ECM_ARRIVED, - CA_MESSAGE_MSG_EMM_ARRIVED, - CA_MESSAGE_MSG_CHANNEL_CHANGE, - CA_MESSAGE_MSG_GUI_READY, - CA_MESSAGE_MSG_EXIT -}; - -typedef std::set ca_map_t; -typedef ca_map_t::iterator ca_map_iterator_t; - -typedef struct CA_MESSAGE { - uint32_t MsgId; - enum CA_SLOT_TYPE SlotType; - int Slot; - uint32_t Flags; - union { - uint8_t *Data[4]; - uint32_t Param[4]; - void *Ptr[4]; - uint64_t ParamLong[4]; - } Msg; -} CA_MESSAGE; - -class cCA { -private: - cCA(void); -public: - uint32_t GetNumberCISlots(void); - uint32_t GetNumberSmartCardSlots(void); - static cCA *GetInstance(void); - bool SendPMT(int Unit, unsigned char *Data, int Len, CA_SLOT_TYPE SlotType = CA_SLOT_TYPE_ALL); -// bool SendCAPMT(u64 /*Source*/, u8 /*DemuxSource*/, u8 /*DemuxMask*/, const unsigned char * /*CAPMT*/, u32 /*CAPMTLen*/, const unsigned char * /*RawPMT*/, u32 /*RawPMTLen*/) { return true; }; - bool SendCAPMT(u64 /*Source*/, u8 /*DemuxSource*/, u8 /*DemuxMask*/, const unsigned char * /*CAPMT*/, u32 /*CAPMTLen*/, const unsigned char * /*RawPMT*/, u32 /*RawPMTLen*/, enum CA_SLOT_TYPE - /*SlotType*/, unsigned char /*scrambled = 0*/, ca_map_t /*camap = std::set()*/, int /*mode = 0*/, bool /*enabled = false*/) { return true; }; - bool SendMessage(const CA_MESSAGE *Msg); - void SetInitMask(enum CA_INIT_MASK InitMask); - int GetCAIDS(CaIdVector & /*Caids*/) { return 0; }; - bool Start(void); - void Stop(void); - void Ready(bool Set); - void ModuleReset(enum CA_SLOT_TYPE, uint32_t Slot); - bool ModulePresent(enum CA_SLOT_TYPE, uint32_t Slot); - void ModuleName(enum CA_SLOT_TYPE, uint32_t Slot, char *Name); - void MenuEnter(enum CA_SLOT_TYPE, uint32_t Slot); - void MenuAnswer(enum CA_SLOT_TYPE, uint32_t Slot, uint32_t choice); - void InputAnswer(enum CA_SLOT_TYPE, uint32_t Slot, uint8_t * Data, int Len); - void MenuClose(enum CA_SLOT_TYPE, uint32_t Slot); - void SetTSClock(u32 /*Speed*/) { return; }; - bool checkChannelID(u64 /*chanID*/) { return false; }; - void setCheckLiveSlot(int /*check*/) { return; }; - virtual ~cCA(); -}; - -#endif // __ca_hal__ -#endif // HAVE_DUCKBOX_HARDWARE +#include "ca.h" +#endif diff --git a/libdvbci/dvbci_mmi.cpp b/libdvbci/dvbci_mmi.cpp index 2bd1928..5c87c09 100644 --- a/libdvbci/dvbci_mmi.cpp +++ b/libdvbci/dvbci_mmi.cpp @@ -5,7 +5,7 @@ #include #include "dvbci_mmi.h" -#include +#include eDVBCIMMISession::eDVBCIMMISession(eDVBCISlot *tslot) { From ca04aab7ff94ffe0f5c5ae3988cc07c49910ed62 Mon Sep 17 00:00:00 2001 From: vanhofen Date: Sun, 23 Dec 2018 22:33:56 +0100 Subject: [PATCH 48/52] fix one missing change Origin commit data ------------------ Branch: master Commit: https://github.com/neutrino-images/ni-libstb-hal/commit/d5bbe298ac238a7a20d2d4322a5960944b7c4241 Author: vanhofen Date: 2018-12-23 (Sun, 23 Dec 2018) Origin message was: ------------------ - fix one missing change ------------------ No further description and justification available within origin commit message! ------------------ This commit was generated by Migit --- Makefile.am | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile.am b/Makefile.am index af6a81b..cc4793a 100644 --- a/Makefile.am +++ b/Makefile.am @@ -30,7 +30,7 @@ libstb_hal_la_LIBADD += \ else SUBDIRS += libgeneric-pc libstb_hal_la_LIBADD += \ - generic-pc/libgeneric.la + libgeneric-pc/libgeneric.la endif endif if BOXTYPE_SPARK From f79b538ce90dc722a1d6786ebeae403f82ec1098 Mon Sep 17 00:00:00 2001 From: vanhofen Date: Sun, 23 Dec 2018 23:20:35 +0100 Subject: [PATCH 49/52] libraspi: fix links to libgeneric-pc directory Origin commit data ------------------ Branch: master Commit: https://github.com/neutrino-images/ni-libstb-hal/commit/fb16af600b5f047872a4f7da0bce4c227f9a5900 Author: vanhofen Date: 2018-12-23 (Sun, 23 Dec 2018) Origin message was: ------------------ - libraspi: fix links to libgeneric-pc directory ------------------ No further description and justification available within origin commit message! ------------------ This commit was generated by Migit --- libraspi/playback.cpp | 2 +- libraspi/playback_lib.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/libraspi/playback.cpp b/libraspi/playback.cpp index d2e1498..1d16e59 120000 --- a/libraspi/playback.cpp +++ b/libraspi/playback.cpp @@ -1 +1 @@ -../generic-pc/playback.cpp \ No newline at end of file +../libgeneric-pc/playback.cpp \ No newline at end of file diff --git a/libraspi/playback_lib.h b/libraspi/playback_lib.h index 5738cee..d6dd7e5 120000 --- a/libraspi/playback_lib.h +++ b/libraspi/playback_lib.h @@ -1 +1 @@ -../generic-pc/playback_lib.h \ No newline at end of file +../libgeneric-pc/playback_lib.h \ No newline at end of file From 9303c5f2aa77e7038f41a915d2cf5cd464a32b28 Mon Sep 17 00:00:00 2001 From: vanhofen Date: Sun, 23 Dec 2018 22:33:56 +0100 Subject: [PATCH 50/52] rename init_td.h => init.h Origin commit data ------------------ Branch: master Commit: https://github.com/neutrino-images/ni-libstb-hal/commit/4390d8395ae21b469b618865591f0ad6f33dc505 Author: vanhofen Date: 2018-12-23 (Sun, 23 Dec 2018) Origin message was: ------------------ - rename init_td.h => init.h ------------------ No further description and justification available within origin commit message! ------------------ This commit was generated by Migit --- Makefile.am | 2 +- include/cs_api.h | 2 +- include/init.h | 5 +++++ include/init_td.h | 5 ----- libarmbox/init.cpp | 2 +- libazbox/init.cpp | 2 +- libduckbox/init.cpp | 2 +- libgeneric-pc/init.cpp | 2 +- libraspi/init.cpp | 2 +- libspark/init.cpp | 2 +- libtest.cpp | 2 +- libtriple/init_td.cpp | 2 +- 12 files changed, 15 insertions(+), 15 deletions(-) create mode 100644 include/init.h delete mode 100644 include/init_td.h diff --git a/Makefile.am b/Makefile.am index cc4793a..cd5fab2 100644 --- a/Makefile.am +++ b/Makefile.am @@ -74,7 +74,7 @@ pkginclude_HEADERS = \ include/dmx_hal.h \ include/glfb.h \ include/hardware_caps.h \ - include/init_td.h \ + include/init.h \ include/mmi.h \ include/playback_hal.h \ include/pwrmngr.h \ diff --git a/include/cs_api.h b/include/cs_api.h index 38ecf2c..05b0c9f 100644 --- a/include/cs_api.h +++ b/include/cs_api.h @@ -4,7 +4,7 @@ #ifndef __CS_API_H_ #define __CS_API_H_ -#include "init_td.h" +#include "init.h" #include typedef void (*cs_messenger) (unsigned int msg, unsigned int data); diff --git a/include/init.h b/include/init.h new file mode 100644 index 0000000..7ae0577 --- /dev/null +++ b/include/init.h @@ -0,0 +1,5 @@ +#ifndef __init__ +#define __init__ +void init_td_api(); +void shutdown_td_api(); +#endif // __init__ diff --git a/include/init_td.h b/include/init_td.h deleted file mode 100644 index d9a6f09..0000000 --- a/include/init_td.h +++ /dev/null @@ -1,5 +0,0 @@ -#ifndef __INIT_TD_H -#define __INIT_TD_H -void init_td_api(); -void shutdown_td_api(); -#endif diff --git a/libarmbox/init.cpp b/libarmbox/init.cpp index f7374d1..682bf1c 100644 --- a/libarmbox/init.cpp +++ b/libarmbox/init.cpp @@ -8,7 +8,7 @@ #include #include -#include "init_td.h" +#include "init.h" #include "pwrmngr.h" #include diff --git a/libazbox/init.cpp b/libazbox/init.cpp index 2029b4f..7c930f1 100644 --- a/libazbox/init.cpp +++ b/libazbox/init.cpp @@ -1,6 +1,6 @@ #include -#include "init_td.h" +#include "init.h" #include "lt_debug.h" #define lt_debug(args...) _lt_debug(TRIPLE_DEBUG_INIT, NULL, args) diff --git a/libduckbox/init.cpp b/libduckbox/init.cpp index f429afe..3abc241 100644 --- a/libduckbox/init.cpp +++ b/libduckbox/init.cpp @@ -10,7 +10,7 @@ #include -#include "init_td.h" +#include "init.h" #include "pwrmngr.h" #include "lt_debug.h" diff --git a/libgeneric-pc/init.cpp b/libgeneric-pc/init.cpp index fa2a01c..6a8d89e 100644 --- a/libgeneric-pc/init.cpp +++ b/libgeneric-pc/init.cpp @@ -2,7 +2,7 @@ #include #include -#include "init_td.h" +#include "init.h" #include "glfb.h" #include "lt_debug.h" diff --git a/libraspi/init.cpp b/libraspi/init.cpp index 47f6d9e..20809c6 100644 --- a/libraspi/init.cpp +++ b/libraspi/init.cpp @@ -34,7 +34,7 @@ #include #include -#include "init_td.h" +#include "init.h" #include "lt_debug.h" #include "glfb.h" #define lt_debug(args...) _lt_debug(TRIPLE_DEBUG_INIT, NULL, args) diff --git a/libspark/init.cpp b/libspark/init.cpp index cea952f..0c3e92a 100644 --- a/libspark/init.cpp +++ b/libspark/init.cpp @@ -13,7 +13,7 @@ #include -#include "init_td.h" +#include "init.h" #include "pwrmngr.h" #include "lt_debug.h" diff --git a/libtest.cpp b/libtest.cpp index b66024b..d8ecce4 100644 --- a/libtest.cpp +++ b/libtest.cpp @@ -8,7 +8,7 @@ #include #include #include -#include +#include #if HAVE_GENERIC_HARDWARE #include diff --git a/libtriple/init_td.cpp b/libtriple/init_td.cpp index 8015839..4500400 100644 --- a/libtriple/init_td.cpp +++ b/libtriple/init_td.cpp @@ -1,6 +1,6 @@ #include -#include "init_td.h" +#include "init.h" #include #include #include From 6f76e14dbebe6d2811d59607966010117aaaba46 Mon Sep 17 00:00:00 2001 From: Frankenstone Date: Tue, 25 Dec 2018 00:57:24 +0100 Subject: [PATCH 51/52] fix merge Origin commit data ------------------ Branch: master Commit: https://github.com/neutrino-images/ni-libstb-hal/commit/3eed45f7b1d4595b4727729465db68e22605eae7 Author: Frankenstone Date: 2018-12-25 (Tue, 25 Dec 2018) ------------------ No further description and justification available within origin commit message! ------------------ This commit was generated by Migit --- include/hardware_caps.h | 1 - 1 file changed, 1 deletion(-) diff --git a/include/hardware_caps.h b/include/hardware_caps.h index 44a11a9..3a553ca 100644 --- a/include/hardware_caps.h +++ b/include/hardware_caps.h @@ -40,7 +40,6 @@ typedef struct hw_caps int display_can_deepstandby; int display_has_statusline; int has_button_timer; - int has_button_vformat; char boxvendor[64]; char boxname[64]; char boxarch[64]; From 3dbb20bebfc7296f140d3682b9105a9283e4497c Mon Sep 17 00:00:00 2001 From: BPanther Date: Tue, 25 Dec 2018 05:29:24 +0100 Subject: [PATCH 52/52] vusolo4k tuner fix Origin commit data ------------------ Branch: master Commit: https://github.com/neutrino-images/ni-libstb-hal/commit/ba118e1c90e3473224836387ca5065593c1f6c90 Author: BPanther Date: 2018-12-25 (Tue, 25 Dec 2018) ------------------ No further description and justification available within origin commit message! ------------------ This commit was generated by Migit --- libarmbox/dmx.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/libarmbox/dmx.cpp b/libarmbox/dmx.cpp index 400303f..1c7ea42 100644 --- a/libarmbox/dmx.cpp +++ b/libarmbox/dmx.cpp @@ -71,9 +71,17 @@ static const char *DMX_T[] = { /* this is the number of different cDemux() units, not the number of * /dev/dvb/.../demuxX devices! */ +#if BOXMODEL_VUSOLO4K +#define NUM_DEMUX 16 +#else #define NUM_DEMUX 4 +#endif /* the current source of each cDemux unit */ +#if BOXMODEL_VUSOLO4K +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