Remove check legacy dvbapi version.
[vuplus_dvbapp] / lib / dvb / volume.cpp
index 0988569..b59afb9 100644 (file)
@@ -1,21 +1,14 @@
+#include <lib/base/eerror.h>
 #include <lib/dvb/volume.h>
 #include <stdio.h>
 #include <fcntl.h>
 #include <sys/ioctl.h>
 #include <unistd.h>
 
-#include <config.h>
-#if HAVE_DVB_API_VERSION < 3
-#define VIDEO_DEV "/dev/dvb/card0/video0"
-#define AUDIO_DEV "/dev/dvb/card0/audio0"
-#include <ost/audio.h>
-#include <ost/video.h>
-#else
 #define VIDEO_DEV "/dev/dvb/adapter0/video0"
 #define AUDIO_DEV "/dev/dvb/adapter0/audio0"
 #include <linux/dvb/audio.h>
 #include <linux/dvb/video.h>
-#endif
 
 eDVBVolumecontrol* eDVBVolumecontrol::instance = NULL;
 
@@ -44,13 +37,11 @@ void eDVBVolumecontrol::closeMixer(int fd)
 
 void eDVBVolumecontrol::volumeUp(int left, int right)
 {
-       printf("[volume.cpp] Volume up\n");
        setVolume(leftVol + left, rightVol + right);
 }
 
 void eDVBVolumecontrol::volumeDown(int left, int right)
 {
-       printf("[volume.cpp] Volume down\n");
        setVolume(leftVol - left, rightVol - right);
 }
 
@@ -65,48 +56,45 @@ int eDVBVolumecontrol::checkVolume(int vol)
 
 void eDVBVolumecontrol::setVolume(int left, int right)
 {
+               /* left, right is 0..100 */
        leftVol = checkVolume(left);
        rightVol = checkVolume(right);
        
+               /* convert to -1dB steps */
        left = 63 - leftVol * 63 / 100;
        right = 63 - rightVol * 63 / 100;
-       
-#if HAVE_DVB_API_VERSION < 3   
-               audioMixer_t mixer;
-#else
-               audio_mixer_t mixer;
-#endif
-
-#ifdef HAVE_DVB_API_VERSION
-               mixer.volume_left = (left * left) / 64;
-               mixer.volume_right = (right * right) / 64;
-#endif
-
-               int fd = openMixer();
-#ifdef HAVE_DVB_API_VERSION
+               /* now range is 63..0, where 0 is loudest */
+
+       audio_mixer_t mixer;
+
+       mixer.volume_left = left;
+       mixer.volume_right = right;
+
+       eDebug("Setvolume: %d %d (raw)", leftVol, rightVol);
+       eDebug("Setvolume: %d %d (-1db)", left, right);
+
+       int fd = openMixer();
+       if (fd >= 0)
+       {
                ioctl(fd, AUDIO_SET_MIXER, &mixer);
-#endif
                closeMixer(fd);
-               
-               printf("Setvolume: %d %d\n", leftVol, rightVol);
-               printf("Setvolume: %d %d\n", left, right);              
-               
+               return;
+       }
+
        //HACK?
        FILE *f;
-       if((f = fopen("/proc/stb/avs/0/volume", "wb")) < 0) {
-               printf("cannot open /proc/stb/avs/0/volume\n");
+       if((f = fopen("/proc/stb/avs/0/volume", "wb")) == NULL) {
+               eDebug("cannot open /proc/stb/avs/0/volume(%m)");
                return;
        }
-       
-       fprintf(f, "%d", left);
+
+       fprintf(f, "%d", left); /* in -1dB */
 
        fclose(f);
 }
 
 int eDVBVolumecontrol::getVolume()
 {
-       if (isMuted())
-               return 0;
        return leftVol;
 }
 
@@ -119,29 +107,45 @@ bool eDVBVolumecontrol::isMuted()
 void eDVBVolumecontrol::volumeMute()
 {
        int fd = openMixer();
-#ifdef HAVE_DVB_API_VERSION    
        ioctl(fd, AUDIO_SET_MUTE, true);
-#endif
        closeMixer(fd);
        muted = true;
+
+       //HACK?
+       FILE *f;
+       if((f = fopen("/proc/stb/audio/j1_mute", "wb")) == NULL) {
+               eDebug("cannot open /proc/stb/audio/j1_mute(%m)");
+               return;
+       }
+       
+       fprintf(f, "%d", 1);
+
+       fclose(f);
 }
 
 void eDVBVolumecontrol::volumeUnMute()
 {
        int fd = openMixer();
-#ifdef HAVE_DVB_API_VERSION
        ioctl(fd, AUDIO_SET_MUTE, false);
-#endif
        closeMixer(fd);
        muted = false;
+
+       //HACK?
+       FILE *f;
+       if((f = fopen("/proc/stb/audio/j1_mute", "wb")) == NULL) {
+               eDebug("cannot open /proc/stb/audio/j1_mute(%m)");
+               return;
+       }
+       
+       fprintf(f, "%d", 0);
+
+       fclose(f);
 }
 
 void eDVBVolumecontrol::volumeToggleMute()
 {
-       printf("Mute\n");
        if (isMuted())
                volumeUnMute();
        else
                volumeMute();
-               
-}
\ No newline at end of file
+}