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.pbap; 18192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta 19192d793d2586b620027edd5b45ff4c72a86cc7beHemant Guptaimport android.util.Log; 20192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta 21192d793d2586b620027edd5b45ff4c72a86cc7beHemant Guptaimport java.io.IOException; 22192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta 23192d793d2586b620027edd5b45ff4c72a86cc7beHemant Guptaimport javax.obex.ClientSession; 24192d793d2586b620027edd5b45ff4c72a86cc7beHemant Guptaimport javax.obex.HeaderSet; 25192d793d2586b620027edd5b45ff4c72a86cc7beHemant Guptaimport javax.obex.ResponseCodes; 26192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta 27192d793d2586b620027edd5b45ff4c72a86cc7beHemant Guptafinal class BluetoothPbapRequestSetPath extends BluetoothPbapRequest { 28192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta 29192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta private final static String TAG = "BluetoothPbapRequestSetPath"; 30192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta 31192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta private enum SetPathDir { 32192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta ROOT, UP, DOWN 33192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta }; 34192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta 35192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta private SetPathDir mDir; 36192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta 37192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta public BluetoothPbapRequestSetPath(String name) { 38192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta mDir = SetPathDir.DOWN; 39192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta mHeaderSet.setHeader(HeaderSet.NAME, name); 40192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta } 41192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta 42192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta public BluetoothPbapRequestSetPath(boolean goUp) { 43192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta mHeaderSet.setEmptyNameHeader(); 44192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta if (goUp) { 45192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta mDir = SetPathDir.UP; 46192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta } else { 47192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta mDir = SetPathDir.ROOT; 48192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta } 49192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta } 50192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta 51192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta @Override 52192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta public void execute(ClientSession session) { 53192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta Log.v(TAG, "execute"); 54192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta 55192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta HeaderSet hs = null; 56192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta 57192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta try { 58192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta switch (mDir) { 59192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta case ROOT: 60192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta case DOWN: 61192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta hs = session.setPath(mHeaderSet, false, false); 62192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta break; 63192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta case UP: 64192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta hs = session.setPath(mHeaderSet, true, false); 65192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta break; 66192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta } 67192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta 68192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta mResponseCode = hs.getResponseCode(); 69192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta } catch (IOException e) { 70192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta mResponseCode = ResponseCodes.OBEX_HTTP_INTERNAL_ERROR; 71192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta } 72192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta } 73192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta} 74