lct_hdr.h

Go to the documentation of this file.
00001 
00034 #ifndef _LCT_HDR_H_
00035 #define _LCT_HDR_H_
00036 
00037 #include "defines.h"
00038 
00039 #ifdef __cplusplus
00040 extern "C" {
00041 #endif
00042 
00048 /*
00049  *  0                   1                   2                   3
00050  *  0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
00051  * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
00052  * |   V   | C | r |S| O |H|T|R|A|B|   HDR_LEN     |       CP      |
00053  * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
00054  * |    Congestion Control Information (CCI, length = 32 bits)     |
00055  * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
00056  *
00057  */
00058 
00059 typedef struct def_lct_hdr {
00060 #ifdef _BIT_FIELDS_LTOH
00061   unsigned short flag_b:1;              
00062   unsigned short flag_a:1;              
00063   unsigned short flag_r:1;              
00064   unsigned short flag_t:1;              
00065   unsigned short flag_h:1;              
00066   unsigned short flag_o:2;              
00067   unsigned short flag_s:1;              
00068   unsigned short reserved:2;    
00069   unsigned short flag_c:2;              
00070   unsigned short version:4;             
00071   unsigned char hdr_len;                
00072   unsigned char codepoint;              
00073 #else
00074   unsigned short version:4;             
00075   unsigned short flag_c:2;              
00076   unsigned short reserved:2;    
00077   unsigned short flag_s:1;              
00078   unsigned short flag_o:2;              
00079   unsigned short flag_h:1;              
00080   unsigned short flag_t:1;              
00081   unsigned short flag_r:1;              
00082   unsigned short flag_a:1;              
00083   unsigned short flag_b:1;              
00084   unsigned char hdr_len;                
00085   unsigned char codepoint;              
00086 #endif
00087   unsigned int cci;                             
00088 } def_lct_hdr_t;
00089 
00101 /*
00102  *  0                   1                   2                   3 
00103  *  0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
00104  * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
00105  * |   HET = 192   |   V   |           FDT Instance ID             |
00106  * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
00107  */
00108 
00109 int add_fdt_lct_he(def_lct_hdr_t *def_lct_hdr, int hdrlen, unsigned int fdt_instance_id);
00110 
00122 /*
00123  *  0                   1                   2                   3
00124  *  0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
00125  * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
00126  * |   HET = 193   |     CENC      |          Reserved             |
00127  * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
00128  */
00129 
00130 int add_cenc_lct_he(def_lct_hdr_t *def_lct_hdr, int hdrlen, unsigned char content_enc_algo);
00131 
00146 /*
00147  *  0                   1                   2                   3
00148  *  0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
00149  * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
00150  * |   HET = 64    |     HEL       |                               |
00151  * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+                               +
00152  * |                       Transfer Length                         |
00153  * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
00154  * |   Reserved/FEC Instance ID    |     Encoding Symbol Length    |
00155  * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
00156  * |                  Maximum Source Block Length                  |
00157  * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
00158  * 
00159  */
00160 
00161 int add_fti_0_2_128_130_lct_he(def_lct_hdr_t *def_lct_hdr, int hdrlen, unsigned long long transferlen,
00162                                                                 unsigned short fec_inst_id, unsigned short eslen, unsigned int max_sblen);
00163  
00180 /*
00181  *  0                   1                   2                   3
00182  *  0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
00183  * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
00184  * |   HET = 64    |     HEL       |                               |
00185  * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+                               +
00186  * |                       Transfer Length                         |
00187  * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
00188  * |       m       |       G       |     Encoding Symbol Length    |
00189  * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
00190  * |  Maximum Source Block Length  | Max. Num. of Encoding Symbols |
00191  * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
00192  * 
00193  */
00194 
00195 int add_fti_3_lct_he(def_lct_hdr_t *def_lct_hdr, int hdrlen, unsigned long long transferlen,
00196                                         unsigned char m, unsigned char G, unsigned short eslen, unsigned short max_sblen,
00197                                         unsigned short mxnbofes);
00198 
00199 /*
00200  * This function adds FTI (FEC Encoding ID 129) LCT extension header to FLUTE's header.
00201  *
00202  * @param def_lct_hdr pointer to the default LCT header
00203  * @param hdrlen current length of FLUTE header
00204  * @param transferlen length of the transport object
00205  * @param fec_inst_id FEC instance id (or reserved/zeroed with ID 0)
00206  * @param eslen encoding symbol length
00207  * @param max_sblen maximum source block length
00208  * @param mxnbofes maximum number of encoding symbols per block
00209  *
00210  * @return number of bytes added to the FLUTE's header
00211  *
00212  */
00213 
00214 /*
00215  *  0                   1                   2                   3
00216  *  0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
00217  * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
00218  * |   HET = 64    |     HEL       |                               |
00219  * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+                               +
00220  * |                       Transfer Length                         |
00221  * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
00222  * |    FEC Instance ID            |     Encoding Symbol Length    |
00223  * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
00224  * |  Maximum Source Block Length  | Max. Num. of Encoding Symbols |
00225  * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
00226  * 
00227  */
00228 
00229 int add_fti_129_lct_he(def_lct_hdr_t *def_lct_hdr, int hdrlen, unsigned long long transferlen,
00230                                                 unsigned short fec_inst_id, unsigned short eslen, unsigned short max_sblen,
00231                                                 unsigned short mxnbofes);
00232 
00241 /*
00242  *  0                   1                   2                   3
00243  *  0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
00244  * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
00245  * |      HET      |      HEL      |                               |
00246  * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+                               +
00247  * .                                                               . 
00248  * .           Header Extension Content (HEC)                      . 
00249  * .                                                               .
00250  * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
00251  *
00252  */
00253 
00254 int add_nop_lct_he(void);
00255 
00256 /*
00257  * This function adds AUTH LCT extension header to FLUTE's header.
00258  * Not yet implemented.
00259  *
00260  * @return number of bytes added to the FLUTE's header
00261  *
00262  */
00263 
00264 /*
00265  *  0                   1                   2                   3
00266  *  0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
00267  * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
00268  * |    HET = 0    |      HEL      |                               |
00269  * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+                               +
00270  * .                                                               . 
00271  * .           Header Extension Content (HEC)                      . 
00272  * .                                                               .
00273  * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
00274  *
00275  */
00276 
00277 int add_auth_lct_he(void);
00278 
00287 /*
00288  *  0                   1                   2                   3
00289  *  0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
00290  * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
00291  * |    HET = 2    |      HEL      |         Use (bit field)       |
00292  * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
00293  * |                       first time value                        |
00294  * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
00295  * ...            (other time values (optional)                  ...
00296  * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
00297  *
00298  *                 Use (bit field)
00299  *
00300  *                 2                                       3
00301  *   6   7   8   9   0   1   2   3   4   5   6   7   8   9   0   1
00302  * +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
00303  * |SCT|SCT|ERT|SLC|   reserved    |          PI-specific          |
00304  * |Hi |Low|   |   |    by LCT     |              use              |
00305  * +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
00306  *
00307  */
00308 
00309 int add_time_lct_he(void);
00310 
00311 #ifdef __cplusplus
00312 }; //extern "C"
00313 #endif
00314 
00315 #endif
00316 

Generated on Fri Mar 9 20:08:51 2007 for MAD-FCL by  doxygen 1.5.0