Portier Wireless Le portier sans fil est un système bidirectionnel basé sur un microcontrôleur PIC32MX130F064B-I/SS et un module radio 868 MHz, permettant à un visiteur d’envoyer une requête depuis l’extérieur via un bouton alimenté par piles, et à l’occupant du bureau de répondre par des signaux lumineux et sonores grâce à une unité intérieure alimentée en USB, le tout avec appairage sécurisé et gestion autonome de l’énergie.
Chargement...
Recherche...
Aucune correspondance
Pairing.h
Aller à la documentation de ce fichier.
1/*
2 * Pairing.c
3 * Gestion de l'appairage Door / Bell
4 * - Envoi automatique des trames P0 / P1 / A0 / A1 (non bloquant)
5 * - Reset d'appairage par appui long (Door : swRing, Bell : trois boutons)
6 * - Sauvegarde / lecture du numéro appairé en Flash (Harmony NVM)
7 *
8 * MCU : PIC32MX130F064B
9 * Outils : XC32 v2.50, Harmony v2_06
10 * Auteurs : Projet PortierWireless LMS
11 * ---------------------------------------------------------------------------
12
13#ifndef PAIRING_H // Protection contre l'inclusion multiple du fichier d'en-tête
14#define PAIRING_H
15
16#include <stdint.h> // Inclusion des définitions de types entiers standard
17#include <stdbool.h> // Inclusion du type booléen standard
18/* === Constantes === */
19#define NVM_SERIAL_BLOCK 0 // Bloc mémoire NVM utilisé pour le numéro de série
20#define LONG_PRESS_TICKS 300 // Nombre de ticks pour un appui long
21
22/* === Déclarations externes === */
23extern S_SwitchDescriptor swRing; // Descripteur du bouton Ring
24extern S_SwitchDescriptor swEnter; // Descripteur du bouton Enter
25extern S_SwitchDescriptor swWait; // Descripteur du bouton Wait
26extern S_SwitchDescriptor swBusy; // Descripteur du bouton Busy
27extern uint32_t appPairedSerial; // Numéro de série appairé courant
28
29/* === Fonctions publiques === */
30
31/* Accès au numéro de série appairé */
32void LoadPairedSerialAndApply(void); // Charge le numéro appairé depuis la Flash et l'applique en RAM
33void SavePairedSerialToFlash(void); // Sauvegarde le numéro appairé courant en mémoire non-volatile
34uint32_t GetActifSerialNbr(void); // Retourne le numéro de série appairé actif
35void ResetSerialList(void); // Réinitialise la liste des numéros appairés
36
37/* Automate d'appairage complet */
38uint32_t PairingManagement(void); // Gère l'automate d'appairage, retourne le numéro appairé (0 si non appairé)
39
40/* Reset d'appairage (appui long) */
41void PairingReset_DoorTask(void); // Gestion du reset d'appairage côté Door
42void PairingReset_BellTask(void); // Gestion du reset d'appairage côté Bell
43
44/* Statut global du pairing */
45bool Serial_IsPairingRunning(void); // Retourne true si l'appairage est en cours
46
47/* Filtrage & envoi de trames RF */
48bool Serial_CheckIfFromPaired(uint8_t *msg); // Vérifie si la trame reçue provient du numéro appairé
49void RF_SendWithSerial(uint8_t *payload); // Envoie une trame RF avec le numéro de série appairé
50
51/* Visuel / sonore */
52void ShowPairingSuccess(void); // Indique le succès de l'appairage (bip + LED verte)
53
54/* Tests Flash (optionnel) */
55void TestFlashWriteRead(void); // Teste l'écriture/lecture du numéro appairé en Flash
56
57/* === Fonctions internes (statics, à usage privé) === */
58static void SaveSerialHarmony(uint32_t serial); // Sauvegarde un numéro de série en Flash (interne)
59static uint32_t LoadSerialHarmony(void); // Charge un numéro de série depuis la Flash (interne)
60static void PairingReset_DoReset(void); // Effectue le reset d'appairage (interne)
61static void RF_SendP0(void); // Envoie une trame P0 (interne)
62static void RF_SendP1(void); // Envoie une trame P1 (interne)
63static void RF_SendA0(uint32_t serial); // Envoie une trame A0 avec numéro de série (interne)
64static void RF_SendA1(uint32_t serial); // Envoie une trame A1 avec numéro de série (interne)
65static void HandlePairingMessage(uint8_t* msg); // Traite un message d'appairage (interne)
66
67#endif /* PAIRING_H */ // Fin de la protection contre l'inclusion multiple
uint32_t PairingManagement(void)
Gère la procédure complète d'appairage côté Door ou Bell.
Definition Pairing.c:406
void TestFlashWriteRead(void)
void LoadPairedSerialAndApply(void)
Definition Pairing.c:149
uint32_t GetActifSerialNbr(void)
Definition Pairing.c:165
void RF_SendWithSerial(uint8_t *payload)
Envoie une trame RF avec le numéro de série, en utilisant P0 et P1.
Definition Pairing.c:290
void ShowPairingSuccess(void)
Definition Pairing.c:186
void PairingReset_BellTask(void)
Definition Pairing.c:263
void SavePairedSerialToFlash(void)
Definition Pairing.c:141
void PairingReset_DoorTask(void)
Definition Pairing.c:244
bool Serial_CheckIfFromPaired(uint8_t *msg)
Vérifie si le message RF reçu provient du périphérique appairé.
Definition Pairing.c:345
void ResetSerialList(void)
Definition Pairing.c:173
bool Serial_IsPairingRunning(void)
Definition Pairing.c:86
S_SwitchDescriptor swRing
Definition app.c:86
S_SwitchDescriptor swBusy
Definition app.c:83
uint32_t appPairedSerial
Definition app.c:92
S_SwitchDescriptor swEnter
Definition app.c:80
S_SwitchDescriptor swWait
Definition app.c:89
Definition Mc32Debounce.h:48