c't Projekte - c't-Bot und c't-Sim - Mailinglisten

c't-Bot und c't-Sim


[Voriger (Datum)] [Nächster (Datum)] [Voriger (Thread)] [Nächster (Thread)]
[Nach Datum][Nach Thread]

AW: [ct-bot] Bot-2-Bot-Kommunikation mit Payload-Versand

Absender: Frank Menzel
Datum: Di, 10.03.2009 20:43:28
In-reply-to: <0F9D20D7-FB3B-4253-8D4C-F2F7414BD0B7@xxxxxxxxxxxxxxx>


Hi Timo,
mir geht?s im speziellen um das Übertragen des Stacks und dann Aufruf
des Stackverhaltens.
Oder ohne Datenübertragung einfach ein beliebiges Verhalten starten
können...

Gruß, Frank

-----Ursprüngliche Nachricht-----
Von: ct-bot-entwickler-bounces@xxxxxxxxxxxxxxxxx
[mailto:ct-bot-entwickler-bounces@xxxxxxxxxxxxxxxxx] Im Auftrag von Timo
Sandmann
Gesendet: Dienstag, 10. März 2009 16:37
An: Entwicklung rund um den c't-bot
Betreff: Re: [ct-bot] Bot-2-Bot-Kommunikation mit Payload-Versand

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hi Frank,

Am 09.03.2009 um 11:23 schrieb Menzel, Frank IT-OO4:
> Aber irgendwie fehlt mir hier noch eine allgemeingültige, von einem  
> beliebigen Verhalten aufrufbare, Kommunikationsroutine.

na ja was heißt von beliebigen Verhalten? Letztlich braucht man für  
jedes Verhalten irgendeinen speziellen Code, der die Daten dort  
speichert, wo das jeweilige Verhalten sie braucht / erwartet.

> Für den payload-Test ist ja ein eigener Buffer definiert und eine  
> Callbackroutine, die nach dem Empfang des Buffers im Empfangsbot  
> aufgerufen wird. Mir ist hier aber noch zu viel per Define zu  
> programmieren in der bot-2-bot.h bzw. bot-2-bot.c, je nachdem was  
> anwendungsbezogen passieren soll.

Die #defines sind ja nur dazu da, um Tipparbeit zu sparen und es  
übersichtlicher aussehen zu lassen.

> Auch geht es ja noch nicht, einfach ein Zielverhalten aufzurufen,  
> ohne wieder weitere Defines für den Anwendungsfall  
> reinzuprogrammieren. Man könnte doch da erlauben, ein beliebiges  
> remotecall-Verhalten, die sich ja schon in einer extra Liste  
> befinden, aufzurufen.

Ja natürlich, dazu muss nach dem Datenempfang auf dem Zielbot nur die  
Funktion bot_remotecall_from_command(char * data) aufgerufen werden.  
Allerdings haben die Remotecalls derzeit die Einschränkung, dass man  
nur dann einen starten kann, wenn nicht bereits ein anderes Verhalten  
per Remotecall gestartet wurde. Der Sim fängt das automatisch ab, aber  
ein anderer Bot weiß natürlich nicht, ob der Remotecall-Dienst "frei"  
ist oder nicht. Eventuell braucht man hier noch etwas mehr  
Fehlerbehandlung / Rückmeldungen.

> Also ich würde mir da eine Routine vorstellen, die folgende  
> Parameter hat:
> To -> Adresse Zielbot
> Datenbereich -> per Payload übertragen wenn gefüllt, sonst eben nicht
> Zielverhalten -> Auf Remotebot zu startendes Zielverhalten nach  
> Payload des Datenbereiches

Den letzten Satz verstehe ich irgendwie rein sprachlich schon nicht.  
Aber es gibt ja die Funktion int8_t  
bot_2_bot_send_payload_request(uint8_t to, uint8_t type, void * data,  
int16_t size), womit "To" und "Datenbereich" schon einmal direkt  
abgehandelt sind ("to" und "data"). "Zielverhalten" muss man halt  
irgendwie mit "type" übertragen, denn je nachdem, welches Verhalten  
die Daten bekommen soll, muss auch der Speicherplatz, wo die Daten  
abgelegt werden, unterschieden werden.
Ich verstehe nicht so richtig, was du meinst, könntest du vielleicht  
mal ein Beispiel anhand eines konkreten Verhaltens machen?

> Oder nur für Payload-Übertragung ohne Zielverhalten.

Ja aber man muss ja irgendwie angeben, wo die Daten hin sollen, oder  
was meinst du?

Gruß,
Timo

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (Darwin)

iEYEARECAAYFAkm2iTYACgkQDH/BX4067fJr3ACffBpgyNMDopWxswEN9BUHNGEV
yZ8AnA7QlkBKf/S0dZaqWvbvJ0g57InA
=XZUs
-----END PGP SIGNATURE-----

_______________________________________________
ct-bot-entwickler Mailingliste
ct-bot-entwickler@xxxxxxxxxxxxxxxxx
http://www.heise.de/bin/newsletter/listinfo/ct-bot-entwickler