Danke für die Info, gerade für die Raspberry Gemeinde ist euer Stick interessant, wenn es darum geht, ihn in ein CarProject wie das von Bluewave einzubinden.
Leider will den Stick keiner kaufen, da es an der GUI Bedienbarkeit fehlt.
Deshalb versuche ich mich gerade durch die offene Treiberschnittstelle zu arbeiten. Das arbeiten mit dem mediaclient geht, ist aber sehr aufwändig.
Zum Testen versuche ich einfach mal die Mute on/off Funktion umzusetzen, jedoch renne ich hier bereits in Fehler.
Ich habe mir die aktuellese sundtek_netinst.sh geladen und mit -service installiert. Die mediaclient.h musste ich bereits anpassen, da der compiler Warnungen auswirft (char ist nicht mehr richtig unter C++ ISO 11, mit const char sind die Warnungen weg).
Das größere Problem bereitet mir aber gerade
int net_ioctl(int fd, unsigned int command, parameter);
Wenn ich parameter mit void initialisere, meldet Qt sofort, das dies nicht möglich ist. Mit was muss hier parameter initialisert werden?
mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <iostream>
#include <unistd.h>
#include <fcntl.h>
#include <sstream>
//#include <video.h>
#include "/opt/include/mediaclient.h"
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = nullptr);
~MainWindow();
int mute(int fd, const char *arg);
private slots:
void on_pushButton_clicked();
private:
Ui::MainWindow *ui;
public:
int fd = net_open("/dev/radio0", O_RDWR); // open device node
int net_ioctl(int fd, unsigned int command, void parameter);
//net_close(fd);
};
#endif // MAINWINDOW_H
mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
//#include <iostream>
//#include <iostream>
//#include <unistd.h>
//#include <fcntl.h>
//#include <sstream>
//#include "/opt/include/mediaclient.h"
//#include "/opt/include/mediacmds.h"
using namespace std;
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
/*
int fd = net_open("/dev/radio0", O_RDWR); // open device node
//net_ioctl(fd, command, parameter);
net_close(fd);
*/
}
MainWindow::~MainWindow()
{
delete ui;
}
int MainWindow::mute(int fd, const char *arg)
{
//int set_mute(int fd, char *arg) {
int type = 0;
struct v4l2_control control;
if (strcmp(arg, "off") == 0) {
control.id = V4L2_CID_AUDIO_MUTE;
control.value = 0;
fprintf(stdout, "Enabling audiostream\n");
net_ioctl(fd, VIDIOC_S_CTRL, &control);
} else if (strcmp(arg, "on") == 0) {
fprintf(stdout, "Disabling audiostream\n");
control.id = V4L2_CID_AUDIO_MUTE;
control.value = 1;
net_ioctl(fd, VIDIOC_S_CTRL, &control);
} else
fprintf(stdout, "Wrong argument [%s] choose between on|off\n", arg);
return 0;
//}
}
void MainWindow::on_pushButton_clicked()
{
//fd = net_open("/dev/radio0", O_RDWR); // open device node
mute(0, "on");
}