1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- /*
- * hal.cpp
- *
- * Created on: Aug 3, 2016
- * Author: Philipp Hinz
- */
- #include <wiringPi.h>
- #include <stdlib.h>
- #include <errno.h>
- #include <string.h>
- #include "hal.h"
- #include "global.h"
- #include "logger.h"
- void halInit(void) {
- halRelaisOff(RELAIS_HEAT);
- halRelaisOff(RELAIS_PUMP);
- halRelaisOff(RELAIS_POWER);
- pinMode(RELAIS_HEAT, OUTPUT);
- pinMode(RELAIS_PUMP, OUTPUT);
- pinMode(RELAIS_POWER, OUTPUT);
- pinMode(HAL_INT0, INPUT);
- pinMode(HAL_INT1, INPUT);
- if (wiringPiISR(HAL_INT0, INT_EDGE_FALLING, &halInt0) < 0) {
- logger_error("Unable to setup ISR0: %s\n", strerror(errno));
- return;
- }
- if (wiringPiISR(HAL_INT1, INT_EDGE_FALLING, &halInt1) < 0) {
- logger_error("Unable to setup ISR1: %s\n", strerror(errno));
- return;
- }
- }
- void halRelaisOn(int relais) {
- halRelaisSet(relais, LOW);
- }
- void halRelaisOff(int relais) {
- halRelaisSet(relais, HIGH);
- }
- void halRelaisSet(int relais, int state) {
- if (state != HIGH && state != LOW)
- return;
- switch (relais) {
- case RELAIS_POWER:
- case RELAIS_HEAT:
- case RELAIS_PUMP:
- digitalWrite(relais, state);
- break;
- }
- }
- void halInt0(void) {
- halRelaisOn(RELAIS_POWER);
- logger(V_BASIC, "Int0 triggered\n");
- }
- void halInt1(void) {
- halRelaisOff(RELAIS_POWER);
- logger(V_BASIC, "Int1 triggered\n");
- }
|