GMCP_Status(): Statusabfrage GMCP-Module
Funktion kann verwendet werden, um zu pruefen,
ob bestimmte Module aktiv sind und welche Version
davon. Explizit auch, ob das "Core"-Modul und
damit GMCP ueberhaupt aktiv ist.
Change-Id: I516bd2085584705a504ad9480cd6e962178aed40
diff --git a/std/player/protocols/gmcp.c b/std/player/protocols/gmcp.c
index 2845bd7..3d954da 100644
--- a/std/player/protocols/gmcp.c
+++ b/std/player/protocols/gmcp.c
@@ -59,6 +59,21 @@
// **************** API nach Aussen folgt ab hier ********************
+// Prueft, ob ein Modul aktiv ist. Falls ja, wird die Versionsnummer des
+// aktiven Moduls geliefert.
+// Wenn <module> 0 ist, wird das Modul "Core" geprueft, d.h. ob GMCP
+// grundsaetzlich aktiv ist.
+protected int GMCP_Status(string module)
+{
+ module ||= "Core";
+ if (mappingp(gmcpdata) && member(gmcpdata, module))
+ {
+ struct gmcp_mod_s mod = gmcpdata[module];
+ return mod->version;
+ }
+ return 0;
+}
+
// Wird vom Spielerobjekt gerufen, wenn sich Daten am Charakter veraendert
// haben, die gesendet werden sollten.
// Dies ist eigentlich nur ein Wrapper, der die Daten an den Handler eines
diff --git a/sys/player/gmcp.h b/sys/player/gmcp.h
index 8a0f13a..1c6e4fa 100644
--- a/sys/player/gmcp.h
+++ b/sys/player/gmcp.h
@@ -17,6 +17,7 @@
#define __GMCP_H_PROTO__
// prototypes
+protected int GMCP_Status(string module);
protected int GMCP_Char(mapping data);
protected int GMCP_Channel(string msg, string channel, string sender);
protected int GMCP_Room();