* Merged FileSupport into Disk
* Improved code granularity
* Made classes previously directly writing to cout testable
* Added numerous unit tests
* Fixed minor issues uncovered by unit tests
* Fixed SonarCloud issues
* Replaced remaining proprietary data types (WORD/DWORD) except for files in hal/
* Moved rasctl/rascsi core code to folders
* Improved granularity in order to add more unit tests
* Pointer handling update
* Updated ID and controller handling
* Updated memory management
* Added unit tests
* Fixed SonarCloud issues
* Removed static/global variable
* No need for ControllerManager as a singleton
* Updated factory handling
* Replaced loops
* Added const
* Added translations, fixed TODO, simplified operation creation
* Fixed SonarCloud warnings
* Replaced void * by BYTE *
* Added explicit mode_page_datetime struct
* Unit test updates
* Use enum classes
* Upddated file size check
* Use C++ output formatting
* Removed unused code
* Use array for garbage buffer
* Fixed data returned by READ CAPACITY(10)
* For mode pages: Replaced BYTE by std::byte
* Use std::byte for INQUIRY
* Use std::byte for REQUEST SENSE
* Replaced C array by vector
* Replaced C style array
* Replaced BYTE by std::byte
* Replaced DWORD
* Use more byte arreys
* Updated CTapDriver initialization/deletion
* Made status uint32_t instead of DWORD
* Replaced command byte array by vector
* Updated error handling
* Removed obsolete casts
* Improved locality of code
* rw_command has become obsolete
* Dynamically allocate command byte buffer
* Simplified receiving commands
* Use references
* Type safety update, dispatcher update
* Removed macros, replaced BOOL/FALSE/TRUE
- Memory management updates, more fixed Sonar issues
* Replaced macros, fixed other sonar issues
* Added const, replaced enum with a single value by constant
* Updated object initializations
* Fixed potential strncpy overflow reported by gcc 8.3
Summary ov most important changes triggered by the SASI code removal:
- Removed the SASI controller code
- New controller management. There is a new controller base class AbstractController and a class ControllerManager managing the controller lifecycle. The lifecycle management was removed from rasci.cpp and is covered by unit tests.
- New device management. The DeviceFactory manages the device lifecycle instead of rascsi.cpp. The new code is covered by unit tests.
- The lifecycle managment uses C++ collections with variable size instead of arrays with hard-coded sizes.
- The ScsiController method contains most of what was previously contained in scsidev_ctrl.cpp plus the code from sasidev_ctrl.cpp that was relevant for SCSI.
- scsi_command_util contains helper methods used for identical SCSI command implementations of more than one device
- Devices know their controllers, so that the controller instance does not need to be passed to each SCSI command. This change helps to decouple the devices from the controller. The phase_handler interface is also part of this decoupling.
- Use scsi_command_exception for propagating SCSI command execution errors, This resolves issues with the previous error handling, which was based on return values and often on magic numbers.
- Removed legacy SCSI error codes, all errors are now encoded by sense_key::, asc:: and status::.
- Fixed various warnings reported with -Wextra, -Weffc++ and -Wpedantic.
- Use constructor member initialization lists (recommended for ISO C++)
- Consistently use new/delete instead of malloc/free (recommended for ISO C++), resulting in better type safety and error handling
- Replaced variable sized arrays on the stack (violates ISO C++ and can cause a stack overflow)
- Replaced NULL by nullptr (recommended for C++), resulting in better type safety
- Use more const member functions in order to avoid side effects
- The format device page can now also be changed for hard disk drives (Fujitsu M2624S supports this, for instance), not just for MOs.
- Better encapsulation, updated access specifiers in many places
- Removed unused methods and method arguments
- Fixed a number of TODOs
- Added/updated unit tests for a lot of non-legacy classes
- Makefile support for creating HTML coverage reports with lcov/genhtml
* Initial dummy test
* Makefile update
* Make protected method visible
* Test update
* Test update
* Updated mode page device
* Only build tests with explicit test target
* make test builds and executes tests
* Replaced constant
* Added TODO
* Merged develop
* Added unit test
* Comment update
* Unit test update
* Added tests
* Added tests
* Test cleanup
* Updated error handling
* Reverted MODE SENSE change
* Reverted last change
* Use GoogleMock
* Comment update
* Signature update
* Cleanup
* Cleanup
* Further cleanup
* Removed obsolete comment
* Updated error handling
* Cleanup
* Added TODO
* Added test
* Added test
* Renaming
* Added test
* Cleanup
* Header update
* Added two tests
* Renaming
* Fixed test argument order
* Namespaces are needed in order to avoid name clashes
* Added test
* Added tests
* Added tests
* Added tests
* Added tests
* Updated host services test
* Merge with develop
* Moved code
* Renaming
* Added tests
* Added tests
* Initial device tests
* Test cleanup
* Added test
* Removed cast
* RASCSI_TEST target has to depend on SRC_PROTOBUF
* Fixed opcode
* Fixed segfault
* Re-added 0x06 as additional SASI FORMAT opcode
* Added support of SASI drives with 512 bytes
* SASI LUN must always be taken from CDB and must be 0 or 1
* Fixed typo
* Fixed one more SASI segfault
* Removed duplicate code
* Updated error handling
* Updated error handling
* Logging update
* Added enum value for SPC-6
* Comment update
* Added support for SASI Inquiry
* Updated SASI LUN check
* Updated SASI LUN handling
* Comment update
* Revert "Comment update"
This reverts commit c6adbde25c.
* Updated logging
* Implemented SASI READ CAPACITY
* Validate SASI block count
* Do not support ICD semantics for SASI drives
* SASI READ CAPACITY is a group 1 command with 10 bytes
* Comment update
* Use vector for INQUIRY data, Inquiry() is const, moved EVPD check
* Moved code
* Fixed warning
* Updated memcpy
* Set length
* Limit result vector size
* Limit result buffer size
* Inquiry() result buffer handling update
* Logging update
* Inquiry cleanup
* NEC drive can also use PrimaryDevice::Inquiry()
* NEC drive is never removable
* Comment update
* Bridge can also use PrimaryDevice::Inquiry()
* Removed unused method argument
* Comment update
* Updated comment
* Updated REQUEST SENSE buffer handling
* Fixed typo
* Fixed typo
* Re-added comment
* Updated additional length handling
* Check for INQUIRY command support first
* Added assertion
* Size handling update
* Renaming
* Renaming
* Removed obsolete casts
* Cleanup
* Moved error codes to scsi_defs namespace
* Fixed ReadDefectData10
* Comment update
* Updated buffer handling
* Data type update
* SendDiagnostic is now const
* Removed obsolete forward declaration
* removed unused enum
* Reduced method visibility
* Renaming
* GetSendDelay() can be const
* Made method const
* Made method const
* Added TODO
* Use iterator
* Made method const
* Revert "Made method const"
This reverts commit 38412b8ddd.
* No need to sort all set/maps
* Do not sort all sets
* Removed more unnecessary sorting
* Cleaned up includes
* More include cleanups
* Updated REPORT LUNS
* LUNs must not be consecutive anymore
* Updated detaching of LUN
* Improvements for devices without LUN 0
* Assume LUN 0 is always present
* Enforce presence of LUN 0
* Updated error handling