--- /dev/null
+/**
+ * \brief Interface pro ovladani pinu na RPi.
+ * \file rpin.h
+ * \date March 21, 2015
+ * \author Martin Prudek
+ *
+ * Deklaruje nativni funkce pro ovladani pinu a pwm na RPi.
+ * Implementace "rpi_hw.c"
+ *
+ *
+ */
+
+#ifndef RPIN_H_
+#define RPIN_H_
+
+
+/* Pin modes */
+#define INPUT 0
+#define OUTPUT 1
+#define PWM_OUTPUT 2
+#define GPIO_CLOCK 3
+#define FSEL_INPT 0b000 /*0*/
+#define FSEL_OUTP 0b001 /*1*/
+#define FSEL_ALT0 0b100 /*4*/
+#define FSEL_ALT1 0b101 /*5*/
+#define FSEL_ALT2 0b110 /*6*/
+#define FSEL_ALT3 0b111 /*7*/
+#define FSEL_ALT4 0b011 /*3*/
+#define FSEL_ALT5 0b010 /*2*/
+
+/* Logic levels */
+#define LOW 0
+#define HIGH 1
+
+/* Clk sources */
+enum ClkSource{
+ PLLD_500_MHZ=0, /*500 MHz*/
+ OSC_19_MHZ_2=1, /*19.2 MHz*/
+ HDMI_216_MHZ=2, /*216 MHz*/
+ PLLC_1000_MHZ=3 /*1000 MHz, changes with overclock*/
+};
+
+/**
+ * \brief inicializuje pouziti GPIO pinu...
+ * (namapuje registry DMA)
+ */
+extern int initialise (void);
+
+/**
+ * \brief
+ * Select the native "balanced" mode, or standard mark:space mode
+ */
+extern void pwmSetMode (int);
+
+/**
+ * \brief
+ * Set the PWM range register. We set both range registers to the same
+ * value.
+ */
+extern void pwmSetRange (unsigned int);
+
+/**
+ * \brief
+ * Set/Change the PWM clock.
+ * Not tested.
+ */
+extern void pwmSetClock (int);
+
+/**
+ * \brief nastavi mod dnaeho pinu
+ * \param pin [in] cislo GPIO pinu
+ * \param mode [in] mod pinu -> in/out/altx
+ *
+ * Nastavi pin jako vstupni / vystupni, pripadne nastavi slternativni funkci.
+ */
+extern void pinMode (int, int);
+
+/**
+ * \brief Precte logickou uroven daneho pinu 0/1
+ * v pripade neicnicializovaneho GPIO nebo neexistence pinu vrati 0
+ * \param pin [in] cislo GPIO pinu
+ */
+extern int digitalRead (int);
+
+/**
+ * \brief zapise logickou uroven na dany pin
+ * \param pin [in] cislo GPIO pinu
+ * \param value [in] logicka uroven 0/1
+ */
+extern void digitalWrite (int, int);
+
+/**
+ * \brief nastavi hodnotu pwm
+ * \param pin[in] cislo GPIO PWM pinu
+ * \param value[int] sirka plneni pwm (max=1024)
+ */
+extern void pwmWrite (int, int);
+
+/**
+ * \brief A different approach to set gpio mode.
+ */
+extern void gpioSetMode(unsigned gpio_n, unsigned mode);
+
+/**
+ * \brief Initialize gpclk.
+ */
+extern int initClock(enum ClkSource,int, int);
+
+#endif /*RPIN_H_*/