root/dev/ic/rlncmd.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


    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 

/* [<][>][^][v][top][bottom][index][help] */