894 |
894 |
895 @prototype |
895 @prototype |
896 */ |
896 */ |
897 class TDmaAsymSgChannel : public TDmaChannel |
897 class TDmaAsymSgChannel : public TDmaChannel |
898 { |
898 { |
|
899 public: |
|
900 TDmaAsymSgChannel(); |
|
901 |
899 private: |
902 private: |
900 virtual void DoQueue(const DDmaRequest& aReq); |
903 virtual void DoQueue(const DDmaRequest& aReq); |
901 virtual void DoCancelAll(); |
904 virtual void DoCancelAll(); |
902 virtual void DoUnlink(SDmaDesHdr& aHdr); |
905 virtual void DoUnlink(SDmaDesHdr& aHdr); |
903 virtual void DoDfc(const DDmaRequest& aCurReq, SDmaDesHdr*& aSrcCompletedHdr, |
906 virtual void DoDfc(const DDmaRequest& aCurReq, SDmaDesHdr*& aSrcCompletedHdr, |
904 SDmaDesHdr*& aDstCompletedHdr); |
907 SDmaDesHdr*& aDstCompletedHdr); |
|
908 virtual void SetNullPtr(const DDmaRequest& aReq); |
|
909 virtual void ResetNullPtr(); |
905 |
910 |
906 protected: |
911 protected: |
907 SDmaDesHdr* iSrcCurHdr; // source fragment being transferred or NULL |
912 SDmaDesHdr* iSrcCurHdr; // source fragment being transferred or NULL |
908 SDmaDesHdr** iSrcNullPtr; // Pointer to NULL pointer following last source fragment |
913 SDmaDesHdr** iSrcNullPtr; // Pointer to NULL pointer following last source fragment |
909 SDmaDesHdr* iDstCurHdr; // destination fragment being transferred or NULL |
914 SDmaDesHdr* iDstCurHdr; // destination fragment being transferred or NULL |
910 SDmaDesHdr** iDstNullPtr; // Pointer to NULL pointer following last destination fragment |
915 SDmaDesHdr** iDstNullPtr; // Pointer to NULL pointer following last destination fragment |
911 enum {EIdle = 0, ETransferring} iState; |
916 enum {EIdle = 0, ETransferring} iState; |
|
917 |
|
918 __DMA_DECLARE_VIRTUAL_INVARIANT |
912 }; |
919 }; |
913 |
920 |
914 |
921 |
915 ////////////////////////////////////////////////////////////////////////////// |
922 ////////////////////////////////////////////////////////////////////////////// |
916 |
923 |