EXPORT int MAX7219Init() { clearLastError(); int devFD; if ((devFD = openHW(SPI0_PATH, O_RDWR)) < 0) { setLastError("Fail to open SPI device MAX7219"); return -1; } if (setSPIDataMode(devFD, spiMode) == -1 ) { setLastError("Fail to set MAX7219 SPI mode"); closeHW(devFD); return -1; } if (setSPIWriteBitsPerWord(devFD, spiBits) == -1 ) { setLastError("Fail to set MAX7219 SPI bits"); closeHW(devFD); return -1; } if (setSPIClockDivider(devFD, spiDivider) == -1 ) { setLastError("Fail to set MAX7219 SPI clock divider"); closeHW(devFD); return -1; } MAX7219WriteByte(devFD, 0x09, 0x00); MAX7219WriteByte(devFD, 0x0a, 0x03); MAX7219WriteByte(devFD, 0x0b, 0x07); MAX7219WriteByte(devFD, 0x0c, 0x01); MAX7219WriteByte(devFD, 0x0f, 0x00); return devFD; }
EXPORT int dht11Init(int pin) { int dht11Pin = pin; clearLastError(); int devFD = openHW(DHT11_DEV, O_RDONLY); if (devFD == -1) { printf("Fail to open dht11"); return -1; } if(ioctl(devFD, SET_DHT11_PIN, &dht11Pin) == -1) { setLastError("Fail to set dht11 pin"); closeHW(devFD); return -1; } dht11Pin = -1; if(ioctl(devFD, GET_DHT11_PIN, &dht11Pin) == -1) { setLastError("Fail to get dht11 pin"); closeHW(devFD); return -1; } if (dht11Pin != pin) { setLastError("Get error dht11 pin %d", dht11Pin); closeHW(devFD); return -1; } return devFD; }
int main(int argc, char ** argv) { int board, i, j; int retSize = -1; char *devName = GPIO_IR_DEV; int pin = GPIO_PIN(7); char modStr[BUF_SIZE]; struct input_event evKey; if ((board = boardInit()) < 0) printf("Fail to init board\n"); if (board == BOARD_NANOPI_T2) pin = GPIO_PIN(15); sprintf(modStr, "modprobe %s gpio=%d", IR_DRIVER_MODULE, pintoGPIO(pin)); system(modStr); signal(SIGINT, IRIntHandler); sleep(1); irFD = openHW(devName, O_RDWR); if (irFD < 0) { printf("Fail to open GPIO IR device\n"); return -1; } printf("Press the IR remoter\n"); for (i=0; i<IR_EVENT_TIMES; i++) { if (selectHW(irFD, 0, 0) == 1) { retSize = readHW(irFD, &evKey, sizeof(struct input_event)); for (j=0; j<(int) retSize / sizeof(struct input_event); j++) printf("%2d: Type=%d, Code=%d, Value=%x\n", i, evKey.type, evKey.code, evKey.value); } } closeHW(irFD); system("rmmod "IR_DRIVER_MODULE); return 0; }
EXPORT void dht11DeInit(int devFD) { clearLastError(); if(ioctl(devFD, UNSET_DHT11_PIN, 0) == -1) { setLastError("Fail to unset dht11 pin\n"); } closeHW(devFD); }
void IRIntHandler(int signNum) { if (signNum == SIGINT) { closeHW(irFD); system("rmmod "IR_DRIVER_MODULE); printf("Quit waiting IR event\n"); } exit(0); }
void IRIntHandler(int signNum) { if (signNum == SIGINT) { printf("Clean up\n"); closeHW(irFD); system("rmmod "DRIVER_MODULE); } exit(0); }
EXPORT int hmc5883Init() { clearLastError(); int devFD; if ((devFD = openHW(I2C0_PATH, O_RDWR)) < 0) { setLastError("Fail to open I2C hmc5883 device"); return -1; } else { if (setI2CSlave(devFD, HMC5883_ADDRESS) < 0) { setLastError("Fail to set hmc5883 I2C slave address"); closeHW(devFD); return -1; } } if (hmc5883HWInit(devFD) == -1) { closeHW(devFD); return -1; } return devFD; }
EXPORT int pcf8574Init(int i2cDev) { clearLastError(); int devFD; char buf[16]; memset(buf, 0, sizeof(buf)); sprintf(buf, "/dev/i2c-%d", i2cDev); if ((devFD = openHW(buf, O_RDWR)) < 0) { setLastError("Fail to open I2C device pcf8574"); return -1; } else { if (setI2CSlave(devFD, PCF8574_ADDRESS) < 0) { setLastError("Fail to set pcf8574 I2C slave address"); closeHW(devFD); return -1; } } return devFD; }
EXPORT void LCD1602DeInit(int devFD) { clearLastError(); closeHW(devFD); }
EXPORT void pcf8574DeInit(int devFD) { clearLastError(); closeHW(devFD); }
EXPORT void MAX7219DeInit(int devFD) { clearLastError(); MAX7219CleanScreen(devFD); closeHW(devFD); }
EXPORT void hmc5883DeInit(int devFD) { closeHW(devFD); }