/* USER CODE BEGIN 4 */
// Fonction qui transmet un caractère via UART et le renvoie.Utilisé pour la sortie standard (printf).
int __io_putchar(int ch) {
    HAL_UART_Transmit(&huart2, (uint8_t*) &ch10xFFFF); // Pour Envoyer le caractère via UART
    // ITM_SendChar(ch);                 // Option alternative pour envoyer le caractère via ITM
    return ch;
}
// Fonction pour scanner le bus I2C pour trouver l'adresse d'un périphérique
void I2C_Scan(I2C_HandleTypeDef *hi2c)
{
    HAL_Delay(500);                 // Petit délai de 500 millisecondes.
    printf("I2C Scanner\r\n\r\n");  // Affiche le début du processus de scan I2C.
    char Buffer[8] = {0};           // Déclare un tableau de caractères 'Buffer' de taille 8 et initialise tous les éléments à 0.
    uint8_t 0;                  // Déclare 'i' et l'initialise à 0.
    uint8_t ret;                    // Déclare 'ret' pour stocker le retour de la vérification du périphérique I2C.

    /*-[ Balayage du bus I2C ]-*/
    printf("Début du balayage I2C : \r\n");   // Affiche le début du processus de balayage I2C.
    for(1128i++)                  // Sur les adresses I2C possibles (de 1 à 127).
    {
        // Vérifie si un périphérique est prêt à l'adresse 'i' (décalée à gauche de 1 pour correspondre à l'adresse sur 7 bits).
        ret HAL_I2C_IsDeviceReady(hi2c, (uint16_t)(<< 1), 35);
        if (ret != HAL_OK)                  // Si le périphérique n'est pas prêt :
        {
            printf(" * ");                      // Affiche un astérisque (*), aucun périphérique n'a été trouvé à cette adresse.
        }
        else if (ret == HAL_OK)             // Si le périphérique est prêt (ret == HAL_OK) :
        {
            sprintf(Buffer"0x%X"i);         // Formate l'adresse en chaîne hexadécimale et la stocke dans 'Buffer'.
            printf("%s", (uint8_t *)Buffer);    // Affiche l'adresse hexadécimale du périphérique trouvé.
        }
    }
    printf("\r\nTerminé ! \r\n\r\n");              // Affiche la fin du processus de balayage.
}
/* USER CODE END 4 */