blob: b51382e01ccd4bd05268d2ed2179871cacd39eca [file] [log] [blame]
Mike Lockwoodb01e8bf2011-08-29 20:11:07 -04001/*
2 * Copyright (C) 2011 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
Mike Lockwoodb01e8bf2011-08-29 20:11:07 -040017package android.hardware;
18
Jeff Sharkeyd86b8fe2017-06-02 17:36:26 -060019import android.annotation.SystemService;
Artur Satayev26958002019-12-10 17:47:52 +000020import android.compat.annotation.UnsupportedAppUsage;
Mike Lockwoodb01e8bf2011-08-29 20:11:07 -040021import android.content.Context;
Mike Lockwoodb01e8bf2011-08-29 20:11:07 -040022import android.os.ParcelFileDescriptor;
23import android.os.RemoteException;
Mike Lockwoodb01e8bf2011-08-29 20:11:07 -040024
25import java.io.IOException;
Mike Lockwoodb01e8bf2011-08-29 20:11:07 -040026
27/**
28 * @hide
29 */
Jeff Sharkeyd86b8fe2017-06-02 17:36:26 -060030@SystemService(Context.SERIAL_SERVICE)
Mike Lockwoodb01e8bf2011-08-29 20:11:07 -040031public class SerialManager {
32 private static final String TAG = "SerialManager";
33
34 private final Context mContext;
35 private final ISerialManager mService;
36
37 /**
38 * {@hide}
39 */
40 public SerialManager(Context context, ISerialManager service) {
41 mContext = context;
42 mService = service;
43 }
44
45 /**
46 * Returns a string array containing the names of available serial ports
47 *
48 * @return names of available serial ports
49 */
Mathew Inwoodbcbe4402018-08-08 15:42:59 +010050 @UnsupportedAppUsage
Mike Lockwoodb01e8bf2011-08-29 20:11:07 -040051 public String[] getSerialPorts() {
52 try {
53 return mService.getSerialPorts();
54 } catch (RemoteException e) {
Jeff Sharkeyc53962d2016-03-01 19:27:23 -070055 throw e.rethrowFromSystemServer();
Mike Lockwoodb01e8bf2011-08-29 20:11:07 -040056 }
57 }
58
59 /**
60 * Opens and returns the {@link android.hardware.SerialPort} with the given name.
61 * The speed of the serial port must be one of:
62 * 50, 75, 110, 134, 150, 200, 300, 600, 1200, 1800, 2400, 4800, 9600,
63 * 19200, 38400, 57600, 115200, 230400, 460800, 500000, 576000, 921600, 1000000, 1152000,
64 * 1500000, 2000000, 2500000, 3000000, 3500000 or 4000000
65 *
66 * @param name of the serial port
67 * @param speed at which to open the serial port
68 * @return the serial port
69 */
Mathew Inwoodbcbe4402018-08-08 15:42:59 +010070 @UnsupportedAppUsage
Mike Lockwoodb01e8bf2011-08-29 20:11:07 -040071 public SerialPort openSerialPort(String name, int speed) throws IOException {
72 try {
73 ParcelFileDescriptor pfd = mService.openSerialPort(name);
74 if (pfd != null) {
75 SerialPort port = new SerialPort(name);
76 port.open(pfd, speed);
77 return port;
78 } else {
79 throw new IOException("Could not open serial port " + name);
80 }
81 } catch (RemoteException e) {
Jeff Sharkeyc53962d2016-03-01 19:27:23 -070082 throw e.rethrowFromSystemServer();
Mike Lockwoodb01e8bf2011-08-29 20:11:07 -040083 }
Mike Lockwoodb01e8bf2011-08-29 20:11:07 -040084 }
85}