#ifndef __ieee1394_h__ #define __ieee1394_h__ #include "type.h" #define tCode(id) /**/ struct Ieee1394 { struct PacketTransmit { RelativeField tCode; RelativeField rt; RelativeField tLabel; RelativeField speed; RelativeField srcBusId; }; struct PacketTransmitPhy: public PacketTransmit { RelativeRef quadlets; /* 2 */ U32 buf[3]; }; struct PacketTransmitRequest:public PacketTransmit { RelativeField dstOffsetHi; RelativeField dstBusId; RelativeField dstOffsetLo; }; struct PacketTransmitResponse:public PacketTransmit { RelativeField rCode; RelativeField dstBusId; }; struct PacketReceive { RelativeField reserve; RelativeField tCode; RelativeField rt; RelativeField tLabel; RelativeField dstBusId; }; struct PacketReceivePhy: public PacketReceive { tCode(0xe); RelativeRef quadlets; /* 2 */ U32 buf[3]; }; struct PacketReceiveRequest:public PacketReceive { RelativeField dstOffsetHi; RelativeField srcBusId; RelativeField dstOffsetLo; }; struct PacketReceiveResponse:public PacketReceive { RelativeField rCode; RelativeField srcBusId; }; struct PacketReceiveTail { RelativeField timeStamp; RelativeField xferStatus; }; struct Lock { RelativeField extendedTCode; }; struct NoData { U32 buf[3]; }; struct Quadlet { U32 buf[3]; U32 data; }; struct BlockNoData { RelativeField dataLength; U32 buf[4]; }; struct Block { RelativeField dataLength; U32 buf[4]; U32 datas[0]; }; // on cause struct QuadletReadRequestTransmit :public PacketTransmitRequest,NoData { }; struct QuadletReadResponseReceive :public PacketReceiveResponse,Quadlet { tCode(0x6); }; struct QuadletWriteRequestTransmit :public PacketTransmitRequest,Quadlet { }; struct QuadletWriteResponseReceive :public PacketReceiveResponse,NoData { tCode(0x2); }; struct BlockReadRequestTransmit :public PacketTransmitRequest,BlockNoData { }; struct BlockReadResponseReceive :public PacketReceiveResponse,Block { tCode(0x7); }; struct BlockWriteRequestTransmit :public PacketTransmitRequest,Block { }; struct BlockWriteResponseReceive :public PacketReceiveResponse,NoData { tCode(0x2); }; struct LockRequestTransmit :public PacketTransmitRequest,Block,Lock { }; struct LockResponseReceive :public PacketReceiveResponse,Block,Lock { }; // on nous cause struct QuadletReadRequestReceive :public PacketReceiveRequest,NoData { tCode(0x4); }; struct QuadletReadResponseTransmit :public PacketTransmitResponse,Quadlet { }; struct QuadletWriteRequestReceive :public PacketReceiveRequest,Quadlet { tCode(0x0); }; struct QuadletWriteResponseTransmit :public PacketTransmitResponse,NoData { }; struct BlockReadRequestReceive :public PacketReceiveRequest,BlockNoData { tCode(0x5); }; struct BlockReadResponseTransmit :public PacketTransmitResponse,Block { }; struct BlockWriteRequestReceive :public PacketReceiveRequest,Block { tCode(0x1); }; struct BlockWriteResponseTransmit :public PacketTransmitResponse,BlockNoData { }; struct LockRequestReceive :public PacketReceiveRequest,Block,Lock { tCode(0x9); }; struct LockResponseTransmit :public PacketTransmitResponse,Block,Lock { }; }; #endif /* __ieee1394_h__ */