package com.integreight.onesheeld.shields.controller;
import android.app.Activity;
import com.integreight.onesheeld.sdk.ShieldFrame;
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.shields.ControllerParent;
public class SliderShield extends ControllerParent<SliderShield> {
private int connectedPin;
private int sliderValue;
private ShieldFrame sf;
private static final byte DATA_IN = 0x01;
private static final byte SLIDER_VALUE = 0x01;
private byte sValue = 0;
private SliderHandler sliderHandler;
public SliderShield() {
super();
requiredPinsIndex = 1;
shieldPins = new String[]{OneSheeldApplication.getContext().getString(R.string.slider_pin_name)};
}
public SliderShield(Activity activity, String tag) {
super(activity, tag);
}
@Override
public void setConnected(ArduinoConnectedPin... pins) {
connectedPin = pins[0].getPinID();
super.setConnected(pins);
}
public int getSliderValue() {
return sliderValue;
}
public void setSliderValue(int sliderValue) {
if (sliderValue != this.sliderValue) {
this.sliderValue = sliderValue;
analogWrite(connectedPin, sliderValue);
sValue = (byte) sliderValue;
sf = new ShieldFrame(UIShield.SLIDER_SHIELD.getId(), DATA_IN);
sf.addArgument(sValue);
sendShieldFrame(sf);
}
}
@Override
public void onNewShieldFrameReceived(ShieldFrame frame) {
if (frame.getShieldId() == UIShield.SLIDER_SHIELD.getId()) {
if (frame.getFunctionId() == SLIDER_VALUE) {
sliderValue = frame.getArgumentAsInteger(0);
if (sliderHandler != null && isHasForgroundView())
sliderHandler.setSliderValue(sliderValue);
}
}
}
@Override
public void reset() {
// TODO Auto-generated method stub
sf = null;
}
public void setSliderHandler(SliderHandler sliderHandler) {
this.sliderHandler = sliderHandler;
}
public interface SliderHandler {
public void setSliderValue(int value);
}
}