/*	$OpenBSD$	*/
/*	Public domain	*/

enum cnc_device_type {
	CNC_DEVICE_ESTOP,		/* Emergency stop device */
	CNC_DEVICE_SERVO,		/* Servo motor controller */
	CNC_DEVICE_SPINDLE,		/* Machine spindle controller */
	CNC_DEVICE_ATC,			/* Automatic tool changer */
	CNC_DEVICE_LASER,		/* Laser power supply controller */
	CNC_DEVICE_PICKPLACE		/* Pick and place controller */
};

struct cnc_device {
	struct device cd_dev;
	enum cnc_device_type cd_type;
	int cd_flags;
	TAILQ_ENTRY(cnc_device) devices;
};

TAILQ_HEAD(cnc_deviceq,cnc_device);
extern struct cnc_deviceq cnc_devices;

int cnc_device_attach(void *, enum cnc_device_type);
int cnc_device_detach(void *);
int cnc_device_activate(void *);

