2022-10-25 00:21:40 +00:00
|
|
|
//---------------------------------------------------------------------------
|
|
|
|
//
|
|
|
|
// 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"
|
2022-10-25 00:21:40 +00:00
|
|
|
#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-10-25 00:21:40 +00:00
|
|
|
{
|
2022-11-07 01:51:42 +00:00
|
|
|
unique_ptr<GPIOBUS> return_ptr;
|
2022-10-25 00:21:40 +00:00
|
|
|
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()) {
|
2022-10-25 00:21:40 +00:00
|
|
|
LOGTRACE("Creating GPIOBUS_Raspberry")
|
2022-11-07 01:51:42 +00:00
|
|
|
return_ptr = make_unique<GPIOBUS_Raspberry>();
|
2022-10-25 00:21:40 +00:00
|
|
|
}
|
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;
|
2022-10-25 00:21:40 +00:00
|
|
|
}
|