## c't-Projekte - Mailinglisten

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

### [ct-bot] Ticket 167

Absender: Achim Pankalla
Datum: So, 01.06.2008 19:23:27

    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).

    da ich mich in letzter zeit nicht viel um den bot kümmern konnte :'( .
    bitte ich alle die sich mit der neuen kommunikationsfunktionen schon
    ausgiebig beschäftigt haben, meinen patch auch noch zu testen. ich
    konnte bei einigen kleinen tests keine fehlfkt. erkennen.

    mit freundlichen grüssen
        achim

    Index: E:/eclipse/ct-bot orginal/ct-Bot/pc/cmd-tools_pc.c
    ===================================================================
    --- E:/eclipse/ct-bot orginal/ct-Bot/pc/cmd-tools_pc.c	(revision 1442)
    +++ E:/eclipse/ct-bot orginal/ct-Bot/pc/cmd-tools_pc.c	(working copy)
    @@ -37,6 +37,9 @@
     #include "tcp.h"
     #include "command.h"

    +uint8_t opt_baddress = 0;
    +uint8_t opt_eeprom = 0;
    +
     /*!
      * Zeigt Informationen zu den moeglichen Kommandozeilenargumenten an.
      */
    @@ -109,12 +112,11 @@

     		case 'a': {
     			/* Bot-Adresse wurde uebergeben */
    -			int addr = atoi(optarg);
    -			if ((addr >= CMD_SIM_ADDR) && (addr != CMD_BROADCAST)) {
    +			opt_baddress = atoi(optarg);
    +			if ((opt_baddress >= CMD_SIM_ADDR) && (opt_baddress != CMD_BROADCAST)) {
     				printf("Unzulaessige Bot-Adresse!\n");
     				exit(1);
     			}
    -			set_bot_address(addr);
     			break;
     		}

    @@ -224,11 +226,7 @@
     		case 'i': {
     			/* EEPROM-Init */
     			printf("EEPROM soll mit den Daten einer eep-Datei initialisiert werden.\n");
    -			if (init_eeprom_man(1) != 0) {
    -				printf("Fehler bei EEPROM-Initialisierung!\n");
    -			} else {
    -				printf("done.\n");
    -			}
    +			opt_eeprom = 1;
     			exit(0);
     		}

    Index: E:/eclipse/ct-bot orginal/ct-Bot/Changelog.txt
    ===================================================================
    --- E:/eclipse/ct-bot orginal/ct-Bot/Changelog.txt	(revision 1442)
    +++ E:/eclipse/ct-bot orginal/ct-Bot/Changelog.txt	(working copy)
    @@ -1,5 +1,9 @@
     CHANGELOG fuer c't-Bot
     ======================
    +2008-06-01 Achim Pankalla [achim.pankalla@xxxxxx]: Ticket 167.
    +												   Fehler korregiert. Benutzung von EEPROM Variablen vor der Initialisierung des EEPROM-Emulators.
    +												   Im Zuge dieser Korrektur auch Probleme mit der Auswertung der Optionen -i und -a beseitigt.
    +
     2008-05-21 Timo Sandmann [mail@xxxxxxxxxxxxxxx]: TCP-Testserver / -Client debuggt (#161), funktioniert nun (wieder)

     2008-05-19 Timo Sandmann [mail@xxxxxxxxxxxxxxx]: 3. Version fuer catch_pillar(), aehnlich zu Version 2, berechnet die Entfernung zum Objekt aber anders. Einstellbar mit #define CATCH_PILLAR_VERSION in behaviour_catch_pillar.c
    Index: E:/eclipse/ct-bot orginal/ct-Bot/ct-Bot.c
    ===================================================================
    --- E:/eclipse/ct-bot orginal/ct-Bot/ct-Bot.c	(revision 1442)
    +++ E:/eclipse/ct-bot orginal/ct-Bot/ct-Bot.c	(working copy)
    @@ -76,6 +76,10 @@
     #include "map.h"
     #include "cmd_tools.h"

    +#ifdef PC
    +	extern uint8_t opt_baddress, opt_eeprom;
    +#endif
    +
     /*!
      * Der Mikrocontroller und der PC-Simulator brauchen ein paar Einstellungen,
      * bevor wir loslegen koennen.
    @@ -125,11 +129,6 @@
     	#ifdef BOT_2_PC_AVAILABLE
     		bot_2_pc_init();
     	#endif
    -	#ifdef PC
    -		if (init_eeprom_man(0) != 0) {
    -			LOG_ERROR("EEPROM-Manager nicht korrekt initialisiert!");
    -		}
    -	#endif
     	#ifdef DISPLAY_AVAILABLE
     		display_init();
     	#endif
    @@ -185,12 +184,20 @@
     	#ifdef DEBUG_TIMES
     		struct timeval start, stop;
     	#endif
    +
     	/* Kommandozeilen-Argumente auswerten */
     	hand_cmd_args(argc, argv);
    +
    +	/* EEPROM Emulator initialisieren */
    +	if (init_eeprom_man(opt_eeprom) != 0) {
    +		LOG_ERROR("EEPROM-Manager nicht korrekt initialisiert!");
    +	}

     	printf("c't-Bot\n");

     	/* Bot-2-Sim-Kommunikation initialisieren */
    +	if(opt_baddress > 0)
    +		set_bot_address(opt_baddress);
     	bot_2_sim_init();
     #endif	// PC

- Antworten:
  - Re: [ct-bot] Ticket 167
    - From: Timo Sandmann

- Voriger (Datum): Re: AW: [ct-bot] neues catch_pillar-Verhalten mit goto_pos, Timo Sandmann
- Nächster (Datum): Re: [ct-bot] Ticket 167, Timo Sandmann
- Voriger (Thread): Re: [ct-bot] behaviour_map_go_destination, Timo Sandmann
- Nächster (Thread): Re: [ct-bot] Ticket 167, Timo Sandmann
- Indizes:
  - Datum
  - Thread