Closed jerryneedell closed 6 years ago
hmm -- odd stuff happening -- I am now finding that the code from this repo does not work reliably - sometimes it does - sometime not. My gateway does not see any traffic from it sometimes. If I revert to @brentru repo https://github.com/brentru/TinyLoRa then it works reliably. Clearly I'v missed something.... I'll keep poking and prodding it. I make that same compiler related changes to both libraries and am using the data rate setting: SF7BW125 on both.
@jerryneedell Thanks for testing! Did you disable the frame counter on the M0? Is your code set up to broadcast over a single or multi channel? If it's set to broadcast on single channel and you have a multi-channel gateway, the gateway's radios may not be listening on that frequency and miss it.
@brentru Is this line an error in the Adafruit REPO https://github.com/adafruit/TinyLoRa/blob/master/TinyLoRa.cpp#L207 shouldn't that be MULTICH instead of FULCH I'll see if that helps
TinyLora.h defines MULTICH
edited to add -- yes, changing FULLCH to MULTICH seems to have helped.
I do have the frame counter disabled.
Back on track...
This may be a repeated message - I posted it, but don't see it so I'll try again I think there is a typo in the adafruit repo in TinyLora.cpp in this line. https://github.com/adafruit/TinyLoRa/blob/master/TinyLoRa.cpp#L207 the #define FULLCH should be #define MULTICH I made this change and it is working reliably for me now with the adafruit repo.
I do have the frame counter disabled,
BTW - The SDR from Adbox007 is great for monitoring the frequency shifting!
Inaddition to removing the "static" from "static const" For the Feather_M0 all uses of PROGMEM can be removed in TinyLora.cpp and the #include <avr/pgmspace.h> can be removed from TinyLora.h. Perhaps these differences can be accommodated via "#ifdef"
see: https://learn.adafruit.com/adafruit-feather-m0-basic-proto/adapting-sketches-to-m0#storing-data-in-flash-7-17
@brentru I applied PR#4 and now the only changes I have to make are for the compiler differences. I see that you fixed the MULTICH definition there. Looks good! Note: I also noted that you took the pin definitions out of the calling arguments for TinyLora() and they are set in TinyLora.h -- I also changed them for my configurations
Thank you for the testing, @jerryneedell. I've modified master
to reflect the channel selection and SF modifications you mentioned.
pulled current master -- made the usual compiler required changes and it works fine for me. Thanks!
I've narrowed this down and the only really necessary change for the M0 compiler is to replace all the "static const" with "const". With this change, the sketches compile for both the 32U4 and the M0/
@jerryneedell Thank you for your continued testing - I'm going to add support for this in the next PR
Added to master, closing...
@brentru I have gotten this to work with a Feather M0 Express, but i have had to make a few changes. Theseare due to compiler differences between the AVR and ARM compilers In TinyLoRa.cpp Replace "static const" with "const" -- I'm not sure this was the only way to make it work, but it would not compile with "static const"
In TinyLora.h: remove include for delay -- it is not needed and /util/delay does not exist - delay is available without this include
select SF12BW125 for the datarate
Here are the "diffs"
another issue I ran into was that, in the function senddata https://github.com/adafruit/TinyLoRa/blob/master/TinyLoRa.cpp#L342 the call to EncryptPayload overwrites the contents of Data with the encrypted version. Since the example program only initializes the Data array at the start, it is encrypted and sent properly the first time it is called, but then it encrypts the encrypted data .... the messages sent after the first one are not readable when received. In normal use, I don't think this matters since the data array will usually be repopulated with each message.
To verify this, made these changes to the example: instead of a string use array of bytes initialized to {0,1,2,3,4,5,6,7,8,9,10) althought this is never sent reconstruct the array Data just before sending it -- I populate it with {40,41,42,43,44,45,46,47,48,49,50} since they are printable ASCII characters. By repopulating the array each time it works for me.
Let me know if you need any more information or clarification.