/*
 * Copyright (C) 2014 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package android.bluetooth.le;

import android.bluetooth.BluetoothAdapter;
import android.util.SparseArray;

import java.util.Arrays;
import java.util.Iterator;
import java.util.Map;
import java.util.Objects;
import java.util.Set;

Helper class for Bluetooth LE utils.
@hide
/** * Helper class for Bluetooth LE utils. * * @hide */
public class BluetoothLeUtils {
Returns a string composed from a SparseArray.
/** * Returns a string composed from a {@link SparseArray}. */
static String toString(SparseArray<byte[]> array) { if (array == null) { return "null"; } if (array.size() == 0) { return "{}"; } StringBuilder buffer = new StringBuilder(); buffer.append('{'); for (int i = 0; i < array.size(); ++i) { buffer.append(array.keyAt(i)).append("=").append(Arrays.toString(array.valueAt(i))); } buffer.append('}'); return buffer.toString(); }
Returns a string composed from a Map.
/** * Returns a string composed from a {@link Map}. */
static <T> String toString(Map<T, byte[]> map) { if (map == null) { return "null"; } if (map.isEmpty()) { return "{}"; } StringBuilder buffer = new StringBuilder(); buffer.append('{'); Iterator<Map.Entry<T, byte[]>> it = map.entrySet().iterator(); while (it.hasNext()) { Map.Entry<T, byte[]> entry = it.next(); Object key = entry.getKey(); buffer.append(key).append("=").append(Arrays.toString(map.get(key))); if (it.hasNext()) { buffer.append(", "); } } buffer.append('}'); return buffer.toString(); }
Check whether two SparseArray equal.
/** * Check whether two {@link SparseArray} equal. */
static boolean equals(SparseArray<byte[]> array, SparseArray<byte[]> otherArray) { if (array == otherArray) { return true; } if (array == null || otherArray == null) { return false; } if (array.size() != otherArray.size()) { return false; } // Keys are guaranteed in ascending order when indices are in ascending order. for (int i = 0; i < array.size(); ++i) { if (array.keyAt(i) != otherArray.keyAt(i) || !Arrays.equals(array.valueAt(i), otherArray.valueAt(i))) { return false; } } return true; }
Check whether two Map equal.
/** * Check whether two {@link Map} equal. */
static <T> boolean equals(Map<T, byte[]> map, Map<T, byte[]> otherMap) { if (map == otherMap) { return true; } if (map == null || otherMap == null) { return false; } if (map.size() != otherMap.size()) { return false; } Set<T> keys = map.keySet(); if (!keys.equals(otherMap.keySet())) { return false; } for (T key : keys) { if (!Objects.deepEquals(map.get(key), otherMap.get(key))) { return false; } } return true; }
Ensure Bluetooth is turned on.
Throws:
/** * Ensure Bluetooth is turned on. * * @throws IllegalStateException If {@code adapter} is null or Bluetooth state is not {@link * BluetoothAdapter#STATE_ON}. */
static void checkAdapterStateOn(BluetoothAdapter adapter) { if (adapter == null || !adapter.isLeEnabled()) { throw new IllegalStateException("BT Adapter is not turned ON"); } } }