Controlling the SPIDR4 module

Introduction

The SPIDR4 has a programming interface (API) which uses gRPC. This API is public and allows a DAQ implementer to control the SPIDR4 board from various languages such as C++, Java, Python and others. See https://grpc.io/ for a list of supported languages, and note that there are also additional 3rd party implementations of gRPC. The communication protocol is based on http2, and the messages are encoded using protocol buffers.

The gRPC interfaces of the SPIDR4 project are published in https://spidr4.nikhef.nl/releases/spidr4proto.tar.gz.

The following definition files are used to control the SPIDR4 module:
  • common.proto - This contains commonly used types (messages).

  • control.proto - Generic control of the SPIDR4, chip agnostic data stream configuration.

  • peripherals.proto - Sensor readout/actuator control framework. Can be used to, for example, the temperature of the carrier board.

  • pixelchip.proto - Contains high- and low-level interfacing of pixelchips. For now this is only timepix4.

In addition there are two other protobuf definitions:
  • daq.proto - Control the SPIDR4 sdaqs server (in the daq project). The sdaqs server is a high-performance DAQ server for the SPIDR4, storing or forwarding Timepix/Medipix DAQ data.

  • spidr4-tlu.proto - Control the SPIDR4 trigger logic unit (TLU). A hardware module to synchronize multiple SPIDR4/SPIDR3 boards.

Please see the gprc reference for interface documentation.

Getting started interfacing to the SPIDR4

The simplest way to get started is using the spidr4py distribution under Python. It can be downloaded from https://spidr4.nikhef.nl/releases/spidr4py and installed using pip3.

If you want to do it yourself, in your language of choice the public protobuf interface definition files are located in the spidr4/shared repository.