diff --git a/firmware/atmega/source/main.c b/firmware/atmega/source/main.c index 75a6fc4..c58b7a1 100644 --- a/firmware/atmega/source/main.c +++ b/firmware/atmega/source/main.c @@ -11,7 +11,6 @@ volatile uint16_t lastMoistureVal = 0; volatile uint16_t *pLastMoistureVal = &lastMoistureVal; -extern bool respondFlag; ISR(TWI_vect) { twiListen(); @@ -49,11 +48,7 @@ int main(void) { *pLastMoistureVal = moistureRead(); // nested if: (result outside range (see config.h)) {waterPlant()} - - if(respondFlag) { - twiRespond(); - respondFlag = false; - } + twiRespond(); enterSleep(); } diff --git a/firmware/atmega/source/twi.c b/firmware/atmega/source/twi.c index a028f13..9fe8b83 100644 --- a/firmware/atmega/source/twi.c +++ b/firmware/atmega/source/twi.c @@ -35,37 +35,38 @@ static void twiSendData(uint8_t data) { } void twiRespond(void) { - //FIXME: refactor this implementation - switch(twiBuffer[0]) { - case 0x01: // Send moisture - twiSendData(*pLastMoistureVal); - break; - case 0x02: // Get MOISTURE_MIN - twiSendData(eepromRead(MOISTURE_MIN)); - break; - case 0x03: // Get MOISTURE_MAX - twiSendData(eepromRead(MOISTURE_MAX)); - break; - case 0x04: // Set parameters - eepromWrite(MOISTURE_MIN, twiBuffer[1]); - eepromWrite(MOISTURE_MAX, twiBuffer[2]); - eepromWrite(SENSOR_READINGS, twiBuffer[3]); - twiSendAck(); - break; - case 0x05: // Get SENSOR_READINGS - twiSendData(eepromRead(SENSOR_READINGS)); - break; - case 0x06: // Set SENSOR_READINGS - eepromWrite(SENSOR_READINGS, twiBuffer[1]); - twiSendAck(); - break; - case 0x07: // Force water plants (one pumping) - waterPlant(); - twiSendAck(); - break; - default: - twiSendNack(); - break; + if(respondFlag) { + switch(twiBuffer[0]) { + case 0x01: // Send moisture + twiSendData(*pLastMoistureVal); + break; + case 0x02: // Get MOISTURE_MIN + twiSendData(eepromRead(MOISTURE_MIN)); + break; + case 0x03: // Get MOISTURE_MAX + twiSendData(eepromRead(MOISTURE_MAX)); + break; + case 0x04: // Set parameters + eepromWrite(MOISTURE_MIN, twiBuffer[1]); + eepromWrite(MOISTURE_MAX, twiBuffer[2]); + eepromWrite(SENSOR_READINGS, twiBuffer[3]); + twiSendAck(); + break; + case 0x05: // Get SENSOR_READINGS + twiSendData(eepromRead(SENSOR_READINGS)); + break; + case 0x06: // Set SENSOR_READINGS + eepromWrite(SENSOR_READINGS, twiBuffer[1]); + twiSendAck(); + break; + case 0x07: // Force water plants (one pumping) + waterPlant(); + twiSendAck(); + break; + default: + twiSendNack(); + break; + } } }