1 // Copyright 2017 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #ifndef SERVICES_DEVICE_SERIAL_SERIAL_PORT_IMPL_H_
6 #define SERVICES_DEVICE_SERIAL_SERIAL_PORT_IMPL_H_
11 #include "base/macros.h"
12 #include "base/memory/ref_counted.h"
13 #include "services/device/public/mojom/serial.mojom.h"
16 class SingleThreadTaskRunner;
21 class SerialIoHandler;
23 // TODO(leonhsl): Merge this class with SerialIoHandler if/once
24 // SerialIoHandler is exposed only via the Device Service.
26 // This class must be constructed and run on IO thread.
27 class SerialPortImpl : public mojom::SerialPort {
30 const base::FilePath& path,
31 mojom::SerialPortRequest request,
32 scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner);
34 SerialPortImpl(const base::FilePath& path,
35 scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner);
36 ~SerialPortImpl() override;
39 // mojom::SerialPort methods:
40 void Open(mojom::SerialConnectionOptionsPtr options,
41 OpenCallback callback) override;
42 void Read(uint32_t bytes, ReadCallback callback) override;
43 void Write(const std::vector<uint8_t>& data, WriteCallback callback) override;
44 void CancelRead(mojom::SerialReceiveError reason) override;
45 void CancelWrite(mojom::SerialSendError reason) override;
46 void Flush(FlushCallback callback) override;
47 void GetControlSignals(GetControlSignalsCallback callback) override;
48 void SetControlSignals(mojom::SerialHostControlSignalsPtr signals,
49 SetControlSignalsCallback callback) override;
50 void ConfigurePort(mojom::SerialConnectionOptionsPtr options,
51 ConfigurePortCallback callback) override;
52 void GetPortInfo(GetPortInfoCallback callback) override;
53 void SetBreak(SetBreakCallback callback) override;
54 void ClearBreak(ClearBreakCallback callback) override;
56 scoped_refptr<SerialIoHandler> io_handler_;
58 DISALLOW_COPY_AND_ASSIGN(SerialPortImpl);
63 #endif // SERVICES_DEVICE_SERIAL_SERIAL_PORT_IMPL_H_