Package se.sics.mspsim.chip

Source Code of se.sics.mspsim.chip.TR1001

/**
* Copyright (c) 2008-2012, Swedish Institute of Computer Science.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* 1. Redistributions of source code must retain the above copyright
*    notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
*    notice, this list of conditions and the following disclaimer in the
*    documentation and/or other materials provided with the distribution.
* 3. Neither the name of the Institute nor the names of its contributors
*    may be used to endorse or promote products derived from this software
*    without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* This file is part of MSPSim.
*
* -----------------------------------------------------------------
* TR1001
*
* Authors : Joakim Eriksson, Niclas Finne
* Created : 11 mar 2008
*/

package se.sics.mspsim.chip;
import se.sics.mspsim.core.Chip;
import se.sics.mspsim.core.MSP430Core;
import se.sics.mspsim.core.USART;
import se.sics.mspsim.core.USARTListener;
import se.sics.mspsim.core.USARTSource;

/**
*
*/
public class TR1001 extends Chip implements RFListener, RFSource {

  public static final int MODE_TXRX_OFF = 0x00;
  public static final int MODE_RX_ON = 0x01;
  public static final int MODE_TXRX_ON = 0x02;
  public static final int MODE_MAX = MODE_TXRX_ON;
  private static final String[] MODE_NAMES = new String[] {
    "off", "listen", "transmit"
  };
  private final USART usart;
  private RFListener rfListener;

  public TR1001(MSP430Core cpu, USART usart) {
    super("TR1001", "Radio", cpu);
    this.usart = usart;
    setModeNames(MODE_NAMES);
    setMode(MODE_TXRX_OFF);
    usart.addUSARTListener(new USARTListener() {

      public void dataReceived(USARTSource source, int data) {
        RFListener listener = rfListener;
        if (getMode() != MODE_TXRX_ON) {
          // Radio is turned off during transmission
          if (DEBUG) {
            log(" ----- TR1001 OFF DURING TRANSMISSION -----");
          }
        } else if (listener != null) {
          listener.receivedByte((byte) (data & 0xff));
        }
      }
    });
  }

  public void setMode(int mode) {
    super.setMode(mode);
  }

  @Override
  public int getModeMax() {
    return MODE_MAX;
  }

  public String info() {
      return "Radio State: " + getModeName(getMode());
  }

  @Override
  public synchronized void addRFListener(RFListener rf) {
    rfListener = RFListener.Proxy.INSTANCE.add(rfListener, rf);
  }

  @Override
  public synchronized void removeRFListener(RFListener rf) {
    rfListener = RFListener.Proxy.INSTANCE.remove(rfListener, rf);
  }

  /* Receive a byte from the radio medium
   * @see se.sics.mspsim.chip.RFListener#receivedByte(byte)
   */
  public void receivedByte(byte data) {
    if (getMode() == MODE_TXRX_OFF) {
      // Radio turned off
      if (DEBUG) {
        log(" ----- TR1001 OFF DURING RECEPTION -----");
      }

    } else if (usart.isReceiveFlagCleared()) {
      /* logger.info("----- TR1001 RECEIVED BYTE -----"); */
      usart.byteReceived(data);

    } else {
      if (DEBUG) {
        log(" ----- TR1001 RECEIVED BYTE TOO EARLY -----");
      }
    }
  }

  public int getConfiguration(int parameter) {
      return 0;
  }
}
TOP

Related Classes of se.sics.mspsim.chip.TR1001

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.