duff2013 / SDI12_T3

SDI-12 library for Teensy 3.x and Teensy LC
14 stars 9 forks source link

Fix change address #7

Open baender opened 4 years ago

baender commented 4 years ago

Hi again,

this pull request includes the other fix with the Serial. So I think you could either merge the other one first and than this one, or only this one and close the other one. Only if you are satisfied with the result of course.

Issue Function changeAddress() always returns -4 and never sends anyting via the data line.

Problem ioActive() is tested and set in the very beginning of the function. A subsequent call of isActive() does the very same thing and since ioActive has been set already, isActive() will here always return -4 as error.

int SDI12::changeAddress( const uint8_t new_address ) {
    if ( ioActive ) return -5;
    else ioActive = true;

    ...

    error = isActive( );

    if ( error ) {
        ioActive = false;
        return -4;
    }
}

Solution Since changeAddress() is the only function calling isActive() the easiest solution would be to delete the call of isActive() entirely.