ajout BLE

This commit is contained in:
thomas committed 2026-10-24 00:14:53 +02:00
1 parent 66bb319423
commit 3757975e51
48 files changed
+293826 -284536

No files matched your search

+34
View File
@@ -0,0 +1,34 @@
#ifndef REMOTE_BLE_H
#define REMOTE_BLE_H
#ifdef __cplusplus
extern "C" {
#endif
/* Controle a distance par BLE (module ST67W611M1 de la X-NUCLEO-67W61M1, liaison SPI4).
* Une tache FreeRTOS initialise le module, annonce un serveur GATT "CelloFX" et applique les
* commandes recues aux parametres d'effets (voir remote_params.h).
*
* Service c3110000-7e8a-4b1c-9d52-f0a1e4b7c600
* Control c3110001-... ecriture (avec ou sans reponse)
* State c3110002-... notification
*
* Les deux caracteristiques echangent des enregistrements de 3 octets :
* [id : uint8] [valeur : int16 little-endian]
* Plusieurs enregistrements peuvent tenir dans une ecriture (jusqu'a la taille du MTU).
* Control : le client envoie des commandes. L'identifiant 0xFF demande un instantane de l'etat.
* State : le serveur notifie les valeurs courantes (a l'abonnement du client, et sur 0xFF).
*
* Le module est appaire en "Just Works" : n'importe quel appareil a portee peut piloter les
* effets. A durcir (code PIN) avant tout usage hors banc d'essai.
*/
/* Cree la tache de controle. A appeler une fois, avant osKernelStart(). Sans effet sur l'audio :
* si le module est absent ou ne repond pas, la tache s'arrete et le reste tourne normalement. */
void RemoteBle_Start(void);
#ifdef __cplusplus
}
#endif
#endif /* REMOTE_BLE_H */
+45
View File
@@ -0,0 +1,45 @@
#ifndef REMOTE_PARAMS_H
#define REMOTE_PARAMS_H
#include <stdbool.h>
#include <stdint.h>
#ifdef __cplusplus
extern "C" {
#endif
/* Couche commune du controle a distance (BLE maintenant, Wi-Fi ensuite) : elle expose les
* parametres de AudioEffects_GetParams() sous forme d'identifiants d'un octet avec une valeur
* entiere signee 16 bits. Aucune dependance au transport.
*
* Valeur sur le fil (int16) = valeur reelle * echelle, bornee a la plage du parametre :
* booleen (actif/inactif) 0 ou 1
* niveaux 0.0..1.0 echelle 1000 (500 = 0.5)
* gain d'une bande d'egaliseur echelle 10 (-60 = -6.0 dB)
* delai d'echo echelle 1 (250 = 250 ms)
*
* Identifiants :
* 0x00 audio_on_off 0x01 master_volume
* 0x10 octaver.enabled 0x11 down2 0x12 down1 0x13 dry 0x14 up1 0x15 up2
* 0x20 equalizer.enabled 0x30..0x39 gain des bandes 0 a 9
* 0x50 overdrive.enabled 0x51 drive 0x52 tone 0x53 level
* 0x60 saturation.enabled 0x61 drive 0x62 level
* 0x70 echo.enabled 0x71 delay_ms 0x72 feedback 0x73 mix
* 0x80 reverb.enabled 0x81 room_size 0x82 damping 0x83 mix
*/
/* Applique une valeur recue. Retourne false si l'identifiant est inconnu. */
bool RemoteParams_Set(uint8_t id, int16_t value);
/* Lit la valeur courante d'un parametre. Retourne false si l'identifiant est inconnu. */
bool RemoteParams_Get(uint8_t id, int16_t *value);
/* Parcours de tous les parametres (pour envoyer un instantane de l'etat). */
uint8_t RemoteParams_Count(void);
uint8_t RemoteParams_IdAt(uint8_t index);
#ifdef __cplusplus
}
#endif
#endif /* REMOTE_PARAMS_H */
+24
View File
@@ -0,0 +1,24 @@
#ifndef ST67_GLUE_H
#define ST67_GLUE_H
#include <stdint.h>
#ifdef __cplusplus
extern "C" {
#endif
/* A appeler depuis HAL_GPIO_EXTI_Callback() pour toute broche : ne fait rien sauf pour SPI_RDY,
* dont les fronts cadencent la liaison SPI avec le module ST67W611M1. */
void ST67_ExtiCallback(uint16_t gpio_pin);
/* Journal du driver ST67 : tampon circulaire en RAM, lisible au debogueur (variables
* st67_log_ring / st67_log_head). Pas de liaison serie disponible pour les traces. */
#define ST67_LOG_RING_SIZE 4096U
extern char st67_log_ring[ST67_LOG_RING_SIZE];
extern volatile uint32_t st67_log_head; /* prochain octet a ecrire (modulo la taille) */
#ifdef __cplusplus
}
#endif
#endif /* ST67_GLUE_H */