Rev

Rev 1822 | Details | Compare with Previous | Last modification | View Log | SVN | Bug Tracker

Rev Author Line No. Line
1133 berge 1
/**
2
 * @author      ETSI / STF462 / Alexandre Berge
3
 * @version     $URL: file:///D:/RepositoriesNew/ITS/trunk/javasrc/codec/org/etsi/ttcn/codec/its/geonetworking/HeaderTST.java $
4
 *              $Id: HeaderTST.java 2655 2017-01-26 10:46:08Z filatov $
5
 */
6
package org.etsi.ttcn.codec.its.geonetworking;
7
 
8
import org.etsi.ttcn.codec.CodecBuffer;
9
import org.etsi.ttcn.codec.MainCodec;
10
import org.etsi.ttcn.codec.generic.Union;
11
import org.etsi.ttcn.tci.Type;
12
 
13
public class HeaderTST extends Union {
14
 
15
    public HeaderTST(MainCodec mainCodec) {
16
        super(mainCodec);
17
    }
18
 
19
    @Override
20
    protected void preDecode(CodecBuffer buf, Type decodingHypothesis) {
2655 filatov 21
//        TERFactory.getInstance().logDebug(">>> HeaderTST.preDecode: " + decodingHypothesis);
1133 berge 22
 
23
        int hdrType = 0x00FF & buf.getBits(0, 4)[0];
24
        String variant = "";
25
        String extHeader = "";
26
 
27
        switch(hdrType) {
28
        case 0:
29
            variant = "anyHdr";
30
            extHeader = "anyHeader";
31
            break;
32
        case 1:
33
            variant = "beaconHdr";
34
            extHeader = "beaconHeader";
35
            break;
36
        case 2:
37
            variant = "geoUnicastHdr";
38
            extHeader = "geoUnicastHeader";
39
            break;
40
        case 3:
41
            variant = "geoAnycastHdr";
42
            extHeader = "geoAnycastHeader";
43
            break;
44
        case 4:
45
            variant = "geoBroadcastHdr";
46
            extHeader = "geoBroadcastHeader";
47
            break;
48
        case 5:
49
            variant = "tsbHdr";
1169 berge 50
            if((0x00FF & buf.getBits(4, 4)[0]) == 1) {
1133 berge 51
                extHeader = "tsbHeader";
52
            }
53
            else {
54
                extHeader = "shbHeader";
55
            }
56
            break;
57
        case 6:
58
            variant = "lsHdr";
59
            if((0x00FF & buf.getBits(4, 4)[0]) == 0) {
60
                extHeader = "lsRequestHeader";
61
            }
62
            else {
63
                extHeader = "lsReplyHeader";
64
            }
65
            break;
66
        case 7:
67
            variant = "saHdr";
68
            break;
69
        default:
70
            variant = "reserved";
71
        }
72
 
73
        mainCodec.setHint(decodingHypothesis.getName(), variant);
74
        if(extHeader.equals("")) {
75
            mainCodec.setPresenceHint("ExtendedHeader", false);
76
        }
77
        else {
78
            mainCodec.setHint("ExtendedHeader", extHeader);
79
        }
80
    }
81
}