package no.nordicsemi.puckcentral.services;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import java.util.UUID;
import no.nordicsemi.puckcentral.triggers.Trigger;
import no.nordicsemi.puckcentral.utils.UUIDUtils;
public abstract class GattServices {
public static final UUID CHARACTERISTIC_UPDATE_NOTIFICATION_DESCRIPTOR_UUID
= UUID.fromString("00002902-0000-1000-8000-00805f9b34fb");
public static final UUID LOCATION_SERVICE_UUID = UUIDUtils.stringToUUID("bftj location ");
public static final UUID IR_SERVICE_UUID = UUIDUtils.stringToUUID("bftj ir ");
public static final UUID CUBE_SERVICE_UUID = UUIDUtils.stringToUUID("bftj cube ");
public static final UUID DISPLAY_SERVICE_UUID = UUIDUtils.stringToUUID("bftj display ");
public static final UUID CUBE_CHARACTERISTIC_DIRECTION_UUID
= UUIDUtils.stringToUUID("bftj cube dirctn");
public static final String[] LOCATION_TRIGGERS = new String[] {
Trigger.TRIGGER_ENTER_ZONE,
Trigger.TRIGGER_LEAVE_ZONE
};
public static final String[] CUBE_TRIGGERS = new String[] {
Trigger.TRIGGER_ROTATE_CUBE_UP,
Trigger.TRIGGER_ROTATE_CUBE_DOWN,
Trigger.TRIGGER_ROTATE_CUBE_LEFT,
Trigger.TRIGGER_ROTATE_CUBE_RIGHT,
Trigger.TRIGGER_ROTATE_CUBE_FRONT,
Trigger.TRIGGER_ROTATE_CUBE_BACK
};
public static Map<UUID, String[]> mServicesToTriggers;
static {
mServicesToTriggers = new HashMap<>();
mServicesToTriggers.put(LOCATION_SERVICE_UUID, LOCATION_TRIGGERS);
mServicesToTriggers.put(IR_SERVICE_UUID, LOCATION_TRIGGERS);
mServicesToTriggers.put(CUBE_SERVICE_UUID, CUBE_TRIGGERS);
}
public static String[] getTriggersForServiceUUID(UUID serviceUUID) {
if (mServicesToTriggers.containsKey(serviceUUID)) {
return mServicesToTriggers.get(serviceUUID);
}
return new String[0];
}
public static String[] getTriggersForServiceUUIDs(ArrayList<UUID> serviceUUIDs) {
Set<String> triggers = new HashSet<>();
for (UUID serviceUUID : serviceUUIDs) {
triggers.addAll(Arrays.asList(getTriggersForServiceUUID(serviceUUID)));
}
return triggers.toArray(new String[triggers.size()]);
}
}