public Response addChar(byte c)
    {
        //Le caractère de début est reçu
        if ( c == (byte)0xc2 )
        {
            // S'il y avait déjà une réponse dans le buffer, on l'ignore
            if ( sb.length() != 0 )
                reset();
        }
        // On continue la réception de la réponse
        else
        {
            // On vient de reçevoir le caractère de début, donc le caractère
            // actuel est la source du message.
            if ( source == -1 )
            {
                source = (c & 0xFF) - SerialCom.BCAST_ADDRESS;
                timestamp = System.currentTimeMillis();
            }
            else
            {
                sb.append((char)c);

                // On n'a pas encore déterminé le type de la réponse
                // On vérifie si on peut le trouver dans la liste
                if ( currentResponse == null )
                {
                    String responseString = sb.toString();
                    for ( RequestCommand comm : commandTypes)
                        if ( comm.isResponse(responseString))
                            currentResponse = comm.createResponse(source, timestamp);
                }
                // On vérifie si la réponse a été reçue au complet.
                else
                {
                    if ( currentResponse.isValid(sb.toString()))
                    {
                        currentResponse.parse(sb.toString());
                        Response r = currentResponse;
                        reset();
                        return r;
                    }
                }
            }
        }

        return null;
    }