package com.ratio.deviceService;

import java.util.UUID;

import com.ratio.util.UUIDUtils;

import android.bluetooth.BluetoothGattDescriptor;
import android.os.Parcel;
import android.os.Parcelable;

/**
 * external description of a device profile, so once we query the device services and descriptors
 * we can send it back from the service to the activity in a bundle, which can be received by the BroadcastReceiver
 * @author mreynolds
 *
 */

public class BTDescriptorProfile implements Parcelable {
	protected BluetoothGattDescriptor mDescriptor;
	
	public BTDescriptorProfile(BluetoothGattDescriptor descriptor) {
		mDescriptor = descriptor;
	}
	
	public BTDescriptorProfile(UUID uuid, int permissions) {
		mDescriptor = new BluetoothGattDescriptor(uuid, permissions);
	}
	
	public BluetoothGattDescriptor getDescriptor() {
		return mDescriptor;
	}
	
	@Override
	public int describeContents() {
		return 0;
	}
	
	@Override
	public void writeToParcel(Parcel dest, int flags) {
		UUIDUtils.writeToParcel(mDescriptor.getUuid(), dest);
		dest.writeInt(mDescriptor.getPermissions());
		dest.writeByteArray(mDescriptor.getValue());	
	}
	
	public BTDescriptorProfile(Parcel in) {
		UUID uuid = UUIDUtils.readFromParcel(in);
		int permissions = in.readInt();
		byte[] value = in.createByteArray();
		mDescriptor = new BluetoothGattDescriptor(uuid, permissions);
		mDescriptor.setValue(value);
	}
	
	public static final Parcelable.Creator<BTDescriptorProfile> CREATOR = 
        new Parcelable.Creator<BTDescriptorProfile>() {

            @Override
            public BTDescriptorProfile createFromParcel(Parcel source) {
                return new BTDescriptorProfile(source);
            }

            @Override
            public BTDescriptorProfile[] newArray(int size) {
                return new BTDescriptorProfile[size];
            }
        };
}