package com.integreight.onesheeld.shields.controller; import android.app.Activity; import com.integreight.onesheeld.sdk.OneSheeldDevice; import com.integreight.onesheeld.sdk.ShieldFrame; import com.integreight.onesheeld.OneSheeldApplication; import com.integreight.onesheeld.R; import com.integreight.onesheeld.enums.ArduinoPin; import com.integreight.onesheeld.enums.UIShield; import com.integreight.onesheeld.model.ArduinoConnectedPin; import com.integreight.onesheeld.shields.ControllerParent; import com.integreight.onesheeld.utils.BitsUtils; public class GamepadShield extends ControllerParent<GamepadShield> { ShieldFrame sf; byte buttonByte = 0; private static final byte DATA_IN = 0x01; public GamepadShield(Activity activity, String tag) { super(activity, tag); } @Override public ControllerParent<GamepadShield> init(String tag) { return super.init(tag); } @Override public void setConnected(ArduinoConnectedPin... pins) { // TODO Auto-generated method stub super.setConnected(pins); } public GamepadShield() { super(); requiredPinsIndex = 0; shieldPins = new String[]{OneSheeldApplication.getContext().getString(R.string.game_pad_up_arrow), OneSheeldApplication.getContext().getString(R.string.game_pad_right_arrow), OneSheeldApplication.getContext().getString(R.string.game_pad_down_arrow), OneSheeldApplication.getContext().getString(R.string.game_pad_left_arrow), OneSheeldApplication.getContext().getString(R.string.game_pad_yellow_button), OneSheeldApplication.getContext().getString(R.string.game_pad_red_button), OneSheeldApplication.getContext().getString(R.string.game_pad_green_button), OneSheeldApplication.getContext().getString(R.string.game_pad_blue_button)}; } public void setPinToHigh(String pinName, int pinId) { ArduinoPin columnPincolumnPin = matchedShieldPins.get(pinName); if (columnPincolumnPin != null) { digitalWrite(columnPincolumnPin.microHardwarePin, true); } buttonByte = BitsUtils.setBit(buttonByte, pinId); sf = new ShieldFrame(UIShield.GAMEDPAD_SHIELD.getId(), DATA_IN); sf.addArgument(buttonByte); sendShieldFrame(sf); } public void setPinToLow(String pinName, int pinId) { ArduinoPin columnPin = matchedShieldPins.get(pinName); if (columnPin != null) { digitalWrite(columnPin.microHardwarePin, false); } buttonByte = BitsUtils.resetBit(buttonByte, pinId); sf = new ShieldFrame(UIShield.GAMEDPAD_SHIELD.getId(), DATA_IN); sf.addArgument(buttonByte); sendShieldFrame(sf); } public static enum Pin { UP_ARROW(4, R.string.game_pad_up_arrow), RIGHT_ARROW(7, R.string.game_pad_right_arrow), DOWN_ARROW(5, R.string.game_pad_down_arrow), LEFT_ARROW(6, R.string.game_pad_left_arrow), YELLOW_BUTTON(0, R.string.game_pad_yellow_button), RED_BUTTON(1, R.string.game_pad_red_button), GREEN_BUTTON(2, R.string.game_pad_green_button), BLUE_BUTTON(3, R.string.game_pad_blue_button); private int nameStringResource; int id; Pin(int id, int nameStringResource) { this.id = id; this.nameStringResource = nameStringResource; } public String getName() { return OneSheeldApplication.getContext().getString(nameStringResource); } public int getId() { return id; } } @Override public void onNewShieldFrameReceived(ShieldFrame frame) { // TODO Auto-generated method stub } @Override public void reset() { // TODO Auto-generated method stub sf = null; } }