RASCSI/cpp/hal/gpiobus_factory.cpp

41 lines
1.1 KiB
C++
Raw Normal View History

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