--- /dev/null
+#include <lib/driver/misc_options.h>
+
+#include <unistd.h>
+#include <fcntl.h>
+#include <sys/ioctl.h>
+
+#include <lib/base/init.h>
+#include <lib/base/init_num.h>
+#include <lib/base/eerror.h>
+
+Misc_Options *Misc_Options::instance = 0;
+
+Misc_Options::Misc_Options()
+ :m_12V_output_state(-1)
+{
+ ASSERT(!instance);
+ instance = this;
+}
+
+int Misc_Options::set_12V_output(int state)
+{
+ if (state == m_12V_output_state)
+ return 0;
+ int fd = open("/proc/stb/misc/12V_output", O_WRONLY);
+ if (fd < 0)
+ {
+ eDebug("couldn't open /proc/stb/misc/12V_output");
+ return -1;
+ }
+ const char *str=0;
+ if (state == 0)
+ str = "off";
+ else if (state == 1)
+ str = "on";
+ if (str)
+ write(fd, str, strlen(str));
+ m_12V_output_state = state;
+ close(fd);
+ return 0;
+}
+
+Misc_Options *Misc_Options::getInstance()
+{
+ return instance;
+}
+
+//FIXME: correct "run/startlevel"
+eAutoInitP0<Misc_Options> init_misc_options(eAutoInitNumbers::rc, "misc options");
--- /dev/null
+#ifndef __misc_options_h
+#define __misc_options_h
+
+class Misc_Options
+{
+ static Misc_Options *instance;
+ int m_12V_output_state;
+#ifdef SWIG
+ Misc_Options();
+#endif
+public:
+#ifndef SWIG
+ Misc_Options();
+#endif
+ static Misc_Options *getInstance();
+ int set_12V_output(int val);
+ int get_12V_output() { return m_12V_output_state; }
+};
+
+#endif // __misc_options_h