diff --git a/Readme.md b/Readme.md index 75001e9..771dfe2 100644 --- a/Readme.md +++ b/Readme.md @@ -3,6 +3,8 @@ Projet modèle pour le Rpi Pico (RP2040) Code pour travailler sur la communication USB, côté device. +Nous commençons à stocker les données reçues dans des structures pour simplifier l'interprétation des données. + Méthode de test --------------- * Ouvrir un terminal pour lire les données reçues en désactivant l'écho @@ -25,5 +27,4 @@ Méthode de test Difficultés rencontrées ----------------------- -En testant avec Linux, le terminal peut manger certains caractères lorsqu'il les reçoit (0x11, 0x12 et 0x13). -Le type message_t contient trop de champs, il faut supprimer les champs inutiles en s'assurant qu'il n'y a pas d'utilisation de ces champs. \ No newline at end of file +En testant avec Linux, le terminal peut manger certains caractères lorsqu'il les reçoit (0x11, 0x12 et 0x13). \ No newline at end of file diff --git a/communication.c b/communication.c index ab79b67..d185743 100644 --- a/communication.c +++ b/communication.c @@ -2,7 +2,6 @@ #include #include "communication.h" #include "messagerie.h" -#include "tusb.h" #define TAMPON_TAILLE 1020 diff --git a/main.c b/main.c index 5c16fdf..95458b9 100644 --- a/main.c +++ b/main.c @@ -92,15 +92,10 @@ void main(void) int nb_ech = 10; int taille_morceau = 60; int nb_message=0; - float f; + stdio_init_all(); sleep_ms(5000); - - printf(">Device 1 - demarrage\n"); - printf("struct float:%d\n", sizeof(f)); - printf("struct message applicatif:%d\n", sizeof(message_applicatif)); - - + gpio_init(PICO_DEFAULT_LED_PIN); gpio_set_dir(PICO_DEFAULT_LED_PIN, GPIO_OUT); gpio_put(PICO_DEFAULT_LED_PIN, 0); @@ -140,26 +135,12 @@ void main(void) // données[2]: 1er registre // données[3 à tailles_données -1]: valeurs - printf("type:%d %c\n", message.type, message.type); - printf("id_carte:%d %c\n", message.id_carte, message.id_carte); - for(int i=0; i< 4;i++){ - printf("%x ", message.donnees[i]); - } - printf("\n"); memcpy(&message_applicatif, message.donnees, message.taille_donnees); - printf("id_carte:%d %c\n", message_applicatif.id_carte, message_applicatif.id_carte); - printf("commande:%d %c\n", message_applicatif.commande, message_applicatif.commande); - printf("add_reg:%d\n", message_applicatif.adresse_registre); - printf("taille_donnee:%d\n", message_applicatif.taille_donnees); - - if(message_applicatif.id_carte == USB_ID_PROPULSION){ - printf("registre:%d\n", message_applicatif.adresse_registre); - if(message_applicatif.adresse_registre == REG_PROPULSION_POSITION){ - printf("x:%x, y:%x, rot:%x\n", message_applicatif.donnees_applicative.msg_propulsion_position.position_x_mm, - message_applicatif.donnees_applicative.msg_propulsion_position.position_y_mm, - message_applicatif.donnees_applicative.msg_propulsion_position.orientation_rad); - } + if(message_applicatif.id_carte == USB_ID_PROPULSION && message_applicatif.adresse_registre == REG_PROPULSION_POSITION){ + printf("x:%x, y:%x, rot:%x\n", message_applicatif.donnees_applicative.msg_propulsion_position.position_x_mm, + message_applicatif.donnees_applicative.msg_propulsion_position.position_y_mm, + message_applicatif.donnees_applicative.msg_propulsion_position.orientation_rad); } id_carte = message.donnees[1]; diff --git a/messagerie.h b/messagerie.h index fa081f9..1ada83a 100644 --- a/messagerie.h +++ b/messagerie.h @@ -3,14 +3,10 @@ #define MESSAGE_TIMEOUT_US 2000 -// Attention l'ordre de déclaration est important !! On fait de la copie de donnée en faisant confiance à cet ordre ! struct message_t{ - uint8_t type; // 'd' pour demande, 'r' pour une réception de données, 'w' pour écrire des données, '>' pour des logs - uint8_t id_carte; // Identifiant de la carte (on reprend les adresses I2C) - uint8_t adresse_registre; // Adresse du registre lu + uint8_t type; // 'b' pour binaire, '>' pour des logs uint8_t taille_donnees; - uint8_t donnees[255]; - + uint8_t donnees[255]; }; struct message_requete_t{ @@ -21,9 +17,9 @@ struct message_requete_t{ }; struct message_applicatif_t{ - uint8_t commande; + uint8_t commande; // 'r' : réception de données, 'd' : demande de données uint8_t id_carte; // Identifiant de la carte (on reprend les adresses I2C) - uint8_t adresse_registre; // Adresse du registre lu + uint8_t adresse_registre; // Adresse du registre lu ou écrit uint8_t taille_donnees; union{ #ifdef MESSAGE_PROPULSION_H @@ -34,7 +30,6 @@ struct message_applicatif_t{ }; - bool messagerie_message_disponible(); struct message_t messagerie_get_message(); void messagerie_put_message(struct message_t message);