White Papers

7
APPENDIX: FULL SOURCE CODE OF AN EXAMPLE PROGRAM
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <errno.h>
#include <unistd.h>
#include <sys/io.h>
#define GPIO_CAP_OUTPUT 1
#define GPIO_CAP_INPUT 2
#define GPIO_CAP_INOUT (GPIO_CAP_OUTPUT|GPIO_CAP_INPUT)
#define GPIO_MODE_UNKNOWN 0
#define GPIO_MODE_OUTPUT 1
#define GPIO_MODE_INPUT 2
enum pin_number {
PIN_GPO0,
PIN_GPO1,
PIN_GPO2,
PIN_GPO3,
PIN_GPO4,
PIN_GPO5,
PIN_GPO6,
PIN_GPO7,
PIN_GPI0,
PIN_GPI1,
PIN_GPI2,
PIN_GPI3,
PIN_GPI4,
PIN_GPI5,
PIN_GPI6,
PIN_GPI7,
MAX_PIN_NUM,
};
typedef struct {
int capability;
int mode;
} gpio_pin;
typedef struct {
int signature;
gpio_pin pins[MAX_PIN_NUM];
} gpio_controller;
#define LPC_ADDR_PORT 0x2E
#define LPC_DATA_PORT 0x2F
#define MAGIC_KEY 0x36D4EBAC
typedef struct {
int device_num;
int base_port;
} sio_device;
sio_device sio_devices[] =
{
{
.device_num = 8,