diff --git a/.vscode/settings.json b/.vscode/settings.json index 7668934..088aae0 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,5 +1,7 @@ { "files.associations": { - "stdio_usb.h": "c" + "stdio_usb.h": "c", + "error.h": "c", + "messagerie.h": "c" } } \ No newline at end of file diff --git a/CMakeLists.txt b/CMakeLists.txt index 7925527..7b5e62c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -11,7 +11,9 @@ set(PICO_EXAMPLES_PATH ${PROJECT_SOURCE_DIR}) pico_sdk_init() add_executable(Modele_RPiPico + communication.c main.c + messagerie.c ) target_link_libraries(Modele_RPiPico diff --git a/main.c b/main.c index c8a21ae..8bba1ac 100644 --- a/main.c +++ b/main.c @@ -5,13 +5,18 @@ */ #include "pico/stdlib.h" #include +#include +#include "communication.h" +#include "messagerie.h" void stdio_usb_out_chars(const char *buf, int length); #define NB_MORCEAUX 100 absolute_time_t envoie_nb_char(int nb_char); -char message[10000]; +char chaine_envoie[10000]; + + void envoie_donnees(char * donnees, u_int16_t length){ for (int i=0; i25){ j=0; } - message[i]= j + 'a';*/ - message[i]= i%26 + 'a'; + chaine_envoie[i]= j + 'a';*/ + chaine_envoie[i]= i%26 + 'a'; } int nb_ech = 10; int taille_morceau = 60; stdio_init_all(); - while(1){ - temps_moyen = 0; - temps_max = 0; - for(int i = 1; i < NB_MORCEAUX; i++){ - temps_moyen = 0; - temps_max = 0; - start_time_us = get_absolute_time(); - temps_m[i] = envoie_nb_char(taille_morceau); - //temps_m[i] = i; - current_time_us = get_absolute_time(); - sleep_ms(1); - } - for(int i = 1; i < NB_MORCEAUX; i++){ - printf(">temps:%d:%lld#us\n", i, temps_m[i]); - } - printf(">temps_d:%lld\n", current_time_us - start_time_us); + gpio_init(PICO_DEFAULT_LED_PIN); + gpio_set_dir(PICO_DEFAULT_LED_PIN, GPIO_OUT); + gpio_put(PICO_DEFAULT_LED_PIN, 0); + temps_message_detection = get_absolute_time(); + + while(1){ + + if(get_absolute_time() - temps_message_detection > MESSAGE_TIMEOUT_US){ + envoie_structure(&message_requete_detection, sizeof(message_requete_detection) ); + temps_message_detection = get_absolute_time(); + } + + start_time_us = get_absolute_time(); + envoie_donnees(message_binaire, 10); + current_time_us = get_absolute_time(); + printf(">temps:%lld\n", current_time_us - start_time_us); + + start_time_us = get_absolute_time(); + communication_reception_message(); + while(messagerie_message_disponible()){ + message = messagerie_get_message(); + if(message.type == 'r'){ + if(message.id_carte == 'D'){ + if(message.donnees[1] > 0 && message.donnees[1] < 30){ + gpio_put(PICO_DEFAULT_LED_PIN, 1); + }else{ + gpio_put(PICO_DEFAULT_LED_PIN, 0); + } + } + } + } + current_time_us = get_absolute_time(); + + putchar('\n'); + printf(">temps:%lld\n", current_time_us - start_time_us); sleep_ms(50); + + } } @@ -66,14 +127,14 @@ absolute_time_t envoie_nb_char(int nb_char) { if (nb_char == 0){ return 0; } - message[nb_char - 1] = '\n'; - message[nb_char] = '\0'; + chaine_envoie[nb_char - 1] = '\n'; + chaine_envoie[nb_char] = '\0'; start_time_us = get_absolute_time(); - printf("%s", message); - envoie_donnees(message, strlen(message)); + printf("%s", chaine_envoie); + envoie_donnees(chaine_envoie, strlen(chaine_envoie)); current_time_us = get_absolute_time(); - message[nb_char - 1] = 'a'; - message[nb_char] = 'a'; + chaine_envoie[nb_char - 1] = 'a'; + chaine_envoie[nb_char] = 'a'; return current_time_us - start_time_us; }