home *** CD-ROM | disk | FTP | other *** search
- /*
- * cqdatalink.h
- *
- * iRMX-NET/iNA 960/iTP4 Datalink Layer CQ_COMM_RB Request Block Interface
- */
-
- #ifndef _cqdatalink_
- #define _cqdatalink_
-
- #ifndef _cqcommon_
- #include "cqcommon.h"
- #endif
-
- /*
- * Datalink Layer Opcodes
- */
-
- /* EDL Commands */
-
- #define CONNECT (unsigned char)0x82
- #define DISCONNECT (unsigned char)0x83
- #define TRANSMIT (unsigned char)0x84
- #define POST_RPD (unsigned char)0x85
- #define CONFIGURE (unsigned char)0x88
- #define IA_SETUP (unsigned char)0x89
- #define MC_ADD (unsigned char)0x87
- #define MC_REMOVE (unsigned char)0x8A
- #define ENTER_RING (unsigned char)0x8B
- #define EXIT_RING (unsigned char)0x8C
-
- /* RAWEDL Commands */
-
- #define RAW_POST_RECEIVE (unsigned char)0x7F
- #define RAW_TRANSMIT (unsigned char)0x7E
- #define FLUSH (unsigned char)0x81
- #define READ_CLOCK (unsigned char)0x80
-
- /*
- * Datalink Layer Response Codes
- */
-
- #ifndef OK_RESPONSE
- #define OK_RESPONSE (unsigned short)0x01
- #endif
- #define OK_EOP_RESPONSE (unsigned short)0x03
- #define E_ERROR (unsigned short)0x00
- #define E_CONFIG_COUNT (unsigned short)0x02
- #define E_INSUFF_RCV_BUF (unsigned short)0x04
- #define E_TX_SIZE_EXCEEDED (unsigned short)0x06
- #define E_OPCODE (unsigned short)0x08
- #define E_LSAP_NOT_EXIST (unsigned short)0x0A
- #define E_SUBSYSTEM (unsigned short)0x0C
- #define E_ADDR_COUNT (unsigned short)0x0E
- #define E_NOT_OK (unsigned short)0x10
- #define E_MC_NOT_EXIST (unsigned short)0x12
- #define E_BUFFER_COUNT (unsigned short)0x14
- #define E_NO_RESOURCES (unsigned short)0x16
- #define E_ZERO_LSAP (unsigned short)0x18
-
- /*
- * Datalink Layer RB Structures.
- */
-
- #pragma noalign (connect_rb)
- typedef struct connect_rb {
- RB_COMMON header;
- unsigned char lsap_sel;
- unsigned char reserved;
- unsigned char port;
- } CONNECT_RB;
-
- #pragma noalign (disconnect_rb)
- typedef struct disconnect_rb {
- RB_COMMON header;
- unsigned char lsap_sel;
- unsigned char reserved;
- } DISCONNECT_RB;
-
- #pragma noalign (transmit_rb)
- typedef struct transmit_rb {
- RB_COMMON header;
- unsigned short reserved;
- unsigned short buf_count;
- unsigned short byte_count[4];
- unsigned long buf_loc[4];
- unsigned long dest_addr_ptr;
- } TRANSMIT_RB;
-
- #pragma noalign (first_transmit_buffer)
- typedef struct first_transmit_buffer {
- unsigned char destination_lsap_selector;
- unsigned char source_lsap_selector;
- unsigned char iso_cmd;
- unsigned char data[1];
- } FIRST_TRANSMIT_BUFFER;
-
- #pragma noalign (next_transmit_buffer)
- typedef struct next_transmit_buffer {
- unsigned char data[1];
- } NEXT_TRANSMIT_BUFFER;
-
- #pragma noalign (post_rpd_rb)
- typedef struct post_rpd_rb {
- RB_COMMON header;
- unsigned char lsap_selector;
- unsigned char reserved;
- unsigned short buf_count;
- unsigned short return_count;
- unsigned short byte_count[4];
- unsigned long buf_loc[4];
- } POST_RPD_RB;
-
- #pragma noalign (first_receive_buffer)
- typedef struct first_receive_buffer {
- unsigned char destination_addr[6];
- unsigned char source_addr[6];
- unsigned short information_len;
- unsigned char destination_lsap_selector;
- unsigned char source_lsap_selector;
- unsigned char iso_cmd;
- unsigned char data[1];
- } FIRST_RECEIVE_BUFFER;
-
- #pragma noalign (next_receive_buffer)
- typedef struct next_receive_buffer {
- unsigned char data[1];
- } NEXT_RECEIVE_BUFFER;
-
- #pragma noalign (configure_rb)
- typedef struct configure_rb {
- RB_COMMON header;
- unsigned short reserved;
- unsigned short count;
- unsigned char configure[12];
- } CONFIGURE_RB;
-
- #pragma noalign (ia_setup_rb)
- typedef struct ia_setup_rb {
- RB_COMMON header;
- unsigned short reserved;
- unsigned short count;
- unsigned char address[6];
- } IA_SETUP_RB;
-
- #pragma noalign (mc_add_rb)
- typedef struct mc_add_rb {
- RB_COMMON header;
- unsigned short reserved;
- unsigned short count;
- unsigned char mc_address[6];
- } MC_ADD_RB;
-
- #pragma noalign (mc_remove_rb)
- typedef struct mc_remove_rb {
- RB_COMMON header;
- unsigned short reserved;
- unsigned short count;
- unsigned char mc_address[6];
- } MC_REMOVE_RB;
-
- #pragma noalign (enter_ring_rb)
- typedef struct enter_ring_rb {
- RB_COMMON header;
- unsigned short reserved;
- } ENTER_RING_RB;
-
- #pragma noalign (exit_ring_rb)
- typedef struct exit_ring_rb {
- RB_COMMON header;
- unsigned short reserved;
- } EXIT_RING_RB;
-
- #pragma noalign (raw_post_recieve_rb)
- typedef struct raw_post_receive_rb {
- RB_COMMON header;
- unsigned char lsap_selector;
- unsigned char reserved;
- unsigned short num_blks;
- unsigned short filled_length;
- unsigned short buffer_length;
- unsigned short max_copy_len;
- unsigned short max_frames;
- unsigned short actual_frames;
- unsigned long buffer_ptr;
- } RAW_POST_RECEIVE_RB;
-
- #pragma noalign (frame_header)
- typedef struct frame_header {
- unsigned short record_length;
- unsigned long time_stamp;
- unsigned short lost_count;
- unsigned char dest_address[6];
- unsigned char src_address[6];
- unsigned short len_or_type;
- unsigned char frame_data[1];
- } FRAME_HEADER;
-
- #pragma noalign (raw_transmit_rb)
- typedef struct raw_transmit_rb {
- RB_COMMON header;
- unsigned short reserved;
- unsigned short len_or_type;
- unsigned char src_addr[6];
- unsigned short buf_cnt;
- unsigned long buffer_ptr;
- unsigned long dst_addr_ptr;
- } RAW_TRANSMIT_RB;
-
- #pragma noalign (flush_rb)
- typedef struct flush_rb {
- RB_COMMON header;
- } FLUSH_RB;
-
- #pragma noalign (read_clock_rb)
- typedef struct read_clock_rb {
- RB_COMMON header;
- unsigned long timer_val;
- } READ_CLOCK_RB;
-
- #endif
-