Skip to content

Commit

Permalink
Release 3.4
Browse files Browse the repository at this point in the history
  • Loading branch information
uweseimet committed Jul 6, 2024
1 parent 304511d commit a08595c
Show file tree
Hide file tree
Showing 18 changed files with 34 additions and 309 deletions.
6 changes: 3 additions & 3 deletions .github/workflows/analyze.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ jobs:
SCAN_HOST: ${{ secrets.SCAN_HOST }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
SONAR_SCANNER_VERSION: 6.0.0.4432
SONAR_SCANNER_VERSION: 6.1.0.4477
BUILD_WRAPPER_OUT_DIR: "$HOME/.build_wrapper_out"
APT_PACKAGES: protobuf-compiler libspdlog-dev libpcap-dev libgmock-dev

Expand All @@ -41,7 +41,7 @@ jobs:
mkdir -p $HOME/.sonar
curl -sSLo /tmp/wrapper.zip $SONAR_SERVER_URL/static/cpp/build-wrapper-linux-x86.zip
unzip -o /tmp/wrapper.zip -d $HOME/.sonar/
curl -sSLo /tmp/scanner.zip https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-$SONAR_SCANNER_VERSION-linux.zip
curl -sSLo /tmp/scanner.zip https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-$SONAR_SCANNER_VERSION-linux-x64.zip
unzip -o /tmp/scanner.zip -d $HOME/.sonar/
- name: Compile with coverage data
Expand All @@ -56,7 +56,7 @@ jobs:

- name: Run sonar-scanner
run: |
$HOME/.sonar/sonar-scanner-$SONAR_SCANNER_VERSION-linux/bin/sonar-scanner \
$HOME/.sonar/sonar-scanner-$SONAR_SCANNER_VERSION-linux-x64/bin/sonar-scanner \
--define sonar.host.url=$SONAR_SERVER_URL \
--define sonar.projectKey=$SONAR_PROJECT_KEY \
--define sonar.organization=$SONAR_ORGANIZATION \
Expand Down
18 changes: 7 additions & 11 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,21 +1,17 @@
# What is SCSI2Pi?

SCSI2Pi is the advanced and more performant alternative to the <a href="https://github.com/PiSCSI/piscsi">PiSCSI software</a> for the PiSCSI/RaSCSI board. SCSI2Pi provides an improved device emulation, higher transfer rates, new tools for the board's initiator mode and <a href="https://www.scsi2pi.net/en/piscsi_comparison.html">numerous new features</a>. SCSI2Pi is compatible with the PiSCSI web UI and the <a href="https://www.scsi2pi.net/en/app.html">SCSI Control app</a>.<br />
You can switch from PiSCSI to SCSI2Pi in seconds, simply by installing a <a href="https://www.scsi2pi.net/en/downloads.html">package with the SCSI2Pi binaries</a>. No time-consuming compilation is required.<br />
SCSI2Pi is the advanced and more performant alternative to the <a href="https://github.com/PiSCSI/piscsi">PiSCSI software</a> for the PiSCSI/RaSCSI board. SCSI2Pi provides an improved device emulation, higher transfer rates, new SCSI initiator mode tools and <a href="https://www.scsi2pi.net/en/piscsi_comparison.html">numerous new features</a>. SCSI2Pi is compatible with the PiSCSI web UI and the <a href="https://www.scsi2pi.net/en/app.html">SCSI Control app</a> for Android. With SCSI2Pi the app offers an extended set of features.<br />
SCSI2Pi emulates several SCSI or SASI devices like hard drives, CD-ROM drives, printers or network adapters at the same time. You can easily add a range of devices to computers like 68k Macs, Atari ST/TT/Falcon030, Amiga, Unix workstations, samplers or other computers with SCSI port.<br />
The <a href="https://www.scsi2pi.net">SCSI2Pi website</a> addresses regular users and developers, whereas the information on GitHub is rather developer-centric. The website also provides <a href="https://www.scsi2pi.net/en/downloads.html">binary development and release packages</a> and information on the <a href="https://www.scsi2pi.net/en/app.html">SCSI Control app</a> for Android.
You can run SCSI2Pi stand-alone or eswitch from PiSCSI to SCSI2Pi in seconds, simply by installing a <a href="https://www.scsi2pi.net/en/downloads.html">package with highly optimized SCSI2Pi binaries</a>. No time-consuming compilation is required.<br />
The <a href="https://www.scsi2pi.net">SCSI2Pi website</a> addresses regular users and developers, whereas the information on GitHub is rather developer-centric.

# Who am I?

Until release 24.04.01 I was the <a href="https://www.scsi2pi.net/en/scsi2pi.html">main contributor</a> to the PiSCSI SCSI emulation. I revised the backend architecture, added a remote interface and re-engineered most of the legacy C++ code so that it uses modern C++. This resulted in more modular code and drastically improved <a href="https://sonarcloud.io/project/overview?id=uweseimet_scsi2pi">SonarQube code metrics</a>. Besides adding numerous <a href="https://www.scsi2pi.net/en/scsi2pi.html">new features</a> and improving the compatibility with many platforms, I also fixed a range of bugs and added an extensive set of unit tests.<br />
Until release 24.04.01 I was the <a href="https://www.scsi2pi.net/en/scsi2pi.html">main contributor</a> to the PiSCSI SCSI emulation. I revised the backend architecture, added a remote interface and re-engineered most of the legacy code so that it uses modern C++. This resulted in more modular code and drastically improved <a href="https://sonarcloud.io/project/overview?id=uweseimet_scsi2pi">SonarQube code metrics</a>. Besides adding numerous <a href="https://www.scsi2pi.net/en/scsi2pi.html">new features</a> and improving the compatibility with many platforms, I also fixed a range of bugs and added an extensive set of unit tests.<br />
I am also the author of the <a href="https://www.hddriver.net">HDDRIVER driver software for Atari computers</a> and the <a href="https://www.scsi2pi.net/en/app.html">SCSI Control app</a> for Android, which is the remote control for your PiSCSI/RaSCSI boards. SCSI Control supports both SCSI2Pi and PiSCSI. The full range of app features requires SCSI2Pi, though.

# How is SCSI2Pi related to PiSCSI?

In the PiSCSI project there was not much interest in replacing old, often buggy or unnecessary code, or to improve the data transfer rates. Long promised features on the roadmap and user requests in tickets were not addressed, and it took long for features or bug fixes to make it into a release. This is why I started to work on the emulation in a separate project, while staying compatible with the PiSCSI web interface. The major part of the PiSCSI C++ codebase has been contributed by me anyway.<br />
With PiSCSI there was also not much interest in further developing the SCSI emulation and exploiting the initiator mode feature of the FULLSPEC board. This mode, together with new SCSI2Pi command line tools, offers solutions for use cases that have never been addressed before. These tools also help with advanced testing, making the emulation more robust and reliable.

# SCSI2Pi goals

SCSI2Pi is not meant to completely replace the PiSCSI software, but only the device emulation and the tools. For the PiSCSI project great work is still being done on the web interface, and on supporting users in social media.<br />
There is no SCSI2Pi support for the X68000 platform, in particular not for the host bridge (SCBR) device. In PiSCSI the respective code has always been in a bad shape, and nobody has been interested in testing it. The other PiSCSI features (and many more) are supported by SCSI2Pi - most of these I implemented anyway ;-).
In the PiSCSI project there was not much interest in replacing old, often buggy or unnecessary code, or to improve the data transfer rates. Long promised features on the roadmap and user requests in tickets were not addressed, and it took long for features or bug fixes to make it into a release. This is why I started to work on the emulation in a separate project, while staying compatible with the PiSCSI web interface. The major part of the PiSCSI C++ codebase has been contributed by me anyway. SCSI2Pi is not meant to completely replace the PiSCSI software, but only the device emulation and the tools.<br />
With PiSCSI there was also not much interest in further developing the SCSI emulation and exploiting the initiator mode feature of the FULLSPEC board. This mode, together with new SCSI2Pi command line tools, offers solutions for use cases that have never been addressed before. These tools also help with advanced testing, making the emulation more robust and reliable.<br />
There is no SCSI2Pi support for the X68000 platform, in particular not for the host bridge (SCBR) device. In PiSCSI the respective code has always been in a bad shape, and nobody has been interested in testing it. The other PiSCSI features (and many more) are supported and improved by SCSI2Pi.
2 changes: 0 additions & 2 deletions cpp/base/device_factory.h
Original file line number Diff line number Diff line change
Expand Up @@ -42,8 +42,6 @@ class DeviceFactory
private:

DeviceFactory();
DeviceFactory(const DeviceFactory&) = delete;
DeviceFactory operator&(const DeviceFactory&) = delete;

static string GetExtensionLowerCase(string_view);

Expand Down
2 changes: 0 additions & 2 deletions cpp/base/property_handler.h
Original file line number Diff line number Diff line change
Expand Up @@ -65,8 +65,6 @@ class PropertyHandler
private:

PropertyHandler() = default;
PropertyHandler(const PropertyHandler&) = delete;
PropertyHandler operator&(const PropertyHandler&) = delete;

static void ParsePropertyFile(property_map&, const string&, bool);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,18 +11,23 @@
#pragma once

//
// PiSCSI/SCSI2Pi standard (SCSI logic, standard pin assignment)
// SCSI2Pi/PiSCSI standard (SCSI logic, standard pin assignment)
//

// Select signal control mode
constexpr static int SIGNAL_CONTROL_MODE = 0; // SCSI logical specification

// Control signal pin assignment (-1 means no control)
constexpr static int PIN_ACT = 4; // ACTIVE
constexpr static int PIN_ENB = 5; // ENABLE
#if defined BOARD_FULLSPEC
constexpr static int PIN_IND = 6; // INITIATOR CTRL DIRECTION
constexpr static int PIN_TAD = 7; // TARGET CTRL DIRECTION
constexpr static int PIN_DTD = 8; // DATA DIRECTION
#elif defined BOARD_STANDARD
constexpr static int PIN_IND = -1; // INITIATOR CTRL DIRECTION
constexpr static int PIN_TAD = -1; // TARGET CTRL DIRECTION
constexpr static int PIN_DTD = -1; // DATA DIRECTION
#else
#error Invalid connection type or none specified
#endif

// Control signal output logic
#define ACT_ON ON // ACTIVE SIGNAL ON
Expand Down
2 changes: 0 additions & 2 deletions cpp/buses/bus.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,6 @@

bool Bus::Init(bool mode)
{
static_assert(SIGNAL_CONTROL_MODE == 0 || SIGNAL_CONTROL_MODE == 2);

target_mode = mode;

return true;
Expand Down
36 changes: 1 addition & 35 deletions cpp/buses/bus.h
Original file line number Diff line number Diff line change
Expand Up @@ -16,41 +16,7 @@
#include <vector>
#include "shared/scsi.h"
#include "base/s2p_defs.h"

#if defined BOARD_STANDARD
#include "buses/connection_type/connection_standard.h"
#elif defined BOARD_FULLSPEC
#include "buses/connection_type/connection_fullspec.h"
#elif defined BOARD_AIBOM
#include "buses/connection_type/connection_aibom.h"
#elif defined BOARD_GAMERNIUM
#include "buses/connection_type/connection_gamernium.h"
#else
#error Invalid connection type or none specified
#endif

//---------------------------------------------------------------------------
//
// SIGNAL_CONTROL_MODE: Signal control mode selection
// You can customize the signal control logic from Version 1.22
//
// 0: SCSI logical specification
// Conversion board using 74LS641-1 etc. directly connected or published on HP
// True : 0V
// False : Open collector output (disconnect from bus)
//
// 1: Negative logic specification (when using conversion board for negative logic -> SCSI logic)
// There is no conversion board with this specification at this time
// True : 0V -> (CONVERT) -> 0V
// False : 3.3V -> (CONVERT) -> Open collector output
//
// 2: Positive logic specification (when using the conversion board for positive logic -> SCSI logic)
// PiSCSI Adapter Rev.C @132sync etc.
//
// True : 3.3V -> (CONVERT) -> 0V
// False : 0V -> (CONVERT) -> Open collector output
//
//---------------------------------------------------------------------------
#include "board.h"

//---------------------------------------------------------------------------
//
Expand Down
2 changes: 0 additions & 2 deletions cpp/buses/bus_factory.h
Original file line number Diff line number Diff line change
Expand Up @@ -39,8 +39,6 @@ class BusFactory
private:

BusFactory();
BusFactory(const BusFactory&) = delete;
BusFactory operator&(const BusFactory&) = delete;

void AddCommand(scsi_command, int, const char*);

Expand Down
52 changes: 0 additions & 52 deletions cpp/buses/connection_type/connection_aibom.h

This file was deleted.

52 changes: 0 additions & 52 deletions cpp/buses/connection_type/connection_fullspec.h

This file was deleted.

52 changes: 0 additions & 52 deletions cpp/buses/connection_type/connection_gamernium.h

This file was deleted.

2 changes: 0 additions & 2 deletions cpp/buses/in_process_bus.h
Original file line number Diff line number Diff line change
Expand Up @@ -81,8 +81,6 @@ class InProcessBus : public Bus
protected:

InProcessBus() = default;
InProcessBus(const InProcessBus&) = delete;
InProcessBus operator&(const InProcessBus&) = delete;

private:

Expand Down
Loading

0 comments on commit a08595c

Please sign in to comment.