Given the very niche nature of your endeavour, there will be few volunteers who can answer and they are mostly dealing with the other topics, so response will be slow.
And then there is the translation problem - eventually you will pose a question that is predicated on the use of .NET whereas almost everyone uses C, some C++ with the occasional Python.
I totally understand. I have spent quite a bit of time working on this before reaching out and don’t expect language specific help here.
Test Driven Development with stubs so you can call functions and verify the outputs was almost designed for this sort of project. And you can feed in downlinks and write the code until the tests pass. And you don’t need to have the entire stack compiled - you can use just the parts you are working on with the common utilities. And you can easily debug the code.
Totally agree. The biggest blocker I have run into in this respect is a lack of suitable “known good” uplink/downlink message bytes I can use for this.
Importantly, please stop using TTN as a testing LNS . Setup your own TTI OS in your office - TTN and TTI Sandbox is for trying out LoRaWAN and is used by communities for their deployments - it is not meant to deal with stack development and you will almost certainly be breaching the FUP with your downlinks.
I setup a private network for this reason. I’ve been using an SDR to verify when data is sent/received, and I’ve been testing the modem at it’s lowest power setting. If you think this insufficient, I can certainly add a faraday cage around end-device/gateway.
Why are you implementing your own version of the stack from scratch?
The Meadow platform runs on C#. As far as I can tell, no such implementation already exists for C#. If you’re aware of one, I’d be happy to use it if the licensing allows.
I appreciate everyone’s feedback so far, I certainly did not undertake this endeavor lightly.
Please use at least that version with the accompanying regional specification if you don’t want to go to 1.0.4 yet.
I’ll go over 1.0.4 and see if I need to make any changes to what I’ve written so far.
Are you using the right key? Fport 0 FRMPayload is encrypted using the NwkSKey
Yeah, I am using the NwkSKey. Under the join message section (6.2.6), it says
Note: An AES decrypt operation in ECB mode encrypts the Join-Accept 1497
frame so that the end-device can use an AES encrypt operation to 1498
decrypt the frame. This way, an end-device has to implement only AES 1499
encrypt but not AES decrypt.
Does this note about how to decrypt the data apply to all messages? I don’t see this noted anywhere else, but it is how I am handling decryption on all encrypted FRMPayloads.