/* Copyright 2012, Sebastian Reichel * * Permission to use, copy, modify, and/or distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ public errordomain SerialError { IO_ERROR, ERRNO, } public class SerialDevice : Device { private int fd; public void setup(string device) throws SerialError { fd = Posix.open(device, Posix.O_RDWR); if(fd < 0) throw new SerialError.IO_ERROR("Could not open device!"); /* TODO */ } ~I2CDevice() { Posix.close(fd); } protected ssize_t read(void *buf, size_t count) { return Posix.read(fd, buf, count); } protected ssize_t write(void *buf, size_t count) { ssize_t size = Posix.write(fd, buf, count); return size; } }