dwww Home | Manual pages | Find package

TS_READ(3)                           tslib                          TS_READ(3)

NAME
       ts_read,  ts_read_raw,  ts_read_mt,  ts_read_raw_mt  - read tslib touch
       samples

SYNOPSIS
       #include <tslib.h>

       int ts_read(struct tsdev *dev, struct ts_sample *samp, int nr);

       int ts_read_raw(struct tsdev *dev, struct ts_sample *samp, int nr);

       int ts_read_mt(struct tsdev *dev, struct ts_sample_mt **samp, int slots, int nr);

       int ts_read_raw_mt(struct tsdev *dev, struct ts_sample_mt **samp, int slots, int nr);

DESCRIPTION
       ts_read() reads nr input samples with tslib's filters applied.   struct
       ts_sample is define as follows:
       struct ts_sample {
               int             x;
               int             y;
               unsigned int    pressure;
               struct timeval  tv;
       };

       ts_read_mt()  reads  nr  * slots input samples with tslib's filters ap-
       plied.  struct ts_sample_mt is defined as follows:
       struct ts_sample_mt {
               /* most recent ABS_MT_* event codes.
                * see linux/input.h for descriptions */
               int             x;
               int             y;
               unsigned int    pressure;
               int             slot;
               int             tracking_id;

               int             tool_type;
               int             tool_x;
               int             tool_y;
               unsigned int    touch_major;
               unsigned int    width_major;
               unsigned int    touch_minor;
               unsigned int    width_minor;
               int             orientation;
               int             distance;
               int             blob_id;

               struct timeval  tv;

               /* BTN_TOUCH state */
               short           pen_down;

               /* the TSLIB_MT_VALID bit is set in valid if this sample
                * contains new data;
             * valid is set to 0 otherwise */
               short           valid;
       };

       The user has to provide the amount of memory described in nr and  slots
       to hold them.

       ts_read_raw()  and  ts_read_raw_mt()  do the same thing without tslib's
       filters applied.

RETURN VALUE
       The number of actually read samples is returned. Especially when opened
       in  non-blocking mode, see ts_setup() , that can be less than requested
       in the call. On failure, a negative error number is returned.

EXAMPLE
       The following program continuously reads tslib multitouch input samples
       and  prints  slot  and position values to stdout as the touch screen is
       touched.

       #include <stdio.h>
       #include <stdlib.h>
       #include <fcntl.h>

       #include <tslib.h>

       #define READ_SAMPLES 1
       #define MAX_SLOTS 5

       int main(int argc, char **argv)
       {
               struct tsdev *ts;
               struct ts_sample_mt **samp_mt = NULL;
               int i, j;
               int ret;

               ts = ts_setup(NULL, 0);
               if (!ts)
                       return -1;

               samp_mt = malloc(READ_SAMPLES * sizeof(struct ts_sample_mt **));
               if (!samp_mt)
                       return -1;

               for (i = 0; i < READ_SAMPLES; i++) {
                       samp_mt[i] = calloc(MAX_SLOTS, sizeof(struct ts_sample_mt));
                       if (!samp_mt[i])
                               return -1;
               }

               while(1) {
                       ret = ts_read_mt(ts, samp_mt, MAX_SLOTS, READ_SAMPLES);
                       for (i = 0; i < ret; i++) {
                               printf("sample nr %d0, i);
                               for (j = 0; i < MAX_SLOTS; j++) {
                                       if (!(samp_mt[i][j].valid & TSLIB_MT_VALID))
                                               continue;

                                       printf("slot %d: X:%d Y: %d0,
                                              samp_mt[i][j].slot,
                                              samp_mt[i][j].x,
                                              samp_mt[i][j].y);
                               }
                       }
               }
       }

SEE ALSO
       ts_setup(3), ts_config(3), ts_open(3), ts_close(3), ts.conf(5)

                                                                    TS_READ(3)

Generated by dwww version 1.15 on Wed Jun 26 18:10:04 CEST 2024.