ARCNET_DCB

typedef struct s_ARCNET_DCB {
    unsigned char   b_node_id;
    unsigned char   z_et_1;
    unsigned char   z_et_2;
    unsigned char   z_et_3;
    unsigned char   z_ckp_1;
    unsigned char   z_ckp_2;
    unsigned char   z_ckp_3;
    unsigned char   z_backplane;
    unsigned char   z_p1mode;
    unsigned char   z_four_naks;
    unsigned char   b_reserved1[2];      // Do NOT use or modify!!
    unsigned char   b_init_behaviour;
    unsigned char   b_reserved2[3];      // Do NOT use or modify!!
} ARCNET_DCB;

b_node_id:
identifies the own node. The node-id of a node must be unique throughout the whole net.

z_ckp1, z_ckp2, z_ckp3:
Busspeed is set according to these items (i.e. when using a 20020-compatible controller, 2.5 Mbps means all items are set to 0). These items are used only for 20020 and compatibles. In a 90C66-driver, these items are ignored.

z_et1, z_et2, z_et3:
set the extended timeout. The extended timeout should be set equal in all nodes of the net. Usually z_et1 and z_et2 are set in a 2.5Mbps-Net to 1. z_et3 should in most cases be 0.

z_fournaks:
if set to 1, the controller tries a maximum of 4 times to send a packet to another node, that responds with NAK (=“no free buffer to receive packet“). Otherwise the controller tries a maximum of 128 times, before the EXCNAK-condition (only 20020 and compatibles) is set.
This behaviour is only valid for the 20020 and compatibles.
In case of a 90C66/90C165 and compatibles, the driver terminates retransmitting because of NAKs from the receiving station by a worst case timeout (appr. 2.4 sec. if z_fournaks  is set, otherwise appr. 2 min !)

b_init_behaviour:
is responsible for the controllers behaviour in case of if no token is seen or no activity is detected. If b_init_behaviour is set to eARC_INIT_FORCED, the controller connects to the network, regardless if a token is detected or not. If the controller does not receive a token, it will repeatedly generate reconfiguration bursts after reaching the reconfig-timeout, until another node joins the network.
Note, that in this case the controller can destroy a running net, if the baudrate of the own node does not match the baudrate of the net!.
However, in some cases it can be neccessary, to do the init with eARC_INIT_FORCED, i.e. if the node is the first node on the net.
If b_init_behaviour is set to eARC_INIT_BREAK, the controller will not join the net, if no token is seen or if no activity is detected. The controllers state will be set to the resetstate.

z_p1mode, z_backplane:
should be set to 0, when using coax interface (if using coax with backplane, the card may be damaged!). Otherwise they should be set accordingly to the used interface.

The items in the struct ARCNET_DCB correspond with the bits in the controllers registers (except b_init_behaviour). For more information on the above mentioned items, refer to the ARCNET-controllers datasheets, that are available from SMSC (www.smsc.com). You can also order data sheets from SoHard. It is strongly recommended, that you are familiar with ARCNET and the used ARCNET-controller.

Programmers Guide
Contents