@@ -0,0 +1,1438 @@
+package info.izumin.android.bletia.core.action;%0A%0Aimport android.os.Bundle;%0Aimport android.os.Message;%0A%0Aimport info.izumin.android.bletia.core.wrapper.BluetoothGattWrapper;%0A%0A/**%0A * Created by izumin on 10/9/15.%0A */%0Apublic abstract class Action%3CI%3E %7B%0A    public enum Type %7B%0A        WRITE_CHARACTERISTIC(1),%0A        READ_CHARACTERISTIC(2),%0A        WRITE_DESCRIPTOR(3),%0A        READ_DESCRIPTOR(4),%0A        ENABLE_NOTIFICATION(5),%0A        READ_REMOTE_RSSI(6);%0A%0A        private final int mCode;%0A%0A        Type(int code) %7B%0A            mCode = code;%0A        %7D%0A%0A        public int getCode() %7B%0A            return mCode;%0A        %7D%0A%0A        public static Type valueOf(int code) %7B%0A            for (Type type : values()) %7B%0A                if (type.getCode() == code) %7B return type; %7D%0A            %7D%0A            throw new IllegalArgumentException();%0A        %7D%0A    %7D%0A%0A    public static final String KEY_UUID = %22key_uuid%22;%0A%0A    private final I mIdentity;%0A%0A    public Action(I identity) %7B%0A        mIdentity = identity;%0A    %7D%0A%0A    public I getIdentity() %7B%0A        return mIdentity;%0A    %7D%0A%0A    public Message obtainMessage() %7B%0A        Message message = Message.obtain();%0A        message.what = getType().getCode();%0A        message.setData(getBundle());%0A        return message;%0A    %7D%0A%0A    public Bundle getBundle() %7B%0A        return new Bundle();%0A    %7D%0A%0A    public abstract Type getType();%0A    public abstract boolean execute(BluetoothGattWrapper gattWrapper);%0A%7D%0A

Add AbstractAction to core