コード例 #1
0
 public void setMoteID(int newID) {
   moteID = newID;
   moteMem.setIntValueOf("simMoteID", moteID);
   moteMem.setByteValueOf("simMoteIDChanged", (byte) 1);
   moteMem.setIntValueOf("simRandomSeed", (int) (mote.getSimulation().getRandomSeed() + newID));
   setChanged();
   notifyObservers();
 }
コード例 #2
0
  protected void handleTransmit(byte val) {
    if (len == 0) {
      lastEventTime = mote.getSimulation().getSimulationTime();
      lastEvent = RadioEvent.TRANSMISSION_STARTED;
      if (DEBUG) logger.debug("----- 802.15.4 TRANSMISSION STARTED -----");
      setChanged();
      notifyObservers();
    }
    /* send this byte to all nodes */
    lastOutgoingByte = new RadioByte(val);
    lastEventTime = mote.getSimulation().getSimulationTime();
    lastEvent = RadioEvent.CUSTOM_DATA_TRANSMITTED;
    setChanged();
    notifyObservers();

    buffer[len++] = val;

    // System.out.println("## 802.15.4: " + (val&0xff) + " transmitted...");

    if (len == 6) {
      // System.out.println("## CC2420 Packet of length: " + val + " expected...");
      expLen = val + 6;
    }

    if (len == expLen) {
      if (DEBUG) logger.debug("----- 802.15.4 CUSTOM DATA TRANSMITTED -----");

      lastOutgoingPacket = Radio802154PacketConverter.fromCC2420ToCooja(buffer);
      lastEventTime = mote.getSimulation().getSimulationTime();
      lastEvent = RadioEvent.PACKET_TRANSMITTED;
      if (DEBUG) logger.debug("----- 802.15.4 PACKET TRANSMITTED -----");
      setChanged();
      notifyObservers();

      //          System.out.println("## CC2420 Transmission finished...");

      lastEventTime = mote.getSimulation().getSimulationTime();
      /*logger.debug("----- SKY TRANSMISSION FINISHED -----");*/
      lastEvent = RadioEvent.TRANSMISSION_FINISHED;
      setChanged();
      notifyObservers();
      len = 0;
    }
  }
コード例 #3
0
  /* need to add a few more methods later??? */
  public void signalReceptionStart() {
    isReceiving = true;

    //      cc2420.setCCA(true);
    //      hasFailedReception = mode == CC2420.MODE_TXRX_OFF;
    /* TODO cc2420.setSFD(true); */

    lastEventTime = mote.getSimulation().getSimulationTime();
    lastEvent = RadioEvent.RECEPTION_STARTED;
    if (DEBUG) logger.debug("----- 802.15.4 RECEPTION STARTED -----");
    setChanged();
    notifyObservers();
  }
コード例 #4
0
  public void interfereAnyReception() {
    isInterfered = true;
    isReceiving = false;
    //      hasFailedReception = false;
    lastIncomingPacket = null;

    // cc2420.setCCA(true);

    /* is this ok ?? */
    handleEndOfReception();
    // recv.nextByte(false, (byte)0);

    lastEventTime = mote.getSimulation().getSimulationTime();
    lastEvent = RadioEvent.RECEPTION_INTERFERED;
    /*logger.debug("----- SKY RECEPTION INTERFERED -----");*/
    setChanged();
    notifyObservers();
  }
コード例 #5
0
  public void signalReceptionEnd() {
    /* Deliver packet data */
    isReceiving = false;
    //      hasFailedReception = false;
    isInterfered = false;
    //      cc2420.setCCA(false);

    /* tell the receiver that the packet is ended */
    handleEndOfReception();

    lastEventTime = mote.getSimulation().getSimulationTime();
    lastEvent = RadioEvent.RECEPTION_FINISHED;
    if (DEBUG) logger.debug("----- 802.15.4 RECEPTION FINISHED -----");
    // Exception e = new IllegalStateException("Why finished?");
    // e.printStackTrace();
    setChanged();
    notifyObservers();
  }
コード例 #6
0
    public MoteTracker(Mote mote) {
      this.simulation = mote.getSimulation();
      this.mote = mote;
      this.radio = mote.getInterfaces().getRadio();

      radioWasOn = radio.isRadioOn();
      if (radio.isTransmitting()) {
        lastRadioState = RadioState.TRANSMITTING;
      } else if (radio.isReceiving()) {
        lastRadioState = RadioState.RECEIVING;
      } else if (radio.isInterfered()) {
        lastRadioState = RadioState.INTERFERED;
      } else {
        lastRadioState = RadioState.IDLE;
      }
      lastUpdateTime = simulation.getSimulationTime();

      radio.addObserver(this);
    }