📄 fma.c
字号:
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 );
}
//*****************************************************************************
//*****************************************************************************
//**
//** Funkce pro linkvou vrstvu
//**
//*****************************************************************************
//*****************************************************************************
//** fce pro pripravu confirmation bloku pro aplikacni vrstvu
//*****************************************************************************
void build_conf( fdl_rb *rb, UBYTE L_status )
{
rb -> rb2_header.opcode = confirm;
rb -> rb2_header.response = L_status;
rb -> application_block.opcode = confirm;
rb -> application_block.l_status = L_status;
}
//*****************************************************************************
//** fce pro tvorbu SRD confirmation bloku
//*****************************************************************************
void build_conf_srd( fdl_rb *rb, PUCHAR user_data, UBYTE Datlng, UBYTE Response )
{
UBYTE i;
build_conf( rb, Response );
switch ( Response )
{
/*status odpovedi na SRD*/
case ds:
break;
case iv:
break;
case rs:
break;
case ue:
break;
case ls:
break;
case nr:
break;
case na:
break;
case rr:
break;
case dl:
{
rb -> rb2_header.priority = low;
} break;
case dh:
{
rb -> rb2_header.priority = high;
} break;
case rdl:
{
rb -> rb2_header.priority = low;
} break;
case rdh:
{
rb -> rb2_header.priority = high;
} break;
}
rb -> application_block.receive_l_sdu.length = Datlng;
rb -> rb2_header.fill_length_2 = Datlng;
rb -> rb2_header.offset_2 = NETTO_DATA_OFFSET;
for ( i = 0;
i < Datlng;
i++ ) /*predani prijatych dat ze SRD odpovedi*/
rb -> user_data_2[NETTO_DATA_OFFSET + i] = user_data[i];
rb -> user_data_2[0] = NETTO_DATA_OFFSET;
rb -> application_block.service.code = srd;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -