summaryrefslogtreecommitdiffstats
path: root/src/com/android/bluetooth/gatt/SearchQueue.java
blob: 3064a51e3aaf6d0c59ae8f574112702a86a8aa40 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
/*
 * Copyright (C) 2013 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 com.android.bluetooth.gatt;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

/**
 * Helper class to store characteristics and descriptors that will be
 * queued up for future exploration.
 * @hide
 */
/*package*/ class SearchQueue {
    class Entry {
        public int connId;
        public int srvcType;
        public int srvcInstId;
        public long srvcUuidLsb;
        public long srvcUuidMsb;
        public int charInstId;
        public long charUuidLsb;
        public long charUuidMsb;
    }

    private List<Entry> mEntries = new ArrayList<Entry>();

    void add(int connId, int srvcType,
            int srvcInstId, long srvcUuidLsb, long srvcUuidMsb) {
        Entry entry = new Entry();
        entry.connId = connId;
        entry.srvcType = srvcType;
        entry.srvcInstId = srvcInstId;
        entry.srvcUuidLsb = srvcUuidLsb;
        entry.srvcUuidMsb = srvcUuidMsb;
        entry.charUuidLsb = 0;
        mEntries.add(entry);
    }

    void add(int connId, int srvcType,
        int srvcInstId, long srvcUuidLsb, long srvcUuidMsb,
        int charInstId, long charUuidLsb, long charUuidMsb)
    {
        Entry entry = new Entry();
        entry.connId = connId;
        entry.srvcType = srvcType;
        entry.srvcInstId = srvcInstId;
        entry.srvcUuidLsb = srvcUuidLsb;
        entry.srvcUuidMsb = srvcUuidMsb;
        entry.charInstId = charInstId;
        entry.charUuidLsb = charUuidLsb;
        entry.charUuidMsb = charUuidMsb;
        mEntries.add(entry);
    }

    Entry pop() {
        Entry entry = mEntries.get(0);
        mEntries.remove(0);
        return entry;
    }

    void removeConnId(int connId) {
        for (Iterator<Entry> it = mEntries.iterator(); it.hasNext();) {
            Entry entry = it.next();
            if (entry.connId == connId) {
                it.remove();
            }
        }
    }

    boolean isEmpty() {
        return mEntries.isEmpty();
    }

    void clear() {
        mEntries.clear();
    }
}