Newer
Older
pyenergenie / src / energenie / drv / gpio_sim.c
/* gpio_sim.c  D.J.Whale  04/04/2016
 * 
 * A very simple interface to a simulated GPIO port with no platform dependencies.
 */

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

#include <stdio.h>
//#include <stdlib.h>

#include "gpio.h"


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


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


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


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

//#define INP_GPIO(g) *(gpio+((g)/10)) &= ~(7<<(((g)%10)*3))
//#define OUT_GPIO(g) *(gpio+((g)/10)) |=  (1<<(((g)%10)*3))
//#define SET_GPIO_ALT(g,a) *(gpio+(((g)/10))) |= (((a)<=3?(a)+4:(a)==4?3:2)<<(((g)%10)*3))

//#define GPIO_SET *(gpio+7)  // sets   bits which are 1 ignores bits which are 0
//#define GPIO_CLR *(gpio+10) // clears bits which are 1 ignores bits which are 0

//#define GPIO_READ(g) ((*(gpio+13)&(1<<g)) != 0)

//#define GPIO_HIGH(g) GPIO_SET = (1<<(g))
//#define GPIO_LOW(g)  GPIO_CLR = (1<<(g))


void gpio_init()
{
  // Nothing to do
}


void gpio_setin(int g)
{
    printf("gpio:in:%d\n", g);
}


void gpio_setout(int g)
{
    printf("gpio:out:%d\n", g);
}


void gpio_high(int g)
{
    printf("gpio:high:%d\n", g);
}


void gpio_low(int g)
{
    printf("gpio:low:%d\n", g);
}


void gpio_write(int g, int v)
{
    printf("gpio:write:%d=%d\n", g, v);
}


int gpio_read(int g)
{
    //TODO add a console interface to allow GPIO reads to be injected
    //either from keyboard, or from a script file
    return 0; /* always low in simulation */
}


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