/* 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 class AtmostripeMotorController : SerialDevice, MotorController { public uint8 min { get { return 0; } } public uint8 max { get { return 255; } } public void init(KeyFile cfg) throws Error { var device = cfg.get_string("AtmostripeMotorController", "device"); setup(device, 9600, 8, 1); } public bool set_single(uint8 engine, uint8 speed) { uint8[2] buf = new uint8[2]; buf[0] = engine; buf[1] = speed; if(engine > 5) return false; write(buf, 2); read(buf, 2); if(buf[0] == '.') return true; else return false; } public bool set_all(uint8 speed) { uint8[2] buf = new uint8[2]; buf[0] = 6; buf[1] = speed; write(buf, 2); read(buf, 2); if(buf[0] == '.') return true; else return false; } } public Type register_plugin(Module module) { // types are registered automatically return typeof(AtmostripeMotorController); }