c't

c't-Projekte - Mailinglisten


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

[ct-bot] Patch für Änderungen der Verhaltensanzeige/ Auswahl

Absender: Frank Menzel
Datum: Mo, 27.11.2006 20:26:51



 Hallo,
 anbei ein Patch, welcher die Verhaltensanzeige folgendermaßen ändert:
 1.) sichtbaren Priobereich auf Defines (PRIO_VISIBLE_MIN und
 PRIO_VISIBLE_MAX) zentral in bot-local.h gelegt; nun kann jeder selbst
 seinen gewünschten Anzeigebereich der Verhalten festlegen  
 2.) dynamische Verhaltensanzeige via Define
 DISPLAY_DYNAMIC_BEHAVIOUR_AVAILABLE ermoeglicht Online-Sehen der
 Verhaltens-Zustandsaenderungen; Selektion eines Verh. geht sofort
durch;
 Entfall der Zustands-Puffervariablen; Not-Aus bewirkt nun keinen Sprung
 mehr zum Verhaltensscreen
 

Da ich zu diesem Patch von der ct leider nichts gehört habe, auch auf
Nachfrage nicht, gebe ich ihn mal auf diesem Wege weiter. 
 

 gruss, 
 Frank Menzel
 

Index: .cdtbuild
===================================================================
RCS file: /ctbot/ct-Bot/.cdtbuild,v
retrieving revision 1.7
diff -u -r1.7 .cdtbuild
--- .cdtbuild	8 Jul 2006 02:36:15 -0000	1.7
+++ .cdtbuild	6 Nov 2006 19:52:36 -0000
@@ -10,8 +10,8 @@
 <option id="gnu.c.compiler.option.include.paths.387475860" superClass="gnu.c.compiler.option.include.paths" valueType="includePath">
 <listOptionValue builtIn="false" value="&quot;${ProjDirPath}&quot;"/>
 <listOptionValue builtIn="false" value="&quot;${ProjDirPath}/include&quot;"/>
-<listOptionValue builtIn="false" value="&quot;C:\Programme\MinGW\include&quot;"/>
-<listOptionValue builtIn="false" value="&quot;C:\Programme\pthreads\pthreads.2&quot;"/>
+<listOptionValue builtIn="false" value="&quot;C:\MinGW\include&quot;"/>
+<listOptionValue builtIn="false" value="&quot;C:\pthreads\pthreads.2&quot;"/>
 </option>
 <option id="gnu.c.compiler.option.preprocessor.def.symbols.1823712582" superClass="gnu.c.compiler.option.preprocessor.def.symbols" valueType="definedSymbols">
 <listOptionValue builtIn="false" value="PC"/>
Index: Changelog.txt
===================================================================
RCS file: /ctbot/ct-Bot/Changelog.txt,v
retrieving revision 1.110
diff -u -r1.110 Changelog.txt
--- Changelog.txt	6 Nov 2006 15:06:03 -0000	1.110
+++ Changelog.txt	6 Nov 2006 19:52:37 -0000
@@ -1,5 +1,8 @@
 CHANGELOG fuer c't-Bot
 ======================
+2006-11-06  Frank Menzel(menzelfr@xxxxxx) Aenderungen der Verhaltensanzeige: 1.) sichtbaren Priobereich auf Defines in bot-local.h gelegt 2.) dynamische Verhaltensanzeige 
+                         via Define ermoeglicht Online-Sehen der Zustandsaenderungen, Selektion eines Verh. geht sofort durch
+
 2006-11-06 Benjamin Benz [bbe@xxxxxxxx]: Kartenkoordinaten auf uin16 umgestellt
 
 2006-11-06 Benjamin Benz [bbe@xxxxxxxx]: map.c kommentiert und etwas geschliffen
Index: ct-Bot.c
===================================================================
RCS file: /ctbot/ct-Bot/ct-Bot.c,v
retrieving revision 1.39
diff -u -r1.39 ct-Bot.c
--- ct-Bot.c	6 Nov 2006 12:32:12 -0000	1.39
+++ ct-Bot.c	6 Nov 2006 19:52:38 -0000
@@ -265,10 +265,14 @@
 					 */ 
 					while((ptr != NULL)&& (linecounter<5))	{
 					 
-					  if  ((ptr->priority > 2) &&(ptr->priority <= 200)) {
+					  if  ((ptr->priority >= PRIO_VISIBLE_MIN) &&(ptr->priority <= PRIO_VISIBLE_MAX)) {
                         if   (colcounter >= firstcol) { 
 				          display_cursor(linecounter,((colcounter % 2)* 12)+1);
-					      display_printf(" %3d,%2d",ptr->priority,ptr->active_new);				      
+				          #ifdef DISPLAY_DYNAMIC_BEHAVIOUR_AVAILABLE
+					        display_printf(" %3d,%2d",ptr->priority,ptr->active);
+					      #else
+					        display_printf(" %3d,%2d",ptr->priority,ptr->active_new);				      
+					      #endif
 					      colcounter++;
 					    
 					      /* bei colcounter 0 neue Zeile */
Index: ct-Bot.h
===================================================================
RCS file: /ctbot/ct-Bot/ct-Bot.h,v
retrieving revision 1.32
diff -u -r1.32 ct-Bot.h
--- ct-Bot.h	6 Nov 2006 15:06:03 -0000	1.32
+++ ct-Bot.h	6 Nov 2006 19:52:38 -0000
@@ -51,7 +51,9 @@
 //#define DISPLAY_SCREEN_RESETINFO	/*!< Zeigt auf Screen 4 Informationen ueber Resets an */
 //#define DISPLAY_ODOMETRIC_INFO 	/*!< Zeigt auf Screen 4 Positions- und Geschwindigkeitsdaten */
 //#define DISPLAY_REGELUNG_AVAILABLE 3 /*!< Zeigt Reglerdaten auf Screen 4, wenn SPEED_CONTROL_AVAILABLE gesetzt ist*/
-//#define DISPLAY_BEHAVIOUR_AVAILABLE  /*!< Anzeige der Verhalten im Display Screen 3, ersetzt Counteranzeige */
+#define DISPLAY_BEHAVIOUR_AVAILABLE  /*!< Anzeige der Verhalten im Display Screen 3, ersetzt Counteranzeige */
+#define DISPLAY_DYNAMIC_BEHAVIOUR_AVAILABLE /*!< Zustandsaenderungen der Verhalten sind direkt unter Umgehung der Puffervar sichtbar */
+
 #define MEASURE_MOUSE_AVAILABLE			/*!< Geschwindigkeiten werden aus den Maussensordaten berechnet */
 #define MEASURE_COUPLED_AVAILABLE		/*!< Geschwindigkeiten werden aus Maus- und Encoderwerten ermittelt und gekoppelt */
 
Index: rc5.c
===================================================================
RCS file: /ctbot/ct-Bot/rc5.c,v
retrieving revision 1.26
diff -u -r1.26 rc5.c
--- rc5.c	6 Nov 2006 12:32:12 -0000	1.26
+++ rc5.c	6 Nov 2006 19:52:39 -0000
@@ -106,8 +106,9 @@
 	 * Diese Funktion setzt die Aktivitaeten der Verhalten nach der Auswahl.
 	 * Hierdurch erfolgt der Startschuss fuer Umschaltung der Verhalten
 	 */	
+  #ifndef DISPLAY_DYNAMIC_BEHAVIOUR_AVAILABLE
 	static void rc5_set_all_behaviours(void) ;
-	  
+  #endif  
 	/*! 
 	 * toggled ein Verhalten der Verhaltensliste an Position pos,
 	 * die Aenderung erfolgt nur auf die Puffervariable  
@@ -194,7 +195,9 @@
 		     	 
 			       if (display_screen == 1) {
 			         behaviour_page = 1;
-			          set_behaviours_equal();
+			          #ifndef DISPLAY_DYNAMIC_BEHAVIOUR_AVAILABLE
+			            set_behaviours_equal();
+			          #endif
 			       }
 			   
 		         }
@@ -212,10 +215,13 @@
 			
 			  /* Screen direkt waehlen und Verhaltens-Puffervariablen abgleichen*/
 			  display_screen = par->value1;
-		       if ((display_screen == 2)&& (behaviour_page == 1)) {
-			      
+			  
+			  // bei dyn. Anzeige und Auswahl keine Ubernahme in Puffervariable benoetigt
+			  #ifndef DISPLAY_DYNAMIC_BEHAVIOUR_AVAILABLE
+		        if ((display_screen == 2)&& (behaviour_page == 1)) {	      
 			       set_behaviours_equal();
 			     }  
+			  #endif
 			  behaviour_page = 1;
 			  
 		   #else
@@ -310,8 +316,11 @@
 		    // Alle Verhalten deaktivieren
 		    deactivateAllBehaviours();  // alle Verhalten deaktivieren mit vorheriger Sicherung
 		     #ifdef DISPLAY_BEHAVIOUR_AVAILABLE
-		       display_clear();         // Screen zuerst loeschen
-		       display_screen = 2;      // nach Notstop in den Verhaltensscreen mit Anzeige der alten Verhalten
+		        // bei dynamischer Verhaltensanzeige kein Sprung in Anzeigescreen 
+		        #ifndef DISPLAY_DYNAMIC_BEHAVIOUR_AVAILABLE
+		         display_clear();         // Screen zuerst loeschen
+		         display_screen = 2;      // nach Notstop in den Verhaltensscreen mit Anzeige der alten Verhalten
+		        #endif
 		     #endif
 		#endif
 }
@@ -382,11 +391,15 @@
 /*!
  * Diese Funktion setzt die Aktivitaeten der Verhalten nach der Auswahl.
  * Hierdurch erfolgt der Startschuss fuer Umschaltung der Verhalten
- */	  static void rc5_set_all_behaviours(void) {
-	
+ * nicht verwendet bei sofortiger Anzeige und Auswahl der Aktivitaet
+ */	  
+  #ifndef DISPLAY_DYNAMIC_BEHAVIOUR_AVAILABLE
+   static void rc5_set_all_behaviours(void) {
+	   
 		  set_behaviours_active_to_new();
-	
-  }
+	    
+   }
+  #endif
 #endif  
 
 /*!
@@ -408,7 +421,11 @@
 					case 6: rc5_toggle_behaviour_new(6); break;
 					case 7: break;
 					case 8: break;
-					case 9: rc5_set_all_behaviours(); break;
+					case 9: 
+					       #ifndef DISPLAY_DYNAMIC_BEHAVIOUR_AVAILABLE
+					         rc5_set_all_behaviours(); 
+					       #endif
+					       break;
 				}
 				break;
 		#endif
Index: .settings/org.eclipse.cdt.managedbuilder.core.prefs
===================================================================
RCS file: /ctbot/ct-Bot/.settings/org.eclipse.cdt.managedbuilder.core.prefs,v
retrieving revision 1.7
diff -u -r1.7 org.eclipse.cdt.managedbuilder.core.prefs
--- .settings/org.eclipse.cdt.managedbuilder.core.prefs	8 Jul 2006 02:36:15 -0000	1.7
+++ .settings/org.eclipse.cdt.managedbuilder.core.prefs	6 Nov 2006 19:52:39 -0000
@@ -1,4 +1,4 @@
-#Fri Apr 28 20:32:38 CEST 2006
+#Mon Nov 06 19:44:32 CET 2006
 eclipse.preferences.version=1
 environment/buildEnvironmentInclude/cdt.managedbuild.config.gnu.exe.debug.1077176217=<?xml version\="1.0" encoding\="UTF-8"?>\n<environment>\n<variable name\="CPATH" operation\="remove"/>\n<variable name\="C_INCLUDE_PATH" operation\="remove"/>\n</environment>\n
 environment/buildEnvironmentInclude/cdt.managedbuild.config.gnu.exe.debug.1150677647=<?xml version\="1.0" encoding\="UTF-8"?>\n<environment>\n<variable name\="CPATH" operation\="remove"/>\n<variable name\="C_INCLUDE_PATH" operation\="remove"/>\n</environment>\n
@@ -10,7 +10,7 @@
 environment/buildEnvironmentLibrary/cdt.managedbuild.config.gnu.exe.debug.1197043799=<?xml version\="1.0" encoding\="UTF-8"?>\n<environment>\n<variable name\="LIBRARY_PATH" operation\="remove"/>\n</environment>\n
 environment/buildEnvironmentLibrary/cdt.managedbuild.config.gnu.exe.debug.2039935845=<?xml version\="1.0" encoding\="UTF-8"?>\n<environment>\n<variable name\="LIBRARY_PATH" operation\="remove"/>\n</environment>\n
 environment/buildEnvironmentLibrary/cdt.managedbuild.config.gnu.exe.release.1181183675=<?xml version\="1.0" encoding\="UTF-8"?>\r\n<environment>\r\n<variable name\="LIBRARY_PATH" operation\="remove"/>\r\n</environment>\r\n
-environment/project=<?xml version\="1.0" encoding\="UTF-8"?>\n<environment>\n<variable delimiter\="/" name\="${ProjDirPath}" operation\="replace" value\="C\:\\Dokumente und Einstellungen\\pek\\Eigene Dateien\\ctSim_2006\\workspace\\ct-Bot"/>\n</environment>\n
+environment/project=<?xml version\="1.0" encoding\="UTF-8"?>\r\n<environment/>\r\n
 environment/project/cdt.managedbuild.config.gnu.exe.debug.1077176217=<?xml version\="1.0" encoding\="UTF-8"?>\r\n<environment/>\r\n
 environment/project/cdt.managedbuild.config.gnu.exe.debug.1150677647=<?xml version\="1.0" encoding\="UTF-8"?>\r\n<environment/>\r\n
 environment/project/cdt.managedbuild.config.gnu.exe.debug.1197043799=<?xml version\="1.0" encoding\="UTF-8"?>\n<environment>\n<variable name\="PATH" operation\="append" value\="\:/usr/local/avr/bin"/>\n</environment>\n
Index: bot-logic/bot-logik.c
===================================================================
RCS file: /ctbot/ct-Bot/bot-logic/bot-logik.c,v
retrieving revision 1.1
diff -u -r1.1 bot-logik.c
--- bot-logic/bot-logik.c	6 Nov 2006 12:32:13 -0000	1.1
+++ bot-logic/bot-logik.c	6 Nov 2006 19:52:40 -0000
@@ -257,12 +257,16 @@
 	
 	#ifdef DISPLAY_BEHAVIOUR_AVAILABLE
 	  // bei Verhaltensanzeige in Aktivitaets-Auswahl-Variable sichern
-	  set_behaviours_equal();
+	  #ifndef DISPLAY_DYNAMIC_BEHAVIOUR_AVAILABLE
+	     // bei Verhaltensanzeige in Aktivitaets-Auswahl-Variable sichern
+	     // nicht bei dynamischer Anzeige und Selektion
+        set_behaviours_equal();
+      #endif
 	#endif
 		
 	// Einmal durch die Liste gehen und (fast) alle deaktivieren, Grundverhalten nicht 
 	for (job = behaviour; job; job = job->next) {
-		if ((job->priority > 2) &&(job->priority <= 200)) {
+		if ((job->priority >= PRIO_VISIBLE_MIN) &&(job->priority <= PRIO_VISIBLE_MAX)) {
             // Verhalten deaktivieren 
 			job->active = INACTIVE;	
 		}
@@ -399,7 +403,7 @@
   
 // zuerst alle Verhalten ermitteln ausser Grundverhalten
   while(ptr != NULL)	{			 
-	if  ((ptr->priority > 2) &&(ptr->priority <= 200)) 
+	if  ((ptr->priority >= PRIO_VISIBLE_MIN) &&(ptr->priority <= PRIO_VISIBLE_MAX)) 
     			max_behaviours++;		  
 						  
 	ptr = ptr->next;
@@ -428,10 +432,15 @@
 
 	// durch die Liste gehen, bis wir den gewuenschten Index erreicht haben 
 	for (job = behaviour; job; job = job->next) {
-	    if ((job->priority > 2) &&(job->priority <= 200)) {		
+	    if ((job->priority >= PRIO_VISIBLE_MIN) &&(job->priority <= PRIO_VISIBLE_MAX)) {		
 		  i++;
 		  if (i == pos) {
-		  	  job->active_new = !job->active_new;
+		  	  // bei dynamischer Wahl wird direkt die Zustandsvariable geaendert
+		  	  #ifdef DISPLAY_DYNAMIC_BEHAVIOUR_AVAILABLE
+		  	    job->active = !job->active;
+		  	  #else
+		  	     job->active_new = !job->active_new;
+		  	  #endif
 			  			      
 			  break;
 		  }
@@ -439,19 +448,21 @@
 	}
 }
 
-
+#ifndef DISPLAY_DYNAMIC_BEHAVIOUR_AVAILABLE
 /*! 
  * Startschuss, die gewaehlten neuen Verhaltensaktivitaeten werden in die
  * Verhaltensliste geschrieben und die Verhalten damit scharf geschaltet 
  */
 void set_behaviours_active_to_new(void) {
+
  Behaviour_t *job;	
    for (job = behaviour; job; job = job->next) 	{
 					 
-	if  ((job->priority > 2) &&(job->priority <= 200)) 
+	if  ((job->priority >= PRIO_VISIBLE_MIN) &&(job->priority <= PRIO_VISIBLE_MAX)) 
             job->active = job->active_new;            				 
 	 
    }
+
 }
 
 /*!
@@ -462,11 +473,11 @@
  Behaviour_t *job;	
    for (job = behaviour; job; job = job->next) 	{
 					 
-	if  ((job->priority > 2) &&(job->priority <= 200)) 
+	if  ((job->priority >= PRIO_VISIBLE_MIN) &&(job->priority <= PRIO_VISIBLE_MAX)) 
             job->active_new = job->active;            				 
 	 
    }
 }
-
+#endif
 #endif
 #endif
Index: include/bot-local.h
===================================================================
RCS file: /ctbot/ct-Bot/include/bot-local.h,v
retrieving revision 1.14
diff -u -r1.14 bot-local.h
--- include/bot-local.h	6 Nov 2006 12:32:12 -0000	1.14
+++ include/bot-local.h	6 Nov 2006 19:52:40 -0000
@@ -100,7 +100,9 @@
 #define LINE_SENSE					0x350	// Ab wann ist es Linie? (Fuer den Sim auf 350 setzen, helle Tischflaeche 50)
 
 
-
+/* Konstanten fuer Verhaltensanzeige, Verhalten mit prio von bis sichtbar */
+#define PRIO_VISIBLE_MIN 3		
+#define PRIO_VISIBLE_MAX 200
 
 
 
Index: include/bot-logic/bot-logik.h
===================================================================
RCS file: /ctbot/ct-Bot/include/bot-logic/bot-logik.h,v
retrieving revision 1.1
diff -u -r1.1 bot-logik.h
--- include/bot-logic/bot-logik.h	6 Nov 2006 12:32:13 -0000	1.1
+++ include/bot-logic/bot-logik.h	6 Nov 2006 19:52:40 -0000
@@ -63,7 +63,9 @@
    
    uint8 active:1;				/*!< Ist das Verhalten aktiv */
    #ifdef DISPLAY_BEHAVIOUR_AVAILABLE  
-   uint8 active_new:1;			/*!< Ist das via Display gewaehlte neue Sollverhalten */
+     #ifndef DISPLAY_DYNAMIC_BEHAVIOUR_AVAILABLE /*!< bei dynamischer Anzeige und Wahl keine Puffervar notwendig */
+       uint8 active_new:1;			/*!< Ist das via Display gewaehlte neue Sollverhalten */
+     #endif
    #endif
    uint8 subResult:2;			/*!< War das aufgerufene unterverhalten erfolgreich (==1)?*/
    struct _Behaviour_t *next;					/*!< Naechster Eintrag in der Liste */