package io.hummer.prefetch.context; import io.hummer.prefetch.sim.LinkSpeed; import javax.xml.bind.annotation.XmlAttribute; import javax.xml.bind.annotation.XmlRootElement; /** * Represents network quality in a client's context. * @author Waldemar Hummer */ @XmlRootElement(name = "cellCvg") public class NetworkQuality { @XmlAttribute(name="g2") public boolean _2g_gsm = false; @XmlAttribute(name="g31") public boolean _3g_umts = false; @XmlAttribute(name="g32") public boolean _3g_hspa = false; @XmlAttribute(name="g4") public boolean _4g_lte = false; public NetworkQuality() { } public NetworkQuality(boolean allAvailable) { _2g_gsm = allAvailable; _3g_hspa = allAvailable; _3g_umts = allAvailable; _4g_lte = allAvailable; } public LinkSpeed getMaxSpeed() { LinkSpeed result = new LinkSpeed(); if(_4g_lte) { result.downSpeedMbitPerSec = 100; result.upSpeedMbitPerSec = 50; } else if(_3g_hspa) { result.downSpeedMbitPerSec = 14.4; result.upSpeedMbitPerSec = 5.76; } else if(_3g_umts) { result.downSpeedMbitPerSec = 0.384; result.upSpeedMbitPerSec = 0.384; } else if(_2g_gsm) { result.downSpeedMbitPerSec = 0.150; result.upSpeedMbitPerSec = 0.150; } return result; } // public boolean hasAnyCoverage() { // return _4g_lte || _3g_hspa || _3g_umts || _2g_gsm; // } public boolean hasSufficientCoverage() { return _4g_lte || _3g_hspa || _3g_umts; } @Override public String toString() { return "NetworkQuality [_2g_gsm=" + _2g_gsm + ", _3g_umts=" + _3g_umts + ", _3g_hspa=" + _3g_hspa + ", _4g_lte=" + _4g_lte + "]"; } }