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