10 #define _SYSIO_XBEE_H_ 12 #include <sysio/defs.h> 19 #include <sysio/serial.h> 45 #define XBEE_CMD_CHANNEL "CH" 46 #define XBEE_CMD_PAN_ID "ID" 47 #define XBEE_CMD_OPERATING_PAN_ID "OP" 48 #define XBEE_CMD_DEST_ADDR64_HI "DH" 49 #define XBEE_CMD_DEST_ADDR64_LO "DL" 50 #define XBEE_CMD_SRC_ADDR16 "MY" 51 #define XBEE_CMD_SER_HI "SH" 52 #define XBEE_CMD_SER_LO "SL" 53 #define XBEE_CMD_RAND_DLY_SLOTS "RN" 54 #define XBEE_CMD_MAC_MODE "MM" 55 #define XBEE_CMD_COORD_ENA "CE" 56 #define XBEE_CMD_SCAN "SC" 57 #define XBEE_CMD_SCAN_DURATION "SD" 58 #define XBEE_CMD_ASSOC_END "A1" 59 #define XBEE_CMD_ASSOC_COORD "A2" 60 #define XBEE_CMD_ASSOC_STATUS "AI" 61 #define XBEE_CMD_RSSI "DB" 66 #define XBEE_CMD_PWR_LEVEL "PL" 67 #define XBEE_CMD_CCA_THRESH "CA" 72 #define XBEE_CMD_SLEEP_MODE "SM" 73 #define XBEE_CMD_SLEEP_TIMEOUT "ST" 74 #define XBEE_CMD_SLEEP_PERIOD "SP" 75 #define XBEE_CMD_SLEEP_PERIOD_DISASSOC "DP" 80 #define XBEE_CMD_DATA_RATE "BD" 81 #define XBEE_CMD_PACKETIZATION_TIMEOUT "RO" 82 #define XBEE_CMD_DIO7_CONFIG "D7" 83 #define XBEE_CMD_DIO6_CONFIG "D6" 84 #define XBEE_CMD_DIO5_CONFIG "D5" 85 #define XBEE_CMD_DIO4_CONFIG "D4" 86 #define XBEE_CMD_DIO3_CONFIG "D3" 87 #define XBEE_CMD_DIO2_CONFIG "D2" 88 #define XBEE_CMD_DIO1_CONFIG "D1" 89 #define XBEE_CMD_DIO0_CONFIG "D0" 90 #define XBEE_CMD_PWM0_CONFIG "PO" 91 #define XBEE_CMD_API_ENA "AP" 92 #define XBEE_CMD_PULLUP_ENA "PR" 97 #define XBEE_CMD_VERS_FIRMWARE "VR" 98 #define XBEE_CMD_VERS_HARDWARE "HV" 99 #define XBEE_CMD_VERS_FIRM_VERBOSE "VL" 104 #define XBEE_CMD_RSSI_PWM_TIMER "RP" 105 #define XBEE_CMD_RSS "DB" 110 #define XBEE_CMD_CCA_FAILS "EC" 111 #define XBEE_CMD_ACK_FAILS "EA" 116 #define XBEE_CMD_AT_MODE_TIMEOUT "CT" 117 #define XBEE_CMD_AT_GUARD_TIME "GT" 118 #define XBEE_CMD_AT_CMD_CHAR "CC" 119 #define XBEE_CMD_AT_EXIT "CN" 124 #define XBEE_CMD_NODE_FIND_DEST "DN" 125 #define XBEE_CMD_NODE_DISCOVER "ND" 126 #define XBEE_CMD_NODE_ID "NI" 127 #define XBEE_CMD_ACTIVE_SCAN "AS" 128 #define XBEE_CMD_FORCE_DISASSOC "DA" 129 #define XBEE_CMD_ENERGY_SCAN "ED" 130 #define XBEE_CMD_FORCE_POLL "FP" 135 #define XBEE_CMD_SAMPLE_RATE "IR" 136 #define XBEE_CMD_SAMPLES_BEFORE_TX "IT" 141 #define XBEE_CMD_WRITE_PARAMS "WR" 142 #define XBEE_CMD_RESET_SOFT "FR" 143 #define XBEE_CMD_APPLY_CHANGES "AC" 144 #define XBEE_CMD_RESTORE_DEFAULTS "RE" 145 #define XBEE_CMD_MAX_PAYLOAD "NP" 193 XBEE_CB_UNKNOWN = -1,
200 #define XBEE_SIZEOF_CB 8 210 XBEE_PKT_TYPE_ATCMD = 0x08,
211 XBEE_PKT_TYPE_QATCMD = 0x09,
212 XBEE_PKT_TYPE_REMOTE_ATCMD = 0x17,
213 XBEE_PKT_TYPE_ATCMD_RESP = 0x88,
214 XBEE_PKT_TYPE_MODEM_STATUS = 0x8a,
215 XBEE_PKT_TYPE_REMOTE_ATCMD_RESP = 0x97,
218 XBEE_PKT_TYPE_TX64 = 0x00,
219 XBEE_PKT_TYPE_TX16 = 0x01,
220 XBEE_PKT_TYPE_RX64 = 0x80,
221 XBEE_PKT_TYPE_RX16 = 0x81,
222 XBEE_PKT_TYPE_RX64_IO = 0x82,
223 XBEE_PKT_TYPE_RX16_IO = 0x83,
224 XBEE_PKT_TYPE_TX_STATUS = 0x89,
227 XBEE_PKT_TYPE_ZB_TX_REQ = 0x10,
228 XBEE_PKT_TYPE_ZB_CMD_FRAME = 0x11,
229 XBEE_PKT_TYPE_ZB_TX_STATUS = 0x8b,
230 XBEE_PKT_TYPE_ZB_RX = 0x90,
231 XBEE_PKT_TYPE_ZB_RX_IO = 0x92,
232 XBEE_PKT_TYPE_ZB_RX_SENSOR = 0x94,
233 XBEE_PKT_TYPE_ZB_NODE_IDENT = 0x95,
241 XBEE_PKT_STATUS_OK = 0,
242 XBEE_PKT_STATUS_ERROR = 1,
243 XBEE_PKT_STATUS_INVALID_COMMAND = 2,
244 XBEE_PKT_STATUS_INVALID_PARAMETER = 3,
245 XBEE_PKT_STATUS_TX_FAILURE = 4,
246 XBEE_PKT_STATUS_UNKNOWN = -1
254 XBEE_PKT_MODEM_HARDWARE_RESET = 0,
255 XBEE_PKT_MODEM_WATCHDOG_TIMER_RESET = 1,
256 XBEE_PKT_MODEM_JOINED_NETWORK = 2,
257 XBEE_PKT_MODEM_DISASSOCIATED = 3,
258 XBEE_PKT_MODEM_COORDINATOR_STARTED = 4,
259 XBEE_PKT_MODEM_NETWORK_SECURITY_KEY_WAS_UPDATED = 7,
260 XBEE_PKT_MODEM_VOLTAGE_SUPPLY_LIMIT_EXCEEDED = 0x0D,
261 XBEE_PKT_MODEM_CONFIGURATION_CHANGED = 0x11,
262 XBEE_PKT_MODEM_STACK_ERROR = 0x80
282 XBEE_SERIES_UNKNOWN = -1
290 XBEE_DEVICE_COORDINATOR = 0,
291 XBEE_DEVICE_ROUTER = 1,
292 XBEE_DEVICE_END_DEVICE = 2,
293 XBEE_DEVICE_UNKNOWN = -1
301 XBEE_EVENT_BUTTON = 1,
303 XBEE_EVENT_POWER_ON = 3,
304 XBEE_EVENT_UNKNOWN = -1
391 const uint8_t *params,
410 const uint8_t params[],
412 const uint8_t addr64[8],
413 const uint8_t addr16[2],
434 const uint8_t addr64[8],
435 const uint8_t addr16[2],
478 const uint8_t addr[8],
496 const uint8_t addr[2],
530 void *
pvXBeeAllocPkt (
xXBee *xbee, uint8_t direction, uint8_t len) __attribute__ ( (weak));
886 int iXBeePktDigital (
xXBeePkt * pkt,
int array[9],
unsigned int index);
887 int iXBeePktAnalog (
xXBeePkt * pkt,
int array[6],
unsigned int index);
888 int iXBeePktSamples (
xXBeePkt * pkt);
int iXBeePktOptions(xXBeePkt *pkt)
Champs option du paquet.
char * pcXBeePktNiString(xXBeePkt *pkt)
Identifiant texte du noeud (Série 2)
int iXBeePktParamGetStr(char *pcDest, xXBeePkt *pkt, int iDestSize)
Copie les paramètres de commande AT.
int iXBeePktManufacturerId(xXBeePkt *pkt)
Identification du fabricant du module (Série 2)
int iXBeePktApply(xXBeePkt *pkt)
Champs apply du paquet.
int iXBeeZbSendToCoordinator(xXBee *xbee, const void *data, uint8_t len)
Envoi d'un paquet de données au coordinateur du réseau.
int iXBeePktDiscovery(xXBeePkt *pkt)
Status de découverte de paquet (Série 2)
int iXBeePktStatus(xXBeePkt *pkt)
Status de paquet.
const uint8_t * pucXBeeAddr64Broadcast(void)
Adresse 64-bits de broadcast (0x000000000000FFFF)
eXBeeDeviceType
Type de noeud.
int iXBeeClose(xXBee *xbee)
Fermeture d'un module XBee.
uint8_t * pucXBeePktAddrParent16(xXBeePkt *pkt)
Adresse réseau 16-bits parent du paquet (Série 2)
int iXBeePktDataLen(xXBeePkt *pkt)
Nombre d'octet de données (CRC exclu)
char * pcXBeePktCommand(xXBeePkt *pkt)
Nom de la commande AT.
bool bXBeePktAddressIsEqual(const uint8_t *a1, const uint8_t *a2, uint8_t len)
Vérifie l'égalité de 2 adresses réseau de len octets.
int iXBeeSendAt(xXBee *xbee, const char cmd[], const uint8_t *params, uint8_t param_len)
Envoi une commande AT locale.
const char * sXBeeTransmitStatusToString(uint8_t status)
Message explicite associé à un status de transmission (message 0x8B)
eXBeeSourceEvent
Type de noeud.
void * pvXBeeAllocPkt(xXBee *xbee, uint8_t direction, uint8_t len)
Alloue la mémoire pour un paquet.
const uint8_t * pucXBeeAddr16Unknown(void)
Adresse 16-bits inconnue (0xFFFE)
int iXBeePktParamGetULong(uint32_t *ulDest, xXBeePkt *pkt, int iOffset)
Copie d'un mot long des paramètres de commande AT.
uint8_t ucXBeePktType(xXBeePkt *pkt)
Lecture du type de paquet.
int iXBeePktRssi(xXBeePkt *pkt)
Champs rssi du paquet (Série 1)
int iXBeeSend16(xXBee *xbee, const void *data, uint8_t len, const uint8_t addr[2], uint8_t opt)
Envoi d'un paquet de données à un module distant par son adresse 16-bit.
eXBeeSourceEvent eXBeePktSourceEvent(xXBeePkt *pkt)
Source de l'événement (Série 2)
int(* iXBeeRxCB)(struct xXBee *xbee, struct xXBeePkt *pkt, uint8_t len)
Prototype d'un gestionnaire de réception.
uint8_t * pucXBeePktAddrSrc64(xXBeePkt *pkt)
Adresse 64-bits source du paquet.
int iXBeeSendRemoteAt(xXBee *xbee, const char cmd[], const uint8_t params[], uint8_t param_len, const uint8_t addr64[8], const uint8_t addr16[2], uint8_t apply)
Envoi une commande AT à un module distant.
int iXBeePktParamGetUShort(uint16_t *usDest, xXBeePkt *pkt, int iOffset)
Copie d'un mot des paramètres de commande AT.
int iXBeePktParamGetUByte(uint8_t *ucDest, xXBeePkt *pkt, int iOffset)
Copie d'un octet des paramètres de commande AT.
int iXBeePoll(xXBee *xbee, int timeout)
Scrute le flux relié au module en attente de réception d'octet.
uint8_t * pucXBeePktAddrRemote16(xXBeePkt *pkt)
Adresse réseau 16-bits distante du paquet (Série 2)
void vXBeeFreePkt(xXBee *xbee, xXBeePkt *pkt)
Libère un paquet alloué avec pvXBeeAllocPkt()
uint16_t usXBeePktLength(xXBeePkt *pkt)
Taille du paquet en octets.
const uint8_t * pucXBeeAddr64Unknown(void)
Adresse 64-bits inconnue (0xFFFFFFFFFFFFFFFF)
int iXBeePktIsBroadcast(xXBeePkt *pkt)
Indique si le paquet est un broadcast.
uint8_t * pucXBeePktAddrSrc16(xXBeePkt *pkt)
Adresse réseau 16-bits source du paquet.
int iXBeePktParamGetULongLong(uint64_t *ullDest, xXBeePkt *pkt, int iOffset)
Copie d'un très long mot des paramètres de commande AT.
void vXBeeSetUserContext(xXBee *xbee, void *pvContext)
Modifie le contexte utilisateur.
int iXBeeZbSendBroadcast(xXBee *xbee, const void *data, uint8_t len)
Envoi d'un paquet de données de diffusion sur le réseau.
eXBeeModemStatus
Status Modem.
int iXBeePktRadius(xXBeePkt *pkt)
Champs radius du paquet (Série 2)
int iXBeeSend64(xXBee *xbee, const void *data, uint8_t len, const uint8_t addr[8], uint8_t opt)
Envoi d'un paquet de données à un module distant par son adresse 64-bit.
const uint8_t * pucXBeeAddr64Coordinator(void)
Adresse 64-bits du cordinateur Zigbee (0x0000000000000000)
int iXBeePktRetry(xXBeePkt *pkt)
Nombre de tentatives de paquet (Série 2)
int iXBeePktParamLen(xXBeePkt *pkt)
Longueur des paramètres de la commande AT.
eXBeeCmdStatus
Réponses à une commande AT.
int iXBeePktProfileId(xXBeePkt *pkt)
Identifiant du profile Digi (Série 2)
void vXBeeSetCB(xXBee *xbee, eXBeeCbType cb_type, iXBeeRxCB cb)
Modifie un gestionnaire de réception.
xXBee * xXBeeOpen(const char *pcDevice, xSerialIos *xIos, eXBeeSeries series)
Ouverture d'un module XBee.
void * pvXBeeGetUserContext(xXBee *xbee)
Renvoie le pointeur contexte utilisateur.
eXBeeDirection
Direction d'un échange XBee.
int iXBeePktFrameId(xXBeePkt *pkt)
Identifiant de paquet.
uint8_t * pucXBeePktData(xXBeePkt *pkt)
Pointeur sur les données du paquet.
eXBeeSeries
Serie du module XBee.
eXBeeDeviceType eXBeePktDeviceType(xXBeePkt *pkt)
Type de noeud (Série 2)
const char * sXBeeAssociationStatusToString(uint8_t status)
Message explicite associé à un status d'asssociation (Commande AT AI)
struct xXBeePkt xXBeePkt
Paquet XBee générique.
eXBeeCbType
Type de gestionnaire de réception.
const char * sXBeeModemStatusToString(uint8_t status)
Message explicite associé à un status de modem (message 0x8A)
eXBeePktType
Types de paquets géré par le module.
uint8_t * pucXBeePktParam(xXBeePkt *pkt)
Paramètres de la commande AT.
eXBeeSeries eXBeeGetSeries(const xXBee *xbee)
Retourne la série du module fournie à l'ouverture.
uint8_t * iXBeePktDst16(xXBeePkt *pkt)
Adresse réseau 16-bits destination du paquet (Série 2)
int iXBeeZbSend(xXBee *xbee, const void *data, uint8_t len, const uint8_t addr64[8], const uint8_t addr16[2], uint8_t opt, uint8_t radius)
Envoi d'un paquet de données à un module distant.
uint8_t * pucXBeePktAddrRemote64(xXBeePkt *pkt)
Adresse 64-bits distante du paquet (Série 2)
struct xXBee xXBee
Contexte d'un module XBee.