[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

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