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

📄 bac_mstp.h

📁 modbus的rtu源代码
💻 H
📖 第 1 页 / 共 3 页
字号:
#define ERROR_CODE_OBJECT_DELETION_NOT_PERMITTED         23
#define ERROR_CODE_OBJECT_IDENTIFIER_ALREADY_EXISTS      24
#define ERROR_CODE_OPERATIONALPROBLEM                    25
#define ERROR_CODE_PASSWORD_FAILURE                      26
#define ERROR_CODE_PROPERTY_IS_NOT_A_LIST                22
#define ERROR_CODE_READACCESSDENIED                      27
#define ERROR_CODE_SECURITY_NOT_SUPPORTED                28
#define ERROR_CODE_SERVICEREQUESTDENIED                  29
#define ERROR_CODE_TIMEOUT                               30
#define ERROR_CODE_UNKNOWNOBJECT                         31
#define ERROR_CODE_UNKNOWNPROPERTY                       32
#define ERROR_CODE_UNKNOWNVTCLASS                        34
#define ERROR_CODE_UNKNOWNVTSESSION                      35
#define ERROR_CODE_UNSUPPORTEDOBJECTTYPE                 36
#define ERROR_CODE_VALUE_OUT_OF_RANGE                    37
#define ERROR_CODE_VTSESSIONALREADYCLOSED                38
#define ERROR_CODE_VTSESSIONTERMINATIONFAILURE           39
#define ERROR_CODE_WRITEACCESSDENIED                     40


#define REJECT_REASON_OTHER                               0
#define REJECT_REASON_BUFFER_OVERFLOW                     1
#define REJECT_REASON_INCONSISTENT_PARAM                  2
#define REJECT_REASON_INVALID_PARAM_DATA_TYPE             3
#define REJECT_REASON_INVALID_TAG                         4
#define REJECT_REASON_MISSING_REQUIRED_PARAM              5
#define REJECT_REASON_PARAMETER_OUT_OF_RANGE              6
#define REJECT_REASON_TOO_MAY_ARGUMENTS                   7
#define REJECT_REASON_UNDEFINED_ENUMERATION               8
#define REJECT_REASON_UNRECOGNIZED_SERVICE                9

#define ABORT_REASON_OTHER                                0
#define ABORT_REASON_BUFFER_OVERFLOW                      1
#define ABORT_REASON_INVALID_APDU_IN_THIS_STATE           2
#define ABORT_REASON_PREEMPTEDBY_HIGHER_PRIORITY_TASK     3
#define ABORT_REASON_SEGMENTATION_NOT_SUPPORTED           4

#define  MX_TBN_RETRIES                                   3

   /* address control flags   */

#define  AC_NET_PRES          0x0001
#define  AC_ADR_PRES          0x0001   /* used to be 0x0002. Changed from Bacnet P135 _BDWET */

   /* PDU control   */

#define  PC_APDU             0x0001
#define  PC_NPDU             0x0002
#define  PC_EXP_REPLY        0x0004

#define  SH_CONTROL_SOURCE    3
#define  SH_CONTROL_DEST      5

#define TRANE_VENDOR_ID                        2
#define TRANE_PRIVATE_SERVICE_NUMBER         130


#define MSGTYPE_EVENT_MESSAGE                 69
#define MSGTYPE_EVENT_ACKNOWLEDGE             65


   // Digital Inputs
#define  BAC_EVENT_NORMAL_TO_ALARM            0
#define  BAC_EVENT_ALARM_TO_NORMAL            3
   // Analog Inputs
#define  BAC_EVENT_NORMAL_TO_LOW_ALARM        6
#define  BAC_EVENT_NORMAL_TO_HIGH_ALARM       7
#define  BAC_EVENT_LOW_ALARM_TO_NORMAL        8
#define  BAC_EVENT_HIGH_ALARM_TO_NORMAL       9


typedef struct
{
   UINT16   control ;
   UINT16   net ;
   BYTE     addr[MX_MAC_LENGTH] ;
   UINT16   addr_len ;
   BYTE     mac[MX_MAC_LENGTH] ;
} ADR_TYP ;

typedef struct
{
   UINT16   control ;       /* PDU control flags   */
   UINT16   nl_function ;
   UINT16   dll_function ;

   UINT16   length ;        /* pdu buffer length */

   ADR_TYP  source ;
   ADR_TYP  dest ;

   BYTE     dll_buffer[8] ;
   BYTE     buffer[MX_BUFFER] ;

} PDU_TYP ;


typedef struct
{
  UINT16       handle ;
} PORT_TYP ;


typedef struct
{
   UINT   init_flag ;

   // For BAC_MSTP
   //UINT16 msg_rx_src ;
   //UINT16 msg_rx_dst ;
   UINT   mstp_rx_frame_state ;
   UINT   master_node_state ;
   UINT   next_master_node_state ;
   UINT   slave_node_state ;

   UINT   silence_timer ;
   UINT   reply_timer ;
   UINT   index ;
   UINT   data_available ;
   UINT16 data_crc ;
   UINT16 receive_invalid_frame ;
   UINT16 receive_valid_frame ;
   UINT16 receive_error ;
   UINT16 event_count ;
   UINT16 retry_count ;
   UINT16 frame_count ;
   UINT16 token_count ;
   UINT16 sole_master ;
   BYTE   NS ;
   BYTE   PS ;
   BYTE   TS ;

   UINT   mstp_tx_frame   ;
   UINT16 mstp_tx_address ;

   BYTE   header_crc ;
   BYTE   frame_type ;
   BYTE   dest_address ;
   BYTE   src_address ;
   UINT16 data_length ;

   UINT32 startup_timer ;

   BYTE   app_msg_ready ;

   PDU_TYP *pdu_ready ;

} BACNET_DRV_CONN_TYP ;


typedef struct
{
  PORT_TYP    *port_ptr ;
  BACNET_DRV_CONN_TYP *drv_conn_ptr ;
  BYTE in_buffer[MX_BUFFER] ;
  UINT16      ux_iptr ;
  BYTE        apdu_instance_id ;

  UINT16      source_mac ;
  UINT16      dest_mac ;

  UINT16      source_net ;
  BYTE        source_addr[MX_MAC_LENGTH] ;
  UINT16      ux_source_addr ;
  UINT16      dest_net ;
  BYTE        dest_addr[MX_MAC_LENGTH] ;
  UINT16      ux_dest_addr ;
  UINT16      control ;

  UINT16      max_master ;
  UINT16      max_info_frames ;

  UINT        kernel_action ;

} CONN_TYP ;




typedef struct
{
   UINT16      system_station_address ;
} BRIDGE_TYP ;



typedef struct
{
   UINT16 value ;
   UINT16 index ;
   BYTE   index_used ;
}  BAC_PROP_TYP ;

   //typedef struct
   //{
   //   UINT16 type ;
   //   UINT32 instance;
   //   UINT16 ux_properties ;     // nr of properties stored in property list
   //   BAC_PROP_TYP property_list [ MX_PROPERTIES_LIST ] ;
   //}  BAC_OBJ_LIST_TYP ;


typedef struct
{

   //FLOAT  relinguest_default ;
   UINT16 write_priority ;

   //BAC_PRI_ARRAY_TYP *priority_array ;
   //BAC_ALARM_TYP     alarm ;                          // For drv_bd it is better to keep this one pre-allocated

   //CHAR   notification_node_name[MX_DEVICE_NAME] ;    // Where alarm notifications gets send to
   //CHAR   da_pri_array_buffer_name[MX_BUFFER_NAME] ;  // Pri array buffer to allow user access
   //CHAR   da_pri_in_use_buffer_name[MX_BUFFER_NAME] ; // Relinquish Array to allow user access
   //UINT16 da_pri_array_offset;
   //UINT16 da_pri_in_use_offset;

   //DAH_TYP dah_pri_array ;
   //DAH_TYP dah_pri_in_use ;

   UINT16 block_service_choice ;

   UINT32 service ;
   UINT32 array_index ;

   //BAC_OBJ_LIST_TYP object_list[MX_OBJECTS] ;
   //UINT16  ux_objects ;

   BYTE *data_for_write ;
   UINT16 data_for_write_length ;
   //UINT32 active_text ;
   //UINT32 inactive_text ;

   //UINT32 md_offset ;  // Used by Who-Has/I-Have to respond properly when mapdesc index specified
   UINT16 max_apdu_size ;  // Used by Who-Has/I-Have to respond properly when mapdesc index specified

   BYTE function ;

   UINT32 object_instance ;
   UINT16 object_type ;

   BAC_PROP_TYP property ;

} BAC_DRV_BD_TYP ;





UINT16 FrameType                      ( BACNET_DRV_CONN_TYP *drv_conn, CONN_TYP *conn ) ;
VOID mstp_transmit_state_machine      ( BACNET_DRV_CONN_TYP *drv_conn, CONN_TYP *conn ) ;
VOID mstp_receive_frame_state_machine ( BRIDGE_TYP *bcb, BACNET_DRV_CONN_TYP *drv_conn, CONN_TYP *conn ) ;
VOID mstp_master_node_state_machine   ( BRIDGE_TYP *bcb, BACNET_DRV_CONN_TYP *drv_conn, CONN_TYP *conn ) ;
VOID mstp_slave_node_state_machine    ( BRIDGE_TYP *bcb, BACNET_DRV_CONN_TYP *drv_conn, CONN_TYP *conn ) ;
VOID mstp_driver                      ( VOID ) ;
VOID build_and_submit_I_AM            ( BRIDGE_TYP *bcb, CONN_TYP *conn ) ;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -