package radio_module; import device.SensorNode; import interference.LoRaTransceiver; import interference.WiFiTransceiver; import interference.ZigBeeTransceiver; import wisen_simulation.SimulationInputs; public class ErrorBits { public static final int PROBABILITY = 0; public static final int ALPHA_D = 1; public static final int AWGN = 2; public static boolean errorBitsOk(String message, SensorNode transmitter, SensorNode receiver) { if (SimulationInputs.ack) { if (SimulationInputs.ackType == PROBABILITY) { return (Math.random() <= SimulationInputs.ackProba?true:false); } if (SimulationInputs.ackType == ALPHA_D && transmitter.getStandard() == receiver.getStandard() && transmitter.getStandard() == RadioStandard.ZIGBEE_802_15_4) { double errorBits = ZigBeeTransceiver.getNumberOfReceivedErrorBits(message, transmitter.getNeighbors().size(), (int) transmitter.getCurrentRadioModule().getRadioRangeRadius(), transmitter.getPerActiveNodes()); return (errorBits == 0); } if (SimulationInputs.ackType == ALPHA_D && transmitter.getStandard() == receiver.getStandard() && transmitter.getStandard() == RadioStandard.WIFI_802_11) { double errorBits = WiFiTransceiver.getNumberOfReceivedErrorBits(message, transmitter.getNeighbors().size(), (int) transmitter.getCurrentRadioModule().getRadioRangeRadius(), transmitter.getPerActiveNodes()); return (errorBits == 0); } if (SimulationInputs.ackType == AWGN && transmitter.getStandard() == receiver.getStandard() && transmitter.getStandard() == RadioStandard.LORA) { double errorBits = LoRaTransceiver.getNumberOfReceivedErrorBits(message, transmitter.getCurrentRadioModule().getSpreadingFactor()); return (errorBits == 0); } System.err.println("[ErrorBits] -> This kind of interference is not considered!"); return false; } return true; } }