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 Guptaimport android.bluetooth.client.map.utils.ObexAppParameters; 19192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta 20192d793d2586b620027edd5b45ff4c72a86cc7beHemant Guptaimport java.io.IOException; 21192d793d2586b620027edd5b45ff4c72a86cc7beHemant Guptaimport java.io.InputStream; 22192d793d2586b620027edd5b45ff4c72a86cc7beHemant Guptaimport java.util.ArrayList; 23192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta 24192d793d2586b620027edd5b45ff4c72a86cc7beHemant Guptaimport javax.obex.ClientSession; 25192d793d2586b620027edd5b45ff4c72a86cc7beHemant Guptaimport javax.obex.HeaderSet; 26192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta 27192d793d2586b620027edd5b45ff4c72a86cc7beHemant Guptafinal class BluetoothMasRequestGetFolderListing extends BluetoothMasRequest { 28192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta 29192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta private static final String TYPE = "x-obex/folder-listing"; 30192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta 31192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta private BluetoothMapFolderListing mResponse = null; 32192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta 33192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta public BluetoothMasRequestGetFolderListing(int maxListCount, int listStartOffset) { 34192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta 35192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta if (maxListCount < 0 || maxListCount > 65535) { 36192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta throw new IllegalArgumentException("maxListCount should be [0..65535]"); 37192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta } 38192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta 39192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta if (listStartOffset < 0 || listStartOffset > 65535) { 40192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta throw new IllegalArgumentException("listStartOffset should be [0..65535]"); 41192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta } 42192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta 43192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta mHeaderSet.setHeader(HeaderSet.TYPE, TYPE); 44192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta 45192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta ObexAppParameters oap = new ObexAppParameters(); 464231be1e03b7c5e563fea1fa7c56abfe2a1e61ddHemant Gupta // Allow GetFolderListing for maxListCount value 0 also. 474231be1e03b7c5e563fea1fa7c56abfe2a1e61ddHemant Gupta if (maxListCount >= 0) { 48192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta oap.add(OAP_TAGID_MAX_LIST_COUNT, (short) maxListCount); 49192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta } 50192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta 51192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta if (listStartOffset > 0) { 52192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta oap.add(OAP_TAGID_START_OFFSET, (short) listStartOffset); 53192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta } 54192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta 55192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta oap.addToHeaderSet(mHeaderSet); 56192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta } 57192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta 58192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta @Override 59192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta protected void readResponse(InputStream stream) { 60192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta mResponse = new BluetoothMapFolderListing(stream); 61192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta } 62192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta 63192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta public ArrayList<String> getList() { 64192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta if (mResponse == null) { 65192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta return null; 66192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta } 67192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta 68192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta return mResponse.getList(); 69192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta } 70192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta 71192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta @Override 72192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta public void execute(ClientSession session) throws IOException { 73192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta executeGet(session); 74192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta } 75192d793d2586b620027edd5b45ff4c72a86cc7beHemant Gupta} 76