Gestion du bus de communication série entre Brick et les cartouches XVA. Plus de détails...
#include "ch.h"
#include "hal.h"
#include "brick_config.h"
#include "cart_bus.h"
#include "cart_proto.h"
Structures de données | |
struct | cart_cmd_t |
struct | cart_port_t |
Macros | |
#define | CART_QUEUE_LEN 32 |
#define | CART_MB_DROP_OLDEST 1 |
#define | CART_UART_BAUD 500000u /* XVA1 = 500 kbaud, 8N1 */ |
#define | CART_TX_THREAD_PRIO (NORMALPRIO + 2) |
Fonctions | |
void | cart_bus_init (void) |
Initialise tous les ports série de cartouche et crée les threads TX. | |
uint16_t | cart_bus_get_mailbox_high_water (cart_id_t id) |
Retourne le high-water mark de la mailbox pour un port donné. | |
bool | cart_set_param (cart_id_t id, uint16_t param, uint8_t value) |
Envoie une commande SET (écriture de paramètre) vers une cartouche. | |
bool | cart_get_param (cart_id_t id, uint16_t param) |
Envoie une commande GET (lecture de paramètre) vers une cartouche. | |
Variables | |
cart_tx_stats_t | cart_stats [CART_COUNT] |
Tableau global des statistiques de chaque port. | |
Gestion du bus de communication série entre Brick et les cartouches XVA.
Ce module gère la file d’envoi asynchrone (mailbox + pool mémoire) pour chaque cartouche connectée sur un port UART. Il assure :
cart_proto_xva1
Chaque port de cartouche dispose d’une mailbox (chMB
) et d’un pool de commandes. Les requêtes sont postées via cart_set_param()
ou cart_get_param()
, puis envoyées par le thread cart_tx_thread
.
UART mapping :
Cart | UART | Broches STM32 |
---|---|---|
1 | USART1 | PA9 / PA10 |
2 | UART4 | PE8 / PE7 |
3 | USART3 | PB10 / PB11 |
4 | USART2 | PA2 / PA3 |
#define CART_MB_DROP_OLDEST 1 |
#define CART_QUEUE_LEN 32 |
#define CART_TX_THREAD_PRIO (NORMALPRIO + 2) |
#define CART_UART_BAUD 500000u /* XVA1 = 500 kbaud, 8N1 */ |
uint16_t cart_bus_get_mailbox_high_water | ( | cart_id_t | id | ) |
Retourne le high-water mark de la mailbox pour un port donné.
void cart_bus_init | ( | void | ) |
Initialise tous les ports série de cartouche et crée les threads TX.
bool cart_get_param | ( | cart_id_t | id, |
uint16_t | param | ||
) |
Envoie une commande GET (lecture de paramètre) vers une cartouche.
id | Identifiant de la cartouche (CART1..CART4) |
param | Identifiant du paramètre (dest_id) |
true
si la commande a été postée avec succès, sinon false
. bool cart_set_param | ( | cart_id_t | id, |
uint16_t | param, | ||
uint8_t | value | ||
) |
Envoie une commande SET (écriture de paramètre) vers une cartouche.
id | Identifiant de la cartouche (CART1..CART4) |
param | Identifiant du paramètre (dest_id) |
value | Nouvelle valeur (brute, 8 bits) |
true
si la commande a été postée avec succès, sinon false
. cart_tx_stats_t cart_stats[CART_COUNT] |
Tableau global des statistiques de chaque port.