USB Port transport add-on contributed by Andreas Benzler

git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3739 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Michael Pfeiffer 2003-06-29 18:43:10 +00:00
parent 78ed38a8a8
commit cca5b73672
2 changed files with 115 additions and 0 deletions

View File

@ -0,0 +1,12 @@
SubDir OBOS_TOP src add-ons print transports usb_port ;
SubDirHdrs [ FDirName $(OBOS_TOP) src add-ons print transports shared ] ;
UsePrivateHeaders interface print ;
Addon USB\ Port : print transport :
print_transport.cpp
;
LinkSharedOSLibs USB\ Port : be libtransportaddon.a ;

View File

@ -0,0 +1,103 @@
/*****************************************************************************/
// Usb port transport add-on,
// changes by Andreas Benzler
//
// Original from Parallel
// port transport add-on.
//
// Author
// Michael Pfeiffer
//
// This application and all source files used in its construction, except
// where noted, are licensed under the MIT License, and have been written
// and are:
//
// Copyright (c) 2001-2003 OpenBeOS Project
//
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the "Software"),
// to deal in the Software without restriction, including without limitation
// the rights to use, copy, modify, merge, publish, distribute, sublicense,
// and/or sell copies of the Software, and to permit persons to whom the
// Software is furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included
// in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
// DEALINGS IN THE SOFTWARE.
/*****************************************************************************/
#include <unistd.h>
#include <stdio.h>
#include <StorageKit.h>
#include <SupportKit.h>
#include "TransportAddOn.h"
class UsbPort : public BDataIO {
public:
UsbPort(BDirectory* printer, BMessage* msg);
~UsbPort();
bool IsOk() { return fFile > -1; }
ssize_t Read(void* buffer, size_t size);
ssize_t Write(const void* buffer, size_t size);
private:
int fFile;
};
// Implementation of transport add-on interface
BDataIO* instanciate_transport(BDirectory* printer, BMessage* msg) {
UsbPort* transport = new UsbPort(printer, msg);
if (transport->IsOk()) {
return transport;
} else {
delete transport; return NULL;
}
}
// Implementation of UsbPort
UsbPort::UsbPort(BDirectory* printer, BMessage *msg)
: fFile(-1)
{
// We support only one USB printer, so does BeOS R5.
fFile = open("/dev/printer/usb/0", O_RDWR | O_EXCL | O_BINARY, 0);
}
UsbPort::~UsbPort()
{
if (IsOk()) {
close(fFile);
fFile = -1;
}
}
ssize_t
UsbPort::Read(void* buffer, size_t size)
{
return read(fFile, buffer, size);
}
ssize_t
UsbPort::Write(const void* buffer, size_t size)
{
return write(fFile, buffer, size);
}