📄 tc12mes.h
字号:
#ifndef __TC12MES_H
#define __TC12MES_H
//
// TITLE:
//
// DESCRIPTION:
// definination of the protocol structure of TC12
// refer to TC12 Instation PC/HOST Interface Specfication
//
// FILENAME:
// tc12mes.h
//
// AUTHOR(S):
// Andrew Dai(mailto:andrew.x.dai@gmail.com )
//
// CREATION DATE:
// date from: 2007-5-8
//
// MODIFICATION HISTORY:
//
//
#include "icu.h"
typedef struct
{
short message_counter;
unsigned char packet_counter:6;
unsigned char first_packet:1;
unsigned char last_packet:1;
unsigned char reserver:8;
unsigned short bytes;
} TC12_packet_header_type;
typedef short TC12_message_type;
typedef struct
{
TC12_message_type message_type; /* TC12_announcement */
short host_number;
} TC12_announcement_type;
typedef struct
{
TC12_message_type message_type; /* TC12_acknowledgement */
short instation_number;
unsigned char major_version;
unsigned char minor_version;
char mains_input_failed; /* ??? i donnot know why the item occupy 2 bytes space */
short year; /* #pragma pack(1) to ensure beginning at odd offset */
char month;
char day;
char hour;
char minute;
char second;
char hundredths;
} TC12_acknowledgement_message_type;
typedef struct
{
TC12_message_type message_type; /* TC12_initialisation */
short configured_ports;
short configured_OTUs;
short TC8_outstation_groups;
short TC8_digital_outputs;
short TC8_digital_output_offset;
unsigned char TC8_type;
unsigned char additional_propagation_delay;
} TC12_configuration_message_type;
typedef union
{
struct
{
unsigned char protocol :3;
unsigned char speed :2;
unsigned char full_duplex:1;
unsigned char up_down_load:1;
} TC12;
} TC12_port_details_type;
typedef union
{
struct
{
unsigned short port_number :6;
unsigned short OTU_on_port :4;
unsigned short control_bytes:2;
unsigned short reply_bytes :4;
} TC12;
} TC12_OTU_details_type;
typedef struct
{
TC12_message_type message_type; /* TC12_error_message */
short IRN_type;
short IRN;
short error_type;
} TC12_error_message_type;
typedef enum
{
TC12_configuration_values_invalid=1,
TC12_already_a_high_priority_cpu,
TC12_TC8_OSNS_and_DIGO_overlap,
TC12_DIGO_overlaps_other_cpus,
TC12_OTU_address_missing,
TC12_multiple_OTU_address,
TC12_port_capacity_exceeded,
TC12_invalid_address,
TC12_invalid_protocol,
TC12_invalid_port_number,
TC12_too_many_reply_bytes,
TC12_too_many_control_bytes,
TC12_IMD_faulty_or_not_installed,
TC12_up_down_load_transfer_failed,
TC12_invalid_transfer_mode,
TC12_invalid_length,
TC12_transfer_aborted,
TC12_retries_exceeded,
TC12_message_corrupt,
TC12_cannot_save_message,
TC12_not_synchronised,
TC12_not_enouth_time,
TC12_linN_out_of_range,
TC12_message_timeout,
TC12_OTU_not_configured,
TC12_reply_too_long,
TC12_message_too_long
} TC12_error_types;
typedef struct
{
TC12_message_type message_type; /* TC12_checked_message */
short fatal_error;
} TC12_check_message_type;
typedef struct
{
TC12_message_type message_type; /* TC12_control_data */
char SIP_output;
char SIP_flash;
char time_changed;
short year;
char month;
char day;
char hour;
char minute;
char second;
char hundredths;
} TC12_control_message_type;
typedef struct
{
unsigned char message_transfer :1;
unsigned char address_error :1;
unsigned char CRC_error :1;
unsigned char no_reply :1;
unsigned char reply_too_short :1;
unsigned char overrun_error :1;
unsigned char parity_error :1;
unsigned char framing_error :1;
unsigned char error_number :6;
} TC12_reply_status;
typedef enum
{
TC12_OK=0,
TC12_invalid_configuration,
TC12_no_control_message_received,
TC12_IMD_failed,
TC12_output_procesing_overrun
} TC12_error_numbers;
typedef struct
{
TC12_message_type message_type; /* TC12_reply_data */
short control_message_counter;
char SIP_input;
char mains_input_failed;
short year;
char month;
char day;
char hour;
char minute;
char second;
char hundredths;
} TC12_reply_message_type;
#define TC12_UP_DOWN_REQUEST_COMMON_BIT \
TC12_message_type message_type; \
char port_number; \
char OTU_on_port; \
char transfer_mode; \
short request_length;
typedef struct
{
TC12_UP_DOWN_REQUEST_COMMON_BIT
} TC12_up_down_load_request_type;
typedef struct
{
TC12_UP_DOWN_REQUEST_COMMON_BIT
short max_reply_length;
} TC12_up_down_load_request_type2;
typedef struct
{
TC12_message_type message_type;
char port_number;
char OTU_on_port;
short reply_length;
} TC12_up_down_load_reply_type;
typedef struct
{
TC12_message_type message_type;
char port_number;
char OTU_on_port;
short error_type;
} TC12_up_down_load_error_type;
typedef enum
{
TC12_announcement=0,
TC12_acknowledgement,
TC12_configuration,
TC12_checked_data,
TC12_control_data,
TC12_reply_data,
TC12_error_message,
TC12_up_down_load_request,
TC12_up_down_load_reply,
TC12_up_down_load_error,
TC12_up_down_load_request2
} TC12_message_types;
typedef enum
{
TC12_up_dn_load_continuous=0,
TC12_up_dn_load_split
} TC12_up_dn_load_transfer_modes;
#endif /* __TC12MES_H */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -