[BACK]Return to rlncmd.h CVS log [TXT][DIR] Up to [local] / sys / dev / ic

Annotation of sys/dev/ic/rlncmd.h, Revision 1.1

1.1     ! nbrk        1: /*     $OpenBSD: rlncmd.h,v 1.1 1999/07/30 13:43:36 d Exp $    */
        !             2: /*
        !             3:  * David Leonard <d@openbsd.org>, 1999. Public Domain.
        !             4:  *
        !             5:  * RangeLAN2 host-to-card message protocol.
        !             6:  */
        !             7:
        !             8: /* Micro-message command header. */
        !             9: struct rln_mm_cmd {
        !            10:        u_int8_t        cmd_letter;     /* Command letter */
        !            11:        u_int8_t        cmd_seq;        /* Incremented on each command */
        !            12: #define RLN_MAXSEQ             0x7c
        !            13:        u_int8_t        cmd_fn;         /* Function number */
        !            14:        u_int8_t        cmd_error;      /* Reserved */
        !            15: };
        !            16: #define RLN_MM_CMD(l,n)                ((((unsigned int)l)<<8) | ((unsigned int)n))
        !            17: #define RLN_MM_CMD_LETTER(cmd) ((unsigned char)(((cmd) & 0xff00)>>8))
        !            18: #define RLN_MM_CMD_FUNCTION(cmd) ((unsigned char)((cmd) & 0xff))
        !            19: #define RLN_CMDCODE(letter, num) ((((letter) & 0xff) << 8) | ((num) & 0xff))
        !            20:
        !            21: /* Initialise card, and set operational parameters. */
        !            22: struct rln_mm_init {
        !            23:        struct          rln_mm_cmd mm_cmd;
        !            24: #define RLN_MM_INIT                    { 'A', 0, 0, 0 }
        !            25:        u_int8_t        enaddr[6];
        !            26:        u_int8_t        opmode;
        !            27: #define RLN_MM_INIT_OPMODE_NORMAL              0
        !            28: #define RLN_MM_INIT_OPMODE_PROMISC             1
        !            29: #define RLN_MM_INIT_OPMODE_PROTOCOL            2
        !            30:        u_int8_t        stationtype;            /* RLN_STATIONTYPE_... */
        !            31:        u_int8_t        hop_period;
        !            32:        u_int8_t        bfreq;
        !            33:        u_int8_t        sfreq;
        !            34:        u_char          channel    : 4;         /* lower bits */
        !            35:        u_char          subchannel : 4;         /* upper bits */
        !            36:        char            mastername[11];
        !            37:        u_char          sec1       : 4;         /* default 3 */
        !            38:        u_char          domain     : 4;         /* default 0 */
        !            39:        u_int8_t        sec2;                   /* default 2 */
        !            40:        u_int8_t        sec3;                   /* default 1 */
        !            41:        u_int8_t        sync_to;                /* 1 if roaming */
        !            42:        u_int8_t        xxx_pad;                /* zero */
        !            43:        char            syncname[11];
        !            44: };
        !            45:
        !            46: /* Result of initialisation. */
        !            47: struct rln_mm_initted {
        !            48:        struct          rln_mm_cmd mm_cmd;
        !            49: #define RLN_MM_INITTED                         { 'a', 0, 0, 0 }
        !            50:        u_int8_t        xxx;
        !            51: };
        !            52:
        !            53: /* Start searching for other masters. */
        !            54: struct rln_mm_search {
        !            55:        struct          rln_mm_cmd mm_cmd;
        !            56: #define RLN_MM_SEARCH                  { 'A', 0, 1, 0 }
        !            57:        u_int8_t        xxx1[23];
        !            58:        u_char          xxx2       : 4;
        !            59:        u_char          domain     : 4;
        !            60:        u_int8_t        roaming;
        !            61:        u_int8_t        xxx3;                   /* default 0 */
        !            62:        u_int8_t        xxx4;                   /* default 1 */
        !            63:        u_int8_t        xxx5;                   /* default 0 */
        !            64:        u_int8_t        xxx6[11];
        !            65: };
        !            66:
        !            67: /* Notification that searching has started. */
        !            68: struct rln_mm_searching {
        !            69:        struct          rln_mm_cmd mm_cmd;
        !            70: #define RLN_MM_SEARCHING               { 'a', 0, 1, 0 }
        !            71:        u_int8_t        xxx;
        !            72: };
        !            73:
        !            74: /* Terminate search. */
        !            75: #define RLN_MM_ABORTSEARCH             { 'A', 0, 3, 0 }
        !            76:
        !            77: /* Station synchronised to a master. */
        !            78: struct rln_mm_synchronised {
        !            79:        struct          rln_mm_cmd mm_cmd;
        !            80: #define RLN_MM_SYNCHRONISED            { 'a', 0, 4, 0 }
        !            81:        u_char          channel    : 4;         /* lower bits */
        !            82:        u_char          subchannel : 4;         /* upper bits */
        !            83:        char            mastername[11];
        !            84:        u_int8_t        enaddr[6];
        !            85: };
        !            86:
        !            87: /* Station lost synchronisation with a master. */
        !            88: #define RLN_MM_UNSYNCHRONISED          { 'a', 0, 5, 0 }
        !            89:
        !            90: /* Send card to sleep. (See rln_wakeup().) */
        !            91: struct rln_mm_standby {
        !            92:        struct          rln_mm_cmd mm_cmd;
        !            93: #define RLN_MM_STANDBY                 { 'A', 0, 6, 0 }
        !            94:        u_int8_t        xxx;                    /* default 0 */
        !            95: };
        !            96:
        !            97: /* Set ITO (inactivity timeout timer). */
        !            98: struct rln_mm_setito {
        !            99:        struct          rln_mm_cmd mm_cmd;
        !           100: #define RLN_MM_SETITO                  { 'A', 0, 7, 0 }
        !           101:        u_int8_t        xxx;                    /* default 3 */
        !           102:        u_int8_t        timeout;
        !           103:        u_char          bd_wakeup : 1;
        !           104:        u_char          pm_sync : 7;
        !           105:        u_int8_t        sniff_time;
        !           106: };
        !           107:
        !           108: /* ITO acknowledgment */
        !           109: #define RLN_MM_GOTITO                  { 'a', 0, 7, 0 }
        !           110:
        !           111: /* Send keepalive protocol message (?). */
        !           112: #define RLN_MM_SENDKEEPALIVE           { 'A', 0, 8, 0 }
        !           113:
        !           114: /* Set multicast mode. */
        !           115: struct rln_mm_multicast {
        !           116:        struct          rln_mm_cmd mm_cmd;
        !           117: #define RLN_MM_MULTICAST               { 'A', 0, 9, 0 }
        !           118:        u_int8_t        enable;
        !           119: };
        !           120:
        !           121: /* Ack multicast mode change. */
        !           122: #define RLN_MM_MULTICASTING            { 'a', 0, 9, 0 }
        !           123:
        !           124: /* Request statistics. */
        !           125: #define RLN_MM_GETSTATS                        { 'A', 0, 11, 0 }
        !           126:
        !           127: /* Statistics results. */
        !           128: #define RLN_MM_GOTSTATS                        { 'a', 0, 11, 0 }
        !           129:
        !           130: /* Set security ID used in channel. */
        !           131: struct rln_mm_setsecurity {
        !           132:        struct          rln_mm_cmd mm_cmd;
        !           133: #define RLN_MM_SETSECURITY             { 'A', 0, 12, 0 }
        !           134:        u_int8_t        sec1;
        !           135:        u_int8_t        sec2;
        !           136:        u_int8_t        sec3;
        !           137: };
        !           138:
        !           139: /* Ack set security ID. */
        !           140: #define RLN_MM_GOTSECURITY             { 'a', 0, 12, 0 }
        !           141:
        !           142: /* Request firmware version. */
        !           143: #define RLN_MM_GETPROMVERSION          { 'A', 0, 13, 0 }
        !           144:
        !           145: /* Reply with firmware version. */
        !           146: struct rln_mm_gotpromversion {
        !           147:        struct          rln_mm_cmd mm_cmd;
        !           148: #define RLN_MM_GOTPROMVERSION          { 'a', 0, 13, 0 }
        !           149:        u_int8_t        xxx;                    /* sizeof version? */
        !           150:        char            version[7];
        !           151: };
        !           152:
        !           153: /* Request station's MAC address (same as ethernet). */
        !           154: #define RLN_MM_GETENADDR               { 'A', 0, 14, 0 }
        !           155:
        !           156: /* Reply with station's MAC address. */
        !           157: struct rln_mm_gotenaddr {
        !           158:        struct          rln_mm_cmd mm_cmd;
        !           159: #define RLN_MM_GOTENADDR               { 'a', 0, 14, 0 }
        !           160:        u_int8_t        xxx;
        !           161:        u_int8_t        enaddr[6];
        !           162: };
        !           163:
        !           164: /* Tune various channel parameters. */
        !           165: struct rln_mm_setmagic {
        !           166:        struct          rln_mm_cmd mm_cmd;
        !           167: #define RLN_MM_SETMAGIC                        { 'A', 0, 16, 0 }
        !           168:        u_char          fairness_slot : 3;
        !           169:        u_char          deferral_slot : 5;
        !           170:        u_int8_t        regular_mac_retry;      /* default 0x07 */
        !           171:        u_int8_t        frag_mac_retry;         /* default 0x0a */
        !           172:        u_int8_t        regular_mac_qfsk;       /* default 0x02 */
        !           173:        u_int8_t        frag_mac_qfsk;          /* default 0x05 */
        !           174:        u_int8_t        xxx1;                   /* default 0xff */
        !           175:        u_int8_t        xxx2;                   /* default 0xff */
        !           176:        u_int8_t        xxx3;                   /* default 0xff */
        !           177:        u_int8_t        xxx4;                   /* zero */
        !           178: };
        !           179:
        !           180: /* Ack channel tuning. */
        !           181: #define RLN_MM_GOTMAGIC                        { 'a', 0, 16, 0 }
        !           182:
        !           183: /* Set roaming parameters - used when multiple masters available. */
        !           184: struct rln_mm_setroaming {
        !           185:        struct          rln_mm_cmd mm_cmd;
        !           186: #define RLN_MM_SETROAMING              { 'A', 0, 17, 0 }
        !           187:        u_int8_t        sync_alarm;
        !           188:        u_int8_t        retry_thresh;
        !           189:        u_int8_t        rssi_threshold;
        !           190:        u_int8_t        xxx1;                   /* default 0x5a */
        !           191:        u_int8_t        sync_rssi_threshold;
        !           192:        u_int8_t        xxx2;                   /* default 0xa5 */
        !           193:        u_int8_t        missed_sync;
        !           194: };
        !           195:
        !           196: /* Ack roaming parameter change. */
        !           197: #define RLN_MM_GOTROAMING              { 'a', 0, 17, 0 }
        !           198:
        !           199: #define RLN_MM_ROAMING                 { 'a', 0, 18, 0 }
        !           200: #define RLN_MM_ROAM                    { 'A', 0, 19, 0 }
        !           201:
        !           202: /* Hardware fault notification. (Usually the antenna.) */
        !           203: #define RLN_MM_FAULT                   { 'a', 0, 20, 0 }
        !           204:
        !           205: #define RLN_MM_EEPROM_PROTECT          { 'A', 0, 23, 0 }
        !           206: #define RLN_MM_EEPROM_PROTECTED                { 'a', 0, 23, 0 }
        !           207: #define RLN_MM_EEPROM_UNPROTECT                { 'A', 0, 24, 0 }
        !           208: #define RLN_MM_EEPROM_UNPROTECTED      { 'a', 0, 24, 0 }
        !           209:
        !           210: /* Receive hop statistics. */
        !           211: #define RLN_MM_HOP_STATISTICS          { 'a', 0, 35, 0 }
        !           212:
        !           213: /* Transmit a frame on the channel. */
        !           214: struct rln_mm_sendpacket {
        !           215:        struct          rln_mm_cmd mm_cmd;
        !           216: #define RLN_MM_SENDPACKET              { 'B', 0, 0, 0 }
        !           217:        u_int8_t        mode;
        !           218: #define RLN_MM_SENDPACKET_MODE_BIT7    0x80
        !           219: #define RLN_MM_SENDPACKET_MODE_ZFIRST  0x20
        !           220: #define RLN_MM_SENDPACKET_MODE_QFSK    0x03
        !           221:        u_int8_t        power;                  /* default 0x70 */
        !           222:        u_int8_t        length_lo;
        !           223:        u_int8_t        length_hi;
        !           224:        u_int8_t        xxx1;                   /* default 0 */
        !           225:        u_int8_t        xxx2;                   /* default 0 */
        !           226:        u_int8_t        sequence;               /* must increment */
        !           227:        u_int8_t        xxx3;                   /* default 0 */
        !           228: };
        !           229:
        !           230: /* Ack packet transmission. */
        !           231: #define RLN_MM_SENTPACKET              { 'b', 0, 0, 0 }
        !           232:
        !           233: /* Notification of frame received from channel. */
        !           234: struct rln_mm_recvpacket {
        !           235:        struct          rln_mm_cmd mm_cmd;
        !           236: #define RLN_MM_RECVPACKET              { 'b', 0, 1, 0 }
        !           237:        u_int8_t        xxx[8];
        !           238: };
        !           239:
        !           240: /* Disable hopping. (?) */
        !           241: struct rln_mm_disablehopping {
        !           242:        struct          rln_mm_cmd mm_cmd;
        !           243: #define RLN_MM_DISABLEHOPPING          { 'C', 0, 9, 0 }
        !           244:        u_int8_t        hopflag;
        !           245: #define RLN_MM_DISABLEHOPPING_HOPFLAG_DISABLE  0x52
        !           246: };
        !           247:

CVSweb