From f1a3221fbe36561d17162192301516e568e62dba Mon Sep 17 00:00:00 2001 From: echicken <> Date: Mon, 30 Apr 2012 19:01:39 +0000 Subject: [PATCH] AX.25 & KISS protocol related constants. --- exec/load/ax25defs.js | 61 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 exec/load/ax25defs.js diff --git a/exec/load/ax25defs.js b/exec/load/ax25defs.js new file mode 100644 index 0000000000..ea413f21a2 --- /dev/null +++ b/exec/load/ax25defs.js @@ -0,0 +1,61 @@ +// ax25defs.js +// AX.25 & KISS protocol-related constants + +const AX25_FLAG = (1<<1)|(1<<2)|(1<<3)|(1<<4)|(1<<5)|(1<<6); // Unused, but included for non-KISS implementations. + +// Address field - SSID subfield bitmasks +const A_CRH = (1<<7); // Command/Response or Has-Been-Repeated bit of an SSID octet +const A_RR = (1<<5)|(1<<6); // The "R" (reserved) bits of an SSID octet +const A_SSID = (1<<1)|(1<<2)|(1<<3)|(1<<4); // The SSID portion of an SSID octet + +// Control field bitmasks +const PF = (1<<4); // Poll/Final +const NR = (1<<5)|(1<<6)|(1<<7); // N(R) - receive sequence number +const NS = (1<<1)|(1<<2)|(1<<3); // N(S) - send sequence number +// Information frame +const I_FRAME = 0; // Derp +// Supervisory frame and subtypes +const S_FRAME = (1<<0); +const S_FRAME_RR = S_FRAME; // Receive Ready +const S_FRAME_RNR = S_FRAME|(1<<2); // Receive Not Ready +const S_FRAME_REJ = S_FRAME|(1<<3); // Reject +// Unnumbered frame and subtypes +const U_FRAME = (1<<0)|(1<<1); +const U_FRAME_SABM = U_FRAME|(1<<2)|(1<<3)|(1<<5); // Set Asynchronous Balanced Mode +const U_FRAME_DISC = U_FRAME|(1<<6); // Disconnect +const U_FRAME_DM = U_FRAME|(1<<2)|(1<<3); // Disconnected Mode +const U_FRAME_UA = U_FRAME|(1<<5)|(1<<6); // Acknowledge +const U_FRAME_FRMR = U_FRAME|(1<<2)|(1<<7); // Frame Reject +const U_FRAME_UI = U_FRAME; // Information + +// Protocol ID field bitmasks (most are unlikely to be used, but are here for the sake of completeness.) +const PID_X25 = (1<<0); // ISO 8208/CCITT X.25 PLP +const PID_CTCPIP = (1<<1)|(1<<2); // Compressed TCP/IP packet. Van Jacobson (RFC 1144) +const PID_UCTCPIP = (1<<0)|(1<<1)|(1<<2); // Uncompressed TCP/IP packet. Van Jacobson (RFC 1144) +const PID_SEGF = (1<<4); // Segmentation fragment +const PID_TEXNET = (1<<0)|(1<<1)|(1<<6)|(1<<7); // TEXNET datagram protocol +const PID_LQP = (1<<2)|(1<<6)|(1<<7); // Link Quality Protocol +const PID_ATALK = (1<<1)|(1<<3)|(1<<6)|(1<<7); // Appletalk +const PID_ATALKARP = (1<<0)|(1<<1)|(1<<3)|(1<<6)|(1<<7); // Appletalk ARP +const PID_ARPAIP = (1<<2)|(1<<3)|(1<<6)|(1<<7); // ARPA Internet Protocol +const PID_ARPAAR = (1<<0)|(1<<2)|(1<<3)|(1<<6)|(1<<7); // ARPA Address Resolution +const PID_FLEXNET = (1<<1)|(1<<2)|(1<<3)|(1<<6)|(1<<7); // FlexNet +const PID_NETROM = (1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<6)|(1<<7); // Net/ROM +const PID_NONE = (1<<4)|(1<<5)|(1<<6)|(1<<7); // No layer 3 protocol implemented +const PID_ESC = (1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<4)|(1<<5)|(1<<6)|(1<<7); // Escape character. Next octet contains more Level 3 protocol information. + +// KISS protocol-related constants + +// FEND and transpositions +const KISS_FEND = (1<<6)|(1<<7); // Frame end +const KISS_FESC = (1<<0)|(1<<1)|(1<<3)|(1<<4)|(1<<6)|(1<<7); // Frame escape +const KISS_TFEND = (1<<2)|(1<<3)|(1<<4)|(1<<6)|(1<<7); // Transposed frame end +const KISS_TFESC = (1<<0)|(1<<2)|(1<<3)|(1<<4)|(1<<6)|(1<<7); // Transposed frame escape + +// Commands (SetHardware (0x06) excluded intentionally.) +const KISS_DF = 0; // Data frame +const KISS_TXD = (1<<0); // TX delay +const KISS_P = (1<<1); // Persistence +const KISS_ST = (1<<0)|(1<<1); // Slot time +const KISS_TXT = (1<<2); // TX tail +const KISS_FD = (1<<0)|(1<<2); // Full Duplex -- GitLab