ajout BLE
This commit is contained in:
1 parent
66bb319423
commit
3757975e51
48 files changed
+293826
-284536
No files matched your search
@@ -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 */
|
||||
@@ -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 */
|
||||
@@ -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 */
|
||||
Reference in new issue
Block a user