UNPKG

zigbee-herdsman

Version:

An open source ZigBee gateway solution with node.js.

110 lines (96 loc) 3.88 kB
import {EZSP_MAX_FRAME_LENGTH, EZSP_MIN_FRAME_LENGTH} from "../ezsp/consts"; /** * Define the size of the receive buffer pool on the EZSP host. * * The number of receive buffers does not need to be greater than the number of packet buffers available on the NCP, * because this in turn is the maximum number of callbacks that could be received between commands. * In reality a value of 20 is a generous allocation. */ export const EZSP_HOST_RX_POOL_SIZE = 32; /** * The number of transmit buffers must be set to the number of receive buffers * -- to hold the immediate ACKs sent for each callabck frame received -- * plus 3 buffers for the retransmit queue and one each for an automatic ACK * (due to data flow control) and a command. */ export const TX_POOL_BUFFERS = EZSP_HOST_RX_POOL_SIZE + 5; /** protocol version */ export const ASH_VERSION = 2; /** * Timeouts before link is judged down. * * Consecutive ACK timeouts (minus 1) needed to enter the ERROR state. * * Is 3 in ash-ncp.h */ export const ASH_MAX_TIMEOUTS = 6; /** max time in msecs for ncp to wake */ export const ASH_MAX_WAKE_TIME = 150; /** * Define the units used by the Not Ready timer as 2**n msecs * log2 of msecs per NR timer unit */ export const ASH_NR_TIMER_BIT = 4; /** Control byte mask for DATA frame */ export const ASH_DFRAME_MASK = 0x80; /** Control byte mask for short frames (ACK/NAK) */ export const ASH_SHFRAME_MASK = 0xe0; /** Acknowledge frame number */ export const ASH_ACKNUM_MASK = 0x07; export const ASH_ACKNUM_BIT = 0; /** Retransmitted frame flag */ export const ASH_RFLAG_MASK = 0x08; export const ASH_RFLAG_BIT = 3; /** Receiver not ready flag */ export const ASH_NFLAG_MASK = 0x08; export const ASH_NFLAG_BIT = 3; /** Reserved for future use */ export const ASH_PFLAG_MASK = 0x10; export const ASH_PFLAG_BIT = 4; /** DATA frame number */ export const ASH_FRMNUM_MASK = 0x70; export const ASH_FRMNUM_BIT = 4; /** * The wake byte special function applies only when in between frames, * so it does not need to be escaped within a frame. * (also means NCP data pending) */ export const ASH_WAKE = 0xff; /*!< */ /** Constant used in byte-stuffing (XOR mask used in byte stuffing) */ export const ASH_FLIP = 0x20; // Field and frame lengths, excluding flag byte and any byte stuffing overhead // All limits are inclusive export const ASH_MIN_DATA_FIELD_LEN = EZSP_MIN_FRAME_LENGTH; export const ASH_MAX_DATA_FIELD_LEN = EZSP_MAX_FRAME_LENGTH; /** with control */ export const ASH_MIN_DATA_FRAME_LEN = ASH_MIN_DATA_FIELD_LEN + 1; /** control plus data field, but not CRC */ export const ASH_MIN_FRAME_LEN = 1; export const ASH_MAX_FRAME_LEN = ASH_MAX_DATA_FIELD_LEN + 1; export const ASH_CRC_LEN = 2; export const ASH_MIN_FRAME_WITH_CRC_LEN = ASH_MIN_FRAME_LEN + ASH_CRC_LEN; export const ASH_MAX_FRAME_WITH_CRC_LEN = ASH_MAX_FRAME_LEN + ASH_CRC_LEN; // Lengths for each frame type: includes control and data field (if any), excludes the CRC and flag bytes /** ash frame len data min */ export const ASH_FRAME_LEN_DATA_MIN = ASH_MIN_DATA_FIELD_LEN + 1; /** [control] */ export const ASH_FRAME_LEN_ACK = 1; /** [control] */ export const ASH_FRAME_LEN_NAK = 1; /** [control] */ export const ASH_FRAME_LEN_RST = 1; /** [control, version, reset reason] */ export const ASH_FRAME_LEN_RSTACK = 3; /** [control, version, error] */ export const ASH_FRAME_LEN_ERROR = 3; // Define lengths of short frames - includes control byte and data field /** longest non-data frame sent */ export const SH_TX_BUFFER_LEN = 2; /** longest non-data frame received */ export const SH_RX_BUFFER_LEN = 3; // Define constants for the LFSR in randomizeBuffer() /** polynomial */ export const LFSR_POLY = 0xb8; /** initial value (seed) */ export const LFSR_SEED = 0x42; export const VALID_BAUDRATES = [600, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200, 230400, 460800];