|
 |
 |
 |
|
|
c't Projekte - c't-Bot und c't-Sim -
Mailinglisten
[Voriger (Datum)]
[Nächster (Datum)]
[Voriger (Thread)]
[Nächster (Thread)]
[Nach Datum][Nach Thread]
Absender: Timo Sandmann
Datum: Mo, 02.06.2008 13:28:56
In-reply-to:
<4842DB09.5000809@xxxxxx>
References:
<4842DB09.5000809@xxxxxx>
Hallo,
Am 01.06.2008 um 19:23 schrieb Achim Pankalla:
hallo,
anbei ein patch, der den fehler unter ticket 167 korregieren
sollte. :-)
das problem war, das die fkt. command_init in command.c aufgerufen
wurde, bevor der eeprom-emulator initialisiert wurde. dadurch
lieferten
die get-aufrufe in command_init immer 0.
ich habe mit diesen patch die reihenfolge in ct-bot.c so geändert, das
der eeprom-manager schon initialisiert ist, bevor ein set_ oder
get_bot_address() erfolgt.
in zuge dieser arbeiten, habe ich auch ein problem bei der auswertung
der aufrufoptionen von ct-bot.exe entdeckt (es kann zum doppelten
aufruf
von init_eeprom_man() kommen und auch hier war ein set_bot_address()
aufruf vor dem eeprom_init möglich).
erstmal danke für den Patch, testen muss ich das Ganze dann demnächst
mal unter Linux.
Aber was ich bei der neuen Argument-Auswertung nicht verstehe, für den
Fall 'i' passiert dann nur noch folgendes:
case 'i': {
/* EEPROM-Init */
printf("EEPROM soll mit den Daten einer eep-Datei initialisiert
werden.\n");
opt_eeprom = 1;
exit(0);
}
Das macht aber ja irgendwie keinen Sinn bzw. es passiert dann halt gar
nix. Wo war denn jetzt das Problem mit der alten Version?
Zur Änderung bei den Inits: Wäre es nicht einfacher, zuerst das EEPROM
zu initialisieren und dann die Argumente zu prüfen? Dann braucht man
die Bot-Adresse nicht per globaler Variable zwischenspeichern und sie
später in main() noch zu setzen. Oder schadet eine doppelte
Initialisierung des EEPROMs (für den Fall, dass 'i' übergeben wurde)?
Grüße,
Timo
|
|
|