Newer
Older
pyenergenie / src / energenie / drv / gpio_arduino.c
@David Whale David Whale on 4 Apr 2016 2 KB Preparations for wiring up to Arduino
/* gpio_arduino.c  D.J.Whale  04/04/2016
 * 
 * A very simple interface to the GPIO port on the Arduino.
 *
 * Arduino internally uses the 'wiring' library, but experiments have shown
 * that it is really slow.
 *
 * See 'Faster IO on the Arduino' on the SKPang blog:
 * http://skpang.co.uk/blog/archives/323
 *
 * So this module uses direct register writes, and provides a placeholder for
 * compile-time selection of bitmasks and bitpatterns to support more Arduino
 * boards in the future.
 */

#else if defined(ARDUINO)
#if defined(ARDUINO_PROMICRO)

//TODO: there might be platform specific macros here to
//extract register address and bitmask
//really, what we want is to be able to pass in a uint8_t which is a GPIO number
//and this get converted (at compile time preferably) into the register access code
//required to read/write and configure that bit. The actual mapping shoudl probably
//be in the C code for gpio_arduino

//something a bit like this, but this is not correct yet
//#define GPIO_0   PORTB,0x01
//#define GPIO_1   PORTB,0x02
//#define GPIO_2   PORTB,0x04
//#define GPIO_3   PORTB,0x08
//#define GPIO_4   PORTB,0x10
//#define GPIO_5   PORTB,0x20
//#define GPIO_6   PORTB,0x40
//#define GPIO_7   PORTB,0x90
//#define GPIO_8   PORTC,0x01
//#define GPIO_9   PORTC,0x02
//#define GPIO_10  PORTC,0x04
//#define GPIO_14  PORTC,0x08
//#define GPIO_15  PORTC,0x10
//#define GPIO_16  PORTC,0x20

#else
//#error Unknown Arduino platform
#endif
#else
//#error Unknown platform
#endif


/***** INCLUDES *****/

//#include <stdio.h>
//#include <stdlib.h>
//#include <stdint.h>
//#include <fcntl.h>
//#include <sys/mman.h>
//#include <unistd.h>
//#include <time.h>

//#include "gpio.h"


/***** CONFIGURATION *****/

/* uncomment to make this a simulated driver */
//#define GPIO_SIMULATED


/***** CONSTANTS *****/


/***** VARIABLES *****/

/****** MACROS *****/

//#define INP_GPIO(g)
//#define OUT_GPIO(g)

//#define GPIO_SET
//#define GPIO_CLR

//#define GPIO_READ(g)

//#define GPIO_HIGH(g)
//#define GPIO_LOW(g)


void gpio_init()
{
  //TODO
}


void gpio_setin(int g)
{
  //TODO
}


void gpio_setout(int g)
{
  //TODO
}


void gpio_high(int g)
{
  //TODO
}


void gpio_low(int g)
{
  //TODO
}


void gpio_write(int g, int v)
{
  //TODO
}


int  gpio_read(int g)
{
  //TODO
}


/***** END OF FILE *****/