blob: c6429ffb331d38f4d292e9a0e3b3c90952e42f63 [file] [log] [blame]
// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// Use the <code>chrome.serial</code> API to read from and write to a device
// connected to a serial port.
namespace serial {
callback GetPortsCallback = void (DOMString[] ports);
enum DataBit { sevenbit, eightbit };
enum ParityBit { noparity, oddparity, evenparity };
enum StopBit { onestopbit, twostopbit };
dictionary OpenOptions {
// The requested bitrate of the connection to be opened. For compatibility
// with the widest range of hardware, this number should match one of
// commonly-available bitrates, such as 110, 300, 1200, 2400, 4800, 9600,
// 14400, 19200, 38400, 57600, 115200. There is no guarantee, of course,
// that the device connected to the serial port will support the requested
// bitrate, even if the port itself supports that bitrate. <code>9600</code>
// will be passed by default.
long? bitrate;
// <code>"eightbit"</code> will be passed by default.
DataBit? dataBit;
// <code>"noparity"</code> will be passed by default.
ParityBit? parityBit;
// <code>"onestopbit"</code> will be passed by default.
StopBit? stopBit;
};
dictionary OpenInfo {
// The id of the opened connection.
long connectionId;
};
callback OpenCallback = void (OpenInfo openInfo);
// Returns true if operation was successful.
callback CloseCallback = void (boolean result);
dictionary ReadInfo {
// The number of bytes received, or a negative number if an error occurred.
// This number will be smaller than the number of bytes requested in the
// original read call if the call would need to block to read that number
// of bytes.
long bytesRead;
// The data received.
ArrayBuffer data;
};
callback ReadCallback = void (ReadInfo readInfo);
dictionary WriteInfo {
// The number of bytes written.
long bytesWritten;
};
callback WriteCallback = void (WriteInfo writeInfo);
// Returns true if operation was successful.
callback FlushCallback = void (boolean result);
// Boolean true = mark signal (negative serial voltage).
// Boolean false = space signal (positive serial voltage).
//
// For SetControlSignals, include the sendable signals that you wish to
// change. Signals not included in the dictionary will be left unchanged.
//
// GetControlSignals includes all receivable signals.
dictionary ControlSignalOptions {
// Serial control signals that your machine can send. Missing fields will
// be set to false.
boolean? dtr;
boolean? rts;
// Serial control signals that your machine can receive. If a get operation
// fails, success will be false, and these fields will be absent.
//
// DCD (Data Carrier Detect) is equivalent to RLSD (Receive Line Signal
// Detect) on some platforms.
boolean? dcd;
boolean? cts;
};
// Returns a snapshot of current control signals.
callback GetControlSignalsCallback = void (ControlSignalOptions options);
// Returns true if operation was successful.
callback SetControlSignalsCallback = void (boolean result);
interface Functions {
// Returns names of valid ports on this machine, each of which is likely to
// be valid to pass as the port argument to open(). The list is regenerated
// each time this method is called, as port validity is dynamic.
//
// |callback| : Called with the list of ports.
static void getPorts(GetPortsCallback callback);
// Opens a connection to the given serial port.
// |port| : The name of the serial port to open.
// |options| : Connection options.
// |callback| : Called when the connection has been opened.
static void open(DOMString port,
optional OpenOptions options,
OpenCallback callback);
// Closes an open connection.
// |connectionId| : The id of the opened connection.
// |callback| : Called when the connection has been closed.
static void close(long connectionId,
CloseCallback callback);
// Reads a byte from the given connection.
// |connectionId| : The id of the connection.
// |bytesToRead| : The number of bytes to read.
// |callback| : Called when all the requested bytes have been read or
// when the read blocks.
static void read(long connectionId,
long bytesToRead,
ReadCallback callback);
// Writes a string to the given connection.
// |connectionId| : The id of the connection.
// |data| : The string to write.
// |callback| : Called when the string has been written.
static void write(long connectionId,
ArrayBuffer data,
WriteCallback callback);
// Flushes all bytes in the given connection's input and output buffers.
// |connectionId| : The id of the connection.
// |callback| : Called when the flush is complete.
static void flush(long connectionId,
FlushCallback callback);
static void getControlSignals(long connectionId,
GetControlSignalsCallback callback);
static void setControlSignals(long connectionId,
ControlSignalOptions options,
SetControlSignalsCallback callback);
};
};