Hallo,
louis hatte mich auf die Idee gebracht, Meßwerte meiner Selbstbau Arduino Wetterstation im VDR anzuzeigen.
Auf der Arduino Seite ist das recht einfach die Daten via UDP zur Linux Kiste zu schicken.
Auf der Linux Maschine braucht es einen UdP Socket der die Daten dann ausliest, diese könnte ich dann wie louis vorgschlagen hat via svdrp in den VDR bringen. (skindesigner customtokens)
Einen UDP Socket zu erstellen ist auch nicht das Problem, habe da schon was was funktioniert.
Zum Problem:
if ((recv_len = recvfrom(s, buf, BUFLEN, 0, (struct sockaddr *) &si_other, &slen)) == -1)
Die Funktion recvfrom (aus socket.h) blockiert aber den Thread, wäre auch nicht weiter schlimm, wenn das kleine Programm als Dienst gestartet wird. Dann wird gewartet bis was kommt und z.b. eine Datei akutalisiert.
Doch auch meine Ansprüche sind inzwischen auch höher geworden, ich möchte dies nicht via svdrp machen sondern ein VDR Plugin bauen.
Um einen ersten Überblick zu bekommen habe ich mir den Quellcode von dem Plugin Hello angesehen.
recvfrom wartet quasi bis Daten kommen, dieser Thread ist blockiert.
Ich sehe die VDR Housekeeping als möglichen Einhängepunkt, nur dieser Thread darf mit Sicherheit nicht blockiert werden.
Der richtige Stelle wäre wohl, nur hier gilt wohl auch, das man dort nichts blockieren darf...
virtual void MainThreadHook(void);
Bin schon neugierig auf die Vorschläge, und ob ich das verstehe und umsetzen kann.
Habe den Verdacht das eine eigene Threadclass nötig ist. 