## c't-Projekte - Mailinglisten

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

### Re: [ct-bot] signed vs. unsigned char

Absender: Fabian Recktenwald
Datum: Fr, 24.03.2006 19:56:26
In-reply-to: <44242497.7090801@xxxxxxxx>
References: <Pine.BSO.4.63.0603240904390.31736@xxxxxxxxxxxxxxxxxx> <4423C478.1030701@xxxxxxxx> <4423C9C6.2020503@xxxxxxxxxxxxxxxxxxx> <4423CA88.5000309@xxxxxxxx> <4423D842.2090007@xxxxxxxxxxxxxxxxxxx> <44242497.7090801@xxxxxxxx>

>     So, der Patch ist drin. Aber jetzt lauert eine noch viel schwierigere
>     Aufgabe: Wir sollten uns von allen int-Deklarationen Verabschieden und
>     sie auf

>     uint8, int8, unit16, int16, uint32, int32

`Vorläufig schon mal ein Teil der entsprechenden Änderungen. Die muss` `aber auf jeden Fall nochmal jemand durchsehen, ist auch noch nicht` `vollständig.`

    	Recktenwald Fabian

    Index: bot-logik.c
    ===================================================================
    RCS file: /ctbot/ct-Bot/bot-logik.c,v
    retrieving revision 1.27
    diff -u -r1.27 bot-logik.c
    --- bot-logik.c	24 Mar 2006 18:16:55 -0000	1.27
    +++ bot-logik.c	24 Mar 2006 20:07:03 -0000
    @@ -338,8 +338,8 @@
     	static int16 mot_goto_l=0;	/*!< Muss der linke Motor noch drehen?  */
     	static int16 mot_goto_r=0;	/*!< Muss der rechte Motor noch drehen?  */

    -  	int diff_l;	/* Restdistanz links */
    -	int diff_r; /* Restdistanz rechts */
    +  	int16 diff_l;	/* Restdistanz links */
    +	int16 diff_r; /* Restdistanz rechts */

     	/* Sind beide Zaehler Null und ist die Funktion active
     	 * -- sonst waeren wir nicht hier --
    @@ -556,7 +556,7 @@
      * @return Bestand Handlungsbedarf? True, wenn das Verhalten ausweichen musste, sonst False.
      * TODO: Parameter einfuegen, der dem Verhalten vorschlaegt, wie zu reagieren ist.
      * */
    -int bot_avoid_harm(void){
    +uint8 bot_avoid_harm(void){
     	if(is_obstacle_ahead(COL_CLOSEST) != False || sensBorderL > BORDER_DANGEROUS || sensBorderR > BORDER_DANGEROUS){
     		speedWishLeft = -BOT_SPEED_NORMAL;
     		speedWishRight = -BOT_SPEED_NORMAL;
    @@ -569,7 +569,7 @@
      * Es handelt sich hierbei nicht im eigentlichen Sinn um ein Verhalten, sondern ist nur eine Abstraktion der Motorkontrollen.
      * @param curve Gibt an, ob der Bot eine Kurve fahren soll. Werte von -127 (So scharf wie moeglich links) ueber 0 (gerade aus) bis 127 (so scharf wie moeglich rechts)
      * @param speed Gibt an, wie schnell der Bot fahren soll. */
    -void bot_drive(int8 curve, int speed){
    +void bot_drive(int8 curve, int16 speed){
     	// Wenn etwas ausgewichen wurde, bricht das Verhalten hier ab, sonst wuerde es evtl. die Handlungsanweisungen von bot_avoid_harm() stoeren.
     	if(bot_avoid_harm()) return;
     	if(curve < 0) {
    @@ -620,7 +620,7 @@
      * @param cm Gibt an, wie weit der Bot fahren soll. In cm :-) Die Strecke muss positiv sein, die Fahrtrichtung wird ueber speed geregelt.
      * */

    -void bot_drive_distance(Behaviour_t* caller,int8 curve, int speed, int cm){
    +void bot_drive_distance(Behaviour_t* caller,int8 curve, int16 speed, int16 cm){
     	int16 marks_to_drive = cm * 10 * ENCODER_MARKS / WHEEL_PERIMETER;
     	int16 *encoder;
     	drive_distance_curve = curve;
    Index: command.c
    ===================================================================
    RCS file: /ctbot/ct-Bot/command.c,v
    retrieving revision 1.10
    diff -u -r1.10 command.c
    --- command.c	19 Mar 2006 20:42:51 -0000	1.10
    +++ command.c	24 Mar 2006 20:07:03 -0000
    @@ -76,10 +76,10 @@
      * Greift auf low_read() zurueck
      * @see low_read()
      */
    -int command_read(void){
    -	int bytesRcvd;
    -	int start=0;			// start of command sequence
    -	int i;
    +int8 command_read(void){
    +	uint8 bytesRcvd;
    +	uint8 start=0;			// start of command sequence
    +	uint8 i;
     	command_t * command;		// Pointer to Cast rceceived data
     	char * ptr;			// helper
     	char buffer[RCVBUFSIZE];       // Buffer
    @@ -154,7 +154,7 @@
     	}
     }

    -static int count=1;	/*!< Zaehler fuer Paket-Sequenznummer*/
    +static uint16 count=1;	/*!< Zaehler fuer Paket-Sequenznummer*/

     /*!
      * Uebertraegt ein Kommando und wartet nicht auf eine Antwort
    @@ -222,8 +222,8 @@
      * Wertet das Kommando im Puffer aus
      * return 1, wenn Kommando schon bearbeitet wurde, 0 sonst
      */
    -int command_evaluate(void){
    -	int analyzed = 1;
    +int8 command_evaluate(void){
    +	int8 analyzed = 1;

     	switch (received_command.request.command) {
     		case CMD_SENS_RC5:
    Index: ct-Bot.c
    ===================================================================
    RCS file: /ctbot/ct-Bot/ct-Bot.c,v
    retrieving revision 1.24
    diff -u -r1.24 ct-Bot.c
    --- ct-Bot.c	24 Mar 2006 18:16:55 -0000	1.24
    +++ ct-Bot.c	24 Mar 2006 20:07:03 -0000
    @@ -145,7 +145,7 @@
      */
     	void display(void){
     		#ifdef TEST_AVAILABLE_COUNTER
    -			static int counter=0;
    +			static uint16 counter=0;
     		#endif
      		if (display_update >0)
      			#ifdef DISPLAY_SCREENS_AVAILABLE
    @@ -280,8 +280,8 @@
      */
      	int main (int argc, char *argv[]){

    -		int ch;
    -		int start_server = 0;	/*!< Wird auf 1 gesetzt, falls -s angegeben wurde */
    +		char ch;
    +		uint8 start_server = 0;	/*!< Wird auf 1 gesetzt, falls -s angegeben wurde */
     		char *hostname = NULL;	/*!< Speichert den per -t uebergebenen Hostnamen zwischen */

     		// Die Kommandozeilenargumente komplett verarbeiten
    @@ -296,7 +296,7 @@
     				// uebergeben. Der String wird in hostname
     				// gesichert.
     				{
    -					const int len = strlen(optarg);
    +					const uint16 len = strlen(optarg);
     					hostname = malloc(len + 1);
     					if (NULL == hostname)
     						exit(1);
    Index: log.c
    ===================================================================
    RCS file: /ctbot/ct-Bot/log.c,v
    retrieving revision 1.1
    diff -u -r1.1 log.c
    --- log.c	8 Mar 2006 14:21:26 -0000	1.1
    +++ log.c	24 Mar 2006 20:07:04 -0000
    @@ -100,7 +100,7 @@
      * @param line Zeilennummer
      * @param log_type Log-Typ
      */
    -extern void log_begin(char *filename, unsigned int line, LOG_TYPE log_type) {
    +extern void log_begin(char *filename, uint16 line, LOG_TYPE log_type) {

     /* Ausgaben ueber das LCD-Display werden ohne Dateiname und Zeilennumer
      * gemacht. Der Log-Typ versteckt sich im ersten Buchstaben. Durch eine
    @@ -168,7 +168,7 @@
     extern void log_printf(char *format, ...) {

     	va_list	args;
    -	unsigned int len = strlen(log_buffer);
    +	uint16 len = strlen(log_buffer);

     	#ifdef LOG_DISPLAY_AVAILABLE
     		/* Nur auf einem bestimmten Screen werden Loggings ausgegeben. */
    Index: sensor.c
    ===================================================================
    RCS file: /ctbot/ct-Bot/sensor.c,v
    retrieving revision 1.10
    diff -u -r1.10 sensor.c
    --- sensor.c	24 Mar 2006 18:16:55 -0000	1.10
    +++ sensor.c	24 Mar 2006 20:07:04 -0000
    @@ -48,8 +48,8 @@
     volatile int8 sensMouseDX;		/*!< Maussensor Delta X, positive Werte zeigen querab der Fahrtrichtung nach rechts */
     volatile int8 sensMouseDY;		/*!< Maussensor Delta Y, positive Werte zeigen in Fahrtrichtung */

    -volatile int sensMouseX;		/*!< Mausposition X, positive Werte zeigen querab der Fahrtrichtung nach rechts */
    -volatile int sensMouseY;		/*!< Mausposition Y, positive Werte zeigen in Fahrtrichtung  */
    +volatile int16 sensMouseX;		/*!< Mausposition X, positive Werte zeigen querab der Fahrtrichtung nach rechts */
    +volatile int16 sensMouseY;		/*!< Mausposition Y, positive Werte zeigen in Fahrtrichtung  */

     volatile int16 sensEncL=0;	/*!< Encoder linker Motor */
     volatile int16 sensEncR=0;	/*!< Encoder rechter Motor */
    Index: include/bot-logik.h
    ===================================================================
    RCS file: /ctbot/ct-Bot/include/bot-logik.h,v
    retrieving revision 1.11
    diff -u -r1.11 bot-logik.h
    --- include/bot-logik.h	24 Mar 2006 18:16:55 -0000	1.11
    +++ include/bot-logik.h	24 Mar 2006 20:07:04 -0000
    @@ -103,7 +103,7 @@
      * @param cm Gibt an, wie weit der Bot fahren soll. In cm :-) Die Strecke muss positiv sein, die Fahrtrichtung wird ueber speed geregelt.
      * */

    -void bot_drive_distance(Behaviour_t* caller,int8 curve, int speed, int cm);
    +void bot_drive_distance(Behaviour_t* caller,int8 curve, int16 speed, int16 cm);

     /*!
      * Dreht den Bot im mathematisch positiven Sinn.
    Index: include/command.h
    ===================================================================
    RCS file: /ctbot/ct-Bot/include/command.h,v
    retrieving revision 1.8
    diff -u -r1.8 command.h
    --- include/command.h	24 Mar 2006 18:16:55 -0000	1.8
    +++ include/command.h	24 Mar 2006 20:07:04 -0000
    @@ -119,7 +119,7 @@
      * greift auf low_read() zurueck
      * @see low_read()
      */
    -int command_read(void);
    +int8 command_read(void);

     /*!
      * Uebertraegt ein Kommando und wartet nicht auf eine Antwort
    @@ -144,7 +144,7 @@
      * Wertet das Kommando im Puffer aus
      * return 1, wenn Kommando schon bearbeitet wurde, 0 sonst
      */
    -int command_evaluate(void);
    +int8 command_evaluate(void);

     /*!
      * Gibt ein Kommando auf dem Bildschirm aus
    Index: include/display.h
    ===================================================================
    RCS file: /ctbot/ct-Bot/include/display.h,v
    retrieving revision 1.8
    diff -u -r1.8 display.h
    --- include/display.h	24 Mar 2006 18:16:55 -0000	1.8
    +++ include/display.h	24 Mar 2006 20:07:04 -0000
    @@ -56,7 +56,7 @@
      * @param row Zeile
      * @param column Spalte
      */
    -void display_cursor (int row, int column) ;
    +void display_cursor (uint8 row, uint8 column) ;

     /*!
      * Schreibt einen String auf das Display.
    Index: include/global.h
    ===================================================================
    RCS file: /ctbot/ct-Bot/include/global.h,v
    retrieving revision 1.4
    diff -u -r1.4 global.h
    --- include/global.h	4 Mar 2006 14:54:23 -0000	1.4
    +++ include/global.h	24 Mar 2006 20:07:05 -0000
    @@ -46,12 +46,11 @@
     	#endif

     	typedef unsigned char uint8;                       /*!< vorzeichenlose 8-Bit-Zahl  */
    +	typedef short unsigned int uint16;                 /*!< vorzeichenlose 16-Bit-Zahl  */
     	typedef unsigned int word;                         /*!< vorzeichenlose 16-Bit-Zahl  */
     	typedef signed char int8;                          /*!< vorzeichenbehaftete 8-Bit-Zahl */
     	typedef short int int16;                           /*!< vorzeichenbehaftete 16-Bit-Zahl  */

    -	#define uint16                  word				/*!< Int mit 16 Bit */
    -
     	#define True                  1						/*!< Wahr */
     	#define False                 0						/*!< Falsch */

    Index: include/sensor.h
    ===================================================================
    RCS file: /ctbot/ct-Bot/include/sensor.h,v
    retrieving revision 1.11
    diff -u -r1.11 sensor.h
    --- include/sensor.h	24 Mar 2006 18:16:55 -0000	1.11
    +++ include/sensor.h	24 Mar 2006 20:07:05 -0000
    @@ -57,8 +57,8 @@
     extern volatile int8 sensMouseDX;		/*!< Maussensor Delta X, positive Werte zeigen querab der Fahrtrichtung nach rechts */
     extern volatile int8 sensMouseDY;		/*!< Maussensor Delta Y, positive Werte zeigen in Fahrtrichtung */

    -extern volatile int sensMouseX;		/*!< Mausposition X, positive Werte zeigen querab der Fahrtrichtung nach rechts */
    -extern volatile int sensMouseY;		/*!< Mausposition Y, positive Werte zeigen in Fahrtrichtung  */
    +extern volatile int16 sensMouseX;		/*!< Mausposition X, positive Werte zeigen querab der Fahrtrichtung nach rechts */
    +extern volatile int16 sensMouseY;		/*!< Mausposition Y, positive Werte zeigen in Fahrtrichtung  */

     extern volatile int16 v_left;			/*!< Abrollgeschwindigkeit des linken Rades in [mm/s] [-128 bis 127] relaisitisch [-50 bis 50] */
    Index: include/uart.h
    ===================================================================
    RCS file: /ctbot/ct-Bot/include/uart.h,v
    retrieving revision 1.7
    diff -u -r1.7 uart.h
    --- include/uart.h	24 Mar 2006 18:16:55 -0000	1.7
    +++ include/uart.h	24 Mar 2006 20:07:05 -0000
    @@ -64,12 +64,12 @@
      * @param length Groesse des Datenpuffers in bytes
      * @return Anzahl der gesendete Bytes
      */
    -int uart_write(uint8 * data, int length);
    +uint16 uart_write(uint8 * data, uint16 length);

     /* Liest Zeichen von der UART
      * @param data Der Zeiger an die die gelesenen Zeichen kommen
      * @param length Anzahl der zu lesenden Bytes
      * @return Anzahl der tatsaechlich gelesenen Zeichen
      */
    -int uart_read(void* data, int length);
    +uint16 uart_read(void* data, uint16 length);
     #endif
    Index: mcu/adc.c
    ===================================================================
    RCS file: /ctbot/ct-Bot/mcu/adc.c,v
    retrieving revision 1.3
    diff -u -r1.3 adc.c
    --- mcu/adc.c	24 Mar 2006 18:16:55 -0000	1.3
    +++ mcu/adc.c	24 Mar 2006 20:07:05 -0000
    @@ -46,8 +46,8 @@
      * Liest einen analogen Kanal aus
      * @param channel Kanal - hex-Wertigkeit des Pins (0x01 fï¿½r PA0; 0x02 fï¿½r PA1, ..)
      */
    -int adc_read(uint8 channel){
    -	int result = 0x00;
    +uint16 adc_read(uint8 channel){
    +	uint16 result = 0x00;

     	// interne Refernzspannung AVCC, rechts Ausrichtung
     	ADMUX= _BV(REFS0) ;//| _BV(REFS1);	 //|(0<<ADLAR);
    Index: mcu/delay.c
    ===================================================================
    RCS file: /ctbot/ct-Bot/mcu/delay.c,v
    retrieving revision 1.2
    diff -u -r1.2 delay.c
    --- mcu/delay.c	17 Mar 2006 17:09:24 -0000	1.2
    +++ mcu/delay.c	24 Mar 2006 20:07:05 -0000
    @@ -55,11 +55,11 @@
      * ==> auflï¿½sung ohne rtc: 100ms-schritte mir rtc: 5ms-Schritte
      * @param ms Anzahl der Millisekunden
      */
    -void delay(int ms){
    -	int ms_counter=0;
    +void delay(uint16 ms){
    +	uint16 ms_counter=0;

     	#ifdef RTC_AVAILABLE
    -		int ms_temp=rtc_msecond;
    +		uint16 ms_temp=rtc_msecond;
     	#endif

     	while (ms_counter <ms){
    Index: mcu/display.c
    ===================================================================
    RCS file: /ctbot/ct-Bot/mcu/display.c,v
    retrieving revision 1.7
    diff -u -r1.7 display.c
    --- mcu/display.c	24 Mar 2006 18:16:55 -0000	1.7
    +++ mcu/display.c	24 Mar 2006 20:07:05 -0000
    @@ -135,7 +135,7 @@
      * @param row Zeile
      * @param column Spalte
      */
    -void display_cursor (int row, int column) {
    +void display_cursor (uint8 row, uint8 column) {
        switch (row) {
         case 1:
     		display_cmd (0x80 + column - 1);
    @@ -206,7 +206,7 @@
      */
     void display_printf(char *format, ...) {

    -	unsigned int run = 0;
    +	uint8 run = 0;
     	va_list	args;

     	/* Sicher gehen, das der zur Verfuegung stehende Puffer nicht
    Index: mcu/mouse.c
    ===================================================================
    RCS file: /ctbot/ct-Bot/mcu/mouse.c,v
    retrieving revision 1.4
    diff -u -r1.4 mouse.c
    --- mcu/mouse.c	24 Mar 2006 18:16:55 -0000	1.4
    +++ mcu/mouse.c	24 Mar 2006 20:07:05 -0000
    @@ -65,7 +65,7 @@
      * @return das Byte
      */
     int8 maus_sens_readByte(void){
    -	int i;
    +	int8 i;
     	char data=0;

     	MAUS_DDR  &= ~MAUS_SDA_PIN; 	// SDA auf Input
    @@ -86,7 +86,7 @@
      * @param data Datum
      */
     void maus_sens_write(int8 adr, uint8 data){
    -	int i;
    +	int8 i;
     	maus_sens_writeByte(adr);
     	maus_sens_writeByte(data);
     	for (i=0; i<75; i++){asm("nop");}	// mindestens 100 Mikrosekunden Pause!!!
    @@ -99,7 +99,7 @@
      * @return das Datum
      */
     int8 maus_sens_read(uint8 adr){
    -	int i;
    +	int8 i;
     	maus_sens_writeByte(adr);
     	for (i=0; i<75; i++){asm("nop");}	// mindestens 100 Mikrosekunden Pause!!!
     	return maus_sens_readByte();
    Index: mcu/uart.c
    ===================================================================
    RCS file: /ctbot/ct-Bot/mcu/uart.c,v
    retrieving revision 1.6
    diff -u -r1.6 uart.c
    --- mcu/uart.c	24 Mar 2006 18:16:55 -0000	1.6
    +++ mcu/uart.c	24 Mar 2006 20:07:06 -0000
    @@ -123,7 +123,7 @@
     //#define uart_send_cmd(cmd)  uart_write(cmd,sizeof(command_t));

     /*
    -int uart_send_cmd(command_t *cmd){
    +uint uart_send_cmd(command_t *cmd){
     	int i;
     	char * ptr = (char*) cmd;
     	for (i=0; i<sizeof(command_t); i++)
    @@ -139,8 +139,8 @@
      * @param length Groesse des Datenpuffers in bytes
      * @return Anzahl der gesendete Bytes
      */
    -int uart_write(uint8 * data, int length){
    -	int i;
    +uint16 uart_write(uint8 * data, uint16 length){
    +	uint16 i;
     	char * ptr = (char*) data;
     	for (i=0; i<length; i++)
     		uart_send_byte(*ptr++);
    @@ -155,10 +155,10 @@
      * @param length Anzahl der zu lesenden Bytes
      * @return Anzahl der tatsaechlich gelesenen Zeichen
      */
    -int uart_read(void* data, int length){
    +int16 uart_read(void* data, uint16 length){
     	uint8 i;
     	char* ptr = data;
    -	int count= uart_data_available();
    +	uint16 count= uart_data_available();

     	if (count > length)
     		count=length;
    Index: pc/display_pc.c
    ===================================================================
    RCS file: /ctbot/ct-Bot/pc/display_pc.c,v
    retrieving revision 1.9
    diff -u -r1.9 display_pc.c
    --- pc/display_pc.c	24 Mar 2006 18:16:55 -0000	1.9
    +++ pc/display_pc.c	24 Mar 2006 20:07:06 -0000
    @@ -84,7 +84,7 @@
     /*!
     ** LCD_Cursor: Positioniert den LCD-Cursor bei "row", "column".
     */
    -void display_cursor (int row, int column) {
    +void display_cursor (uint8 row, uint8 column) {
     	POSITION(row, column	);
     }

- Antworten:
  - Re: [ct-bot] signed vs. unsigned char
    - From: Benjamin Benz

- Referenzen:
  - [ct-bot] signed vs. unsigned char
    - From: Markus Hennecke
  - Re: [ct-bot] signed vs. unsigned char
    - From: Benjamin Benz
  - Re: [ct-bot] signed vs. unsigned char
    - From: Fabian Recktenwald
  - Re: [ct-bot] signed vs. unsigned char
    - From: Benjamin Benz
  - Re: [ct-bot] signed vs. unsigned char
    - From: Fabian Recktenwald
  - Re: [ct-bot] signed vs. unsigned char
    - From: Benjamin Benz

- Voriger (Datum): [ct-bot] Coding-Style die 2., Benjamin Benz
- Nächster (Datum): Re: [ct-bot] signed vs. unsigned char, Benjamin Benz
- Voriger (Thread): Re: [ct-bot] signed vs. unsigned char, Benjamin Benz
- Nächster (Thread): Re: [ct-bot] signed vs. unsigned char, Benjamin Benz
- Indizes:
  - Datum
  - Thread