diff -Nru vdr-plugin-boblight-0.0.1+git20131209/Makefile vdr-plugin-boblight-0.0.2-4-ged814f4/Makefile
--- vdr-plugin-boblight-0.0.1+git20131209/Makefile 2013-12-09 20:52:16.000000000 +0000
+++ vdr-plugin-boblight-0.0.2-4-ged814f4/Makefile 2013-12-29 17:56:05.000000000 +0000
@@ -11,7 +11,8 @@
### The version number of this plugin (taken from the main source file):
-VERSION = $(shell grep 'static const char \*VERSION *=' DVBAPI.h | awk '{ print $$6 }' | sed -e 's/[";]//g')
+#VERSION = $(shell grep 'static const char \*VERSION *=' vdrboblight.h | awk '{ print $$6 }' | sed -e 's/[";]//g')
+VERSION := $(shell git describe --abbrev=4 --dirty --always)
### The directory environment:
@@ -78,10 +79,12 @@
endif
DEFINES += -DPLUGIN_NAME_I18N='"$(PLUGIN)"'
+### Define GITVERSION used in vdrboblight.c
+DEFINES += -DGITVERSION='"$(VERSION)"'
### The object files (add further files here):
-OBJS = $(PLUGIN).o ambithread.o ambiservice.o boblightservice.o common.o config.o
+OBJS = $(patsubst %.c,%.o,$(wildcard *.c))
### The main target:
diff -Nru vdr-plugin-boblight-0.0.1+git20131209/ambiservice.c vdr-plugin-boblight-0.0.2-4-ged814f4/ambiservice.c
--- vdr-plugin-boblight-0.0.1+git20131209/ambiservice.c 2013-12-09 20:52:16.000000000 +0000
+++ vdr-plugin-boblight-0.0.2-4-ged814f4/ambiservice.c 2013-12-29 17:56:05.000000000 +0000
@@ -28,9 +28,7 @@
"atmo",
"fixed color",
"black",
- "detached",
-
- 0
+ "detached"
};
const char* cAmbiService::toName(ViewMode vm)
diff -Nru vdr-plugin-boblight-0.0.1+git20131209/ambiservice.h vdr-plugin-boblight-0.0.2-4-ged814f4/ambiservice.h
--- vdr-plugin-boblight-0.0.1+git20131209/ambiservice.h 2013-12-09 20:52:16.000000000 +0000
+++ vdr-plugin-boblight-0.0.2-4-ged814f4/ambiservice.h 2013-12-29 17:56:05.000000000 +0000
@@ -47,4 +47,4 @@
static const char* viewModes[];
};
-#endif // __SEDU_SERVICE_H
+#endif // __AMBI_SERVICE_H
diff -Nru vdr-plugin-boblight-0.0.1+git20131209/ambithread.h vdr-plugin-boblight-0.0.2-4-ged814f4/ambithread.h
--- vdr-plugin-boblight-0.0.1+git20131209/ambithread.h 2013-12-09 20:52:16.000000000 +0000
+++ vdr-plugin-boblight-0.0.2-4-ged814f4/ambithread.h 2013-12-29 17:56:05.000000000 +0000
@@ -16,7 +16,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
-
+#pragma once
#include
#include
diff -Nru vdr-plugin-boblight-0.0.1+git20131209/boblightservice.c vdr-plugin-boblight-0.0.2-4-ged814f4/boblightservice.c
--- vdr-plugin-boblight-0.0.1+git20131209/boblightservice.c 2013-12-09 20:52:16.000000000 +0000
+++ vdr-plugin-boblight-0.0.2-4-ged814f4/boblightservice.c 2013-12-29 17:56:05.000000000 +0000
@@ -20,7 +20,7 @@
#include
#define BOBLIGHT_DLOPEN
-#include "lib/boblight.h"
+#include
#include "boblightservice.h"
cBoblight::cBoblight()
diff -Nru vdr-plugin-boblight-0.0.1+git20131209/config.h vdr-plugin-boblight-0.0.2-4-ged814f4/config.h
--- vdr-plugin-boblight-0.0.1+git20131209/config.h 2013-12-09 20:52:16.000000000 +0000
+++ vdr-plugin-boblight-0.0.2-4-ged814f4/config.h 2013-12-29 17:56:05.000000000 +0000
@@ -48,13 +48,14 @@
// technical
- ViewMode viewMode;
+ int viewMode;
+ int startupViewMode;
int fixedR;
int fixedG;
int fixedB;
int showMainmenu; //bool
- Cinebars detectCineBars;
+ int detectCineBars;
int loglevel;
diff -Nru vdr-plugin-boblight-0.0.1+git20131209/debian/changelog vdr-plugin-boblight-0.0.2-4-ged814f4/debian/changelog
--- vdr-plugin-boblight-0.0.1+git20131209/debian/changelog 2013-12-29 12:12:22.000000000 +0000
+++ vdr-plugin-boblight-0.0.2-4-ged814f4/debian/changelog 2013-12-30 09:30:42.000000000 +0000
@@ -1,3 +1,9 @@
+vdr-plugin-boblight (0.0.2-4-ged814f4-0yavdr0~precise) precise; urgency=medium
+
+ * new upstream snapshot
+
+ -- Lars Hanisch Mon, 30 Dec 2013 10:30:21 +0100
+
vdr-plugin-boblight (0.0.1+git20131209-0yavdr0~precise) precise; urgency=medium
* new upstream snapshot
diff -Nru vdr-plugin-boblight-0.0.1+git20131209/debian/control vdr-plugin-boblight-0.0.2-4-ged814f4/debian/control
--- vdr-plugin-boblight-0.0.1+git20131209/debian/control 2013-12-29 12:13:53.000000000 +0000
+++ vdr-plugin-boblight-0.0.2-4-ged814f4/debian/control 2013-12-30 19:06:32.000000000 +0000
@@ -2,9 +2,9 @@
Section: video
Priority: extra
Maintainer: Lars Hanisch
-Build-Depends: debhelper (>= 8), vdr-dev (>= 2.0.0), pkg-config
+Build-Depends: debhelper (>= 8), vdr-dev (>= 2.0.0), pkg-config, libboblight-dev
Standards-Version: 3.9.1
-Homepage: https://github.com/flensrocker/vdr-plugin-boblight
+Homepage: http://projects.vdr-developer.org/projects/plg-boblight
Package: vdr-plugin-boblight
Architecture: any
diff -Nru vdr-plugin-boblight-0.0.1+git20131209/debian/copyright vdr-plugin-boblight-0.0.2-4-ged814f4/debian/copyright
--- vdr-plugin-boblight-0.0.1+git20131209/debian/copyright 2013-12-29 12:15:30.000000000 +0000
+++ vdr-plugin-boblight-0.0.2-4-ged814f4/debian/copyright 2013-12-30 18:25:55.000000000 +0000
@@ -1,5 +1,5 @@
Upstream Homepage:
- https://github.com/chriszero/vdr-plugin-boblight
+ http://projects.vdr-developer.org/projects/plg-boblight
Upstream Author(s):
Christian Völlinger
diff -Nru vdr-plugin-boblight-0.0.1+git20131209/lib/boblight-functions.h vdr-plugin-boblight-0.0.2-4-ged814f4/lib/boblight-functions.h
--- vdr-plugin-boblight-0.0.1+git20131209/lib/boblight-functions.h 2013-12-09 20:52:16.000000000 +0000
+++ vdr-plugin-boblight-0.0.2-4-ged814f4/lib/boblight-functions.h 1970-01-01 00:00:00.000000000 +0000
@@ -1,41 +0,0 @@
-/*
- * boblight
- * Copyright (C) Bob 2009
- *
- * boblight 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, either version 3 of the License, or
- * (at your option) any later version.
- *
- * boblight 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, see .
- */
-
-//these definitions can be expanded to make normal prototypes, or functionpointers and dlsym lines
-
-BOBLIGHT_FUNCTION(void*, boblight_init, ());
-BOBLIGHT_FUNCTION(void, boblight_destroy, (void* vpboblight));
-
-BOBLIGHT_FUNCTION(int, boblight_connect, (void* vpboblight, const char* address, int port, int usectimeout));
-BOBLIGHT_FUNCTION(int, boblight_setpriority, (void* vpboblight, int priority));
-BOBLIGHT_FUNCTION(const char*, boblight_geterror, (void* vpboblight));
-BOBLIGHT_FUNCTION(int, boblight_getnrlights, (void* vpboblight));
-BOBLIGHT_FUNCTION(const char*, boblight_getlightname, (void* vpboblight, int lightnr));
-
-BOBLIGHT_FUNCTION(int, boblight_getnroptions, (void* vpboblight));
-BOBLIGHT_FUNCTION(const char*, boblight_getoptiondescript,(void* vpboblight, int option));
-BOBLIGHT_FUNCTION(int, boblight_setoption, (void* vpboblight, int lightnr, const char* option));
-BOBLIGHT_FUNCTION(int, boblight_getoption, (void* vpboblight, int lightnr, const char* option, const char** output));
-
-BOBLIGHT_FUNCTION(void, boblight_setscanrange, (void* vpboblight, int width, int height));
-
-BOBLIGHT_FUNCTION(int, boblight_addpixel, (void* vpboblight, int lightnr, int* rgb));
-BOBLIGHT_FUNCTION(void, boblight_addpixelxy, (void* vpboblight, int x, int y, int* rgb));
-
-BOBLIGHT_FUNCTION(int, boblight_sendrgb, (void* vpboblight, int sync, int* outputused));
-BOBLIGHT_FUNCTION(int, boblight_ping, (void* vpboblight, int* outputused));
diff -Nru vdr-plugin-boblight-0.0.1+git20131209/lib/boblight.cpp vdr-plugin-boblight-0.0.2-4-ged814f4/lib/boblight.cpp
--- vdr-plugin-boblight-0.0.1+git20131209/lib/boblight.cpp 2013-12-09 20:52:16.000000000 +0000
+++ vdr-plugin-boblight-0.0.2-4-ged814f4/lib/boblight.cpp 1970-01-01 00:00:00.000000000 +0000
@@ -1,120 +0,0 @@
-/*
- * boblight
- * Copyright (C) Bob 2009
- *
- * boblight 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, either version 3 of the License, or
- * (at your option) any later version.
- *
- * boblight 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, see .
- */
-
-#include "boblight.h"
-#include "boblight_client.h"
-
-using namespace boblight;
-
-//C wrapper for C++ class
-
-void* boblight_init()
-{
- CBoblight* boblight = new CBoblight;
- return reinterpret_cast(boblight);
-}
-
-void boblight_destroy(void* vpboblight)
-{
- CBoblight* boblight = reinterpret_cast(vpboblight);
- delete boblight;
-}
-
-int boblight_connect(void* vpboblight, const char* address, int port, int usectimeout)
-{
- CBoblight* boblight = reinterpret_cast(vpboblight);
- return boblight->Connect(address, port, usectimeout);
-}
-
-int boblight_setpriority(void* vpboblight, int priority)
-{
- CBoblight* boblight = reinterpret_cast(vpboblight);
- return boblight->SetPriority(priority);
-}
-
-const char* boblight_geterror(void* vpboblight)
-{
- CBoblight* boblight = reinterpret_cast(vpboblight);
- return boblight->GetError();
-}
-
-int boblight_getnrlights(void* vpboblight)
-{
- CBoblight* boblight = reinterpret_cast(vpboblight);
- return boblight->GetNrLights();
-}
-
-const char* boblight_getlightname(void* vpboblight, int lightnr)
-{
- CBoblight* boblight = reinterpret_cast(vpboblight);
- return boblight->GetLightName(lightnr);
-}
-
-int boblight_getnroptions(void* vpboblight)
-{
- CBoblight* boblight = reinterpret_cast(vpboblight);
- return boblight->GetNrOptions();
-}
-
-const char* boblight_getoptiondescript(void* vpboblight, int option)
-{
- CBoblight* boblight = reinterpret_cast(vpboblight);
- return boblight->GetOptionDescription(option);
-}
-
-int boblight_setoption(void* vpboblight, int lightnr, const char* option)
-{
- CBoblight* boblight = reinterpret_cast(vpboblight);
- return boblight->SetOption(lightnr, option);
-}
-
-int boblight_getoption(void* vpboblight, int lightnr, const char* option, const char** output)
-{
- CBoblight* boblight = reinterpret_cast(vpboblight);
- return boblight->GetOption(lightnr, option, output);
-}
-
-void boblight_setscanrange(void* vpboblight, int width, int height)
-{
- CBoblight* boblight = reinterpret_cast(vpboblight);
- boblight->SetScanRange(width, height);
-}
-
-int boblight_addpixel(void* vpboblight, int lightnr, int* rgb)
-{
- CBoblight* boblight = reinterpret_cast(vpboblight);
- return boblight->AddPixel(lightnr, rgb);
-}
-
-void boblight_addpixelxy(void* vpboblight, int x, int y, int* rgb)
-{
- CBoblight* boblight = reinterpret_cast(vpboblight);
- boblight->AddPixel(rgb, x, y);
-}
-
-int boblight_sendrgb(void* vpboblight, int sync, int* outputused)
-{
- CBoblight* boblight = reinterpret_cast(vpboblight);
- return boblight->SendRGB(sync, outputused);
-}
-
-int boblight_ping(void* vpboblight, int* outputused)
-{
- CBoblight* boblight = reinterpret_cast(vpboblight);
- return boblight->Ping(outputused, true);
-}
diff -Nru vdr-plugin-boblight-0.0.1+git20131209/lib/boblight.h vdr-plugin-boblight-0.0.2-4-ged814f4/lib/boblight.h
--- vdr-plugin-boblight-0.0.1+git20131209/lib/boblight.h 2013-12-09 20:52:16.000000000 +0000
+++ vdr-plugin-boblight-0.0.2-4-ged814f4/lib/boblight.h 1970-01-01 00:00:00.000000000 +0000
@@ -1,103 +0,0 @@
-/*
- * boblight
- * Copyright (C) Bob 2009
- *
- * boblight 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, either version 3 of the License, or
- * (at your option) any later version.
- *
- * boblight 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, see .
- */
-
-//if you define BOBLIGHT_DLOPEN, all boblight functions are defined as pointers
-//you can then call boblight_loadlibrary to load libboblight with dlopen and the function pointers with dlsym
-//if you pass NULL to boblight_loadlibrary's first argument, the default filename for libboblight is used
-//if boblight_loadlibrary returns NULL, dlopen and dlsym went ok, if not it returns a char* from dlerror
-
-//if you want to use the boblight functions from multiple files, you can define BOBLIGHT_DLOPEN in one file,
-//and define BOBLIGHT_DLOPEN_EXTERN in the other file, the functionpointers are then defined as extern
-
-#ifndef LIBBOBLIGHT
-#define LIBBOBLIGHT
-
- #if !defined(BOBLIGHT_DLOPEN) && !defined(BOBLIGHT_DLOPEN_EXTERN)
-
- #ifdef __cplusplus
- extern "C" {
- #endif
-
- //generate normal prototypes
- #define BOBLIGHT_FUNCTION(returnvalue, name, arguments) returnvalue name arguments
- #include "boblight-functions.h"
- #undef BOBLIGHT_FUNCTION
-
- #ifdef __cplusplus
- }
- #endif
-
- #elif defined(BOBLIGHT_DLOPEN)
-
- #include
- #include
-
- //generate function pointers
- #define BOBLIGHT_FUNCTION(returnvalue, name, arguments) returnvalue (* name ) arguments = NULL
- #include "boblight-functions.h"
- #undef BOBLIGHT_FUNCTION
-
- #ifdef __cplusplus
- #define BOBLIGHT_CAST(value) reinterpret_cast
- #else
- #define BOBLIGHT_CAST(value) (value)
- #endif
-
- //gets a functionpointer from dlsym, and returns char* from dlerror if it didn't work
- #define BOBLIGHT_FUNCTION(returnvalue, name, arguments) \
- name = BOBLIGHT_CAST(returnvalue (*) arguments)(dlsym(p_boblight, #name)); \
- { char* error = dlerror(); if (error) return error; }
-
- void* p_boblight = NULL; //where we put the lib
-
- //load function pointers
- char* boblight_loadlibrary(const char* filename)
- {
- if (filename == NULL)
- filename = "libboblight.so";
-
- if (p_boblight != NULL)
- {
- dlclose(p_boblight);
- p_boblight = NULL;
- }
-
- p_boblight = dlopen(filename, RTLD_NOW);
- if (p_boblight == NULL)
- return dlerror();
-
- //generate dlsym lines
- #include "boblight-functions.h"
-
- return NULL;
- }
- #undef BOBLIGHT_FUNCTION
- #undef BOBLIGHT_CAST
-
- //you can define BOBLIGHT_DLOPEN_EXTERN when you load the library in another file
- #elif defined(BOBLIGHT_DLOPEN_EXTERN)
-
- extern char* boblight_loadlibrary(const char* filename);
- extern void* p_boblight;
- #define BOBLIGHT_FUNCTION(returnvalue, name, arguments) extern returnvalue (* name ) arguments
- #include "boblight-functions.h"
- #undef BOBLIGHT_FUNCTION
-
- #endif //BOBLIGHT_DLOPEN_EXTERN
-#endif //LIBBOBLIGHT
-
diff -Nru vdr-plugin-boblight-0.0.1+git20131209/lib/boblight_client.cpp vdr-plugin-boblight-0.0.2-4-ged814f4/lib/boblight_client.cpp
--- vdr-plugin-boblight-0.0.1+git20131209/lib/boblight_client.cpp 2013-12-09 20:52:16.000000000 +0000
+++ vdr-plugin-boblight-0.0.2-4-ged814f4/lib/boblight_client.cpp 1970-01-01 00:00:00.000000000 +0000
@@ -1,704 +0,0 @@
-/*
- * boblight
- * Copyright (C) Bob 2009
- *
- * boblight 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, either version 3 of the License, or
- * (at your option) any later version.
- *
- * boblight 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, see .
- */
-
-
-#include "util/inclstdint.h"
-
-#include
-#include //debug
-#include
-
-#include "boblight_client.h"
-#include "util/misc.h"
-#include "util/timeutils.h"
-#include "protocolversion.h"
-
-using namespace std;
-using namespace boblight;
-
-#define GAMMASIZE (sizeof(m_gammacurve) / sizeof(m_gammacurve[0]))
-
-CLight::CLight()
-{
- #define BOBLIGHT_OPTION(name, type, min, max, default, variable, postprocess) variable = default;
- #include "options.h"
- #undef BOBLIGHT_OPTION
-
- m_singlechange = 0.0;
-
- m_width = -1;
- m_height = -1;
-
- memset(m_rgb, 0, sizeof(m_rgb));
- m_rgbcount = 0;
- memset(m_prevrgb, 0, sizeof(m_prevrgb));
- memset(m_hscanscaled, 0, sizeof(m_hscanscaled));
- memset(m_vscanscaled, 0, sizeof(m_vscanscaled));
-
- for (int i = 0; i < GAMMASIZE; i++)
- m_gammacurve[i] = i;
-}
-
-string CLight::SetOption(const char* option, bool& send)
-{
- string stroption = option;
- string strname;
-
- send = false;
-
- if (!GetWord(stroption, strname))
- return "emtpy option"; //string with only whitespace
-
- #define BOBLIGHT_OPTION(name, type, min, max, default, variable, postprocess) \
- if (strname == #name) \
- { \
- type value; \
- if (#type == "bool")\
- {\
- if (!StrToBool(stroption, *(bool*)(&value)))\
- return "invalid value " + stroption + " for option " + strname + " with type " + #type; \
- }\
- else\
- {\
- stringstream stream; \
- stream << stroption; \
- stream >> value; \
- if (stream.fail()) return "invalid value " + stroption + " for option " + strname + " with type " + #type; \
- \
- }\
- variable = value; \
- postprocess\
- \
- return ""; \
- }
- #include "options.h"
- #undef BOBLIGHT_OPTION
-
- return "unknown option " + strname;
-}
-
-std::string CLight::GetOption(const char* option, std::string& output)
-{
- string stroption = option;
- string strname;
-
- if (!GetWord(stroption, strname))
- return "emtpy option"; //string with only whitespace
-
- #define BOBLIGHT_OPTION(name, type, min, max, default, variable, postprocess) \
- if (#name == strname)\
- {\
- output = ToString(variable);\
- return "";\
- }
- #include "options.h"
- #undef BOBLIGHT_OPTION
-
- return "unknown option";
-}
-
-void CLight::AddPixel(int* rgb)
-{
- if (rgb[0] >= m_threshold || rgb[1] >= m_threshold || rgb[2] >= m_threshold)
- {
- if (m_gamma == 1.0)
- {
- m_rgb[0] += Clamp(rgb[0], 0, 255);
- m_rgb[1] += Clamp(rgb[1], 0, 255);
- m_rgb[2] += Clamp(rgb[2], 0, 255);
- }
- else
- {
- m_rgb[0] += m_gammacurve[Clamp(rgb[0], 0, GAMMASIZE - 1)];
- m_rgb[1] += m_gammacurve[Clamp(rgb[1], 0, GAMMASIZE - 1)];
- m_rgb[2] += m_gammacurve[Clamp(rgb[2], 0, GAMMASIZE - 1)];
- }
- }
- m_rgbcount++;
-}
-
-void CLight::GetRGB(float* rgb)
-{
- //if no pixels are set, the denominator is 0, so just return black
- if (m_rgbcount == 0)
- {
- for (int i = 0; i < 3; i++)
- {
- rgb[i] = 0.0f;
- m_rgb[i] = 0.0f;
- }
-
- return;
- }
-
- //convert from numerator/denominator to float
- for (int i = 0; i < 3; i++)
- {
- rgb[i] = Clamp(m_rgb[i] / (float)m_rgbcount / 255.0f, 0.0f, 1.0f);
- m_rgb[i] = 0.0f;
- }
- m_rgbcount = 0;
-
- //this tries to set the speed based on how fast the input is changing
- //it needs sync mode to work properly
- if (m_autospeed > 0.0)
- {
- float change = Abs(rgb[0] - m_prevrgb[0]) + Abs(rgb[1] - m_prevrgb[1]) + Abs(rgb[2] - m_prevrgb[2]);
- change /= 3.0;
-
- //only apply singlechange if it's large enough, otherwise we risk sending it continously
- if (change > 0.001)
- m_singlechange = Clamp(change * m_autospeed / 10.0, 0.0, 1.0);
- else
- m_singlechange = 0.0;
- }
-
- memcpy(m_prevrgb, rgb, sizeof(m_prevrgb));
-
- //we need some hsv adjustments
- if (m_value != 1.0 || m_valuerange[0] != 0.0 || m_valuerange[1] != 1.0 ||
- m_saturation != 1.0 || m_satrange[0] != 0.0 || m_satrange[1] != 1.0)
- {
- //rgb - hsv conversion, thanks wikipedia!
- float hsv[3];
- float max = Max(rgb[0], rgb[1], rgb[2]);
- float min = Min(rgb[0], rgb[1], rgb[2]);
-
- if (min == max) //grayscale
- {
- hsv[0] = -1.0f; //undefined
- hsv[1] = 0.0; //no saturation
- hsv[2] = min; //value
- }
- else
- {
- if (max == rgb[0]) //red zone
- {
- hsv[0] = (60.0f * ((rgb[1] - rgb[2]) / (max - min)) + 360.0f);
- while (hsv[0] >= 360.0f)
- hsv[0] -= 360.0f;
- }
- else if (max == rgb[1]) //green zone
- {
- hsv[0] = 60.0f * ((rgb[2] - rgb[0]) / (max - min)) + 120.0f;
- }
- else if (max == rgb[2]) //blue zone
- {
- hsv[0] = 60.0f * ((rgb[0] - rgb[1]) / (max - min)) + 240.0f;
- }
-
- hsv[1] = (max - min) / max; //saturation
- hsv[2] = max; //value
- }
-
- //saturation and value adjustment
- hsv[1] = Clamp(hsv[1] * m_saturation, m_satrange[0], m_satrange[1]);
- hsv[2] = Clamp(hsv[2] * m_value, m_valuerange[0], m_valuerange[1]);
-
- if (hsv[0] == -1.0f) //grayscale
- {
- for (int i = 0; i < 3; i++)
- rgb[i] = hsv[2];
- }
- else
- {
- int hi = (int)(hsv[0] / 60.0f) % 6;
- float f = (hsv[0] / 60.0f) - (float)(int)(hsv[0] / 60.0f);
-
- float s = hsv[1];
- float v = hsv[2];
- float p = v * (1.0f - s);
- float q = v * (1.0f - f * s);
- float t = v * (1.0f - (1.0f - f) * s);
-
- if (hi == 0)
- { rgb[0] = v; rgb[1] = t; rgb[2] = p; }
- else if (hi == 1)
- { rgb[0] = q; rgb[1] = v; rgb[2] = p; }
- else if (hi == 2)
- { rgb[0] = p; rgb[1] = v; rgb[2] = t; }
- else if (hi == 3)
- { rgb[0] = p; rgb[1] = q; rgb[2] = v; }
- else if (hi == 4)
- { rgb[0] = t; rgb[1] = p; rgb[2] = v; }
- else if (hi == 5)
- { rgb[0] = v; rgb[1] = p; rgb[2] = q; }
- }
-
- for (int i = 0; i < 3; i++)
- rgb[i] = Clamp(rgb[i], 0.0f, 1.0f);
- }
-}
-
-//scale the light's scanrange to the dimensions set with boblight_setscanrange()
-void CLight::SetScanRange(int width, int height)
-{
- m_width = width;
- m_height = height;
-
- m_hscanscaled[0] = Round32(m_hscan[0] / 100.0 * ((float)width - 1));
- m_hscanscaled[1] = Round32(m_hscan[1] / 100.0 * ((float)width - 1));
- m_vscanscaled[0] = Round32(m_vscan[0] / 100.0 * ((float)height - 1));
- m_vscanscaled[1] = Round32(m_vscan[1] / 100.0 * ((float)height - 1));
-}
-
-int CBoblight::Connect(const char* address, int port, int usectimeout)
-{
- CMessage message;
- CTcpData data;
- int64_t now;
- int64_t target;
- string word;
-
- //set address
- m_usectimeout = usectimeout;
- if (address)
- m_address = address;
- else
- m_address = "127.0.0.1";
-
- //set port
- if (port >= 0)
- m_port = port;
- else
- m_port = 19333;
-
- //try to open a tcp connection
- if (m_socket.Open(m_address, m_port, m_usectimeout) != SUCCESS)
- {
- m_error = m_socket.GetError();
- return 0;
- }
-
- //write hello to the server, we should get hello back
- if (!WriteDataToSocket("hello\n"))
- return 0;
-
- if (!ReadDataToQueue())
- return 0;
-
- message = m_messagequeue.GetMessage();
- if (!ParseWord(message, "hello"))
- {
- m_error = m_address + ":" + ToString(m_port) + " sent gibberish";
- return 0;
- }
-
- //get the protocol version from the server
- if (!WriteDataToSocket("get version\n"))
- return 0;
-
- if (!ReadDataToQueue())
- return 0;
-
- message = m_messagequeue.GetMessage();
-
- if (!ParseWord(message, "version") || !GetWord(message.message, word))
- {
- m_error = m_address + ":" + ToString(m_port) + " sent gibberish";
- return 0;
- }
-
- //if we don't get the same protocol version back as we have, we can't work together
- if (word != PROTOCOLVERSION)
- {
- m_error = "version mismatch, " + m_address + ":" + ToString(m_port) + " has version \"" + word +
- "\", libboblight has version \"" + PROTOCOLVERSION + "\"";
- return 0;
- }
-
- //get lights info, like number, names and area
- if (!WriteDataToSocket("get lights\n"))
- return 0;
-
- if (!ReadDataToQueue())
- return 0;
-
- message = m_messagequeue.GetMessage();
- if (!ParseLights(message))
- {
- m_error = m_address + ":" + ToString(m_port) + " sent gibberish";
- return 0;
- }
-
- return 1;
-}
-
-CBoblight::CBoblight()
-{
- int padsize = 1;
- //get option name pad size so it looks pretty
- #define BOBLIGHT_OPTION(name, type, min, max, default, variable, postprocess) \
- if (strlen(#name) + 1 > padsize)\
- padsize = strlen(#name) + 1;
- #include "options.h"
- #undef BOBLIGHT_OPTION
-
- //stick in a line that describes the options
- string option = "name";
- option.append(Max(padsize - option.length(), 1), ' ');
- option += "type min max default";
- m_options.push_back(option);
-
- //fill vector with option strings
- #define BOBLIGHT_OPTION(name, type, min, max, default, variable, postprocess) \
- {\
- string option = #name;\
- option.append(padsize - strlen(#name), ' ');\
- \
- option += #type;\
- option.append(Max(8 - strlen(#type), 1), ' ');\
- \
- option += #min;\
- option.append(Max(8 - strlen(#min), 1), ' ');\
- \
- option += #max;\
- option.append(Max(8 - strlen(#max), 1), ' ');\
- \
- if (strcmp(#default, "-1.0") == 0)\
- option += "set by boblightd";\
- else\
- option += #default;\
- \
- m_options.push_back(option);\
- }
- #include "options.h"
- #undef BOBLIGHT_OPTION
-}
-
-//reads from socket until timeout or one message has arrived
-bool CBoblight::ReadDataToQueue()
-{
- CTcpData data;
- int64_t now = GetTimeUs();
- int64_t target = now + m_usectimeout;
- int nrmessages = m_messagequeue.GetNrMessages();
-
- while (now < target && m_messagequeue.GetNrMessages() == nrmessages)
- {
- if (m_socket.Read(data) != SUCCESS)
- {
- m_error = m_socket.GetError();
- return false;
- }
-
- m_messagequeue.AddData(data.GetData());
-
- if (m_messagequeue.GetRemainingDataSize() > MAXDATA)
- {
- m_error = m_address + ":" + ToString(m_port) + " sent too much data";
- return false;
- }
-
- now = GetTimeUs();
- }
-
- if (nrmessages == m_messagequeue.GetNrMessages())
- {
- m_error = m_address + ":" + ToString(m_port) + " read timed out";
- return false;
- }
- return true;
-}
-
-bool CBoblight::WriteDataToSocket(std::string strdata)
-{
- CTcpData data;
- data.SetData(strdata);
-
- if (m_socket.Write(data) != SUCCESS)
- {
- m_error = m_socket.GetError();
- return false;
- }
-
- return true;
-}
-
-//removes one word from the string in the messages, and compares it to wordtocmp
-bool CBoblight::ParseWord(CMessage& message, std::string wordtocmp)
-{
- string readword;
- if (!GetWord(message.message, readword) || readword != wordtocmp)
- return false;
-
- return true;
-}
-
-bool CBoblight::ParseLights(CMessage& message)
-{
- string word;
- int nrlights;
-
- //first word in the message is "lights", second word is the number of lights
- if (!ParseWord(message, "lights") || !GetWord(message.message, word) || !StrToInt(word, nrlights) || nrlights < 1)
- return false;
-
- for (int i = 0; i < nrlights; i++)
- {
- CLight light;
-
- //read some data to the message queue if we have no messages
- if (m_messagequeue.GetNrMessages() == 0)
- {
- if (!ReadDataToQueue())
- return false;
- }
-
- message = m_messagequeue.GetMessage();
-
- //first word sent is "light, second one is the name
- if (!ParseWord(message, "light") || !GetWord(message.message, light.m_name))
- {
- return false;
- }
-
- //third one is "scan"
- if (!ParseWord(message, "scan"))
- return false;
-
- //now we read the scanrange
- string scanarea;
- for (int i = 0; i < 4; i++)
- {
- if (!GetWord(message.message, word))
- return false;
-
- scanarea += word + " ";
- }
-
- ConvertFloatLocale(scanarea); //workaround for locale mismatch (, and .)
-
- if (sscanf(scanarea.c_str(), "%f %f %f %f", light.m_vscan, light.m_vscan + 1, light.m_hscan, light.m_hscan + 1) != 4)
- return false;
-
- m_lights.push_back(light);
- }
- return true;
-}
-
-const char* CBoblight::GetLightName(int lightnr)
-{
- if (lightnr < 0) //negative lights don't exist, so we set it to an invalid number to get the error message
- lightnr = m_lights.size();
-
- if (CheckLightExists(lightnr))
- return m_lights[lightnr].m_name.c_str();
-
- return NULL;
-}
-
-int CBoblight::SetPriority(int priority)
-{
- string data = "set priority " + ToString(priority) + "\n";
-
- return WriteDataToSocket(data);
-}
-
-bool CBoblight::CheckLightExists(int lightnr, bool printerror /*= true*/)
-{
- if (lightnr >= (int)m_lights.size())
- {
- if (printerror)
- {
- m_error = "light " + ToString(lightnr) + " doesn't exist (have " + ToString(m_lights.size()) + " lights)";
- }
- return false;
- }
- return true;
-}
-
-void CBoblight::SetScanRange(int width, int height)
-{
- for (int i = 0; i < m_lights.size(); i++)
- {
- m_lights[i].SetScanRange(width, height);
- }
-}
-
-int CBoblight::AddPixel(int lightnr, int* rgb)
-{
- if (!CheckLightExists(lightnr))
- return 0;
-
- if (lightnr < 0)
- {
- for (int i = 0; i < m_lights.size(); i++)
- m_lights[i].AddPixel(rgb);
- }
- else
- {
- m_lights[lightnr].AddPixel(rgb);
- }
-
- return 1;
-}
-
-void CBoblight::AddPixel(int* rgb, int x, int y)
-{
- for (int i = 0; i < m_lights.size(); i++)
- {
- if (x >= m_lights[i].m_hscanscaled[0] && x <= m_lights[i].m_hscanscaled[1] &&
- y >= m_lights[i].m_vscanscaled[0] && y <= m_lights[i].m_vscanscaled[1])
- {
- m_lights[i].AddPixel(rgb);
- }
- }
-}
-
-int CBoblight::SendRGB(int sync, int* outputused)
-{
- string data;
-
- for (int i = 0; i < m_lights.size(); i++)
- {
- float rgb[3];
- m_lights[i].GetRGB(rgb);
- data += "set light " + m_lights[i].m_name + " rgb " + ToString(rgb[0]) + " " + ToString(rgb[1]) + " " + ToString(rgb[2]) + "\n";
- if (m_lights[i].m_autospeed > 0.0 && m_lights[i].m_singlechange > 0.0)
- data += "set light " + m_lights[i].m_name + " singlechange " + ToString(m_lights[i].m_singlechange) + "\n";
- }
-
- //send a message that we want devices to sync to our input
- if (sync)
- data += "sync\n";
-
- //if we want to check if our output is used, send a ping message
- if (outputused)
- data += "ping\n";
-
- if (!WriteDataToSocket(data))
- return 0;
-
- if (outputused)
- return Ping(outputused, false);
- else
- return 1;
-}
-
-int CBoblight::Ping(int* outputused, bool send)
-{
- string word;
-
- if (send)
- {
- if (!WriteDataToSocket("ping\n"))
- return 0;
- }
-
- if (!ReadDataToQueue())
- return 0;
-
- CMessage message = m_messagequeue.GetMessage();
-
- if (!GetWord(message.message, word) || word != "ping")
- {
- m_error = m_address + ":" + ToString(m_port) + " sent gibberish";
- return 0;
- }
-
- //client can set outputused to NULL
- if (outputused)
- {
- if (!GetWord(message.message, word) || !StrToInt(word, *outputused))
- {
- m_error = m_address + ":" + ToString(m_port) + " sent gibberish";
- return 0;
- }
- }
-
- return 1;
-}
-
-int CBoblight::GetNrOptions()
-{
- return m_options.size();
-}
-
-const char* CBoblight::GetOptionDescription(int option)
-{
- if (option < 0 || option >= m_options.size())
- return NULL;
-
- return m_options[option].c_str();
-}
-
-int CBoblight::SetOption(int lightnr, const char* option)
-{
- string error;
- string data;
- bool send;
-
- if (!CheckLightExists(lightnr))
- return 0;
-
- if (lightnr < 0)
- {
- for (int i = 0; i < m_lights.size(); i++)
- {
- error = m_lights[i].SetOption(option, send);
- if (!error.empty())
- {
- m_error = error;
- return 0;
- }
- if (send)
- {
- data += "set light " + m_lights[i].m_name + " " + option + "\n";
- }
- }
- }
- else
- {
- error = m_lights[lightnr].SetOption(option, send);
- if (!error.empty())
- {
- m_error = error;
- return 0;
- }
- if (send)
- {
- data += "set light " + m_lights[lightnr].m_name + " " + option + "\n";
- }
- }
-
- if (!WriteDataToSocket(data))
- return 0;
-
- return 1;
-}
-
-int CBoblight::GetOption(int lightnr, const char* option, const char** output)
-{
- if (lightnr < 0) //negative lights don't exist, so we set it to an invalid number to get the error message
- lightnr = m_lights.size();
-
- if (!CheckLightExists(lightnr))
- return 0;
-
- string error = m_lights[lightnr].GetOption(option, m_lastoption);
- if (!error.empty())
- {
- m_error = error;
- return 0;
- }
-
- *output = m_lastoption.c_str();
-
- return 1;
-}
diff -Nru vdr-plugin-boblight-0.0.1+git20131209/lib/boblight_client.h vdr-plugin-boblight-0.0.2-4-ged814f4/lib/boblight_client.h
--- vdr-plugin-boblight-0.0.1+git20131209/lib/boblight_client.h 2013-12-09 20:52:16.000000000 +0000
+++ vdr-plugin-boblight-0.0.2-4-ged814f4/lib/boblight_client.h 1970-01-01 00:00:00.000000000 +0000
@@ -1,115 +0,0 @@
-/*
- * boblight
- * Copyright (C) Bob 2009
- *
- * boblight 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, either version 3 of the License, or
- * (at your option) any later version.
- *
- * boblight 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, see .
- */
-
-#ifndef CBOBLIGHT
-#define CBOBLIGHT
-
-#include
-#include
-
-#include "util/tcpsocket.h"
-#include "util/messagequeue.h"
-
-namespace boblight
-{
- class CLight
- {
- public:
- CLight();
-
- std::string SetOption(const char* option, bool& send);
- std::string GetOption(const char* option, std::string& output);
-
- void SetScanRange(int width, int height);
- void AddPixel(int* rgb);
-
- std::string m_name;
- float m_speed;
- float m_autospeed;
- float m_singlechange;
-
- bool m_interpolation;
- bool m_use;
-
- float m_value;
- float m_valuerange[2];
- float m_saturation;
- float m_satrange[2];
- int m_threshold;
- float m_gamma;
- float m_gammacurve[256];
-
- float m_rgb[3];
- int m_rgbcount;
- float m_prevrgb[3];
- void GetRGB(float* rgb);
-
- float m_hscan[2];
- float m_vscan[2];
- int m_width;
- int m_height;
- int m_hscanscaled[2];
- int m_vscanscaled[2];
- };
-
- class CBoblight
- {
- public:
- CBoblight();
-
- int Connect(const char* address, int port, int usectimeout);
- const char* GetError() { return m_error.c_str(); }
-
- int GetNrLights() { return m_lights.size(); }
- const char* GetLightName (int lightnr);
-
- int SetPriority (int priority);
- void SetScanRange (int width, int height);
-
- int AddPixel(int lightnr, int* rgb);
- void AddPixel(int* rgb, int x, int y);
-
- int SendRGB(int sync, int* outputused);
- int Ping(int* outputused, bool send);
-
- int GetNrOptions();
- const char* GetOptionDescription(int option);
- int SetOption(int lightnr, const char* option);
- int GetOption(int lightnr, const char* option, const char** output);
-
- private:
- CTcpClientSocket m_socket;
- std::string m_address;
- int m_port;
- std::string m_error;
- CMessageQueue m_messagequeue;
- int m_usectimeout;
-
- bool ReadDataToQueue();
- bool WriteDataToSocket(std::string strdata);
- bool ParseWord(CMessage& message, std::string wordtocmp);
- bool ParseLights(CMessage& message);
- bool CheckLightExists(int lightnr, bool printerror = true);
-
- std::vector m_lights;
-
- std::vector m_options;
- std::string m_lastoption; //place to store the last option retrieved by GetOption
- };
-}
-#endif //CBOBLIGHT
diff -Nru vdr-plugin-boblight-0.0.1+git20131209/lib/options.h vdr-plugin-boblight-0.0.2-4-ged814f4/lib/options.h
--- vdr-plugin-boblight-0.0.1+git20131209/lib/options.h 2013-12-09 20:52:16.000000000 +0000
+++ vdr-plugin-boblight-0.0.2-4-ged814f4/lib/options.h 1970-01-01 00:00:00.000000000 +0000
@@ -1,41 +0,0 @@
-/*
- * boblight
- * Copyright (C) Bob 2009
- *
- * boblight 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, either version 3 of the License, or
- * (at your option) any later version.
- *
- * boblight 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, see .
- */
-
-// name type min max default variable post-process
-BOBLIGHT_OPTION(speed, float, 0.0, 100.0, 100.0, m_speed, m_speed = Clamp(m_speed, 0.0, 100.0); send = true;)
-BOBLIGHT_OPTION(autospeed, float, 0, 100.0, 0.0, m_autospeed, m_autospeed = Max(m_autospeed, 0.0);)
-BOBLIGHT_OPTION(interpolation, bool, false, true, false, m_interpolation, send = true;)
-BOBLIGHT_OPTION(use, bool, false, true, true, m_use, send = true;)
-BOBLIGHT_OPTION(saturation, float, 0.0, 20.0, 1.0, m_saturation, m_saturation = Max(m_saturation, 0.0);)
-BOBLIGHT_OPTION(saturationmin, float, 0.0, 1.0, 0.0, m_satrange[0], m_satrange[0] = Clamp(m_satrange[0], 0.0, m_satrange[1]);)
-BOBLIGHT_OPTION(saturationmax, float, 0.0, 1.0, 1.0, m_satrange[1], m_satrange[1] = Clamp(m_satrange[1], m_satrange[0], 1.0);)
-BOBLIGHT_OPTION(value, float, 0.0, 20.0, 1.0, m_value, m_value = Max(m_value, 0.0);)
-BOBLIGHT_OPTION(valuemin, float, 0.0, 1.0, 0.0, m_valuerange[0], m_valuerange[0] = Clamp(m_valuerange[0], 0.0, m_valuerange[1]);)
-BOBLIGHT_OPTION(valuemax, float, 0.0, 1.0, 1.0, m_valuerange[1], m_valuerange[1] = Clamp(m_valuerange[1], m_valuerange[0], 1.0);)
-BOBLIGHT_OPTION(threshold, int, 0, 255, 0, m_threshold, m_threshold = Clamp(m_threshold, 0, 255);)
-
-BOBLIGHT_OPTION(gamma, float, 0.0, 10.0, 1.0, m_gamma, m_gamma = Max(m_gamma, 0.0); \
- for (int i = 0; i < GAMMASIZE; i++) \
- m_gammacurve[i] = pow((float)i / ((float)GAMMASIZE - 1.0f), m_gamma) * (GAMMASIZE - 1.0f);)
-
-BOBLIGHT_OPTION(hscanstart, float, 0.0, 100.0, -1.0, m_hscan[0], m_hscan[0] = Clamp(m_hscan[0], 0.0, m_hscan[1]); SetScanRange(m_width, m_height);)
-BOBLIGHT_OPTION(hscanend, float, 0.0, 100.0, -1.0, m_hscan[1], m_hscan[1] = Clamp(m_hscan[1], m_hscan[0], 100.0); SetScanRange(m_width, m_height);)
-BOBLIGHT_OPTION(vscanstart, float, 0.0, 100.0, -1.0, m_vscan[0], m_vscan[0] = Clamp(m_vscan[0], 0.0, m_vscan[1]); SetScanRange(m_width, m_height);)
-BOBLIGHT_OPTION(vscanend, float, 0.0, 100.0, -1.0, m_vscan[1], m_vscan[1] = Clamp(m_vscan[1], m_vscan[0], 100.0); SetScanRange(m_width, m_height);)
-
-
diff -Nru vdr-plugin-boblight-0.0.1+git20131209/main_menu.c vdr-plugin-boblight-0.0.2-4-ged814f4/main_menu.c
--- vdr-plugin-boblight-0.0.1+git20131209/main_menu.c 1970-01-01 00:00:00.000000000 +0000
+++ vdr-plugin-boblight-0.0.2-4-ged814f4/main_menu.c 2013-12-29 17:56:05.000000000 +0000
@@ -0,0 +1,60 @@
+
+#include
+
+#include "ambiservice.h"
+#include "main_menu.h"
+#include "config.h"
+#include "common.h"
+
+cBoblightPluginMenu::cBoblightPluginMenu(const char* title, cPluginBoblight* aPlugin)
+{
+ plugin = aPlugin;
+
+ Create();
+}
+
+void cBoblightPluginMenu::Create(void) {
+ Clear();
+
+ Add(new cMenuEditStraItem(tr("View Mode"), &cfg.viewMode, cAmbiService::vmCount, cAmbiService::viewModes));
+ Add(new cMenuEditStraItem(tr("Startup View Mode"), &cfg.startupViewMode, cAmbiService::vmCount, cAmbiService::viewModes));
+
+ Add(new cMenuEditIntItem(tr("Fixed Color Red"), &cfg.fixedR, 0, 255));
+ Add(new cMenuEditIntItem(tr("Fixed Color Green"), &cfg.fixedG, 0, 255));
+ Add(new cMenuEditIntItem(tr("Fixed Color Blue"), &cfg.fixedB, 0, 255));
+
+ SetHelp(0, 0, 0, 0);
+ Display();
+}
+
+void cBoblightPluginMenu::Store() {
+ plugin->Save();
+}
+
+//***************************************************************************
+// Process Key
+//***************************************************************************
+
+eOSState cBoblightPluginMenu::ProcessKey(eKeys key)
+{
+ eOSState state = cOsdMenu::ProcessKey(key);
+
+ if (state != osUnknown)
+ return state;
+
+ if (key == kLeft || key == kRight)
+ {
+ if (cfg.viewMode == cAmbiService::vmDetached && plugin->isRunning())
+ plugin->stopAtmo();
+ else if (cfg.viewMode != cAmbiService::vmDetached && !plugin->isRunning())
+ plugin->startAtmo();
+ }
+
+ if (key == kOk)
+ {
+ plugin->Save();
+ return osEnd;
+ }
+
+ return state;
+}
\ No newline at end of file
diff -Nru vdr-plugin-boblight-0.0.1+git20131209/main_menu.h vdr-plugin-boblight-0.0.2-4-ged814f4/main_menu.h
--- vdr-plugin-boblight-0.0.1+git20131209/main_menu.h 1970-01-01 00:00:00.000000000 +0000
+++ vdr-plugin-boblight-0.0.2-4-ged814f4/main_menu.h 2013-12-29 17:56:05.000000000 +0000
@@ -0,0 +1,28 @@
+#ifndef __MAIN_MENU_H
+#define __MAIN_MENU_H
+
+#include
+
+#include "vdrboblight.h"
+
+//***************************************************************************
+// Plugins Main Menu
+//***************************************************************************
+
+class cPluginBoblight;
+
+class cBoblightPluginMenu : public cMenuSetupPage
+{
+ public:
+
+ cBoblightPluginMenu(const char* title, cPluginBoblight* aPlugin);
+ virtual ~cBoblightPluginMenu() { };
+ virtual void Store();
+ virtual eOSState ProcessKey(eKeys key);
+
+ protected:
+ void Create(void);
+ cPluginBoblight* plugin;
+};
+
+#endif
diff -Nru vdr-plugin-boblight-0.0.1+git20131209/setup_menu.c vdr-plugin-boblight-0.0.2-4-ged814f4/setup_menu.c
--- vdr-plugin-boblight-0.0.1+git20131209/setup_menu.c 1970-01-01 00:00:00.000000000 +0000
+++ vdr-plugin-boblight-0.0.2-4-ged814f4/setup_menu.c 2013-12-29 17:56:05.000000000 +0000
@@ -0,0 +1,55 @@
+
+#include "setup_menu.h"
+#include "config.h"
+#include "common.h"
+
+//***************************************************************************
+// Object
+//***************************************************************************
+
+cAmbiSetup::cAmbiSetup(cPluginBoblight* aPlugin)
+{
+ plugin = aPlugin;
+ cineBars[0] = "Horizontal";
+ cineBars[1] = "Vertical";
+ cineBars[2] = "Both";
+
+ Setup();
+}
+
+//***************************************************************************
+// Setup
+//***************************************************************************
+
+void cAmbiSetup::Setup()
+{
+ Clear();
+
+ Add(new cMenuEditIntItem(tr("Log level"), &cfg.loglevel, 0, 3));
+ Add(new cMenuEditBoolItem(tr("Show mainmenu"), &cfg.showMainmenu));
+
+ Add(new cMenuEditIntItem(tr("Updaterate [Hz]"), &cfg.frequence, 1, 100));
+
+ Add(new cMenuEditStraItem(tr("Detect cinema bars"), &cfg.detectCineBars, 3, cineBars));
+
+ Add(new cMenuEditIntItem(tr("Threshold (0-255)"), &cfg.threshold, 0, 255));
+ Add(new cMenuEditIntItem(tr("Gamma (0-10.0)"), &cfg.gamma, 0, 100));
+ Add(new cMenuEditIntItem(tr("Value (0-20.0)"), &cfg.value, 0, 200));
+ Add(new cMenuEditIntItem(tr("Saturation (0-20.0)"), &cfg.saturation, 0, 200));
+ Add(new cMenuEditIntItem(tr("Speed (0-100)"), &cfg.speed, 0, 100));
+ Add(new cMenuEditIntItem(tr("Autospeed (0-100)"), &cfg.autospeed, 0, 100));
+ Add(new cMenuEditBoolItem(tr("Interpolation"), &cfg.interpolation));
+ Add(new cMenuEditIntItem(tr("Priority 0=Highest, 255=Lowest"), &cfg.priority, 0, 255));
+}
+
+eOSState cAmbiSetup::ProcessKey(eKeys key)
+{
+ eOSState state = cMenuSetupPage::ProcessKey(key);
+
+ return state;
+}
+
+void cAmbiSetup::Store()
+{
+ plugin->Save();
+}
\ No newline at end of file
diff -Nru vdr-plugin-boblight-0.0.1+git20131209/setup_menu.h vdr-plugin-boblight-0.0.2-4-ged814f4/setup_menu.h
--- vdr-plugin-boblight-0.0.1+git20131209/setup_menu.h 1970-01-01 00:00:00.000000000 +0000
+++ vdr-plugin-boblight-0.0.2-4-ged814f4/setup_menu.h 2013-12-29 17:56:05.000000000 +0000
@@ -0,0 +1,27 @@
+#ifndef __SETUP_MENU_H
+#define __SETUP_MENU_H
+
+#include
+#include "ambiservice.h"
+#include "vdrboblight.h"
+
+//***************************************************************************
+// Setup
+//***************************************************************************
+class cPluginBoblight;
+class cAmbiSetup : public cMenuSetupPage, public cAmbiService
+{
+ public:
+ cAmbiSetup(cPluginBoblight* aPlugin);
+
+ protected:
+
+ virtual void Setup();
+ virtual eOSState ProcessKey(eKeys Key);
+ virtual void Store();
+
+ const char* cineBars[cbCount];
+ cPluginBoblight* plugin;
+};
+
+#endif
diff -Nru vdr-plugin-boblight-0.0.1+git20131209/vdrboblight.c vdr-plugin-boblight-0.0.2-4-ged814f4/vdrboblight.c
--- vdr-plugin-boblight-0.0.1+git20131209/vdrboblight.c 2013-12-09 20:52:16.000000000 +0000
+++ vdr-plugin-boblight-0.0.2-4-ged814f4/vdrboblight.c 2013-12-29 17:56:05.000000000 +0000
@@ -16,154 +16,11 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
-
#include
+#include "vdrboblight.h"
-#include "config.h"
-#include "ambiservice.h"
-#include "ambithread.h"
-
-//***************************************************************************
-//
-//***************************************************************************
-
-static const char *VERSION = "0.0.1";
-static const char *DESCRIPTION = "Boblight with data from softhddevice";
-static const char *MAINMENUENTRY = "Boblight";
-
-//***************************************************************************
-// Setup
-//***************************************************************************
-
-class cAmbiSetup : public cMenuSetupPage, public cAmbiService
-{
- public:
-
- cAmbiSetup();
-
- protected:
-
- virtual void Setup();
- virtual eOSState ProcessKey(eKeys Key);
- virtual void Store();
-
- const char* cineBars[cbCount];
- const char* seduRGBOrders[6];
- int rgbOrderIndex;
-};
-
-//***************************************************************************
-// Plugin
-//***************************************************************************
-
-class cPluginBoblight : public cPlugin
-{
- public:
-
- cPluginBoblight(void);
- virtual ~cPluginBoblight();
- virtual const char* Version(void) { return VERSION; }
- virtual const char* Description(void) { return DESCRIPTION; }
- virtual const char* CommandLineHelp(void) { return 0; }
- virtual bool ProcessArgs(int argc, char* argv[]);
- virtual bool Initialize(void);
- virtual bool Start(void);
- virtual void Stop(void);
- virtual void Housekeeping(void) { };
- virtual void MainThreadHook(void) { };
- virtual cString Active(void);
- virtual time_t WakeupTime(void);
- virtual const char* MainMenuEntry(void) { return cfg.showMainmenu ? MAINMENUENTRY : 0; }
- virtual cOsdObject* MainMenuAction(void);
- virtual cMenuSetupPage* SetupMenu(void) { return new cAmbiSetup; }
- virtual bool SetupParse(const char* Name, const char* Value);
- virtual bool Service(const char* Id, void* Data = NULL);
- virtual const char** SVDRPHelpPages(void);
- virtual cString SVDRPCommand(const char* Command, const char* Option, int &ReplyCode);
-
- int startAtmo();
- int stopAtmo();
- cAmbiThread* update;
-
- int isRunning()
- {
- if (!update)
- return no;
-
- return update->isRunning();
- }
-};
-
-//***************************************************************************
-// Plugins Main Menu
-//***************************************************************************
-
-class cSeduPluginMenu : public cMenuSetupPage
-{
- public:
-
- cSeduPluginMenu(const char* title, cPluginBoblight* aPlugin);
- virtual ~cSeduPluginMenu() { };
-
- virtual eOSState ProcessKey(eKeys key);
-
- protected:
-
- void Store() { }
- cPluginBoblight* plugin;
-};
-
-cSeduPluginMenu::cSeduPluginMenu(const char* title, cPluginBoblight* aPlugin)
-{
- SetTitle(title ? title : "");
- plugin = aPlugin;
-
- Clear();
-
- cOsdMenu::Add(new cMenuEditStraItem(tr("View Mode"),
- (int*)&cfg.viewMode,
- (int)cAmbiService::vmCount,
- cAmbiService::viewModes));
-
- Add(new cMenuEditIntItem(tr("Fixed Color Red"), &cfg.fixedR, 0, 255));
- Add(new cMenuEditIntItem(tr("Fixed Color Green"), &cfg.fixedG, 0, 255));
- Add(new cMenuEditIntItem(tr("Fixed Color Blue"), &cfg.fixedB, 0, 255));
-
- SetHelp(0, 0, 0, 0);
-
- Display();
-}
-
-//***************************************************************************
-// Process Key
-//***************************************************************************
-
-eOSState cSeduPluginMenu::ProcessKey(eKeys key)
-{
- eOSState state = cOsdMenu::ProcessKey(key);
-
- if (key == kLeft || key == kRight)
- {
- if (cfg.viewMode == cAmbiService::vmDetached && plugin->isRunning())
- plugin->stopAtmo();
- else if (cfg.viewMode != cAmbiService::vmDetached && !plugin->isRunning())
- plugin->startAtmo();
- }
-
- if (state != osUnknown)
- return state;
-
- if (key == kOk)
- {
- SetupStore("FixedColorRed", cfg.fixedR);
- SetupStore("FixedColorGreen", cfg.fixedG);
- SetupStore("FixedColorBlue", cfg.fixedB);
- SetupStore("ViewMode", (int)cfg.viewMode);
-
- return osEnd;
- }
- return state;
-}
+#include "setup_menu.h"
+#include "main_menu.h"
//***************************************************************************
// Plugin
@@ -221,6 +78,29 @@
return done;
}
+void cPluginBoblight::Save() {
+ cfg.dirty = 1;
+ SetupStore("LogLevel", cfg.loglevel);
+ SetupStore("ShowMainmenu", cfg.showMainmenu);
+ SetupStore("StartupViewMode", cfg.startupViewMode);
+
+ SetupStore("DetectCineBars", cfg.detectCineBars);
+
+ SetupStore("Updaterate", cfg.frequence);
+ SetupStore("Threshold", cfg.threshold);
+ SetupStore("Gamma", cfg.gamma);
+ SetupStore("Value", cfg.value);
+ SetupStore("Saturation", cfg.saturation);
+ SetupStore("Speed", cfg.speed);
+ SetupStore("Autospeed", cfg.autospeed);
+ SetupStore("Interpolation", cfg.interpolation);
+ SetupStore("Priority", cfg.priority);
+
+ SetupStore("FixedColorRed", cfg.fixedR);
+ SetupStore("FixedColorGreen", cfg.fixedG);
+ SetupStore("FixedColorBlue", cfg.fixedB);
+}
+
void cPluginBoblight::Stop(void)
{
stopAtmo();
@@ -236,16 +116,23 @@
return 0;
}
+cMenuSetupPage* cPluginBoblight::SetupMenu(void) {
+ return new cAmbiSetup(this);
+}
+
cOsdObject* cPluginBoblight::MainMenuAction(void)
{
- return new cSeduPluginMenu(MAINMENUENTRY, this);
+ return new cBoblightPluginMenu(MAINMENUENTRY, this);
}
bool cPluginBoblight::SetupParse(const char* Name, const char* Value)
{
if (!strcasecmp(Name, "LogLevel")) cfg.loglevel = atoi(Value);
else if (!strcasecmp(Name, "ShowMainmenu")) cfg.showMainmenu = atoi(Value);
- else if (!strcasecmp(Name, "ViewMode")) cfg.viewMode = (cAmbiService::ViewMode)atoi(Value);
+ else if (!strcasecmp(Name, "StartupViewMode")) {
+ cfg.startupViewMode = atoi(Value);
+ cfg.viewMode = cfg.startupViewMode;
+ }
else if (!strcasecmp(Name, "DetectCineBars")) cfg.detectCineBars = (cAmbiService::Cinebars)atoi(Value);
@@ -276,9 +163,6 @@
cString cPluginBoblight::SVDRPCommand(const char* Command, const char* Option, int &ReplyCode)
{
- if (!update)
- return "Error: Plugin not initialized!";
-
if (!strcasecmp(Command, "MODE"))
{
if (Option && strcasecmp(Option, "atmo") == 0)
@@ -333,77 +217,6 @@
return HelpPages;
}
-//***************************************************************************
-// Class Setup Menu
-//***************************************************************************
-//***************************************************************************
-// Object
-//***************************************************************************
-
-cAmbiSetup::cAmbiSetup()
-{
- cineBars[0] = "Horizontal";
- cineBars[1] = "Vertical";
- cineBars[2] = "Both";
-
- Setup();
-}
-
-//***************************************************************************
-// Setup
-//***************************************************************************
-
-void cAmbiSetup::Setup()
-{
- Clear();
-
- Add(new cMenuEditIntItem(tr("Log level"), &cfg.loglevel, 0, 3));
- Add(new cMenuEditBoolItem(tr("Show mainmenu"), &cfg.showMainmenu));
-
- Add(new cMenuEditIntItem(tr("Updaterate [Hz]"), &cfg.frequence, 1, 100));
-
- Add(new cMenuEditStraItem(tr("Detect cinema bars"), (int*)&cfg.detectCineBars, 3, cineBars));
-
- Add(new cMenuEditIntItem(tr("Threshold (0-255)"), &cfg.threshold, 0, 255));
- Add(new cMenuEditIntItem(tr("Gamma (0-10.0)"), &cfg.gamma, 0, 100));
- Add(new cMenuEditIntItem(tr("Value (0-20.0)"), &cfg.value, 0, 200));
- Add(new cMenuEditIntItem(tr("Saturation (0-20.0)"), &cfg.saturation, 0, 200));
- Add(new cMenuEditIntItem(tr("Speed (0-100)"), &cfg.speed, 0, 100));
- Add(new cMenuEditIntItem(tr("Autospeed (0-100)"), &cfg.autospeed, 0, 100));
- Add(new cMenuEditBoolItem(tr("Interpolation"), &cfg.interpolation));
- Add(new cMenuEditIntItem(tr("Priority 0=Highest, 255=Lowest"), &cfg.priority, 0, 255));
-}
-
-eOSState cAmbiSetup::ProcessKey(eKeys key)
-{
- eOSState state = cMenuSetupPage::ProcessKey(key);
-
- return state;
-}
-
-void cAmbiSetup::Store()
-{
- cfg.dirty = 1;
- SetupStore("LogLevel", cfg.loglevel);
- SetupStore("ShowMainmenu", cfg.showMainmenu);
- SetupStore("ViewMode", (int)cfg.viewMode);
-
- SetupStore("DetectCineBars", cfg.detectCineBars);
-
- SetupStore("Updaterate", cfg.frequence);
- SetupStore("Threshold", cfg.threshold);
- SetupStore("Gamma", cfg.gamma);
- SetupStore("Value", cfg.value);
- SetupStore("Saturation", cfg.saturation);
- SetupStore("Speed", cfg.speed);
- SetupStore("Autospeed", cfg.autospeed);
- SetupStore("Interpolation", cfg.interpolation);
- SetupStore("Priority", cfg.priority);
-
- SetupStore("FixedColorRed", cfg.fixedR);
- SetupStore("FixedColorGreen", cfg.fixedG);
- SetupStore("FixedColorBlue", cfg.fixedB);
-}
//***************************************************************************
// VDR Internal
diff -Nru vdr-plugin-boblight-0.0.1+git20131209/vdrboblight.h vdr-plugin-boblight-0.0.2-4-ged814f4/vdrboblight.h
--- vdr-plugin-boblight-0.0.1+git20131209/vdrboblight.h 1970-01-01 00:00:00.000000000 +0000
+++ vdr-plugin-boblight-0.0.2-4-ged814f4/vdrboblight.h 2013-12-29 17:56:05.000000000 +0000
@@ -0,0 +1,82 @@
+/*
+ * vdrboblight.h
+ *
+ * Copyright (C) 2013 - Christian Völlinger
+ *
+ * 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; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * 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, see .
+ */
+#ifndef __VDRBOBLIGHT_H
+#define __VDRBOBLIGHT_H
+
+#include
+
+#include "config.h"
+#include "ambiservice.h"
+#include "ambithread.h"
+#include "setup_menu.h"
+#include "main_menu.h"
+
+//***************************************************************************
+//
+//***************************************************************************
+
+static const char *VERSION = GITVERSION;
+static const char *DESCRIPTION = "Boblight with data from softhddevice";
+static const char *MAINMENUENTRY = "Boblight";
+
+
+//***************************************************************************
+// Plugin
+//***************************************************************************
+
+class cPluginBoblight : public cPlugin
+{
+ public:
+
+ cPluginBoblight(void);
+ virtual ~cPluginBoblight();
+ virtual const char* Version(void) { return VERSION; }
+ virtual const char* Description(void) { return DESCRIPTION; }
+ virtual const char* CommandLineHelp(void) { return 0; }
+ virtual bool ProcessArgs(int argc, char* argv[]);
+ virtual bool Initialize(void);
+ virtual bool Start(void);
+ virtual void Stop(void);
+ virtual void Housekeeping(void) { };
+ virtual void MainThreadHook(void) { };
+ virtual cString Active(void);
+ virtual time_t WakeupTime(void);
+ virtual const char* MainMenuEntry(void) { return cfg.showMainmenu ? MAINMENUENTRY : 0; }
+ virtual cOsdObject* MainMenuAction(void);
+ virtual cMenuSetupPage* SetupMenu(void);
+ virtual bool SetupParse(const char* Name, const char* Value);
+ virtual bool Service(const char* Id, void* Data = NULL);
+ virtual const char** SVDRPHelpPages(void);
+ virtual cString SVDRPCommand(const char* Command, const char* Option, int &ReplyCode);
+
+ int startAtmo();
+ int stopAtmo();
+ void Save();
+ cAmbiThread* update;
+
+ int isRunning()
+ {
+ if (!update)
+ return no;
+
+ return update->isRunning();
+ }
+};
+
+#endif