AvrIO  1.4.5
Bibliothèque C modulaire pour ATMEL AVR
Modules Blyss™

Description détaillée

Ce module permet de gérer la transmission vers des modules domotiques Blyss™ commerciailisés par Castorama (protocole LiveEz™ 433.92 MHz).
La plateforme doit disposer d'un GPIO.
Ce code est basé sur le travail de « reverse engineering » de 7 membres du forum arduino.cc: SkyWodd, Artouste, Al1fch, Barbudor, Bunyman, Trigger et Bidle (https://skyduino.wordpress.com/2012/07/19/hack-partie-2-reverse-engineering-des-interrupteurs-domotique-blyss)
La configuration du module se fait dans le fichier avrio-board-blyss.h, la partie réception utilise un timer 16 bits en mode capture sous interruption, la broche reliée au récepteur devra être une broche de capture ICP.

Graphe de collaboration de Modules Blyss™:

Structures de données

class  xBlyssFrame
 Trame LiveEz. Plus de détails...
 

Fonctions

static bool bBlyssFrameMatch (const xBlyssFrame *f1, const xBlyssFrame *f2)
 Compare deux trames. Plus de détails...
 
static bool bBlyssFrameState (const xBlyssFrame *frame)
 Etat du destinataire de la trame. Plus de détails...
 
bool bBlyssIsValidChannel (uint8_t channel)
 Test si un canal est valide. Plus de détails...
 
bool bBlyssIsValidFrame (const void *buffer)
 Test si un buffer contient une trame LiveEz valide. Plus de détails...
 
bool bBlyssReceive (xBlyssFrame *frame)
 Réception d'une trame. Plus de détails...
 
uint8_t ucBlyssFrameChannel (const xBlyssFrame *frame)
 Canal destinataire de la trame. Plus de détails...
 
static uint8_t ucBlyssFrameGlobalChannel (const xBlyssFrame *frame)
 Canal global d'une trame. Plus de détails...
 
static uint16_t usBlyssFrameAddress (const xBlyssFrame *frame)
 Adresse source d'une trame. Plus de détails...
 
static void vBlyssFrameCopy (xBlyssFrame *dest, const xBlyssFrame *src)
 Copie d'une trame. Plus de détails...
 
void vBlyssFrameInit (xBlyssFrame *frame, const uint8_t *tx_id)
 Initialisation d'une trame LiveEz. Plus de détails...
 
void vBlyssFrameSetChannel (xBlyssFrame *frame, uint8_t channel)
 Modification du canal destinataire d'une trame. Plus de détails...
 
static void vBlyssFrameSetState (xBlyssFrame *frame, bool state)
 Modification de l'état du destinataire. Plus de détails...
 
void vBlyssInit (void)
 Initialisation du module Blyss. Plus de détails...
 
void vBlyssPrintFrameToFile (const xBlyssFrame *frame, FILE *out)
 Imprime le contenu d'une trame dans un fichier. Plus de détails...
 
void vBlyssSend (xBlyssFrame *frame, uint8_t repeat)
 Envoi d'une trame. Plus de détails...
 

Macros

#define BLYSS_BROADCAST   0 /***< Canal d'appel général */
 
#define vBlyssPrintFrame(f)   vBlyssPrintFrameToFile (f, stdout)
 Affiche le contenu de la trame pointée par f sur stdout. Plus de détails...
 

Définitions de type

typedef struct xBlyss xBlyss
 xBlyss
 
typedef struct xBlyssFrame xBlyssFrame
 xBlyssFrame
 

Documentation des macros

#define vBlyssPrintFrame (   f)    vBlyssPrintFrameToFile (f, stdout)

Affiche le contenu de la trame pointée par f sur stdout.

Paramètres
fpointeur sur une trame de type xBlyssFrame
Exemples:
net/blyss/sniffer/demo_blyss_sniffer.c.

Définition à la ligne 84 du fichier blyss.h.

Documentation des fonctions

static bool bBlyssFrameMatch ( const xBlyssFrame f1,
const xBlyssFrame f2 
)
inlinestatic

Compare deux trames.

Paramètres
f1pointeur sur une trame
f2pointeur sur une trame
Renvoie
true si identiques
Exemples:
net/blyss/rx/demo_blyss_rx.c, et net/blyss/sniffer/demo_blyss_sniffer.c.
static bool bBlyssFrameState ( const xBlyssFrame frame)
inlinestatic

Etat du destinataire de la trame.

Paramètres
framepointeur sur la trame
Renvoie
état du destinataire ON = true
Exemples:
net/blyss/rx/demo_blyss_rx.c.
bool bBlyssIsValidChannel ( uint8_t  channel)

Test si un canal est valide.

Paramètres
channelcanal à tester
Renvoie
true si valide
bool bBlyssIsValidFrame ( const void *  buffer)

Test si un buffer contient une trame LiveEz valide.

Paramètres
bufferpointeur sur une zone contenant les octets
Renvoie
true si valide
bool bBlyssReceive ( xBlyssFrame frame)

Réception d'une trame.

La réception et le décodage de trames reçues se fait sous interruption, si une nouvelle trame a été reçue, elle est copiée dans frame et la fonction retourne true, sinon elle retourne false et frame n'est pas modifiée.
La réception d'une nouvelle trame est bloquée tant que la précédente n'a pas été lue avec cette fonction, il faut donc appeler cette fonction le plus souvent possible afin de ne pas perdre de trame.

Avertissement
Cette fonction ne fait rien et retourne false si la macro BLYSS_RX_DISABLE a été définie à la compilation.
Paramètres
framepointeur sur la trame
Renvoie
true si f a été modifiée
Exemples:
net/blyss/rx/demo_blyss_rx.c, et net/blyss/sniffer/demo_blyss_sniffer.c.
uint8_t ucBlyssFrameChannel ( const xBlyssFrame frame)

Canal destinataire de la trame.

Paramètres
framepointeur sur la trame
Renvoie
canal destinataire codé sur les 4 bits de poids faible uniquement, valeur comprise entre 0 et 8, 0 correspondant à tous les canaux (broadcast), 1 au canal 1, 2 au canal 2 ...
Exemples:
net/blyss/rx/demo_blyss_rx.c.
static uint8_t ucBlyssFrameGlobalChannel ( const xBlyssFrame frame)
inlinestatic

Canal global d'une trame.

Paramètres
framepointeur sur la trame
Renvoie
canal global (4 bits de poids faible)
static uint16_t usBlyssFrameAddress ( const xBlyssFrame frame)
inlinestatic

Adresse source d'une trame.

Paramètres
framepointeur sur la trame
Renvoie
adresse de l'émetteur de la trame sur 16 bits
static void vBlyssFrameCopy ( xBlyssFrame dest,
const xBlyssFrame src 
)
inlinestatic

Copie d'une trame.

Paramètres
desttrame destination
srctrame source
Exemples:
net/blyss/rx/demo_blyss_rx.c, et net/blyss/sniffer/demo_blyss_sniffer.c.
void vBlyssFrameInit ( xBlyssFrame frame,
const uint8_t *  tx_id 
)

Initialisation d'une trame LiveEz.

Paramètres
tx_idpointeur sur un tableau de 3 octets contenant dans l'ordre le canal global, le poids fort de l'adresse et le poids faible de l'adresse identifiant l'emetteur. Si NULL, la trame
Exemples:
net/blyss/rx/demo_blyss_rx.c, net/blyss/sniffer/demo_blyss_sniffer.c, et net/blyss/tx/demo_blyss_tx.c.
void vBlyssFrameSetChannel ( xBlyssFrame frame,
uint8_t  channel 
)

Modification du canal destinataire d'une trame.

Paramètres
framepointeur sur la trame
channelcanal destinataire codé sur les 4 bits de poids faible uniquement, valeur comprise entre 0 et 8, 0 correspondant à tous les canaux (broadcast), 1 au canal 1, 2 au canal 2 ...
Exemples:
net/blyss/tx/demo_blyss_tx.c.
static void vBlyssFrameSetState ( xBlyssFrame frame,
bool  state 
)
inlinestatic

Modification de l'état du destinataire.

Paramètres
framepointeur sur la trame
stateétat du destinataire ON = true
Exemples:
net/blyss/tx/demo_blyss_tx.c.
void vBlyssInit ( void  )

Initialisation du module Blyss.

Si la réception est activée, sei() devra être appelé pour valider les interruptions.

Exemples:
net/blyss/rx/demo_blyss_rx.c, net/blyss/sniffer/demo_blyss_sniffer.c, et net/blyss/tx/demo_blyss_tx.c.
void vBlyssPrintFrameToFile ( const xBlyssFrame frame,
FILE *  out 
)

Imprime le contenu d'une trame dans un fichier.

Le contenu imprimé pour chaque trame est formaté comme ci-dessous:

1 RF frame : FE5082410987D
2 RF footprint : FE - Ok
3 RF global channel : 05
4 RF adress : 0824
5 RF channel : Ch4
6 Light status : On
7 Rolling code : 98 - Ok
8 Token : 7D
Paramètres
framepointeur sur la trame
outpointeur sur le fichier ouvert en écriture
void vBlyssSend ( xBlyssFrame frame,
uint8_t  repeat 
)

Envoi d'une trame.

Avertissement
Cette fonction ne fait rien si la macro BLYSS_TX_DISABLE a été définie à la compilation.
Paramètres
framepointeur sur la trame
repeatnombre de répétition d'nevoi
Exemples:
net/blyss/tx/demo_blyss_tx.c.