AvrIO  1.4.5
Bibliothèque C modulaire pour ATMEL AVR
Capteur Nto1 WirelessUSB

Description détaillée

Modélisation d'un capteur Nto1 WirelessUSB™ (sensor)

Graphe de collaboration de Capteur Nto1 WirelessUSB:

Fonctions

int iWSensorDataSend (bool Synchronous)
 Transmission/Réception de données vers le hub Cette fonction effectue les opérations suivantes:
. Plus de détails...
 
uint8_t * pucWSensorBackDataPayload (void)
 Renvoie un pointeur sur les données renvoyées par le hub lors de la dernière transmission. Plus de détails...
 
uint8_t ucWSensorBackDataPayloadLength (void)
 Renvoie le nombre d'octets renvoyés par le hub lors de la dernière transmission. Plus de détails...
 
uint16_t usWSensorDeviceId (void)
 Renvoie le Device ID attribué par le hub (WNET_INVALID_DEVICEID si invalide)
 
void vWSensorBind (bool Seeded)
 Intègre le capteur au réseau WirelessUSB™ Envoie des paquets BIND REQUEST à la recherche d'un hub. Passe en revue tous les canaux du sous-ensemble (subset) utilisé pour le BIND (Canal 0 - PnCode 0 si Seeded = false, Canal et PnCode courant si Seeded = true). Cette fonction effectue plusieurs tentatives sur un canal avant de passer au suivant dans le subset si aucune réponse n'arrive. Le balayage de tous les canaux est effectué plusieurs fois. Si une réponse avec un DeviceID valide arrive (différent de 0xFFFF), cette fonction : Plus de détails...
 
void vWSensorDataAddByte (uint8_t ucByte)
 Ajoute un octet aux données à transmettre au hub.
 
void vWSensorDataAddBytes (const uint8_t *pucData, uint8_t ucLength)
 Ajoute des octets aux données à transmettre au hub.
 
void vWSensorDataAddBytes_P (const uint8_t *pucData, uint8_t ucLength)
 Ajoute des octets stockés en mémoire programme aux données à transmettre au hub.
 
void vWSensorDataAddStr (const char *pcStr)
 Ajoute une chaîne de caractères aux données à transmettre au hub Le zéro final n'est pas ajouté au paquet.
 
void vWSensorDataAddStr_P (const char *pcStr)
 Ajoute une chaîne de caractères stockée en mémoire programme aux données à transmettre au hub Le zéro final n'est pas ajouté au paquet.
 
void vWSensorDataAddWord (uint16_t ucWord)
 Ajoute un mot de 16 bits aux données à transmettre au hub.
 
void vWSensorDataClear (void)
 Efface les données à envoyer au hub et prépare le prochain paquet DATA.
 
void vWSensorInit (eWDevDataRate DataRate)
 Initialisation de la couche application capteur WirelessUSB™. Plus de détails...
 
void vWSensorSetAutoSeededBind (bool xEnable)
 Autorise le BIND rapide automatique en cas de retrait du réseau par le hub.
 
void vWSensorSleep (bool xSleep)
 Endort ou réveille le module WirelessUSB afin d'économiser de l'énergie Le module est à l'état statique. Les registres du module ne sont pas modifiés. Plus de détails...
 
void vWSensorSleepCB (eWSensorError eError)
 Gestionnaire d'endormissement Cette fonction doit être implémentée par l'utilisateur. Elle est appellée lorsque le hub ne répond pas ou plus. Plus de détails...
 
bool xWSensorAutoSeededBind (void)
 Indique si le BIND rapide automatique en cas de retrait du réseau par le hub est autorisé.
 
bool xWSensorBound (void)
 Indique si le sensor est intégré à un réseau.
 
bool xWSensorFlag (eWSensorFlags eFlag)
 Teste un bit d'état d'indice eFlag.
 

Énumérations

enum  eWSensorError {
  WSENSOR_SUCCESS = WNET_SUCCESS, WSENSOR_NACK_TIMEOUT = WNET_TIMEOUT, WSENSOR_PACKET_ERROR = WNET_CORRUPTED_PACKET_ERROR, WSENSOR_NODE_UNBOUND = (WNET_LAST_ERROR - 1),
  WSENSOR_NODE_REBOUND = (WNET_LAST_ERROR - 2), WSENSOR_SEARCH_TIMEOUT = (WNET_LAST_ERROR - 3), WSENSOR_BIND_TIMEOUT = (WNET_LAST_ERROR - 4)
}
 Codes d'erreurs d'un capteur. Plus de détails...
 
enum  eWSensorFlags {
  WSENSOR_EEPROMBLANK = 0, WSENSOR_AUTOSEEDEDBIND = 1, WSENSOR_NACK = 3, WSENSOR_CHANSEARCH = 4,
  WSENSOR_BACKDATA = 5, WSENSOR_BINDING = 6, WSENSOR_BOUND = 7
}
 Indice des bits de mode et d'état utilisés par un capteur. Plus de détails...
 

Documentation du type de l'énumération

Codes d'erreurs d'un capteur.

Valeurs énumérées
WSENSOR_SUCCESS 

Pas d'erreur

WSENSOR_NACK_TIMEOUT 

Indique que le hub n'a pas répondu

WSENSOR_PACKET_ERROR 

Trop de paquet corrompus ont été reçus

WSENSOR_NODE_UNBOUND 

Le capteur a été déconnecté du réseau

WSENSOR_NODE_REBOUND 

Le capteur a été déconnecté et reconnecté au réseau

WSENSOR_SEARCH_TIMEOUT 

La recherche de canal a échouée

WSENSOR_BIND_TIMEOUT 

L'intégration au réseau a échouée

Définition à la ligne 61 du fichier avrio/wusb/sensor.h.

Indice des bits de mode et d'état utilisés par un capteur.

Valeurs énumérées
WSENSOR_EEPROMBLANK 

Indique que l'EEPROM n'a pas été programmée

WSENSOR_AUTOSEEDEDBIND 

Autorise le Seeded Bind auto si le Sensor est invalidé par le Hub (Défaut)

WSENSOR_NACK 

Indique que le hub n'a pas répondu

WSENSOR_CHANSEARCH 

Le mode Recherche de canal est actif

WSENSOR_BACKDATA 

Le hub a renvoyé des données

WSENSOR_BINDING 

Le sensor est en cours d'intégration au réseau

WSENSOR_BOUND 

Le sensor est intégré au réseau

Définition à la ligne 42 du fichier avrio/wusb/sensor.h.

42  {
43 
46  /* Mode */
48  /* Bit 2 dispo. */
49  /* Status */
50  WSENSOR_NACK = 3,
51  WSENSOR_CHANSEARCH = 4,
52  WSENSOR_BACKDATA = 5,
53  WSENSOR_BINDING = 6,
54  WSENSOR_BOUND = 7
eWSensorFlags
Indice des bits de mode et d'état utilisés par un capteur.

Documentation des fonctions

int iWSensorDataSend ( bool  Synchronous)

Transmission/Réception de données vers le hub Cette fonction effectue les opérations suivantes:
.

  • Formate le paquet DATA en y ajoutant les drapeaux nécessaires (séquence ...) etc.
  • Envoie le paquet DATA
  • Attends une réponse du hub (WUSB_CONFIG_NETWORK_DEFAULT_TIMEOUT_ACK)
  • Si une réponse arrive ACK ou DATA qui correspond à la réponse du paquet envoyé
    • Le flag de séquence TX est basculé
    • Si le paquet reçu est de type ACK et que le bit V est à zéro, le capteur retourne à l'état UNBOUND et, si le drapeau WSENSOR_AUTOSEEDEDBIND est levé, passe en BIND rapide. A l'issue WSENSOR_NODE_UNBOUND ou WSENSOR_NODE_REBOUND est renvoyé.
    • Si le paquet reçu est de type DATA
      • un paquet ACK est envoyé au hub
      • avec une longueur nulle, les flags de séquences sont réinitialisés T=A=0
      • avec des octets, le flag de status WSENSOR_BACKDATA est levé (le d'octets reçus est renvoyé.
  • Si aucune réponse arrive:
    • Si Synchronous = true, cette fonction retourne 0
    • Si Synchronous = false :
      • Elle attent un délai pseudo-aléatoire dépendant du MID capteur et réémet le paquet.
      • Recommence un certain nombre de fois (WUSB_CONFIG_SENSOR_NACK_RETRIES).
      • Si toujours pas de réponse, passe en mode recherche de canal:
        • Passe au canal suivant.
        • Attends une durée fixe (WUSB_CONFIG_SENSOR_SEARCH_CHANNEL_DELAY)
        • Réémet plusieurs fois le paquet sur ce nouveau canal. (WUSB_CONFIG_SENSOR_NACK_RETRIES) en attendant la même durée entre chaque envoi.
        • Recommence cette recherche périodique sur tous les canaux du subset.
      • Si toujours pas de réponse, renvoie WSENSOR_SEARCH_TIMEOUT.
Paramètres
Synchronoustrue indique une transmission synchrone (pas d'attente de réponse du hub)
Renvoie
  • 0 si les données ont été transmises au hub (pas de données en retour).
  • Une valeur positive si les données ont été transmises au hub et que le hub a renvoyé des données en retour (la valeur correspondant au nombre d'octets).
  • Une valeur négative en cas d'erreur (eWSensorError)
Avertissement
Les données à transmettre sont détruites par iWSensorDataSend(). (Un appel à vWSensorDataClear() est effectué avec la sortie).
uint8_t* pucWSensorBackDataPayload ( void  )

Renvoie un pointeur sur les données renvoyées par le hub lors de la dernière transmission.

Renvoie
Le pointeur ou 0 si aucune donnée reçue
uint8_t ucWSensorBackDataPayloadLength ( void  )

Renvoie le nombre d'octets renvoyés par le hub lors de la dernière transmission.

Renvoie
Nombre d'octets ou 0 si aucune donnée reçue
void vWSensorBind ( bool  Seeded)

Intègre le capteur au réseau WirelessUSB™ Envoie des paquets BIND REQUEST à la recherche d'un hub. Passe en revue tous les canaux du sous-ensemble (subset) utilisé pour le BIND (Canal 0 - PnCode 0 si Seeded = false, Canal et PnCode courant si Seeded = true). Cette fonction effectue plusieurs tentatives sur un canal avant de passer au suivant dans le subset si aucune réponse n'arrive. Le balayage de tous les canaux est effectué plusieurs fois. Si une réponse avec un DeviceID valide arrive (différent de 0xFFFF), cette fonction :

  • Réponds au hub en lui envoyant un ACK sur le canal utilisé pour le BIND
  • Reconfigure la couche application avec ces nouveaux paramètres
  • Mémorise les paramètres réseau envoyés par le hub en EEPROM
  • Valide le mode recherche de canal pour que le capteur trouve le canal utilisé dans le subset pour la transmission de données
  • Renvoie true.
    Paramètres
    Seededtrue intégration rapide sur le canal DATA en cours, false sur canal de BIND
    Note
    Paramètres de compilation:
  • WUSB_CONFIG_SENSOR_BIND_CYCLES Nombre de fois que la fonction va balayer l'ensemble des canaux du subset (2)
  • WUSB_CONFIG_SENSOR_NACK_RETRIES Nombre d'essais sur chaque canal (2)
  • WUSB_CONFIG_NETWORK_DEFAULT_TIMEOUT_BIND Temps de réponse max à un BIND REQUEST (12 ms en 16KBps, 6 ms en 64 KBps)
void vWSensorInit ( eWDevDataRate  DataRate)

Initialisation de la couche application capteur WirelessUSB™.

Paramètres
DataRatevitesse de transmission. 0 pour initialiser à partir de la config en EEPROM.
void vWSensorSleep ( bool  xSleep)
inline

Endort ou réveille le module WirelessUSB afin d'économiser de l'énergie Le module est à l'état statique. Les registres du module ne sont pas modifiés.

Paramètres
Sleeptrue pour endormir, false pour réveiller
void vWSensorSleepCB ( eWSensorError  eError)

Gestionnaire d'endormissement Cette fonction doit être implémentée par l'utilisateur. Elle est appellée lorsque le hub ne répond pas ou plus.

Paramètres
eErrorCode erreur ayant provoqué l'appel à la fonction qui peut prendre deux valeurs WSENSOR_SEARCH_TIMEOUT ou WSENSOR_BIND_TIMEOUT