RASCSI/cpp/devices/interfaces/scsi_primary_commands.h
Uwe Seimet c41373d9bd
Use lambdas for dispatcher, code cleanup, test updates (#958)
* Using lambdas instead of member function pointers simplifies the command dispatching and reduces the code volume

* Removed duplicate error handling

* Fix for issue #956

* Unit test updates

* Resolved SonarQube issues
2022-11-02 15:36:19 +01:00

33 lines
800 B
C++

//---------------------------------------------------------------------------
//
// SCSI Target Emulator RaSCSI Reloaded
// for Raspberry Pi
//
// Copyright (C) 2021-2022 Uwe Seimet
//
// Interface for SCSI primary commands (see https://www.t10.org/drafts.htm, SPC-6)
//
//---------------------------------------------------------------------------
#pragma once
class ScsiPrimaryCommands
{
public:
ScsiPrimaryCommands() = default;
virtual ~ScsiPrimaryCommands() = default;
// Mandatory commands
virtual void TestUnitReady() = 0;
virtual void Inquiry() = 0;
virtual void ReportLuns() = 0;
// Optional commands implemented by all RaSCSI device types
virtual void RequestSense() = 0;
virtual void ReleaseUnit() = 0;
virtual void ReserveUnit() = 0;
virtual void SendDiagnostic() = 0;
};