Dies ist eine alte Version des Dokuments!


Example using high-level API

The following example

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <getopt.h>
#include <ctype.h>
#include <stdbool.h>
 
#include <flinklib.h>
 
#define DEFAULT_DEV "/dev/flink0"
 
int main(void) {
  flink_dev*    dev;
  flink_subdev* subdev;
  char*         dev_name = DEFAULT_DEV;
	uint8_t       subdevice_id = 0;
	uint32_t      channel = 0;
	int           error = 0;
	bool          output;
	bool          val;
 
  // Open flink device
  dev = flink_open(dev_name);
  if(dev == NULL) {
		fprintf(stderr, "Failed to open device %s!\n", dev_name);
		return -1;
	}
 
	// Get a pointer to the choosen subdevice
	subdev = flink_get_subdevice_by_id(dev, subdevice_id);
	if(subdev == NULL) {
		fprintf(stderr, "Illegal subdevice id %d!\n", subdevice_id);
		return -1;
	}
 
	// Set I/O direction to output
	error = flink_dio_set_direction(subdev, channel, output);
	if(error != 0) {
		printf("Configuring GPIO direction failed!\n");
		return -1;
	}
 
	// Read or write I/O
	if(output) { // write
		printf("Writing %u to channel %u of subdevice %u\n", val, channel, subdevice_id);
		error = flink_dio_set_value(subdev, channel, val);
		if(error != 0) {
			printf("Writing value failed!\n");
			return -1;
		}
	}
	else { // read
		uint8_t res;
		error = flink_dio_get_value(subdev, channel, &res);
		if(error != 0) {
			printf("Reading value failed!\n");
			return -1;
		}
		else {
			printf("Read: %u!\n", res);
		}
	}
 
	// Close flink device
	flink_close(dev);
 
    return EXIT_SUCCESS;
}