PureEdgeSim -energy包-EnergyModelComputingNode文件

EnergyModelComputingNode

当CPU跑满时的最大能量消耗

	protected double maxActiveConsumption; // Consumed energy when the cpu is operating at 100% in Watt

空闲时能量消耗(最低消耗)

	protected double idleConsumption; // Consumed energy when idle (in Watt)

CPU已经消耗的能量

	protected double cpuEnergyConsumption = 0;

电池容量

	protected double batteryCapacity;

初始化电池

	protected double initialBatteryLevel = 1;

连接类型(WIFI,蜂窝)

	protected String connectivity;

是否是电池供电

	protected boolean isBatteryPowered = false;
	public static final int TRANSMISSION = 0; // used to update edge devices batteries
	public static final int RECEPTION = 1;

初始化NULL,避免空指针

	/**
	 * An attribute that implements the Null Object Design Pattern to avoid
	 * {@link NullPointerException} when using the NULL object instead of
	 * attributing null to EnergyModelComputingNode variables.
	 */
	public static final EnergyModelComputingNode NULL = EnergyModelComputingNodeNull.getInstance();

网络能量消耗

	protected double networkEnergyConsumption;

传输每比特的能量消耗

	protected double transmissionEnergyPerBits;

接受每比特信号的能量消耗

	protected double receptionEnergyPerBits;

初始化能量模型

	public EnergyModelComputingNode(double maxActiveConsumption, double idleConsumption) {
		this.setMaxActiveConsumption(maxActiveConsumption);
		this.setIdleConsumption(idleConsumption);
	}

更新已经消耗的能量

	public void updateStaticEnergyConsumption() {
		cpuEnergyConsumption += getIdleConsumption() / 3600 * SimulationParameters.updateInterval;
	}

获取CPU消耗的能量

	public double getCpuEnergyConsumption() {
		return cpuEnergyConsumption;
	}

得到CPU能量消耗和网络传输消耗

	public double getTotalEnergyConsumption() {
		return cpuEnergyConsumption + networkEnergyConsumption;
	}

得到满负载能量消耗

	public double getMaxActiveConsumption() {
		return maxActiveConsumption;
	}

设置满负载能量消耗

	public void setMaxActiveConsumption(double maxActiveConsumption) {
		this.maxActiveConsumption = maxActiveConsumption;
	}

得到空闲能量消耗

	public double getIdleConsumption() {
		return idleConsumption;
	}

设置空闲能量消耗

	public void setIdleConsumption(double idleConsumption) {
		this.idleConsumption = idleConsumption;
	}

得到电池容量

	public double getBatteryCapacity() {
		return batteryCapacity;
	}

设置电池容量

	public void setBatteryCapacity(double batteryCapacity) {
		this.batteryCapacity = batteryCapacity;
	}

得到剩余电量(不是电池供电返回-1,没有电返回0)

	public double getBatteryLevelWattHour() {
		if (!isBatteryPowered())
			return -1;
		if (getBatteryCapacity() * this.initialBatteryLevel < getTotalEnergyConsumption())
			return 0;
		return (getBatteryCapacity() * this.initialBatteryLevel) - getTotalEnergyConsumption();
	}

得到电池容量百分比

	public double getBatteryLevelPercentage() {
		return getBatteryLevelWattHour() * 100 / getBatteryCapacity();
	}

是否是电池供电

	public boolean isBatteryPowered() {
		return isBatteryPowered;
	}

设置是否由电池供电

	public void setBattery(boolean battery) {
		this.isBatteryPowered = battery;
	}

设置初始化余电百分比

	public void setIntialBatteryPercentage(double batteryLevel) {
			this.initialBatteryLevel = batteryLevel / 100.0;
	}

得到连通性类型

	public String getConnectivityType() {
		return connectivity;
	}

设置连接类型(WIFI,蜂窝)

	public void setConnectivityType(String connectivity) {
		this.connectivity = connectivity;

		if ("cellular".equals(connectivity)) {
			transmissionEnergyPerBits = SimulationParameters.cellularDeviceTransmissionWattHourPerBit;
			receptionEnergyPerBits = SimulationParameters.cellularDeviceReceptionWattHourPerBit;
		} else if ("wifi".equals(connectivity)) {
			transmissionEnergyPerBits = SimulationParameters.wifiDeviceTransmissionWattHourPerBit;
			receptionEnergyPerBits = SimulationParameters.wifiDeviceReceptionWattHourPerBit;
		} else {
			transmissionEnergyPerBits = SimulationParameters.ethernetWattHourPerBit / 2;
			receptionEnergyPerBits = SimulationParameters.ethernetWattHourPerBit / 2;
		}
	}

更新网络能量消耗

	public void updatewirelessEnergyConsumption(double sizeInBits, int flag) {
		if (flag == RECEPTION)
			networkEnergyConsumption += sizeInBits * transmissionEnergyPerBits;
		else
			networkEnergyConsumption += sizeInBits * receptionEnergyPerBits;
	}

更新CPU能量消耗

	public void updateDynamicEnergyConsumption(double length, double mipsCapacity) {
		cpuEnergyConsumption += ((getMaxActiveConsumption() - getIdleConsumption()) / 3600 * length / mipsCapacity);
	}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要开始学习蓝牙低能耗(BLE)技术,首先需要了解BLE的基本原理和特点。BLE是一种低功耗的蓝牙通信技术,在物联网和智能设备领域具有广泛的应用。它具有低成本、低功耗和简单易用的特点,适用于需要长时间运行并且电池寿命要求较高的设备。 学习BLE首先需要了解BLE的基本特性,括广播、连接和数据传输。广播是BLE设备发送广播来宣传自己的存在和服务信息,连接是建立BLE设备之间的连接通道来进行数据传输,数据传输可以是单向的也可以是双向的,适用于不同的应用场景。 其次,需要熟悉BLE的开发工具和平台,例如使用BLE开发板、开发套件或者模块来进行BLE应用的开发。常见的BLE开发平台括Arduino、Raspberry Pi、nRF52开发板等,可以选择适合自己的开发平台进行学习和实践。 另外,要学会使用BLE的开发工具和编程语言,例如使用BLE SDK、BLE API和相应的编程语言(如C、C++、Python等)来编写BLE应用程序。通过学习和实践,可以掌握BLE的开发流程、协议栈、服务和特征等相关知识。 最后,需要不断实践和练习,通过搭建BLE通信的demo、开发BLE应用程序、调试和优化BLE应用来提升自己的技能和经验。同时,可以参考相关的教程、文档和社区资源,积极参与BLE开发者社区,与他人交流和分享经验,共同进步。通过持续的学习和实践,可以逐渐掌握BLE技术,为物联网和智能设备领域的开发做出贡献。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值