KM3NeT CLB  2.0
KM3NeT CLB v2 Embedded Software
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
dev_transp.h

Example of a StarTrek Transporter device.

/**
* @file
*
* dev_transp.h - StarTrek transporter device
*
* Please read the manual. Incorrect configuration could cause loss of limbs.
*/
#include "dev_defs.h" ///< Defines registers and the BIT macro.
#define TRANSP_STS_HEISENBC_OK BIT(0) ///< If set, Heisenberg compensators are ok.
#define TRANSP_STS_IN_TRANSPORT BIT(1) ///< If set a transport is in progress.
#define TRANSP_STS_IS_POWERED BIT(2) ///< Transported powered
#define TRANSP_CMD_TRANSPORT BIT(0) ///< When set initiates transport
#define TRANSP_CMD_RETRIEVE BIT(1) ///< When set beams from the coordinate to the pads.
#define TRANSP_CMD_RESET BIT(2) ///< Resets the transporter. Do not set in transport!
#define TRANSP_CFG_HEISENB_MASK 0x00FF0000 ///< Heisenberg quantum tweak factors mask
#define TRANSP_CFG_HEISENB_SHIFT 24 ///< Heisenberg quantum tweak factors shift
#define TRANSP_CFG_TXPOWER_MASK 0x0000FF00 ///< Configure transporter TX power mask
#define TRANSP_CFG_TXPOWER_SHIFT 16 ///< Configure transporter TX power shift
#define TRANSP_CFG_RXPOWER_MASK 0x000000FF ///< Configure transporter RX power mask
#define TRANSP_CFG_RXPOWER_SHIFT 0 ///< Configure transporter RX power mask
#define TRANSP_CRD_MIN -30000 ///< Minimum coordinate displacement
#define TRANSP_CRD_MAX 30000 ///< Maximum coordinate displacement
/**
* Structure defines FutureDevices StarTrek transporter
*/
typedef struct
{
reg_io CRD_X; ///< X displacement coordinate in meters (signed)
reg_io CRD_Y; ///< Y displacement coordinate in meters (signed)
reg_io CRD_Z; ///< Z displacement coordinate in meters (signed)
reg_i STS; ///< Status
reg_io CFG; ///< Configure
reg_o CMD; ///< Command