Hi,
first of all: thank you for providing this library, it seems to be the most comprehensively documented and up-to-date LMIC library for ESP32.
While porting it to C for use in my projects, I've found a mismatch between documentation an implementation:
The in-code documentation of the function join(const char *devEui, const char *appEui, const char *appKey) explicitly states that the keys are not written into the NVS. However, this function calls TTNProvisioning::decodeKeys() which in turn calls TTNProvisioning::decode(). There, TTNProvisioning::saveKeys() is invoked, writing the keys to NVS. This also leads to the keys being written twice to NVS when calling TheThingsNetwork::provision().
Fixing this issue involves removing the call to TTNProvisioning::saveKeys() in TTNProvisioning::decodeKeys() and adapting the TTNProvisioning::processLine() function, which seems to expect that the decoding functions are automatically saving the keys.
Hi, first of all: thank you for providing this library, it seems to be the most comprehensively documented and up-to-date LMIC library for ESP32.
While porting it to C for use in my projects, I've found a mismatch between documentation an implementation:
The in-code documentation of the function
join(const char *devEui, const char *appEui, const char *appKey)
explicitly states that the keys are not written into the NVS. However, this function callsTTNProvisioning::decodeKeys()
which in turn callsTTNProvisioning::decode()
. There,TTNProvisioning::saveKeys()
is invoked, writing the keys to NVS. This also leads to the keys being written twice to NVS when callingTheThingsNetwork::provision()
.Fixing this issue involves removing the call to
TTNProvisioning::saveKeys()
inTTNProvisioning::decodeKeys()
and adapting theTTNProvisioning::processLine()
function, which seems to expect that the decoding functions are automatically saving the keys.