1 #pragma once 2 3 #include "../SifModule.h" 4 #include "../SifDefs.h" 5 #include "Iop_Module.h" 6 7 namespace Iop 8 { 9 class CSysmem; 10 11 class CSifMan : public CModule 12 { 13 public: 14 typedef std::function<void(const std::string&)> ModuleResetHandler; 15 typedef std::function<void(uint32)> CustomCommandHandler; 16 17 CSifMan(); 18 virtual ~CSifMan() = default; 19 20 void GenerateHandlers(uint8*, CSysmem&); 21 22 std::string GetId() const override; 23 std::string GetFunctionName(unsigned int) const override; 24 void Invoke(CMIPS&, unsigned int) override; 25 26 virtual void RegisterModule(uint32, CSifModule*) = 0; 27 virtual bool IsModuleRegistered(uint32) = 0; 28 virtual void UnregisterModule(uint32) = 0; 29 virtual void SendPacket(void*, uint32) = 0; 30 virtual void SetDmaBuffer(uint32, uint32) = 0; 31 virtual void SetCmdBuffer(uint32, uint32) = 0; 32 virtual void SendCallReply(uint32, const void*) = 0; 33 virtual void GetOtherData(uint32, uint32, uint32) = 0; 34 virtual void SetModuleResetHandler(const ModuleResetHandler&) = 0; 35 virtual void SetCustomCommandHandler(const CustomCommandHandler&) = 0; 36 37 virtual uint32 SifSetDma(uint32, uint32); 38 39 protected: 40 virtual uint32 SifDmaStat(uint32); 41 uint32 SifCheckInit(); 42 virtual uint32 SifSetDmaCallback(CMIPS&, uint32, uint32, uint32, uint32); 43 44 uint32 m_sifSetDmaCallbackHandlerPtr; 45 }; 46 47 typedef std::shared_ptr<CSifMan> SifManPtr; 48 } 49