1192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta/*
2192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta * Copyright (C) 2014 The Android Open Source Project
3192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta *
4192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta * Licensed under the Apache License, Version 2.0 (the "License");
5192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta * you may not use this file except in compliance with the License.
6192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta * You may obtain a copy of the License at
7192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta *
8192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta *      http://www.apache.org/licenses/LICENSE-2.0
9192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta *
10192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta * Unless required by applicable law or agreed to in writing, software
11192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta * distributed under the License is distributed on an "AS IS" BASIS,
12192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta * See the License for the specific language governing permissions and
14192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta * limitations under the License.
15192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta */
16192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta
17192d793d2586b620027edd5b45ff4c72a86cc7beHemant Guptapackage android.bluetooth.client.map;
18192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta
19192d793d2586b620027edd5b45ff4c72a86cc7beHemant Guptaimport java.io.IOException;
20192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta
21192d793d2586b620027edd5b45ff4c72a86cc7beHemant Guptaimport javax.obex.ClientSession;
22192d793d2586b620027edd5b45ff4c72a86cc7beHemant Guptaimport javax.obex.HeaderSet;
23192d793d2586b620027edd5b45ff4c72a86cc7beHemant Guptaimport javax.obex.ResponseCodes;
24192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta
25192d793d2586b620027edd5b45ff4c72a86cc7beHemant Guptaclass BluetoothMasRequestSetPath extends BluetoothMasRequest {
26192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta
27192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta    enum SetPathDir {
28192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta        ROOT, UP, DOWN
29192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta    };
30192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta
31192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta    SetPathDir mDir;
32192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta
33192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta    String mName;
34192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta
35192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta    public BluetoothMasRequestSetPath(String name) {
36192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta        mDir = SetPathDir.DOWN;
37192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta        mName = name;
38192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta
39192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta        mHeaderSet.setHeader(HeaderSet.NAME, name);
40192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta    }
41192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta
42192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta    public BluetoothMasRequestSetPath(boolean goRoot) {
43192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta        mHeaderSet.setEmptyNameHeader();
44192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta        if (goRoot) {
45192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta            mDir = SetPathDir.ROOT;
46192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta        } else {
47192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta            mDir = SetPathDir.UP;
48192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta        }
49192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta    }
50192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta
51192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta    @Override
52192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta    public void execute(ClientSession session) {
53192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta        HeaderSet hs = null;
54192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta
55192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta        try {
56192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta            switch (mDir) {
57192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta                case ROOT:
58192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta                case DOWN:
59192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta                    hs = session.setPath(mHeaderSet, false, false);
60192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta                    break;
61192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta                case UP:
62192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta                    hs = session.setPath(mHeaderSet, true, false);
63192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta                    break;
64192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta            }
65192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta
66192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta            mResponseCode = hs.getResponseCode();
67192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta        } catch (IOException e) {
68192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta            mResponseCode = ResponseCodes.OBEX_HTTP_INTERNAL_ERROR;
69192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta        }
70192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta    }
71192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta}
72