📄 fmaclien.c
字号:
temp_ptr->duplicate_address.threshold = duplicate_address_threshold_default;
temp_ptr->hardware_error.threshold = hardware_error_threshold_default;
temp_ptr->mac_error.threshold = mac_error_threshold_default;
temp_ptr->priority = pr;
}
/**********************************************************************/
/* D e s c r i p t i o n : */
/* */
/* Prevede retezec bytu ve forme "xx xx xx" kde xx je sestnactkove */
/* vyjadreni kazdeho bytu na posloupnost bytu (Out) */
/* */
/**********************************************************************/
void HexStringToByteString( unsigned char *HexString, int length, unsigned char *Out )
{
// lenght je pocet bytu vyjadrenych v HexStringu nikoliv pocet znaku v HexStringu
unsigned char hi,lo,ch;
int i;
if ( length > 0 )
{
for ( i = 0; i < length; i++ )
{
ch = HexString[i * 3];
if ( ch >= '0' && ch <= '9' )
hi = ch - '0';
if ( ch >= 'a' && ch <= 'f' )
hi = ch - 'a' + 10;
if ( ch >= 'A' && ch <= 'F' )
hi = ch - 'A' + 10;
ch = HexString[i * 3 + 1];
if ( ch >= '0' && ch <= '9' )
lo = ch - '0';
if ( ch >= 'a' && ch <= 'f' )
lo = ch - 'a' + 10;
if ( ch >= 'A' && ch <= 'F' )
lo = ch - 'A' + 10;
Out[i] = ( hi << 4 ) + lo;
}
Out[length] = 0 ;
}
else
{
Out[0]=0;
}
}
/**********************************************************************/
/* D e s c r i p t i o n : */
/* */
/* build request_block for send_srd */
/* */
/**********************************************************************/
void build_rqb_srd( fdl_rb *rb,
BYTE remadd,
UBYTE remsap,
UBYTE source_sap,
BYTE pr,
unsigned char *user_data,
int length )
{
build_head( rb );
rb -> rb2_header.fill_length_1 = length + NETTO_DATA_OFFSET;
rb -> rb2_header.seg_length_1 = 260;
rb -> rb2_header.offset_1 = 80;
rb -> rb2_header.priority = pr;
rb -> rb2_header.fill_length_2 = 0;
rb -> rb2_header.seg_length_2 = 260;
rb -> rb2_header.offset_2 = 80 + 260;
rb -> application_block.service.code = srd;
rb -> application_block.dsap = remsap;
rb -> application_block.ssap = source_sap; // local SAP
rb -> application_block.rem_add.station = remadd;
rb -> application_block.rem_add.segment = NO_SEGMENT;
rb -> application_block.serv_class = pr;
rb -> application_block.receive_l_sdu.length = 255;
rb -> application_block.send_l_sdu.length = length;
rb -> user_data_1[0] = NETTO_DATA_OFFSET;
// initialize Data
memcpy( rb->user_data_1 + NETTO_DATA_OFFSET, user_data, length );
}
/**********************************************************************/
/* D e s c r i p t i o n : */
/* */
/* build request_block for send_sda */
/**********************************************************************/
void build_rqb_sda( fdl_rb *rb,
BYTE remadd,
UBYTE remsap,
UBYTE ssap,
BYTE pr,
unsigned char *user_data,
int length )
{
build_head( rb );
rb -> rb2_header.fill_length_1 = length + NETTO_DATA_OFFSET;
rb -> rb2_header.seg_length_1 = 260;
rb -> rb2_header.offset_1 = 80;
rb -> rb2_header.priority = pr;
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 = sda;
rb -> application_block.dsap = remsap;
rb -> application_block.ssap = ssap; // local SAP
rb -> application_block.rem_add.station = remadd;
rb -> application_block.rem_add.segment = NO_SEGMENT;
rb -> application_block.serv_class = pr;
rb -> application_block.send_l_sdu.length = length;
rb -> user_data_1[0] = NETTO_DATA_OFFSET;
// initialize Data
memcpy( rb->user_data_1 + NETTO_DATA_OFFSET, user_data, length );
}
/**********************************************************************/
/* D e s c r i p t i o n : */
/* */
/* build request_block for send_sdn */
/**********************************************************************/
void build_rqb_sdn( fdl_rb *rb,
BYTE remadd,
UBYTE remsap,
UBYTE source_sap,
BYTE pr,
unsigned char *user_data,
int length )
{
build_head( rb );
rb -> rb2_header.fill_length_1 = length + NETTO_DATA_OFFSET;
rb -> rb2_header.seg_length_1 = 260;
rb -> rb2_header.offset_1 = 80;
rb -> rb2_header.priority = pr;
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 = sdn;
rb-> application_block.loc_add.segment = NO_SEGMENT;
rb -> application_block.dsap = remsap;
rb -> application_block.ssap = source_sap;
rb -> application_block.rem_add.station = remadd;
rb -> application_block.rem_add.segment = NO_SEGMENT;
rb -> application_block.serv_class = pr;
rb -> application_block.receive_l_sdu.length = 0;
rb -> application_block.send_l_sdu.length = length;
rb -> user_data_1[0] = NETTO_DATA_OFFSET;
// initialize Data
memcpy( rb->user_data_1 + NETTO_DATA_OFFSET, user_data, length );
}
/**********************************************************************/
/* 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,
int length )
{
build_head( rb );
rb -> rb2_header.fill_length_1 = length + 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 = length;
rb -> user_data_1[0] = NETTO_DATA_OFFSET;
// initialize Data
memcpy( rb->user_data_1 + NETTO_DATA_OFFSET, user_data, length );
}
/**********************************************************************/
/* 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,
int length )
{
build_head( rb );
rb -> rb2_header.fill_length_1 = length + 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 = length;
rb -> user_data_1[0] = NETTO_DATA_OFFSET;
// initialize Data
memcpy( rb->user_data_1 + NETTO_DATA_OFFSET, user_data, length );
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -