macro_rules! define_command {
($name:ident, Read, $kind:expr, $number:expr, $I:ty, $O:ty) => { ... };
($name:ident, Write, $kind:expr, $number:expr, $I:ty, $O:ty) => { ... };
($name:ident, $direction:expr, $kind:expr, $number:expr, $I:ty, $O:ty) => { ... };
}