/*
ECE649 Spring 2010
Group 7
Justin Ray/justinr2
(other names would go here)
 */

package simulator.elevatorcontrol;

import java.util.BitSet;
import simulator.payloads.CanMailbox;
import simulator.payloads.translators.CanPayloadTranslator;


/************************************
CLASS:
CoinCountCanPayloadTranslator
AUTHOR:
Justin Ray
REVISION DATE:
CONSTRUCTOR PARAMETERS:
CanMailbox payload
DESCRIPTION:
CanPayloadTranslators convert between bit-level message representations used in
the CAN network simulation and semantically valid typed representations (e.g.
boolean, int, enum types, etc) used by the Controller classes.

Translators are a convenience feature, but they are also required because they
are used by the MessageInjector to inject network messages into unit and
integration tests.

This translator is used by the CAN network simulation framework for the
mCoinCount message
 *************************************/
public class CoinCountCanPayloadTranslator extends CanPayloadTranslator {

    public CoinCountCanPayloadTranslator(CanMailbox payload) {
        super(payload, 1, MessageDictionary.COIN_COUNT_CAN_ID);
    }

    //this method is required for reflection
    public void set(int coinCount) {
        setCoinCount(coinCount);
    }
    
    public void setCoinCount(int coinCount) {
        BitSet b = mailbox.getMessagePayload();
        addUnsignedIntToBitset(b, coinCount, 0, 8);
        mailbox.setMessagePayload(b, byteSize);
    }

    public int getCoinCount() {
        return getUnsignedIntFromBitset(mailbox.getMessagePayload(), 0, 8);
    }

    @Override
    public String payloadToString() {
        return "CoinCount=" + getCoinCount();
    }
}
