AvrIO  1.4.5
Bibliothèque C modulaire pour ATMEL AVR
Hub WirelessUSB

Description détaillée

Modélisation d'un concentrateur WirelessUSB™ (hub)

Graphe de collaboration de Hub WirelessUSB:

Modules

 Base de données
 

Structures de données

struct  xWHubConfig
 Configuration d'un hub. Plus de détails...
 
struct  xWHubMessage
 Classe Message entre hub et hôte. Plus de détails...
 
struct  xWHubService
 Eléments pour la gestion des services du hub. Plus de détails...
 
struct  xWusbHub
 Classe WirelessUSB™ Hub. Plus de détails...
 

Fonctions

int iWHubInit (eWDevDataRate eDataRate, int iSensorDbaseFileArg1, void *pvSensorDbaseFileArg2)
 Initialisation du Hub Cette fonction initialise tous les élèments nécessaires au fonctionnement du hub : Plus de détails...
 
const uint8_t * pucWHubMid (void)
 Lecture des 4 octets de l'identifiant de fabrication.
 
const xWHubMessagepxWHubLoop (void)
 Fonction qui gère l'intégralité du réseau WirelessUSB™ Cette fonction doit être appellée le plus souvent possible par l'application. Elle gère l'intégration des capteurs au réseau, la transmission et la réception de données des capteurs, l'envoi de compte rendu à l'hôte qui gère le hub. Elle choisit automatiquement le canal en fonction des conditions de transmission (bruit, présence d'autres réseaux ....) et en change lorsque cela est nécessaire en validant automatiquement le mode recherche de canal. Elle permute de mode entre la réception de données et l'intégration automatique des capteurs si ce mode est validé (Bit d'état WHUB_AUTOBIND) avec une période de 50 ms. Elle intègre les capteurs qui lui en font la demande sur le canal de données si le mode d'intégration rapide est validé (Bit d'état WHUB_SEEDEDBIND) Plus de détails...
 
uint8_t ucWHubBindChannel (void)
 Renvoie le canal actuellement utilisé pour l'intégration automatique des capteurs au réseau.
 
uint8_t ucWHubDataChannel (void)
 Renvoie le canal actuellement utilisé pour la transmission de données.
 
uint8_t ucWHubDataPnCode (void)
 Renvoie le PnCode actuellement utilisé pour la transmission de données.
 
uint8_t ucWHubNodeDataLength (uint16_t ucDeviceId)
 Renvoie le nombre d'octets enregistrés à transmettre à un capteur Aucune vérification n'est effectué sur ucDeviceId.
 
uint8_t ucWHubStatus (void)
 Renvoie tous bits d'état ou de mode du hub.
 
uint32_t ulWHubNodeMid (uint16_t ucDeviceId)
 Renvoie le Mid d'un capteur enregistré Aucune vérification n'est effectué sur ucDeviceId.
 
uint16_t usWHubDeleteAllNodes (void)
 Retire tous les capteurs du réseau.
 
uint16_t usWHubMaxNumberOfNodes (void)
 Renvoie le nombre de capteurs maximal.
 
uint16_t usWHubNumberOfNodes (void)
 Renvoie le nombre de capteurs actuellement enregistrés sur le réseau.
 
void vWHubFindAnAvailableChannel (void)
 
void vWHubNodeSetData (uint16_t ucDeviceId, uint8_t ucDataLength, const uint8_t *pucData)
 Enregistre les octets à transmettre à un capteur Aucune vérification n'est effectué sur ucDeviceId.
 
void vWHubNodeSetFlag (uint16_t ucDeviceId, uint8_t ucNodeFlag)
 Modification des bits de flag et d'état d'un capteur enregistré
 
void vWHubSetMid (const uint8_t *pucMid)
 Modifie les 4 octets de l'identifiant de fabrication La modificiation se fait en RAM. Elle est perdue lors d'un RESET. Attention, normalement le MID est fourni par le fabricant du module et n'est pas accessible en écriture. La modification du MID risque de provoquer des conflits sur le réseau (si un autre node a le même MID). Le Crc Seed et le Checksum Seed du réseau sont mis à jour par cette fonction. Plus de détails...
 
void vWHubSetStatusFlag (eWHubStatus eFlag, bool xValue)
 Active ou désactive un bit d'état du hub.
 
void vWHubToggleStatusFlag (eWHubStatus eFlag)
 Bascule l'état d'un bit d'état du hub.
 
bool WHubNodeDelete (uint16_t ucDeviceId)
 Retire un capteur du réseau. Plus de détails...
 
bool xWHubNodeFlag (uint16_t ucDeviceId, uint8_t *pucNodeFlag)
 Lecture des bits de flag et d'état d'un capteur avec vérification de sa validité Si le capteur correspondant au ucDeviceId est enregistré dans la base, copie ses flags depuis la base vers NodeFlag, vérifie si son bit V = 1 et renvoie true, si V = 0 renvoie false. Sinon renvoie false et laisse SensorFlag inchangé.
 
bool xWHubSetDataChannel (uint8_t ucIndex)
 Modifie le canal actuellement utilisé pour la transmission de données La modification n'est effectuée que si ucIndex est dans les limites autorisées entre 1 et vWNetNumberOfChannels() Plus de détails...
 
bool xWHubSetDataPnCode (uint8_t ucIndex)
 Modifie le PnCode actuellement utilisé pour la transmission de données La modification n'est effectuée que si iIndex est dans les limites autorisées entre 1 et ucWNetNumberOfPnCodes() Plus de détails...
 
bool xWHubStatusFlag (eWHubStatus eFlag)
 Renvoie l'état d'un bit d'état ou de mode du hub.
 

Macros

#define WHUB_BUILD   (0x00)
 
#define WHUB_MAJOR   (0x01)
 
#define WHUB_MINOR   (0x00)
 

Définitions de type

typedef struct xWHubConfig xWHubConfig
 
typedef struct xWHubMessage xWHubMessage
 
typedef struct xWHubService xWHubService
 
typedef struct xWusbHub xWusbHub
 

Énumérations

enum  eWHubMsgId {
  WHUB_RESPONSE = 0x80, WHUB_RSP_HUB_INFO = 0x81, WHUB_RSP_BIND = 0x82, WHUB_RSP_BIND_INFO = 0x83,
  WHUB_RSP_DELETE_NODE = 0x84, WHUB_RSP_SEND_MSG = 0x85, WHUB_RSP_INCOMING_MSG = 0x86, WHUB_RSP_ENUM_DEVICES = 0x87,
  WHUB_RSP_NETWORK_CONFIG = 0x88, WHUB_RSP_NETWORK_STATUS = 0x89, WHUB_RSP_RESET = 0x8A, WHUB_RSP_CHANGE_CHANNEL = 0x8B,
  WHUB_RSP_UNKNOWN_CMD = 0xFF
}
 Identifiants des messages échangées du hub vers l'hôte.
 
enum  eWHubMsgStatus {
  WHUB_STA_SUCCESS = 0x00, WHUB_STA_UNKNOWN_ID = 0x01, WHUB_STA_BUFFER_OVERFLOW = 0x02, WHUB_STA_PRIOR_PAYLOAD_LOST = 0x03,
  WHUB_STA_PN_CODE_INDEX_INVALID = 0x04, WHUB_STA_CHANNEL_INVALID = 0x05, WHUB_STA_MSG_QUEUED = 0x06, WHUB_STA_SEARCH_CHANNEL_FAILURE = 0x08
}
 Comptes rendus échangées entre hub et hôte.
 
enum  eWHubStatus {
  WHUB_EEPROMBLANK = 0, WHUB_AUTOBIND = 1, WHUB_SEEDEDBIND = 2, WHUB_SEARCHCHANNEL = 3,
  WHUB_BACKDATA = 4, WHUB_NODEBOUND = 5, WHUB_BIND = 6, WHUB_CONFIGSAVED = 7
}
 Indice des bits de mode et d'état utilisés par un hub. Plus de détails...
 

Documentation du type de l'énumération

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

Valeurs énumérées
WHUB_EEPROMBLANK 

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

WHUB_AUTOBIND 

Valide le mode d'intégration automatique

WHUB_SEEDEDBIND 

Valide le mode d'intégration rapide

WHUB_SEARCHCHANNEL 

Valide le mode recherche de canal

WHUB_BACKDATA 

Indique que des données doivent être transmise à un capteur

WHUB_NODEBOUND 

Indique qu'un capteur est intégré au réseau

WHUB_BIND 

Indique que le hub est en mode intégration

WHUB_CONFIGSAVED 

Indique que la configuration a été sauvée en EEPROM

Définition à la ligne 50 du fichier avrio/wusb/hub.h.

50  {
51 
52  WHUB_EEPROMBLANK = 0,
54  /* Mode */
55  WHUB_AUTOBIND = 1,
56  WHUB_SEEDEDBIND = 2,
57  WHUB_SEARCHCHANNEL = 3,
60  /* Sensor Status */
61  WHUB_BACKDATA = 4,
62  WHUB_NODEBOUND = 5,
64  /* Hub Status */
65  WHUB_BIND = 6,
66  WHUB_CONFIGSAVED = 7
68 } eWHubStatus;
eWHubStatus
Indice des bits de mode et d'état utilisés par un hub.

Documentation des fonctions

int iWHubInit ( eWDevDataRate  eDataRate,
int  iSensorDbaseFileArg1,
void *  pvSensorDbaseFileArg2 
)

Initialisation du Hub Cette fonction initialise tous les élèments nécessaires au fonctionnement du hub :

  • La couche réseau WusbNetwork
  • La base de données des capteurs du réseau WusbSensorDataBase
    Paramètres
    eDataRatevitesse de transmission. 0 pour initialiser à partir de la config en EEPROM.
    SensorDbaseFileArg1premier paramètre à transmettre à iWSdBaseOpen()
    SensorDbaseFileArg2deuxième paramètre à transmettre à iWSdBaseOpen()
    Renvoie
    la valeur renvoyée par iWSdBaseOpen(): 0 succès, -1 erreur.
const xWHubMessage* pxWHubLoop ( void  )

Fonction qui gère l'intégralité du réseau WirelessUSB™ Cette fonction doit être appellée le plus souvent possible par l'application. Elle gère l'intégration des capteurs au réseau, la transmission et la réception de données des capteurs, l'envoi de compte rendu à l'hôte qui gère le hub. Elle choisit automatiquement le canal en fonction des conditions de transmission (bruit, présence d'autres réseaux ....) et en change lorsque cela est nécessaire en validant automatiquement le mode recherche de canal. Elle permute de mode entre la réception de données et l'intégration automatique des capteurs si ce mode est validé (Bit d'état WHUB_AUTOBIND) avec une période de 50 ms. Elle intègre les capteurs qui lui en font la demande sur le canal de données si le mode d'intégration rapide est validé (Bit d'état WHUB_SEEDEDBIND)

Renvoie
Message pour la couche application. 0 si aucun message.
void vWHubSetMid ( const uint8_t *  pucMid)

Modifie les 4 octets de l'identifiant de fabrication La modificiation se fait en RAM. Elle est perdue lors d'un RESET. Attention, normalement le MID est fourni par le fabricant du module et n'est pas accessible en écriture. La modification du MID risque de provoquer des conflits sur le réseau (si un autre node a le même MID). Le Crc Seed et le Checksum Seed du réseau sont mis à jour par cette fonction.

Paramètres
Midles 4 octets du nouveau MID rangés en little endian
bool WHubNodeDelete ( uint16_t  ucDeviceId)
inline

Retire un capteur du réseau.

Paramètres
ucDeviceIdDeviceID du capteur
Renvoie
true si le retrait a réussi
bool xWHubSetDataChannel ( uint8_t  ucIndex)

Modifie le canal actuellement utilisé pour la transmission de données La modification n'est effectuée que si ucIndex est dans les limites autorisées entre 1 et vWNetNumberOfChannels()

Paramètres
ucIndexIndex du canal
Renvoie
true Succès. False Erreur.
bool xWHubSetDataPnCode ( uint8_t  ucIndex)

Modifie le PnCode actuellement utilisé pour la transmission de données La modification n'est effectuée que si iIndex est dans les limites autorisées entre 1 et ucWNetNumberOfPnCodes()

Paramètres
ucIndexucIndex du PnCode
Renvoie
true Succès. False Erreur.