mirror of
https://github.com/yoboujon/dumber.git
synced 2025-06-08 13:50:49 +02:00
101 lines
2.4 KiB
C
101 lines
2.4 KiB
C
/*
|
|
* xbee.h
|
|
*
|
|
* Created on: 4 avr. 2022
|
|
* Author: dimercur
|
|
*/
|
|
|
|
#ifndef BSP_XBEE_XBEE_H_
|
|
#define BSP_XBEE_XBEE_H_
|
|
|
|
#include "stm32l4xx_hal.h"
|
|
|
|
#define XBEE_OK 0
|
|
#define XBEE_CONFIG_ERROR 2
|
|
#define XBEE_AT_CMD_ERROR 3
|
|
#define XBEE_RX_TIMEOUT 4
|
|
#define XBEE_RX_ERROR 5
|
|
#define XBEE_TX_ERROR 6
|
|
#define XBEE_INVALID_FRAME 7
|
|
|
|
#define XBEE_RX_PACKET_TYPE 0x90
|
|
#define XBEE_RX_EXPLICIT_TYPE 0x91
|
|
#define XBEE_TX_STATUS_TYPE 0x89
|
|
#define XBEE_AT_CMD_RESPONSE_TYPE 0x88
|
|
#define XBEE_MODEM_STATUS_TYPE 0x8A
|
|
#define XBEE_EXTENDED_TX_STATUS_TYPE 0x8B
|
|
#define XBEE_LOCAL_AT_CMD_TYPE 0x08
|
|
#define XBEE_TX_REQUEST_TYPE 0x10
|
|
#define XBEE_TX_EXPLICIT_TYPE 0x11
|
|
|
|
#define XBEE_AT_STATUS_SUCCESS 0
|
|
#define XBEE_AT_STATUS_ERROR 1
|
|
#define XBEE_AT_STATUS_INVALID_COMMAND 2
|
|
#define XBEE_AT_STATUS_INVALID_PARAMETER 3
|
|
|
|
#define XBEE_TX_STATUS_SUCCESS 0x00
|
|
#define XBEE_TX_STATUS_NO_ACK 0x01
|
|
#define XBEE_TX_STATUS_CCA_FAILURE 0x02
|
|
#define XBEE_TX_STATUS_NETWORK_NO_ACK 0x21
|
|
|
|
#define XBEE_MODEM_STATUS_HW_RST 0x00
|
|
#define XBEE_MODEM_STATUS_JOINED 0x02
|
|
|
|
#define XBEE_RX_OPTIONS_ACKNOWLEDGED 0x01
|
|
#define XBEE_RX_OPTIONS_BRODCASTED 0x02
|
|
#define XBEE_RX_OPTIONS_PAN_BROADCASTED 0x04
|
|
|
|
#define XBEE_CHANNEL_FIRST 0x0B
|
|
#define XBEE_CHANNEL_LAST 0x1A
|
|
|
|
#define XBEE_BROADCAST_ADDRESS 0x000000000000FFFF
|
|
|
|
#define XBEE_PANID_BROADCAST SET
|
|
#define XBEE_NO_PANID_BROADCAST RESET
|
|
|
|
typedef struct {
|
|
uint8_t type;
|
|
} XBEE_GENERIC_FRAME;
|
|
|
|
typedef struct {
|
|
uint8_t type;
|
|
uint64_t source_addr;
|
|
uint8_t options;
|
|
uint8_t data_length;
|
|
char data[];
|
|
} XBEE_RX_PACKET_FRAME;
|
|
|
|
typedef struct {
|
|
uint8_t type;
|
|
uint8_t frame_id;
|
|
uint16_t at_cmd;
|
|
uint8_t status;
|
|
uint8_t data_length;
|
|
char data[];
|
|
} XBEE_AT_CMD_RESPONSE_FRAME;
|
|
|
|
typedef struct {
|
|
uint8_t type;
|
|
uint8_t frame_id;
|
|
uint8_t status;
|
|
uint8_t retry_count;
|
|
} XBEE_TX_STATUS_FRAME;
|
|
|
|
typedef struct {
|
|
uint8_t type;
|
|
uint8_t status;
|
|
} XBEE_MODEM_STATUS_FRAME;
|
|
|
|
int XBEE_ConfigureDevice(void);
|
|
int XBEE_Init (void);
|
|
|
|
int XBEE_DecodeFrame(char* frame, XBEE_GENERIC_FRAME** decoded_frame);
|
|
int XBEE_GetData (XBEE_GENERIC_FRAME** frame, int timeout); // timeout in ms
|
|
int XBEE_SendData(uint64_t destination, uint8_t frame_id, uint8_t pan_broadcast, char* data, uint8_t *status);
|
|
|
|
int XBEE_SetChannel(uint8_t channel);
|
|
int XBEE_SetPanID(uint16_t panid);
|
|
int XBEE_GetRSSI(uint8_t *rssi);
|
|
int XBEE_GetUID(uint64_t *uid);
|
|
|
|
#endif /* BSP_XBEE_XBEE_H_ */
|