problema com leitura de CASE

No código:

void processIncomingLine( char* line, int charNB ) {
int currentIndex = 0;
char buffer[ 64 ];

while( currentIndex < charNB ) {
switch ( line[ currentIndex++ ] ) {
case ‘G’:
buffer[0] = line[ currentIndex++ ];
buffer[1] = line[ currentIndex++ ];
buffer[2] = line[ currentIndex++ ];
buffer[3] = ‘\0’;
switch ( atoi( buffer ) ){
case 0:
case 1:
{
char* indexX = strchr( line+currentIndex, ‘X’ );
float Xpos = atof( indexX + 1);
char* indexY = strchr( line+currentIndex, ‘Y’ );
float Ypos = atof( indexY + 1);
Serial.println( Xpos );
Serial.println( Ypos );
move_to(Xpos, Ypos );
break;
}
case 2:
{
char* indexX = strchr( line+currentIndex, ‘X’ );
float Xpos = atof( indexX + 1);
char* indexY = strchr( line+currentIndex, ‘Y’ );
float Ypos = atof( indexY + 1);
char* indexI = strchr( line+currentIndex, ‘I’ );
float Ipos = atof( indexI + 1);
char* indexJ = strchr( line+currentIndex, ‘J’ );
float Jpos = atof( indexJ + 1);
Serial.println( Xpos );
Serial.println( Ypos );
Serial.println( Ipos );
Serial.println( Jpos );
draw_arc_cw(Xpos, Ypos, Ipos, Jpos );
break;
}
case 3:
{
char* indexX = strchr( line+currentIndex, ‘X’ );
float Xpos = atof( indexX + 1);
char* indexY = strchr( line+currentIndex, ‘Y’ );
float Ypos = atof( indexY + 1);
char* indexI = strchr( line+currentIndex, ‘I’ );
float Ipos = atof( indexI + 1);
char* indexJ = strchr( line+currentIndex, ‘J’ );
float Jpos = atof( indexJ + 1);
//Serial.println( Xpos );
//Serial.println( Ypos );
//Serial.println( Ipos );
//Serial.println( Jpos );
draw_arc_ccw(Xpos, Ypos, Ipos, Jpos );
break;
}
}
case ‘M’:
buffer[0] = line[ currentIndex++ ];
buffer[1] = line[ currentIndex++ ];
buffer[2] = line[ currentIndex++ ];
buffer[3] = ‘\0’;
switch ( atoi( buffer ) ){
case 2:
{
MotoresOFF();
break;
}
case 3:
{
pen_down();
break;
}
case 5:
{
pen_up();
break;
}

}
}
}
}

O valor Xpos não é mostrado.
Eu envio o seguinte texto para a porta serial:

G2 X9.088917 Y10.215494 I-0.222468 J0.914225

E o terminal me mostra somente os valores de Y, I e J, X é mostrado como 0.

Se a Case possui 3 dígitos, por exemplo: se eu mudar o código com as CASE 200, 201 e 202 o valor de X passa a ser mostrado.

Alguém sabe me dizer por que isso acontece?

Uso Arduino uno.

Parece que já tem uma resposta aqui, sendo assim, imagino que não precise de mais nada.