tte_dcl.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015 #ifndef TTE_DCL_H_
00016 #define TTE_DCL_H_
00017
00018 #include "tte_eth_driver.h"
00019 #include "tte_environment.h"
00020 #include "tte_target.h"
00021 #include "tte_common.h"
00022 #include "tte_config.h"
00023
00024
00025
00026
00027
00028 #define TTE_DCL_MAX_FRAMES_NUMBER (3)
00029
00030 #define TTE_DCL_MAX_PAYLOAD_SIZE ((uint16_t)1494)
00031 #define TTE_DCL_HEADER_SIZE ((uint16_t)6)
00032 #define TTE_DCL_MIN_PAYLOAD_SIZE ((uint8_t)50)
00033
00034 #define TTE_DCL_ETHER_TYPE ((uint16_t)0x891D)
00035
00036
00037 #define TTE_DCL_OPCODE_DCL_CMD ((uint8_t)0x00)
00038 #define TTE_DCL_OPCODE_OPMASK ((uint8_t)0x03)
00039
00040 #define TTE_DCL_OPCODE_REQCFG ((uint8_t)0x04)
00041 #define TTE_DCL_OPCODE_SNDCFG ((uint8_t)0x08)
00042 #define TTE_DCL_OPCODE_REQ_ACK ((uint8_t)0x10)
00043 #define TTE_DCL_OPCODE_PACK ((uint8_t)0x20)
00044 #define TTE_DCL_OPCODE_NACK ((uint8_t)0x40)
00045 #define TTE_DCL_OPCODE_ACKMASK ((uint8_t)0x60)
00046
00047
00048 #define TTE_DCL_OPCODE_OFFSET ((uint8_t)0)
00049 #define TTE_DCL_PAYLOAD_OFFSET ((uint8_t)1)
00050 #define TTE_DCL_PADDED_OFFSET ((uint8_t)3)
00051 #define TTE_DCL_FRAMES_OFFSET ((uint8_t)4)
00052 #define TTE_DCL_CURR_FRAME_OFFSET ((uint8_t)5)
00053
00054
00055
00056 #define TTE_DCL_NODEID_OFFSET ((uint8_t)0)
00057 #define TTE_DCL_MACADR_OFFSET ((uint8_t)2)
00058 #define TTE_DCL_CLUSTERID_OFFSET ((uint8_t)8)
00059 #define TTE_DCL_SYNC_OFFSET ((uint8_t)12)
00060 #define TTE_DCL_CRANKSHAFT_OFFSET ((uint8_t)13)
00061 #define TTE_DCL_PERIOD_OFFSET ((uint8_t)14)
00062 #define TTE_DCL_CS_BLKOUT_OFFSET ((uint8_t)18)
00063 #define TTE_DCL_TTE_TX_OFFSET ((uint8_t)20)
00064 #define TTE_DCL_TTE_RX_OFFSET ((uint8_t)22)
00065 #define TTE_DCL_SCHED_ENTR_OFFSET ((uint8_t)24)
00066 #define TTE_DCL_NR_NODES_OFFSET ((uint8_t)26)
00067 #define TTE_DCL_RESERVED_OFFSET ((uint8_t)28)
00068 #define TTE_DCL_SCHED_BLOCK_OFFSET ((uint8_t)40)
00069
00070
00071 #define TTE_DCL_MSG_ID_OFFSET ((uint8_t)0)
00072 #define TTE_DCL_MSG_SIZE_OFFSET ((uint8_t)2)
00073 #define TTE_DCL_MSG_ETHTYPE_OFFSET ((uint8_t)4)
00074 #define TTE_DCL_MSG_BUFTYPE_OFFSET ((uint8_t)6)
00075 #define TTE_DCL_MSG_BUFLEN_OFFSET ((uint8_t)7)
00076
00077
00078 #define TTE_DCL_SCHED_TIME_OFFSET ((uint8_t)0)
00079 #define TTE_DCL_SCHED_TYPE_OFFSET ((uint8_t)4)
00080 #define TTE_DCL_SCHED_PARAM_OFFSET ((uint8_t)5)
00081 #define TTE_DCL_SCHED_RES_OFFSET ((uint8_t)7)
00082
00083
00084
00085 #define TTE_DCL_GEN_BLOCK_LEN ((uint8_t)40)
00086 #define TTE_DCL_SCHED_BLOCK_LEN ((uint8_t)8)
00087 #define TTE_DCL_MSG_BLOCK_LEN ((uint8_t)8)
00088 #define TTE_DCL_MAC_BLOCK_LEN ((uint8_t)8)
00089
00090 #define TTE_DCL_FALSE ((uint8_t)0)
00091 #define TTE_DCL_TRUE ((uint8_t)1)
00092
00093
00094 #define TTE_DCL_REQUEST_DCL (TTE_DCL_OPCODE_REQCFG)
00095 #define TTE_DCL_SEND_POS_ACK (TTE_DCL_OPCODE_PACK)
00096 #define TTE_DCL_SEND_NEG_ACK (TTE_DCL_OPCODE_NACK)
00097
00098
00099
00100
00101
00102
00103 typedef uint16_t tte_dcl_id_t;
00104 typedef uint8_t tte_dcl_data_buf_t;
00105 typedef int32_t tte_dcl_copy_data_buf_t;
00106 typedef uint16_t tte_dcl_data_len_t;
00107
00108
00109
00110
00111
00112
00113
00114 typedef struct
00115 {
00116 uint8_t opcode;
00117 uint16_t payload_len;
00118 uint8_t padded_len;
00119 uint8_t total_frames;
00120 uint8_t dcl_frame_nr;
00121 uint8_t payload[TTE_DCL_MIN_PAYLOAD_SIZE];
00122 } tte_dcl_msg_t;
00123
00124
00125
00126
00127 typedef struct
00128 {
00129 eth_mac_addr_t dest_mac;
00130 eth_mac_addr_t src_mac;
00131 uint16_t eth_ype;
00132 tte_dcl_msg_t dcl_msg;
00133 } tte_dcl_frame_t;
00134
00135
00136
00137
00138
00155 extern int32_t tte_dcl_ack_funct( eth_mac_addr_t *ack_dst_mac
00156 , uint16_t ack_src_node_id
00157 , uint8_t ack_rsp
00158 );
00159
00178 extern int32_t tte_dcl_check_configure( uint8_t * dcl_data
00179 , tte_conf_t * curr_config
00180 , uint16_t size
00181 );
00182
00200 extern int32_t tte_dcl_prepare_data ( uint16_t node_id
00201 , uint8_t * dcl_data
00202 , uint16_t size
00203 , tte_conf_t * dcl_config
00204 );
00205
00218 extern int32_t tte_dcl_process_frame(tte_dcl_frame_t * dcl_frame);
00219
00235 extern int32_t tte_dcl_req_cfg(uint16_t src_node_id);
00236
00260 extern int32_t tte_dcl_send_cfg ( eth_mac_addr_t * dest_mac
00261 , uint16_t src_node_id
00262 , uint8_t * dcl_data
00263 , uint16_t dcl_data_len
00264 , uint8_t req_ack
00265 );
00266
00284 extern int32_t tte_dcl_set_config( uint8_t *dcl_data
00285 , tte_conf_t *curr_config
00286 , uint16_t size
00287 );
00288
00289 #endif