//--------------------------------------------------------------------------- // // SCSI Target Emulator RaSCSI Reloaded // for Raspberry Pi // // Copyright (C) 2022 akuker // [ GPIO bus factory ] // //--------------------------------------------------------------------------- #include #include "hal/gpiobus_allwinner.h" #include "hal/gpiobus_factory.h" #include "hal/gpiobus_raspberry.h" #include "hal/gpiobus_virtual.h" #include "hal/sbc_version.h" #include "log.h" using namespace std; unique_ptr GPIOBUS_Factory::Create(BUS::mode_e mode, board_type::rascsi_board_type_e board) { unique_ptr return_ptr; if (SBC_Version::IsBananaPi()) { LOGTRACE("Creating GPIOBUS_Allwinner") return_ptr = make_unique(); } else if (SBC_Version::IsRaspberryPi()) { LOGTRACE("Creating GPIOBUS_Raspberry") return_ptr = make_unique(); } else { LOGINFO("Creating Virtual GPIOBUS"); return_ptr = make_unique(); } return_ptr->Init(mode, board); return_ptr->Reset(); return return_ptr; }