1
//=========================================================
4
// $Id: midiserial.h,v 1.2 2001/11/20 15:19:32 muse Exp $
5
// (C) Copyright 2000 Werner Schweer (ws@seh.de)
6
//=========================================================
8
#ifndef __MIDISERIAL_H__
9
#define __MIDISERIAL_H__
12
#include "midirawdev.h"
14
enum SerialType { RAW_DEVICE, SERIAL_PORT };
16
//---------------------------------------------------------
18
//---------------------------------------------------------
24
int _speed; // serial baud rate
26
int _vports; // virtual ports
30
int curPort; // current virtual port
33
SerialDevice(const QString&, SerialType, int s=B38400, int vd = 1);
37
const QString name() const { return _name; }
38
const QString path() const { return _path; }
39
SerialType type() const { return _type; }
40
int speed() const { return _speed; }
41
int handshaking() const { return _handshaking; }
42
int vports() const { return _vports; }
43
void setName(const QString& s) { _name = s; }
44
void setPath(const QString& s) { _path = s; }
45
void setType(SerialType t) { _type = t; }
46
void setSpeed(int v) { _speed = v; }
47
void setHandshaking(int v) { _handshaking = v; }
48
void setVports(int v);
51
const QString open(int);
53
int read(int, unsigned char*, int);
54
int write(int, const unsigned char*, int);
55
int fd() const { return _fd; }
56
bool busy() { return refs != 0; }
59
typedef std::list<SerialDevice*> SerialDeviceList;
60
typedef std::list<SerialDevice*>::iterator iSerialDevice;
62
//---------------------------------------------------------
64
//---------------------------------------------------------
66
class MidiSerialDevice : public MidiRawDevice {
71
virtual int read(unsigned char*p, int n) {
72
return dev->read(vdev, p, n);
74
virtual int write(const unsigned char* p, int n) {
75
return dev->write(vdev, p, n);
78
MidiSerialDevice(SerialDevice* dev, int vd, const QString& name);
80
virtual QString open(int) { return dev->open(vdev); }
81
virtual void close() { dev->close(vdev); }
82
virtual int selectRfd() { return dev->fd(); }
83
virtual int selectWfd() { return dev->fd(); }
86
extern SerialDeviceList serialDevices;
91
extern void writeSerialPorts(int, Xml&);
92
extern void readSerialPort(Xml&);
93
extern bool deleteSerialDevice(const QString& path);