package com.uxxu.konashi.lib.action;
import android.bluetooth.BluetoothGattService;
import android.util.SparseArray;
import com.uxxu.konashi.lib.Konashi;
import com.uxxu.konashi.lib.KonashiErrorType;
import com.uxxu.konashi.lib.KonashiUUID;
import com.uxxu.konashi.lib.util.AioUtils;
import java.util.UUID;
import info.izumin.android.bletia.BletiaErrorType;
import info.izumin.android.bletia.BletiaException;
import info.izumin.android.bletia.action.ReadCharacteristicAction;
import info.izumin.android.bletia.wrapper.BluetoothGattWrapper;
/**
* Created by izumin on 9/19/15.
*/
public class AioAnalogReadAction extends ReadCharacteristicAction {
private static final SparseArray<UUID> sPin2Uuid = new SparseArray<UUID>() {{
append(Konashi.AIO0, KonashiUUID.ANALOG_READ0_UUID);
append(Konashi.AIO1, KonashiUUID.ANALOG_READ1_UUID);
append(Konashi.AIO2, KonashiUUID.ANALOG_READ2_UUID);
}};
private final int mPin;
public AioAnalogReadAction(BluetoothGattService service, int pin) {
super(service, sPin2Uuid.get(pin, KonashiUUID.ANALOG_READ0_UUID));
mPin = pin;
}
@Override
public boolean execute(BluetoothGattWrapper gattWrapper) {
BletiaErrorType errorType = validate();
if (validate() == KonashiErrorType.NO_ERROR) {
return super.execute(gattWrapper);
} else {
rejectIfParamsAreInvalid(errorType);
return false;
}
}
protected BletiaErrorType validate() {
if (AioUtils.isValidPin(mPin)) {
return KonashiErrorType.NO_ERROR;
} else {
return KonashiErrorType.INVALID_PIN_NUMBER;
}
}
private void rejectIfParamsAreInvalid(BletiaErrorType errorType) {
getDeferred().reject(new BletiaException(this, errorType));
}
}