Dividat drivers and hardware test suites.
Nix is required for installing dependencies and providing a suitable development environment.
- Enter the nix development shell:
nix develop
- Build the driver:
make
- Run the driver:
./bin/dividat-driver
Run the test suite with: make test
.
To install a module, use go get github.com/owner/repo
.
Documentation is available at https://golang.org/ref/mod.
Normalize formatting with: make format
.
Code is formatted with gofmt
and normalized formatting is required for CI to pass.
Currently releases can only be made from Linux.
To create a release run: make release
.
A default nix shell (defined in nix/devShell.nix
) provides all necessary dependencies for building on your native system (i.e. Linux or Darwin). Running make
will create a binary that should run on your system (at least in the default environemnt).
Releases are built as statically linked binaries for windows and linux using the cross compilation toolchain provided by nix. The toolchain is provided by nix shells defined in crossBuild.nix. Building the binaries can be done by running make crossbuild
from the default shell.
Existing release targets:
- Linux: x86_64 (statically linked with musl)
- Windows: x86_64
There are also build shells for macOS binaries, but these are not hooked into make crossbuild
as currently they only work on macOS.
To build the macOS binaries:
export VERSION=$(git describe --always HEAD)
# Build for aarch64 / arm64 / Apple silicon
nix develop .\#crossBuild.darwin.aarch64 --command ./build.sh -v "$VERSION" -i src/dividat-driver/main.go -o ./bin/dividat-driver-darwin-arm64
# Build for x86_64 / amd64 / Intel
nix develop .\#crossBuild.darwin.x86_64 --command ./build.sh -v "$VERSION" -i src/dividat-driver/main.go -o ./bin/dividat-driver-darwin-amd64
To deploy a new release run: make deploy
. This can only be done if you have correctly tagged the revision and have AWS credentials set in your environment.
This application can be run as a Windows service (https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.management/new-service).
A PowerShell script is provided to download and install the latest version as a Windows service. Run it with the following command in a PowerShell.
Note: You need to run it as an administrator.
PS C:\ Set-ExecutionPolicy Bypass -Scope Process -Force; iex ((New-Object System.Net.WebClient).DownloadString('https://raw.githubusercontent.com/dividat/driver/main/install.ps1'))
Please have a look at the script before running it on your system.
To be able to connect to the driver from within a web app delivered over HTTPS, browsers need to consider the loopback address as a trustworthy origin even when not using TLS. This is the case for most modern browsers, with the exception of Safari (https://bugs.webkit.org/show_bug.cgi?id=171934).
This application supports the Private Network Access headers to help browsers decide which web apps may connect to it. The default list of permissible origins consists of Dividat's app hosts. To restrict to a single origin or whitelist other origins, add one or more --permissible-origin
parameters to the driver application.
Data from Senso can be recorded using the recorder
. Start it with make record > foo.dat
. The created recording can be used by the replayer.
Like Senso data, but with make record-flex
.
Recorded data can be replayed for debugging purposes.
For default settings: npm run replay
To replay an other recording: npm run replay -- rec/senso/simple.dat
To change the replay speed: npm run replay -- --speed=0.5 rec/senso/simple.dat
To run without looping: npm run replay -- --once
The Senso replayer will appear as a Senso network device, so both driver and replayer should be running at the same time.
The Senso Flex replayer (npm run replay-flex
) supports the same parameters as the Senso replayer. It mocks the driver with respect to the /flex
WebSocket resource, so the driver can not be running at the same time.