CellularTimeBased.java 2.64 KB
Newer Older
Nils Richerzhagen's avatar
Nils Richerzhagen committed
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
/*
 * Copyright (c) 2005-2010 KOM – Multimedia Communications Lab
 *
 * This file is part of PeerfactSim.KOM.
 * 
 * PeerfactSim.KOM is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * any later version.
 * 
 * PeerfactSim.KOM is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 * 
 * You should have received a copy of the GNU General Public License
 * along with PeerfactSim.KOM.  If not, see <http://www.gnu.org/licenses/>.
 *
 */

package de.tud.kom.p2psim.impl.energy.configs;

import de.tud.kom.p2psim.api.common.SimHost;
import de.tud.kom.p2psim.api.energy.EnergyConfiguration;
import de.tud.kom.p2psim.api.linklayer.mac.PhyType;
26
import de.tud.kom.p2psim.impl.energy.components.SmartphoneCellularCommunicationEnergyComponent;
Nils Richerzhagen's avatar
Nils Richerzhagen committed
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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82

public class CellularTimeBased implements
		EnergyConfiguration<SmartphoneCellularCommunicationEnergyComponent> {

	private PhyType phy;

	private boolean error = false;

	private boolean warning = false;

	private final String help = "This is the Time-Based Configuration for the EnergyModel of a cellular connection."
			+ "It creates a component for the chosen PHY-Type and each time a message is being sent or received, energy is consumed for the corresponding amount of time, it took to send or receiver the message."
			+ "The default parameters for the calculation of the energy consumption are taken from Fabian Kaub's Diploma Thesis.";

	private String errorMessage = "";

	private String warningMessage = "";
	
	@Override
	public SmartphoneCellularCommunicationEnergyComponent getConfiguredEnergyComponent(
			SimHost host) {
		return new SmartphoneCellularCommunicationEnergyComponent(phy);
	}

	@Override
	public String getHelp() {
		if (error) {
			return errorMessage;
		}
		if (warning) {
			return warningMessage;
		}
		return help;
	}

	@Override
	public boolean isWellConfigured() {
		if (phy == null) {
			error = true;
			errorMessage += "\nYou did not specify a PHY-Type for the Time-based Energy Component for cellular communication. Please set the config-parameter \"phy\" to one of "
					+ PhyType.printTypes();
		}
		return !error;
	}
	
	public void setPhy(String phy) {
		try {
			this.phy = Enum.valueOf(PhyType.class, phy.toUpperCase());
		} catch (IllegalArgumentException e) {
			error = true;
			errorMessage += "\nYou did specify an invalid PHY-Type. Allowed types are "
					+ PhyType.printTypes();
		}
	}

}