21 #ifndef _AVRIO_WUSB_DEVICE_H_ 22 #define _AVRIO_WUSB_DEVICE_H_ 24 #include <avrio/defs.h> 41 #define WDEV_REGTABLE_SIZEOF(r) (sizeof(r)/sizeof(xWDevRegister)) 44 #define WDEV_MID_SIZEOF 4 47 #define WDEV_RXVALID 2 126 int iWDevReceive (uint8_t * ucUserPacket, uint8_t * ucUserValid,
127 int iUserBufferSize,
int usTimeout);
224 #if defined(__DOXYGEN__) 362 #include <avrio/state.h> 363 #include <avrio/wusb/net/device/iface.h> 365 #ifdef AVRIO_WUSB_ENABLE 370 #include <avr/eeprom.h> 373 typedef struct xWDevice {
377 const uint8_t * pTxData;
384 extern void vWDevIdle (
void);
387 extern xWDevice dDevice;
392 __STATIC_ALWAYS_INLINE (
void 395 vWIfcWrite (Reg, Value);
399 __STATIC_ALWAYS_INLINE (uint8_t
402 return ucWIfcRead (Reg);
413 __STATIC_ALWAYS_INLINE (
void 420 __STATIC_ALWAYS_INLINE (
const uint8_t *
430 return dDevice.xConfig.pDataRate;
434 __STATIC_ALWAYS_INLINE (
void 441 __STATIC_ALWAYS_INLINE (uint8_t
448 __STATIC_ALWAYS_INLINE (uint8_t
455 __STATIC_ALWAYS_INLINE (
void 458 vWIfcBurstWrite_P (REG_PN_CODE, PnCode, 8);
462 __STATIC_ALWAYS_INLINE (
void 465 vWIfcBurstWrite (REG_PN_CODE, PnCode, 8);
469 __STATIC_ALWAYS_INLINE (uint8_t
476 __STATIC_ALWAYS_INLINE (uint8_t
483 __STATIC_ALWAYS_INLINE (uint8_t
490 __STATIC_ALWAYS_INLINE (uint8_t
497 __STATIC_ALWAYS_INLINE (uint8_t
504 __STATIC_ALWAYS_INLINE (uint8_t
511 __STATIC_ALWAYS_INLINE (
void 514 vWDevSetReg (REG_THRESHOLD_L, Value & mTHRESHOLD_L);
518 __STATIC_ALWAYS_INLINE (
void 521 vWDevSetReg (REG_THRESHOLD_H, Value & mTHRESHOLD_H);
525 __STATIC_ALWAYS_INLINE (
void 533 __STATIC_ALWAYS_INLINE (
void 540 __STATIC_ALWAYS_INLINE (
void 547 __STATIC_ALWAYS_INLINE (
void 550 memcpy (&dDevice.pMid, Mid, WDEV_MID_SIZEOF);
void vWDevSetChannel(uint8_t Value)
Modification du canal de réception (REG_CHANNEL)
struct xWDevConfig xWDevConfig
Structure de stockage de la configuration du module.
eWDevStatus
Différents états du module.
uint8_t ucWDevGetChannel(void)
Lecture du canal de réception (REG_CHANNEL)
uint8_t ucWDevGetSynthLockCount(void)
Lecture du délai de verrouillage du synthetiseur par pas de 2 us(REG_SYN_LOCK_CNT) ...
void vWDevEnable(uint8_t Tx)
Passe le module en attente de réception ou de transmission.
const uint8_t * pucWDevGetPnCode(void)
Lecture du PN Code courant.
void vWDevInit(eWDevDataRate DataRate)
Initialise le module radio L'initialisation se fait avec les valeurs par défaut correspondants à la v...
uint8_t ucWDevGetX13Out(void)
Lecture de l'activation de la broche X13OUT (REG_PA)
void vWDevSetupFromTable_P(const xWDevRegisterTable *SetupTable, uint8_t Index)
Charge les registres du module radio à partir d'un tableau de configuration en FLASH.
uint8_t xStateGet(xState *pxState)
Lit la valeur d'une machine d'état de façon atomique.
void vWDevSetPnCode(const uint8_t *PnCode)
Modification du PN Code.
void vWDevSetPaBias(uint8_t Value)
Modification du niveau d'amplification à l'emission (REG_PA)
int iWDevReceive(uint8_t *ucUserPacket, uint8_t *ucUserValid, int iUserBufferSize, int usTimeout)
Réception d'un message.
eWDevStatus eWDevGetStatus(void)
Renvoie l'état du module.
uint8_t ucWDevGetThresholdHigh(void)
Lecture du seuil de réception du niveau haut (REG_THRESHOLD_H)
void vWDevSetCrystal(uint8_t Capacitance)
Ajustement de la fréquence du quartz (REG_CRYSTAL_ADJ) Permet d'ajuster la capacité parallèle du quar...
void vWDevSetThresholdLow(uint8_t Value)
Modification du seuil de réception du niveau bas (REG_THRESHOLD_L)
uint8_t ucWDevRevId(void)
Lecture de l'identifiant de revision (REG_ID)
void vStateWait(xState *pxState, uint8_t ucValue)
vStateWait suspend le thread appelant jusqu'à ce que le compteur de la machine d'état pointée par pxS...
void vWDevSaveConfigToEEPROM(void)
Sauvegarde la configuration courante en EEPROM.
const struct xWDevRegister * Regs
volatile uint8_t xState
Le type xState est une variable atomique qui peut évoluer entre 0 et 255.
uint8_t ucWDevGetThresholdLow(void)
Lecture du seuil de réception du niveau bas (REG_THRESHOLD_L)
Structure de stockage de la configuration du module.
const uint8_t * pucWDevMid(void)
Lecture des 4 octets de l'identifiant de fabrication (REG_MID)
void vWDevWaitStatus(eWDevStatus eStatus)
Attends que le module passe à l'état Status.
uint8_t ucWDevGetCrystal(void)
Lecture de la capacité d'ajustement de la fréquence du quartz (REG_CRYSTAL_ADJ)
eWDevDataRate
Différentes vitesse de transmission.
void vWDevSetPnCode_P(const uint8_t *PnCode)
Modification du PN Code.
void vWDevSetMid(const uint8_t *Mid)
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)
void vWDevRxCB(uint8_t *Data)
Gestionnaire de réception radio Renvoie l'information reçue à la couche supérieure.
void vWDevSetup(const xWDevRegister *Regs, uint8_t Size)
Charge les registres du module radio à partir d'un tableau en RAM.
void vWDevSetDataRate(eWDevDataRate DataRate)
Réinitialise le module radio avec une nouvelle vitesse de transmission.
void vWDevDisable(void)
Arrête la transmission ou la réception.
void vWDevTransmit(const uint8_t *Data, uint8_t Length)
Transmission d'un message.
void vWDevSetSynthLockCount(uint8_t Value)
Modification du délai de verrouillage du synthetiseur par pas de 2 us(REG_SYN_LOCK_CNT) ...
void vWDevSetThresholdHigh(uint8_t Value)
Modification du seuil de réception du niveau haut (REG_THRESHOLD_H)
struct xWDevRegisterTable xWDevRegisterTable
Structure de stockage d'un tableau de registres du module.
void vWDevSetX13Out(uint8_t flag)
Active ou désactive la broche X13OUT du module radio.
Structure de stockage d'un tableau de registres du module.
uint8_t ucWDevGetReg(uint8_t Address)
Lecture d'un registre octet du module radio.
void vWDevSleep(bool Sleep)
Endort ou réveille le module afin d'économiser de l'énergie Le module est à l'état statique...
uint8_t ucWDevGetPaBias(void)
Lecture du niveau d'amplification à l'emission (REG_PA)
int8_t iWDevRssi(void)
Evaluation de la qualité de la transmission La valeur renvoyée, entre 0 et 31 permet d'évaluer le bru...
Structure de stockage d'un registre du module.
eWDevDataRate eWDevGetDataRate(void)
Renvoie la vitesse de transmission.
void vWDevSetup_P(const xWDevRegister *Regs, uint8_t Size)
Charge les registres du module radio à partir d'un tableau en FLASH.
struct xWDevRegister xWDevRegister
Structure de stockage d'un registre du module.
void vWDevSetReg(uint8_t Address, uint8_t Value)
Ecriture dans un registre octet du module radio.