/** * * \file cpx.h * \brief read and write DIO * * \author Manuel Traut * \version 2006-10-06 * */ #ifndef CPX_H #define CPX_H #include #include #include #include #include #define CPX_Input "/dev/iio2" #define CPX_Input_1 "/dev/iio2_in" #define CPX_Output_1 "/dev/iio2_out" #define PORT1_OUT 0x2c00 #define PORT2_OUT 0x3c00 #define PORT3_OUT 0x4c00 #define PORT1_IN 0x5c00 #define PORT2_IN 0x6c00 #define PORT3_IN 0x7c00 # ifndef PROT_READ # define PROT_READ 0x01 # endif # ifndef PROT_WRITE # define PROT_WRITE 0x02 # endif # ifndef MAP_SHARED # define MAP_SHARED 0x01 # endif # ifndef MAP_PRIVATE # define MAP_PRIVATE 0x02 # endif // ioctl (file descriptor, CPX_DIO_IOCTL_SET_SIGNAL, irq_send_signal_param*) // enable sending signal on interrupt // cpx_dio_set_signal_param.signal = signal to be sent to process #define CPX_DIO_IOCTL_BASE 0xCD typedef struct{ int signal; /* IN parameter: LINUX signal to be sent */ int pid; /* IN parameter: process id where signal should be sent to */ }cpx_dio_set_signal_param; #define CPX_DIO_IOCTL_ADD_SIG _IOW(CPX_DIO_IOCTL_BASE, 3, cpx_dio_set_signal_param) #define CPX_DIO_IOCTL_DEL_SIG _IOW(CPX_DIO_IOCTL_BASE, 4, cpx_dio_set_signal_param) class CPX{ public: CPX(); void set(short port, short value); short get(short port); private: int init(); unsigned char *mapped_in; unsigned char *mapped_out; volatile u_char *DOUT; volatile u_char *DIN; cpx_dio_set_signal_param param; }; #endif