tte_dcl.h

Go to the documentation of this file.
00001 /* Copyright (C) 2006-2007 TTTech. All rights reserved
00002  * Schoenbrunnerstrasse 7, A--1040 Wien, Austria. office@tttech.com
00003  *
00004  * Name
00005  *   tte_dcl_types.h
00006  *
00007  * Purpose
00008  *
00009  * Revisions
00010  *   07-Oct-2008  (JWO) Creation
00011  *   22-Dec-2008  (AAD) Final implementation
00012  *   ««revision-date»»···
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  * D E F I N I T I O N S
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 /* high two bits are reserved for frame type! */
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 /* Download header frame filed offset */
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 /* Field offset in the global configuration block */
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 /* Field offset in the message configuration block */
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 /* Field offset in the schedule configuration block */
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 /* Download block frame lengths */
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 /* opcode definitions */
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  * T Y P E   D E F I N I T I O N S
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  * S T R U C T U R E   D E F I N I T I O N S
00110  ************************************************/
00111 
00112 //#pragma pack(push)
00113 //#pragma pack(1)
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 //#pragma pack(pop)
00124 
00125 //#pragma pack(push)
00126 //#pragma pack(1)
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  *   F U N C T I O N     D E F I N I T I O N S
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 /* TTE_DCL_H_ */
Generated on Tue Nov 29 14:09:18 2011 for TTEthernet Model for INET Framework by  doxygen 1.6.3