diff --git a/Wifi.c b/Wifi.c index 736c2b3..2606363 100644 --- a/Wifi.c +++ b/Wifi.c @@ -43,15 +43,9 @@ int udp_receive_get_from_buffer(char* tampon){ } void udp_receive_callback(void *arg, struct udp_pcb *pcb, struct pbuf *p, const ip_addr_t *addr, u16_t port){ - printf("UDP callback !\n"); - printf("IP: %d.%d.%d.%d, port %d\n", (addr->addr) & 0xFF, (addr->addr >>8) & 0xFF, (addr->addr >>16) & 0xFF, (addr->addr >>24)& 0xFF, port); - printf("Taille:%d\n", p->len); - printf("Contenu: "); for(int i=0; i < p->len; i++){ - printf("%c", ((char*)p->payload)[i]); udp_receive_put_in_buffer(((char*)p->payload)[i]); } - printf("\n"); pbuf_free(p); } @@ -115,7 +109,7 @@ void Wifi_udp_send_data(char * message, unsigned int size){ if (er != ERR_OK) { printf("Failed to send UDP packet! error=%d", er); } else { - printf("Sent packet %d\n", counter); + // printf("Sent packet %d\n", counter); counter++; } @@ -150,7 +144,7 @@ void Wifi_udp_send_string(char * message){ if (er != ERR_OK) { printf("Failed to send UDP packet! error=%d", er); } else { - printf("Sent packet %d\n", counter); + // printf("Sent packet %d\n", counter); counter++; } diff --git a/communication.c b/communication.c index 3e0cf7d..ee406df 100644 --- a/communication.c +++ b/communication.c @@ -50,31 +50,15 @@ void communication_reception_message(){ unsigned int index_tampon; struct message_t message; // Si un caractère est reçu, ajout du caractère au tampon tournant - - /// TODO: Tester le code suivant à la place de while get_char(); - /* - char nb_recu=0; - if(tud_cdc_available()){ - char tampon_usb[128]; - nb_recu = tud_cdc_read(tampon_usb, 128); - // copie dans le tampon tournant - for(int i=0; i= TAMPON_TAILLE){ - com_reception_buffer.index_tampon_ecriture = 0; - } - com_reception_buffer.tampon[com_reception_buffer.index_tampon_ecriture] = input_char; - } - }*/ // input_char = stdio_getchar_timeout_us(0); + //printf("Ajout tampon tournant\n"); int nb_char = udp_receive_get_from_buffer(tampon_reception_udp); - int current_char = nb_char; - while(current_char > 0){ - input_char = tampon_reception_udp[nb_char - current_char]; - current_char--; - printf("%c %d\n", input_char, input_char); + int current_nb_char = nb_char; + //printf("nb_char %d\n", nb_char); + while(current_nb_char > 0){ + input_char = tampon_reception_udp[nb_char - current_nb_char]; + current_nb_char--; com_reception_buffer.index_tampon_ecriture++; if(com_reception_buffer.index_tampon_ecriture >= TAMPON_TAILLE){ com_reception_buffer.index_tampon_ecriture = 0; @@ -87,6 +71,7 @@ void communication_reception_message(){ // Copie du tampon tournant dans une chaine // Parce que c'est plus simple à traiter + // printf("Copie, index_tampon:%d, index_tampon_ecriture:%d\n", index_tampon, com_reception_buffer.index_tampon_ecriture); index_chaine_recue = 0; index_tampon = com_reception_buffer.index_tampon_lecture; if(index_tampon != com_reception_buffer.index_tampon_ecriture){ @@ -99,12 +84,14 @@ void communication_reception_message(){ index_chaine_recue++; increment_index(&index_tampon); } + // Traitement // Si on trouve le début du message // Si on trouve la taille du message // Si le caractère de fin est bien à la fin du message int fin_message = 0; + // printf("Traitement, index_chaine_recue:%d\n", index_chaine_recue); for(int i=0; istatus:%d\n", status); + } + if(isReady){ + VL53L8_lecture( &Dev, &Results); + VL53L8_min_distance(Results, &distance_obstacle); + Trajet_set_obstacle_mm(distance_obstacle); + + for(int i=0; i<64; i++){ + int distance_cm = Results.distance_mm[i]/10; + if(distance_cm > 200){ + distance_cm = 250; + } + memoire_vl53L8[i] = distance_cm; + } + } + + + communication_reception_message(); - if(messagerie_message_disponible()){ + uint8_t id_carte, registre; while(messagerie_message_disponible()){ message = messagerie_get_message(); + if(message.type == 'b'){ + switch(message.donnees[0]){ case 'r': // réception de données // Reception de données @@ -257,41 +295,47 @@ void main(void) break; case 'd': char message_envoi_udp[500]; - printf("Demande donnees\n"); // Demande de données memcpy(&message_applicatif, message.donnees, message.taille_donnees); // printf("id_carte:%c %d\n", message_applicatif.id_carte, message_applicatif.id_carte); // printf("adresse registre:%d\n", message_applicatif.adresse_registre, message_applicatif.id_carte); // printf("taille:%d\n", message_applicatif.taille_donnees, message_applicatif.taille_donnees); + message_envoi_udp[0] = 0xFF; message_envoi_udp[1] = 0xFF; - message_envoi_udp[2] = 'P'; - message_envoi_udp[3] = message_applicatif.taille_donnees+1; - stdio_putchar_raw(0xFF); - stdio_putchar_raw(0xFF); - stdio_putchar_raw('P'); - stdio_putchar_raw(message_applicatif.taille_donnees+1); - for(int i=0; itemps_reception:%lld\n", current_time_us - start_time_us); - //printf(">nb_message:%u\n",nb_message); + + } - // Fin du match - if(temps_ms != Temps_get_temps_ms()){ if(Temps_get_temps_ms() - temps_ms > 20){ /// PANIC @@ -317,10 +361,6 @@ void main(void) Moteur_Stop(); break; case 1: - /* - get_données_reçues((uint8_t *) &msg_propulsion_pwm, sizeof(msg_propulsion_pwm), REG_PROPULSION_PWM); - Moteur_SetVitesse(MOTEUR_A, msg_propulsion_pwm.pwm_gauche); - Moteur_SetVitesse(MOTEUR_B, msg_propulsion_pwm.pwm_droit);*/ break; case 2: case 3: @@ -360,14 +400,14 @@ void main(void) //printf("x_mm:%.2f, y_mm:%.2f\n", position.x_mm, position.y_mm); //gestion_PAMI(step_ms, &asser_pos); - /*if(asser_pos){ - AsserMoteur_Gestion(step_ms); - }*/ // Récupération des valeurs pour les mettre dans la mémoire d'échange // TODO } } + + + } } @@ -450,14 +490,32 @@ void gestion_VL53L8CX(void){ sleep_ms(100); VL53L8_lecture( &Dev, &Results); // une première lecture uint8_t status, isReady; + VL53L8CX_isReady = 1; while(1){ status = vl53l8cx_check_data_ready(&Dev, &isReady); - if(isReady){ - VL53L8_lecture( &Dev, &Results); - VL53L8_min_distance(Results, &distance_obstacle); - Trajet_set_obstacle_mm(distance_obstacle); + if(status){ + //printf(">status:%d\n", status); } - affichage(); + if(isReady){ + //printf("Ready\n"); + VL53L8_lecture( &Dev, &Results); + //printf("Trajet 1\n"); + VL53L8_min_distance(Results, &distance_obstacle); + //printf("Trajet 2\n"); + Trajet_set_obstacle_mm(distance_obstacle); + //printf("Trajet 3\n"); + /* + for(int i=0; i<64; i++){ + //int distance_cm = Results.distance_mm[i] / 10; + int distance_cm = Results.distance_mm[i]; + if(distance_cm > 200){ + distance_cm = 250; + } + memoire_vl53L8[i] = distance_cm; + } + printf("VL:%3d %3d %3d %3d\n", memoire_vl53L8[0], memoire_vl53L8[1], memoire_vl53L8[2], memoire_vl53L8[3]);*/ + } + //affichage(); } } diff --git a/messagerie_applicative.c b/messagerie_applicative.c index 652bce5..5130c65 100644 --- a/messagerie_applicative.c +++ b/messagerie_applicative.c @@ -1,7 +1,7 @@ #include #include "messagerie_applicative.h" -uint8_t memoire_echange[200]; +uint8_t memoire_echange[0xFF]; @@ -14,11 +14,11 @@ bool mise_a_jour_trajectoire = false; bool mise_a_jour_config_trajet = false; bool mise_a_jour_cde_inv_traj = false; -void get_données_reçues(uint8_t * dst, unsigned int taille, unsigned int registre){ +void get_données_reçues(uint8_t * dst, unsigned int taille, uint8_t registre){ memcpy(dst, &(memoire_echange[registre]), taille); } -void mise_données_dans_échange(uint8_t * source, unsigned int taille, unsigned int registre){ +void mise_données_dans_échange(uint8_t * source, unsigned int taille, uint8_t registre){ memcpy(&(memoire_echange[registre]), source, taille); } diff --git a/messagerie_applicative.h b/messagerie_applicative.h index 594b14d..1854b2e 100644 --- a/messagerie_applicative.h +++ b/messagerie_applicative.h @@ -2,8 +2,8 @@ #include void écriture_données(unsigned int adresse, uint8_t donnée); -void get_données_reçues(uint8_t * dst, unsigned int taille, unsigned int registre); -void mise_données_dans_échange(uint8_t * source, unsigned int taille, unsigned int registre); +void get_données_reçues(uint8_t * dst, unsigned int taille, uint8_t registre); +void mise_données_dans_échange(uint8_t * source, unsigned int taille, uint8_t registre); extern uint8_t memoire_echange[];