📄 fmaclien.h
字号:
{
void * buffer_ptr;
UCHAR length;
};
struct application_block
{
UCHAR opcode; /* class of communication */
UCHAR subsystem; /* number of source-task (only necessary for MTK-user !!!!!) */
UWORD id; /* identification of FDL-USER */
struct service service; /* identification of service */
struct remote_address loc_add; /* only for network-connection !!! */
UCHAR ssap; /* source-service-access-point */
UCHAR dsap; /* destination-service-access-point */
struct remote_address rem_add; /* address of the remote-station */
enum service_class serv_class; /* priority of service */
struct link_service_data_unit receive_l_sdu; /* address and length of received netto-data, exception: */
UCHAR reserved1; /* (reserved for FDL !!!!!!!!!!) */
UCHAR reserved2; /* (reserved for FDL !!!!!!!!!!) */
struct link_service_data_unit send_l_sdu; /* address and length of send-netto-data, exception: */
/* 1. csrd : length means number of POLL-elements */
/* 2. await_indication : concatenation of application-blocks and */
/* withdraw_indication : number of application-blocks */
enum link_status l_status; /* link-status of service or update_state for srd-indication */
UCHAR reserved3[4]; /* for concatenated lists (reserved for FDL !!!!!!!!!!) */
};
struct rb2_header_type
{
UWORD reserved[2];
UCHAR length;
UWORD user;
UCHAR rb_type;
UCHAR priority;
UCHAR reserved_1;
UWORD reserved_2;
UCHAR subsystem;
UCHAR opcode;
UWORD response;
UWORD fill_length_1;
UCHAR reserved_3;
UWORD seg_length_1;
UWORD offset_1;
UWORD reserved_4;
UWORD fill_length_2;
UCHAR reserved_5;
UWORD seg_length_2;
UWORD offset_2;
UWORD reserved_6;
};
struct fdl_rb
{
struct rb2_header_type rb2_header;
struct application_block application_block;
UCHAR reserved[12];
UCHAR reference[2];
UCHAR user_data_1[260];
UCHAR user_data_2[260];
};
typedef struct fdl_rb flc_rb;
/* Moegliche Strukturen der Datenpuffer */
struct user_poll_element
{
UCHAR dsap; /* destination-service-access-point */
struct remote_address rem_add; /* address of the remote-station */
enum service_class serv_class; /* priority of send-telegram */
struct link_service_data_unit receive_l_sdu; /* request: length means buffer-length in byte */
/* confirm: length means length of received netto-data */
struct link_service_data_unit send_l_sdu; /* address and length of send-netto-data */
UCHAR reserved; /* reserved for FDL !!!!! */
enum link_status l_status; /* link-status of poll-element-service */
enum poll_element_entry entry; /* locks or unlocks a poll-element */
UCHAR reserved_2; /* reserved for FDL !!!!! */
};
struct ident
{
UCHAR reserved_header[8]; /* reserved for FDL !!!!! */
UCHAR ident[202];
short response_telegram_length; /* reserved for FDL !!!!! */
};
struct bus_parameter_block
{
UCHAR hsa; /* highest station-address */
/* range of values: 2 ... 126 */
UCHAR ts; /* FDL-address of this station */
/* range of values: 0 ... 126 */
station_type stat_type; /* active, passive */
baud_rate Baud_Rate; /* transmission rate */
enum redundancy medium_red; /* availability of redundant media */
UWORD retry_ctr; /* retry-number of requestor, if no reaction of responder */
/* range of values: 1 ... 8 */
UCHAR default_sap; /* Default SAP if no address-extension is used */
/* range of values: 2 ... 62 */
UCHAR network_connection_sap;/* number of sap for network-connection (only for network-connections) */
/* range of values: 2 ... 62 */
UWORD tsl; /* SLOT-time: */
/* range of values: 2 exp 0 ... (2 exp 16) - 1 BIT-times */
UWORD tqui; /* Transmitter-Fall-Time / Repeater-Switch-Time: */
/* range of values: 0 ... (2 exp 8) - 1 BIT-times */
UWORD tset; /* setup-time */
/* range of values: 0 ... (2 exp 8) - 1 BIT-times */
UWORD min_tsdr; /* smallest STATION-DELAY-time: */
/* range of values: 2 exp 0 ... (2 exp 16) - 1 BIT-times */
UWORD max_tsdr; /* largest STATION-DELAY-time: */
/* range of values: 2 exp 0 ... (2 exp 16) - 1 BIT-times */
ULONG ttr; /* TARGET-ROTATION-time: */
/* range of values: 2 exp 0 ... (2 exp 24) - 1 BIT-times */
UCHAR g; /* GAP-UPDATE-factor: in multiples of ttr */
/* range_of_values: 1 ... 100 */
enum flc_boolean in_ring_desired; /* request entrance into the token-ring */
enum physical_layer physical_layer; /* RS485, modem */
struct ident ident; /* vendor-name, controller_type, version of hardware and software */
} bus_parameter_block;
struct fdl_sap
{
UWORD user_id; /* identification for user */
UCHAR max_l_sdu_length; /* maximal length of netto_data for this sap */
UCHAR access_sap; /* reserved destination_sap */
UCHAR access_station; /* reserved destination_address */
UCHAR access_segment; /* reserved destination_segment */
UCHAR sda; /* ... .sda = "ROLE"; sda unused by service "rsap_activate" */
UCHAR sdn; /* look sda; sdn unused by service "rsap_activate" */
UCHAR srd; /* look sda; */
UCHAR csrd; /* if you want to activate csrd for this SAP, type: ... .csrd = "ROLE"; */
/* (only INITIATOR or SERVICE_NOT_ACTIVATED possible) */
/* csrd unused by service "rsap_activate" */
void * rup_l_sdu_ptr_low; /* reserved for "sap_deactivate"; USER gets rup-buffer returned */
void * rup_l_sdu_ptr_high; /* reserved for "sap_deactivate"; USER gets rup-buffer returned */
UCHAR reserved[22]; /* reserved for FDL !!!!! */
};
struct fdl_l_stat
{
UCHAR access_station; /* reserved destination_address */
UCHAR reserved;
UCHAR sda; /* ... .sda = "ROLE"; sda unused by service "rsap_activate" */
UCHAR sdn; /* look sda; sdn unused by service "rsap_activate" */
UCHAR srd; /* look sda; */
UCHAR csrd; /* if you want to activate csrd for this SAP, type: ... .csrd = "ROLE"; */
};
/**********************************************************************/
/**************** fdl_event (returned by fma_indication) ************/
/**************** await_indication (for DSAP = EVENT_SAP)************/
/**********************************************************************/
struct event_ctr
{
UWORD threshold; /* if counter achieves threshold, a fma_indication is initiated */
UWORD counter;
};
struct event_indication
{
struct event_ctr time_out;
struct event_ctr not_syn;
struct event_ctr uart_error;
struct event_ctr out_of_ring;
struct event_ctr sdn_not_indicated;
struct event_ctr duplicate_address;
struct event_ctr hardware_error;
struct event_ctr mac_error;
UCHAR priority;
} ;
/**********************************************************************/
/**************** fdl_read_statistic_ctr ***************************/
/**********************************************************************/
struct statistic_ctr_list
{
/* error-counter */
UWORD invalid_start_delimiter_ctr;
UWORD invalid_fcb_fcv_ctr;
UWORD invalid_token_ctr;
UWORD collision_ctr;
UWORD wrong_fcs_or_ed_ctr;
UWORD frame_error_ctr;
UWORD char_error_ctr;
UWORD retry_ctr;
/* reference-counter */
ULONG start_delimiter_ctr;
ULONG stop_receive_ctr;
ULONG send_confirmed_ctr;
ULONG send_sdn_ctr;
};
//******************************************************************************
//******************************************************************************
// Konec standartnich FDL deklaraci
//******************************************************************************
//******************************************************************************
/*
extern UBYTE TS;
extern statistic_ctr_list *ctr_list;
extern fdl_rb *recv_rb; // pointer to received request block
*/
extern HANDLE DriverHandle;
/*extern*/ fdl_rb * rqb; // universal pointer to request block
//*****************************************************************************
//**
//** Funkce pro aplikacni vrstvu
//**
//*****************************************************************************
void build_head( fdl_rb *rb ) ; // Vyplni zahlavi Request Blocku
void Read_Statistic_Ctr( BYTE pr );
void LSAP_status_read( BYTE Stat, BYTE NM, BYTE pr );
void SAP_deactivate( BYTE NM, BYTE pr );
void RSAP_activate( BYTE sap_nr,
BYTE ACCSAP,
BYTE ACCSTAT,
BYTE priority );
void SAP_activate( BYTE sap_nr,
BYTE ACCSAP,
BYTE ACCSTAT,
BYTE SDA_R,
BYTE SDN_R,
BYTE SRD_R,
BYTE priority );
void Read_FDL_value( BYTE pr );
void Set_FDL_value( BYTE pr );
//data se ocekavaji ve forme "xx xx xx..." - pak se ovsem da poslat maximalne 260/3 bytu ?!
void Send_SRD( BYTE adr,
BYTE ssap,
BYTE dsap,
unsigned char data[260],
BYTE pr );
void Send_SDN( BYTE adr,
BYTE ssap,
BYTE dsap,
unsigned char data[260],
BYTE pr );
void Send_SDA( BYTE adr,
BYTE dsap,
BYTE ssap,
unsigned char data[260],
BYTE pr );
void Send_Replay_Update_Multiple( BYTE s_sap,
unsigned char data[260],
BYTE pr );
void Send_Replay_Update_Single( BYTE s_sap,
unsigned char data[260],
BYTE pr );
int Send_fdl_await_indication( BYTE s, BYTE p );
int FDL_life_list_local( BYTE pr );
int FDL_life_list_remote( BYTE pr );
int FDL_ident( BYTE address, BYTE pr );
#endif /* _FMACLIENT_H_ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -