Début de la messagerie applicative : réception du message de position
This commit is contained in:
parent
c558152993
commit
7e76fbd088
74
main.c
74
main.c
@ -17,8 +17,52 @@ void stdio_usb_out_chars(const char *buf, int length);
|
||||
#define NB_MORCEAUX 100
|
||||
|
||||
absolute_time_t envoie_nb_char(int nb_char);
|
||||
uint8_t memoire_echange[200];
|
||||
char chaine_envoie[10000];
|
||||
|
||||
bool mise_a_jour_position = false;
|
||||
bool mise_a_jour_mode = false;
|
||||
bool mise_a_jour_pwm = false;
|
||||
bool mise_a_jour_vitesse_roues = false;
|
||||
bool mise_a_jour_vitesse_robot = false;
|
||||
bool mise_a_jour_trajectoire = false;
|
||||
|
||||
|
||||
void écriture_données(unsigned int adresse, uint8_t donnée){
|
||||
if( adresse <= 11){
|
||||
// Position du robot
|
||||
mise_a_jour_position = true;
|
||||
}else if(adresse <= 12){
|
||||
// Read only
|
||||
|
||||
}else if(adresse <= 13){
|
||||
// Mode
|
||||
mise_a_jour_mode = true;
|
||||
}else if(adresse <= 17){
|
||||
// PWM moteur
|
||||
mise_a_jour_pwm = true;
|
||||
}else if(adresse <= 25){
|
||||
// Vitesse roues
|
||||
mise_a_jour_vitesse_roues = true;
|
||||
}else if(adresse <= 33){
|
||||
// Vitesse robot
|
||||
mise_a_jour_vitesse_robot = true;
|
||||
}else if(adresse <= 86){
|
||||
// Trajectoire
|
||||
mise_a_jour_trajectoire = true;
|
||||
}else if(adresse >86){
|
||||
// Hors mémoire
|
||||
printf("adresse = %d\n", adresse);
|
||||
return;
|
||||
}
|
||||
|
||||
memoire_echange[adresse] = donnée;
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
void envoie_donnees(char * donnees, uint16_t length){
|
||||
@ -134,14 +178,40 @@ void main(void)
|
||||
// données[1]: id de la carte
|
||||
// données[2]: 1er registre
|
||||
// données[3 à tailles_données -1]: valeurs
|
||||
|
||||
memcpy(&message_applicatif, message.donnees, message.taille_donnees);
|
||||
printf("id_carte:%c %d\n", message_applicatif.id_carte, message_applicatif.id_carte);
|
||||
|
||||
|
||||
if(message_applicatif.id_carte == 'P'){
|
||||
|
||||
mise_a_jour_position = false;
|
||||
mise_a_jour_mode = false;
|
||||
mise_a_jour_pwm = false;
|
||||
mise_a_jour_vitesse_roues = false;
|
||||
mise_a_jour_vitesse_robot = false;
|
||||
mise_a_jour_trajectoire = false;
|
||||
// Copie des données dans la mémoire d'échange
|
||||
|
||||
for (int num_octet=0; num_octet<message_applicatif.taille_donnees; num_octet++){
|
||||
écriture_données(message_applicatif.adresse_registre + num_octet, message_applicatif.donnees_applicative.donnees[num_octet]);
|
||||
}
|
||||
if(mise_a_jour_position){
|
||||
struct msg_propulsion_position_t msg_propulsion_position;
|
||||
|
||||
memcpy(&msg_propulsion_position, &(memoire_echange[0]), sizeof(msg_propulsion_position));
|
||||
printf("mise à jour de la position, x:%2.2f, y:%2.2f, orientation: %2.2f\n", msg_propulsion_position.position_x_mm,
|
||||
msg_propulsion_position.position_y_mm, 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];
|
||||
registre = message.donnees[2];
|
||||
|
||||
@ -22,6 +22,7 @@ struct message_applicatif_t{
|
||||
uint8_t adresse_registre; // Adresse du registre lu ou écrit
|
||||
uint8_t taille_donnees;
|
||||
union{
|
||||
uint8_t donnees[100];
|
||||
#ifdef MESSAGE_PROPULSION_H
|
||||
struct msg_propulsion_position_t msg_propulsion_position;
|
||||
#endif
|
||||
|
||||
12
messages_propulsion.h
Normal file
12
messages_propulsion.h
Normal file
@ -0,0 +1,12 @@
|
||||
#ifndef MESSAGE_PROPULSION_H
|
||||
#define MESSAGE_PROPULSION_H
|
||||
#define USB_ID_PROPULSION 'P'
|
||||
|
||||
#define REG_PROPULSION_POSITION 0x00
|
||||
|
||||
struct msg_propulsion_position_t{
|
||||
float position_x_mm, position_y_mm, orientation_rad;
|
||||
};
|
||||
|
||||
|
||||
#endif
|
||||
Loading…
Reference in New Issue
Block a user