static void print_event(struct iio_event_data *event) { enum iio_chan_type type = IIO_EVENT_CODE_EXTRACT_CHAN_TYPE(event->id); enum iio_modifier mod = IIO_EVENT_CODE_EXTRACT_MODIFIER(event->id); enum iio_event_type ev_type = IIO_EVENT_CODE_EXTRACT_TYPE(event->id); enum iio_event_direction dir = IIO_EVENT_CODE_EXTRACT_DIR(event->id); int chan = IIO_EVENT_CODE_EXTRACT_CHAN(event->id); int chan2 = IIO_EVENT_CODE_EXTRACT_CHAN2(event->id); bool diff = IIO_EVENT_CODE_EXTRACT_DIFF(event->id); if (!event_is_known(event)) { printf("Unknown event: time: %lld, id: %llx\n", event->timestamp, event->id); return; } printf("Event: time: %lld, type: %s", event->timestamp, iio_chan_type_name_spec[type]); if (mod != IIO_NO_MOD) printf("(%s)", iio_modifier_names[mod]); if (chan >= 0) { printf(", channel: %d", chan); if (diff && chan2 >= 0) printf("-%d", chan2); } printf(", evtype: %s", iio_ev_type_text[ev_type]); if (dir != IIO_EV_DIR_NONE) printf(", direction: %s", iio_ev_dir_text[dir]); printf("\n"); }
mraa_result_t mraa_iio_event_extract_event(struct iio_event_data* event, int* chan_type, int* modifier, int* type, int* direction, int* channel, int* channel2, int* different) { *chan_type = IIO_EVENT_CODE_EXTRACT_CHAN_TYPE(event->id); *modifier = IIO_EVENT_CODE_EXTRACT_MODIFIER(event->id); *type = IIO_EVENT_CODE_EXTRACT_TYPE(event->id); *direction = IIO_EVENT_CODE_EXTRACT_DIR(event->id); *channel = IIO_EVENT_CODE_EXTRACT_CHAN(event->id); *channel2 = IIO_EVENT_CODE_EXTRACT_CHAN2(event->id); *different = IIO_EVENT_CODE_EXTRACT_DIFF(event->id); return MRAA_SUCCESS; }