#include #include "messagerie_applicative.h" #define TAILLE_MEMOIRE_ECHANGE 0xFF #define NB_BANK 10 //uint8_t mémoire_échange[NB_BANK][TAILLE_MEMOIRE_ECHANGE]; /// @brief Meta-données de la mémoire /// modifications: un bit par octet pour indiquer si la donnée a été modifiée. struct bank_mémoire_t{ uint8_t mémoire_id; uint8_t mémoire_échange[TAILLE_MEMOIRE_ECHANGE]; uint32_t modifications[4]; } list_memoire_echange[NB_BANK]; 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; bool mise_a_jour_config_trajet = false; bool mise_a_jour_cde_inv_traj = false; void message_applicatif_init(){ for(uint8_t i=0; imodifications[registre / 32] & (1 << (registre % 32))){ return &(bank_memoire->mémoire_échange[registre]); } return false; } void set_mémoire_modifiée(struct bank_mémoire_t * bank_memoire, uint8_t registre){ bank_memoire->modifications[registre / 32] |= 1 << registre % 32; } void reset_mémoire_modifiée(struct bank_mémoire_t * bank_memoire, uint8_t registre){ for(int i=0; i< 4; i++){ bank_memoire->modifications[1] = 0; } } uint8_t * get_memoire_echange(uint8_t bank_id){ struct bank_mémoire_t * bank = get_bank_mémoire(bank_id); if (bank){ return bank->mémoire_échange; } return NULL; } uint8_t * get_données_reçues(uint8_t registre, uint8_t bank_id){ uint8_t * ma_memoire_echange = get_memoire_echange(bank_id); if(ma_memoire_echange) return &(ma_memoire_echange[registre]); return NULL; } void mise_données_dans_échange(uint8_t * source, uint8_t taille, uint8_t registre, uint8_t bank_id){ uint8_t * ma_memoire_echange = get_memoire_echange(bank_id); if(ma_memoire_echange) memcpy(&(ma_memoire_echange[registre]), source, taille); } /// @brief Copie le message dans la mémoire d'échange /// @param message_applicatif message reçu void réception_données(struct message_applicatif_t message_applicatif){ struct bank_mémoire_t * bank_memoire = get_bank_mémoire(message_applicatif.id_carte); uint8_t * ma_memoire_echange = bank_memoire->mémoire_échange; for (int num_octet=0; num_octet