1b01e8bf57b7492b77e3445db51471edcbadda75eMike Lockwood/* 2b01e8bf57b7492b77e3445db51471edcbadda75eMike Lockwood * Copyright (C) 2011 The Android Open Source Project 3b01e8bf57b7492b77e3445db51471edcbadda75eMike Lockwood * 4b01e8bf57b7492b77e3445db51471edcbadda75eMike Lockwood * Licensed under the Apache License, Version 2.0 (the "License"); 5b01e8bf57b7492b77e3445db51471edcbadda75eMike Lockwood * you may not use this file except in compliance with the License. 6b01e8bf57b7492b77e3445db51471edcbadda75eMike Lockwood * You may obtain a copy of the License at 7b01e8bf57b7492b77e3445db51471edcbadda75eMike Lockwood * 8b01e8bf57b7492b77e3445db51471edcbadda75eMike Lockwood * http://www.apache.org/licenses/LICENSE-2.0 9b01e8bf57b7492b77e3445db51471edcbadda75eMike Lockwood * 10b01e8bf57b7492b77e3445db51471edcbadda75eMike Lockwood * Unless required by applicable law or agreed to in writing, software 11b01e8bf57b7492b77e3445db51471edcbadda75eMike Lockwood * distributed under the License is distributed on an "AS IS" BASIS, 12b01e8bf57b7492b77e3445db51471edcbadda75eMike Lockwood * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13b01e8bf57b7492b77e3445db51471edcbadda75eMike Lockwood * See the License for the specific language governing permissions and 14b01e8bf57b7492b77e3445db51471edcbadda75eMike Lockwood * limitations under the License. 15b01e8bf57b7492b77e3445db51471edcbadda75eMike Lockwood */ 16b01e8bf57b7492b77e3445db51471edcbadda75eMike Lockwood 17b01e8bf57b7492b77e3445db51471edcbadda75eMike Lockwoodpackage android.hardware; 18b01e8bf57b7492b77e3445db51471edcbadda75eMike Lockwood 19d86b8fea43ebb6e5c31691b44d8ceb0d8d3c9072Jeff Sharkeyimport android.annotation.SystemService; 20b01e8bf57b7492b77e3445db51471edcbadda75eMike Lockwoodimport android.content.Context; 21b01e8bf57b7492b77e3445db51471edcbadda75eMike Lockwoodimport android.os.ParcelFileDescriptor; 22b01e8bf57b7492b77e3445db51471edcbadda75eMike Lockwoodimport android.os.RemoteException; 23b01e8bf57b7492b77e3445db51471edcbadda75eMike Lockwood 24b01e8bf57b7492b77e3445db51471edcbadda75eMike Lockwoodimport java.io.IOException; 25b01e8bf57b7492b77e3445db51471edcbadda75eMike Lockwood 26b01e8bf57b7492b77e3445db51471edcbadda75eMike Lockwood/** 27b01e8bf57b7492b77e3445db51471edcbadda75eMike Lockwood * @hide 28b01e8bf57b7492b77e3445db51471edcbadda75eMike Lockwood */ 29d86b8fea43ebb6e5c31691b44d8ceb0d8d3c9072Jeff Sharkey@SystemService(Context.SERIAL_SERVICE) 30b01e8bf57b7492b77e3445db51471edcbadda75eMike Lockwoodpublic class SerialManager { 31b01e8bf57b7492b77e3445db51471edcbadda75eMike Lockwood private static final String TAG = "SerialManager"; 32b01e8bf57b7492b77e3445db51471edcbadda75eMike Lockwood 33b01e8bf57b7492b77e3445db51471edcbadda75eMike Lockwood private final Context mContext; 34b01e8bf57b7492b77e3445db51471edcbadda75eMike Lockwood private final ISerialManager mService; 35b01e8bf57b7492b77e3445db51471edcbadda75eMike Lockwood 36b01e8bf57b7492b77e3445db51471edcbadda75eMike Lockwood /** 37b01e8bf57b7492b77e3445db51471edcbadda75eMike Lockwood * {@hide} 38b01e8bf57b7492b77e3445db51471edcbadda75eMike Lockwood */ 39b01e8bf57b7492b77e3445db51471edcbadda75eMike Lockwood public SerialManager(Context context, ISerialManager service) { 40b01e8bf57b7492b77e3445db51471edcbadda75eMike Lockwood mContext = context; 41b01e8bf57b7492b77e3445db51471edcbadda75eMike Lockwood mService = service; 42b01e8bf57b7492b77e3445db51471edcbadda75eMike Lockwood } 43b01e8bf57b7492b77e3445db51471edcbadda75eMike Lockwood 44b01e8bf57b7492b77e3445db51471edcbadda75eMike Lockwood /** 45b01e8bf57b7492b77e3445db51471edcbadda75eMike Lockwood * Returns a string array containing the names of available serial ports 46b01e8bf57b7492b77e3445db51471edcbadda75eMike Lockwood * 47b01e8bf57b7492b77e3445db51471edcbadda75eMike Lockwood * @return names of available serial ports 48b01e8bf57b7492b77e3445db51471edcbadda75eMike Lockwood */ 49b01e8bf57b7492b77e3445db51471edcbadda75eMike Lockwood public String[] getSerialPorts() { 50b01e8bf57b7492b77e3445db51471edcbadda75eMike Lockwood try { 51b01e8bf57b7492b77e3445db51471edcbadda75eMike Lockwood return mService.getSerialPorts(); 52b01e8bf57b7492b77e3445db51471edcbadda75eMike Lockwood } catch (RemoteException e) { 53c53962d4ede82a03b62f0c8bb86bd0da090a15ebJeff Sharkey throw e.rethrowFromSystemServer(); 54b01e8bf57b7492b77e3445db51471edcbadda75eMike Lockwood } 55b01e8bf57b7492b77e3445db51471edcbadda75eMike Lockwood } 56b01e8bf57b7492b77e3445db51471edcbadda75eMike Lockwood 57b01e8bf57b7492b77e3445db51471edcbadda75eMike Lockwood /** 58b01e8bf57b7492b77e3445db51471edcbadda75eMike Lockwood * Opens and returns the {@link android.hardware.SerialPort} with the given name. 59b01e8bf57b7492b77e3445db51471edcbadda75eMike Lockwood * The speed of the serial port must be one of: 60b01e8bf57b7492b77e3445db51471edcbadda75eMike Lockwood * 50, 75, 110, 134, 150, 200, 300, 600, 1200, 1800, 2400, 4800, 9600, 61b01e8bf57b7492b77e3445db51471edcbadda75eMike Lockwood * 19200, 38400, 57600, 115200, 230400, 460800, 500000, 576000, 921600, 1000000, 1152000, 62b01e8bf57b7492b77e3445db51471edcbadda75eMike Lockwood * 1500000, 2000000, 2500000, 3000000, 3500000 or 4000000 63b01e8bf57b7492b77e3445db51471edcbadda75eMike Lockwood * 64b01e8bf57b7492b77e3445db51471edcbadda75eMike Lockwood * @param name of the serial port 65b01e8bf57b7492b77e3445db51471edcbadda75eMike Lockwood * @param speed at which to open the serial port 66b01e8bf57b7492b77e3445db51471edcbadda75eMike Lockwood * @return the serial port 67b01e8bf57b7492b77e3445db51471edcbadda75eMike Lockwood */ 68b01e8bf57b7492b77e3445db51471edcbadda75eMike Lockwood public SerialPort openSerialPort(String name, int speed) throws IOException { 69b01e8bf57b7492b77e3445db51471edcbadda75eMike Lockwood try { 70b01e8bf57b7492b77e3445db51471edcbadda75eMike Lockwood ParcelFileDescriptor pfd = mService.openSerialPort(name); 71b01e8bf57b7492b77e3445db51471edcbadda75eMike Lockwood if (pfd != null) { 72b01e8bf57b7492b77e3445db51471edcbadda75eMike Lockwood SerialPort port = new SerialPort(name); 73b01e8bf57b7492b77e3445db51471edcbadda75eMike Lockwood port.open(pfd, speed); 74b01e8bf57b7492b77e3445db51471edcbadda75eMike Lockwood return port; 75b01e8bf57b7492b77e3445db51471edcbadda75eMike Lockwood } else { 76b01e8bf57b7492b77e3445db51471edcbadda75eMike Lockwood throw new IOException("Could not open serial port " + name); 77b01e8bf57b7492b77e3445db51471edcbadda75eMike Lockwood } 78b01e8bf57b7492b77e3445db51471edcbadda75eMike Lockwood } catch (RemoteException e) { 79c53962d4ede82a03b62f0c8bb86bd0da090a15ebJeff Sharkey throw e.rethrowFromSystemServer(); 80b01e8bf57b7492b77e3445db51471edcbadda75eMike Lockwood } 81b01e8bf57b7492b77e3445db51471edcbadda75eMike Lockwood } 82b01e8bf57b7492b77e3445db51471edcbadda75eMike Lockwood} 83