⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fmaclien.c

📁 SPC3 SETUP PROGRAMS SP C3 SETUP PROGRAMS
💻 C
📖 第 1 页 / 共 3 页
字号:
/*  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 + -