📄 fmaclien.c
字号:
/* D e s c r i p t i o n : */
/* */
/* build request_block for await_indication for this SAP */
/**********************************************************************/
void build_rqb_await_indication( fdl_rb *rb, UBYTE remsap, BYTE Priority )
{
build_head( rb );
// fill header params
rb -> rb2_header.seg_length_1 = 260;
rb -> rb2_header.offset_1 = 80;
rb -> rb2_header.fill_length_1 = 0;
rb -> rb2_header.priority = Priority;
rb -> rb2_header.seg_length_2 = 0;
rb -> rb2_header.fill_length_2 = 0;
rb -> rb2_header.offset_2 = 0;
// application block params
rb -> application_block.service.code = await_indication;
rb -> application_block.dsap = remsap;
rb -> application_block.rem_add.segment = NO_SEGMENT;
rb -> application_block.serv_class = Priority;
rb -> application_block.receive_l_sdu.length = 255; // maximum length
rb -> application_block.send_l_sdu.buffer_ptr = 0 ;
rb -> application_block.send_l_sdu.length = 1;
}
/**************************************************************************/
/* fdl_withdraw_indication */
/* fetch back all await_indication ressources */
/**************************************************************************/
/*int Send_fdl_withdraw_indication(UBYTE s,BYTE p)
{
int ret;
build_rqb_await_indication(rqb,s,p);
rqb->application_block.service.code = withdraw_indication;
ret = fdl_write(rqb);
return(ret);
}*/
/**********************************************************************/
/* D e s c r i p t i o n : */
/* */
/* build request_block for reply_update_single */
/**********************************************************************/
void build_rqb_reply_update_single( fdl_rb *rb,
UBYTE source_sap,
BYTE priority,
unsigned char user_data[260] )
{
int j;
build_head( rb );
j = ( strlen( user_data ) + 1 ) / 3;
rb -> rb2_header.fill_length_1 = j + NETTO_DATA_OFFSET;
rb -> rb2_header.seg_length_1 = 260;
rb -> rb2_header.offset_1 = 80;
rb -> rb2_header.priority = priority;
rb -> rb2_header.fill_length_2 = 0;
rb -> rb2_header.seg_length_2 = 0;
rb -> rb2_header.offset_2 = 0;
rb -> application_block.serv_class = priority;
rb -> application_block.service.code = reply_update_single;
rb -> application_block.ssap = source_sap; // local SAP
rb -> application_block.send_l_sdu.length = j;
rb -> user_data_1[0] = NETTO_DATA_OFFSET;
// initialize Data
HexStringToByteString( user_data, j, rb->user_data_1 + NETTO_DATA_OFFSET );
}
/**********************************************************************/
/* D e s c r i p t i o n : */
/* */
/* build request_block for FDL_statistic_counter */
/**********************************************************************/
void build_rqb_statistic_count( fdl_rb *rb, BYTE priority )
{
build_head( rb );
rb -> rb2_header.fill_length_1 = 0;
rb -> rb2_header.seg_length_1 = sizeof( statistic_ctr_list );
rb -> rb2_header.offset_1 = 80;
rb -> rb2_header.priority = priority;
rb -> rb2_header.fill_length_2 = 0;
rb -> rb2_header.seg_length_2 = 0;
rb -> application_block.serv_class = priority;
rb -> application_block.service.code = fdl_read_statistic_ctr;
}
/**********************************************************************/
/* D e s c r i p t i o n : */
/* */
/* build request_block for reply_update_multiple */
/**********************************************************************/
void build_rqb_reply_update_multiple( fdl_rb *rb,
UBYTE source_sap,
BYTE priority,
unsigned char user_data[260] )
{
int j;
build_head( rb );
j = ( strlen( user_data ) + 1 ) / 3;
rb -> rb2_header.fill_length_1 = j + NETTO_DATA_OFFSET;
rb -> rb2_header.seg_length_1 = 260;
rb -> rb2_header.offset_1 = 80;
rb -> rb2_header.priority = priority;
rb -> rb2_header.fill_length_2 = 0;
rb -> rb2_header.seg_length_2 = 0;
rb -> rb2_header.offset_2 = 0;
rb -> application_block.service.code = reply_update_multiple;
rb -> application_block.ssap = source_sap; // local SAP
rb -> application_block.serv_class = priority;
rb -> application_block.send_l_sdu.length = j;
rb -> user_data_1[0] = NETTO_DATA_OFFSET;
// initialize Data
HexStringToByteString( user_data, j, rb->user_data_1 + NETTO_DATA_OFFSET );
}
/**************************************************************************/
/**************************************************************************/
/* */
/* EXPORTED FUNCTIONS */
/* */
/**************************************************************************/
/**************************************************************************/
/**************************************************************************/
/* */
/* int get_life_list_local(HWND hWnd) */
/* */
/* */
/**************************************************************************/
int FDL_life_list_local( BYTE pr )
{
int ret;
build_head( rqb );
rqb -> rb2_header.priority = pr; // rqb - univerzalni pointer na Request Block
rqb -> rb2_header.fill_length_1 = 0;
rqb -> rb2_header.seg_length_1 = 127;
rqb -> rb2_header.offset_1 = 80;
// application block params
rqb -> application_block.service.code = fdl_life_list_create_local;
ret = fdl_write( rqb );
return( ret );
}
//*************************************************************************
int FDL_life_list_remote( BYTE pr )
{
int ret;
build_head( rqb );
rqb -> rb2_header.priority = pr;
rqb -> rb2_header.fill_length_1 = 0;
rqb -> rb2_header.seg_length_1 = 127;
rqb -> rb2_header.offset_1 = 80;
// application block params
rqb -> application_block.service.code = fdl_life_list_create_remote;
ret = fdl_write( rqb );
return( ret );
}
/**************************************************************************/
/* int fdl_ident(HWND hWnd,BYTE address) */
/**************************************************************************/
int FDL_ident( BYTE address, BYTE pr )
{
int ret;
build_head( rqb );
rqb -> rb2_header.fill_length_1 = 0;
rqb -> rb2_header.seg_length_1 = 260;
rqb-> rb2_header.offset_1 = 80;
rqb-> rb2_header.priority = pr;
rqb -> rb2_header.fill_length_2 = 0;
rqb -> rb2_header.seg_length_2 = 0;
rqb -> rb2_header.offset_2 = 0;
rqb -> application_block.service.code = fdl_ident;
rqb -> application_block.receive_l_sdu.length = 255;
rqb -> application_block.rem_add.station = address;
ret = fdl_write( rqb );
return( ret );
}
//*****************************************************************************
int Send_fdl_await_indication( UBYTE s, BYTE p )
{
int ret;
if ( s == EVENT_SAP )
build_rqb_event_sap( rqb, p ); // EVENT_SAP=64
else
build_rqb_await_indication( rqb, s, p );
ret = fdl_write( rqb );
return( ret );
}
//*****************************************************************************
void Send_Replay_Update_Single( UBYTE s_sap, unsigned char data[260], BYTE pr )
{
build_rqb_reply_update_single( rqb, s_sap, pr, data );
fdl_write( rqb );
}
//*****************************************************************************
void Send_Replay_Update_Multiple( UBYTE s_sap, unsigned char data[260], BYTE pr )
{
build_rqb_reply_update_multiple( rqb, s_sap, pr, data );
fdl_write( rqb );
}
//*****************************************************************************
void Send_SDN( BYTE adr,
UBYTE ssap,
UBYTE dsap,
unsigned char data[260],
BYTE pr )
{
build_rqb_sdn( rqb, adr, dsap, ssap, pr, data );
fdl_write(/*Handle,*/ rqb );
}
//*****************************************************************************
void Send_SRD( BYTE adr,
UBYTE ssap,
UBYTE dsap,
unsigned char data[260],
BYTE pr )
{
build_rqb_srd( rqb, adr, dsap, ssap, pr, data );
fdl_write( rqb );
}
//*****************************************************************************
void Set_FDL_value( BYTE pr )
{
FDL_set_val( rqb, pr );
fdl_write( rqb );
}
//*****************************************************************************
void Read_FDL_value( BYTE pr )
{
FDL_read_val( rqb, pr );
fdl_write( rqb );
}
//*****************************************************************************
void SAP_activate( UBYTE sap_nr,
UBYTE ACCSAP,
UBYTE ACCSTAT,
UBYTE SDA_R,
UBYTE SDN_R,
UBYTE SRD_R,
BYTE priority )
{
build_rqb_sap_activate( rqb,
sap_nr,
ACCSAP,
ACCSTAT,
SDA_R,
SDN_R,
SRD_R,
priority );
fdl_write( rqb );
}
//*****************************************************************************
void RSAP_activate( UBYTE sap_nr, UBYTE ACCSAP, BYTE ACCSTAT, BYTE priority )
{
build_rqb_rsap_activate( rqb, sap_nr, ACCSAP, ACCSTAT, priority );
fdl_write( rqb );
}
//*****************************************************************************
void SAP_deactivate( UBYTE NM, BYTE pr )
{
build_rqb_sap_deactivate( rqb, NM, pr );
fdl_write( rqb );
}
//*****************************************************************************
void LSAP_status_read( UBYTE Stat, UBYTE NM, BYTE pr )
{
build_rqb_lsap_status( rqb, Stat, NM, pr );
fdl_write( rqb );
}
//*****************************************************************************
void Read_Statistic_Ctr( BYTE pr )
{
build_rqb_statistic_count( rqb, pr );
fdl_write( rqb );
}
//*****************************************************************************
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -