package com.integreight.onesheeld.shields.controller; import android.app.Activity; import com.integreight.onesheeld.OneSheeldApplication; import com.integreight.onesheeld.R; import com.integreight.onesheeld.enums.UIShield; import com.integreight.onesheeld.model.ArduinoConnectedPin; import com.integreight.onesheeld.sdk.ShieldFrame; import com.integreight.onesheeld.shields.ControllerParent; import com.integreight.onesheeld.utils.Log; public class LedShield extends ControllerParent<LedShield> { public int connectedPin = -1; private boolean isLedOn; private LedEventHandler eventHandler; public LedShield() { super(); requiredPinsIndex = 0; shieldPins = new String[]{OneSheeldApplication.getContext().getString(R.string.led_pin_name)}; } public LedShield(Activity activity, String tag) { super(activity, tag); } @Override public ControllerParent<LedShield> init(String tag) { return super.init(tag); } public boolean isLedOn() { return isLedOn; } public boolean refreshLed() { if (connectedPin != -1) { if (getApplication().isConnectedToBluetooth()) isLedOn = getApplication().getConnectedDevice().digitalRead(connectedPin); } else isLedOn = false; return isLedOn; } @Override public void onDigital(int portNumber, boolean portData) { refreshLed(); if (eventHandler != null) { eventHandler.onLedChange(isLedOn); } super.onDigital(portNumber, portData); } public void setLedEventHandler(LedEventHandler eventHandler) { this.eventHandler = eventHandler; refreshLed(); } @Override public void setConnected(ArduinoConnectedPin... pins) { this.connectedPin = pins[0].getPinID(); super.setConnected(pins); } public static interface LedEventHandler { void onLedChange(boolean isLedOn); } @Override public void refresh() { // TODO Auto-generated method stub } @Override public void onNewShieldFrameReceived(ShieldFrame frame) { if (frame.getShieldId() == UIShield.LED_SHIELD.getId()) { if (eventHandler != null) { eventHandler.onLedChange(frame.getFunctionId() == 0x01 && frame.getArgument(0)[0] == 0x1); } } } @Override public void reset() { // TODO Auto-generated method stub Log.sysOut("Reset"); } }