Merge branch 'master' of https://github.uci.edu/rtrimana/smart_home_traffic
[pingpong.git] / Code / Projects / SmartPlugDetector / src / main / java / edu / uci / iotproject / maclayer / MacLayerFlowPattern.java
1 package edu.uci.iotproject.maclayer;
2
3 import java.util.Collections;
4 import java.util.List;
5
6 /**
7  * TODO create base class for FlowPattern and derive MacLayer, TCP/IP layer versions from that.
8  *
9  * @author Janus Varmarken
10  */
11 public class MacLayerFlowPattern {
12
13     private final List<Integer> mPacketLengthSequence;
14     private final String mMacPrefix;
15     private final String mPatternId;
16     private final byte[] mMacPreixBytes;
17
18     public MacLayerFlowPattern(String patternId, String macPrefix, List<Integer> packetLengthSequence) {
19         mMacPrefix = macPrefix;
20         mPatternId = patternId;
21         mPacketLengthSequence = packetLengthSequence;
22         // Conversion provided by https://stackoverflow.com/a/10839361/1214974
23         String[] addressParts = macPrefix.split(":");
24         mMacPreixBytes = new byte[addressParts.length];
25         for(int i = 0; i < mMacPreixBytes.length; i++) {
26             Integer hex  = Integer.parseInt(addressParts[i], 16);
27             mMacPreixBytes[i] = hex.byteValue();
28         }
29     }
30
31     public String getPatternId() {
32         return mPatternId;
33     }
34
35     public byte[] getMacPrefixRawBytes() {
36         return mMacPreixBytes;
37     }
38
39     public List<Integer> getPacketLengthSequence() {
40         return Collections.unmodifiableList(mPacketLengthSequence);
41     }
42
43     public int getLength() {
44         return mPacketLengthSequence.size();
45     }
46 }