summaryrefslogtreecommitdiff
path: root/ns3-simulations/parseEnergy.awk
blob: ec383b82c9bd9c0380805762f847d8f5e7b36afa (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#!/bin/awk -f

BEGIN {
    durationECOFEN=0
}

# For ECOFEN energy model
/Node [0-9]+ Conso/ {
    if (!($4 in energyECOFEN)){
        energyECOFEN[$4]=$6
        countECOFEN[$4]=1
    }
    else {
        energyECOFEN[$4]=$6+energyECOFEN[$4]
        countECOFEN[$4]++
    }
    durationECOFEN=$2
}

# For WIFI ns-3 energy model
/Node [0-9]+ consumes/ {
    gsub("J","",$4) # Remove trailling Joule symbol
    if (!($2 in energy)){
        energyWIFI[$2]=$4
    }
    else {
        energyWIFI[$2]=$4+energyWIFI[$2]
    }
}



END {
    # Extract ECOFEN energy
    for(key in energyECOFEN){
        if (countECOFEN[key]>0){ # Otherwise: 0 division
            overallEnergy[key]=energyECOFEN[key]/countECOFEN[key]*durationECOFEN
        }
        else { 
            overallEnergy[key]=0
        }
    }

    # Extract WIFI energy
    for(key in energyWIFI){
        if(key in overallEnergy){ # Combine WIFI+ECOFEN
            overallEnergy[key]+=energyWIFI[key] # Add wifi to ECOFEN
        }
        else {
            overallEnergy[key]=energyWIFI[key] # Only add WIFI since there is no ECOFEN value
        }
    }

    # CSV output
    print("node,energy")
    for(key in overallEnergy){
        print(key "," overallEnergy[key])
    }
}