Expand description
The C ABI for the LoRaWAN application layer packages: clock synchronization TS003-2.0.0, fragmented data block transport TS004-2.0.0, remote multicast setup TS005-2.0.0, and firmware management TS006-2.0.0.
The key derivations and the parity matrix are pure functions of their arguments. What has to remember something crosses as an opaque handle: a clock synchronization package, a firmware manager, a fragmentation session being put back together, and the code taken over a block as it arrives.
Structs§
- Pamoja
Lorawan Block Mic - A code being taken over a data block, released with
pamoja_lorawan_block_mic_free. - Pamoja
Lorawan Clock Sync - A clock synchronization package on a device, released with
pamoja_lorawan_clock_sync_free. - Pamoja
Lorawan Defrag - A fragmentation session being put back together, released with
pamoja_lorawan_defrag_free. - Pamoja
Lorawan Firmware - A firmware management package on a device, released with
pamoja_lorawan_firmware_free. - Pamoja
Lorawan Package Command - One command of an application layer package, whichever package it belongs to.
Constants§
- PAMOJA_
LORAWAN_ CLOCK_ PORT - The port clock synchronization is spoken on, TS003-2.0.0.
- PAMOJA_
LORAWAN_ FIRMWARE_ PORT - The port firmware management is spoken on, TS006-1.0.0.
- PAMOJA_
LORAWAN_ FRAGMENT_ PORT - The port fragmented data block transport is spoken on, TS004-2.0.0.
- PAMOJA_
LORAWAN_ IMAGE_ CORRUPT - One is there, but it is corrupt or its signature does not verify.
- PAMOJA_
LORAWAN_ IMAGE_ NONE - The device holds no firmware upgrade image.
- PAMOJA_
LORAWAN_ IMAGE_ VALID - One is there, and it can be installed.
- PAMOJA_
LORAWAN_ IMAGE_ WRONG_ HARDWARE - One is there and authentic, but it is not for this hardware.
- PAMOJA_
LORAWAN_ MAX_ FRAGMENTS - The most fragments one session carries.
- PAMOJA_
LORAWAN_ MULTICAST_ PORT - The port remote multicast setup is spoken on, TS005-2.0.0.
Functions§
- pamoja_
lorawan_ ⚠block_ mic_ finish - Finishes a code and releases it.
- pamoja_
lorawan_ ⚠block_ mic_ free - Releases a code that was never finished. Passing null is a no-op.
- pamoja_
lorawan_ ⚠block_ mic_ start - Starts a code over one session’s block, TS004-2.0.0 section 3.3.
- pamoja_
lorawan_ ⚠block_ mic_ update - Adds a piece of the block to a code.
- pamoja_
lorawan_ ⚠clock_ sync_ answer - Writes the answer a device owes its clock server, if it owes one.
- pamoja_
lorawan_ ⚠clock_ sync_ free - Releases a clock synchronization package. Passing null is a no-op.
- pamoja_
lorawan_ ⚠clock_ sync_ heard - Reads a downlink on the clock port and acts on it, section 3.2.
- pamoja_
lorawan_ ⚠clock_ sync_ new - Starts the clock synchronization package on a device, TS003-2.0.0.
- pamoja_
lorawan_ ⚠clock_ sync_ request - Builds the request that asks a server for a clock correction, section 3.2.
- pamoja_
lorawan_ ⚠clock_ sync_ status - Reports where a clock synchronization package stands.
- pamoja_
lorawan_ ⚠data_ block_ int_ key - Derives the key that signs a data block, TS004-2.0.0 section 3.3.
- pamoja_
lorawan_ ⚠defrag_ block - Reads the block a session has put back together.
- pamoja_
lorawan_ ⚠defrag_ fragment - Takes one fragment of a session.
- pamoja_
lorawan_ ⚠defrag_ free - Releases a fragmentation session. Passing null is a no-op.
- pamoja_
lorawan_ defrag_ matrix_ len - How many bytes of working storage a session needs.
- pamoja_
lorawan_ ⚠defrag_ new - Opens a fragmentation session.
- pamoja_
lorawan_ ⚠defrag_ status - Reports what a session has taken so far.
- pamoja_
lorawan_ ⚠firmware_ free - Releases a firmware management package. Passing null is a no-op.
- pamoja_
lorawan_ ⚠firmware_ heard - Reads a downlink on the firmware port and writes the answers it calls for.
- pamoja_
lorawan_ ⚠firmware_ image - Says what firmware upgrade image the device is holding.
- pamoja_
lorawan_ ⚠firmware_ new - Starts the firmware management package on a device, TS006-1.0.0.
- pamoja_
lorawan_ ⚠firmware_ reboot - Reports the reboot a firmware management package is holding.
- pamoja_
lorawan_ ⚠firmware_ rebooted - Forgets the programmed reboot, for a device that has carried it out.
- pamoja_
lorawan_ ⚠firmware_ set_ image - Says what firmware upgrade image the device is holding.
- pamoja_
lorawan_ ⚠frag_ fragment - Builds one fragment of a session out of a block held whole.
- pamoja_
lorawan_ ⚠frag_ parity_ line - Builds one row of the parity matrix: which uncoded fragments a coded one is made of.
- pamoja_
lorawan_ frag_ prbs23 - Steps the pseudo-random sequence the parity matrix is drawn from, appendix A.1.
- pamoja_
lorawan_ ⚠frag_ session - How many fragments a block of a given size takes, and how much padding the last one needs.
- pamoja_
lorawan_ ⚠mc_ app_ s_ key - Derives the key that reads a multicast group’s payloads, section 4.3.
- pamoja_
lorawan_ ⚠mc_ ke_ key - Derives the key a multicast group’s key travels under, section 4.3.
- pamoja_
lorawan_ ⚠mc_ key - Unwraps the group key a setup command carried, section 4.3.
- pamoja_
lorawan_ ⚠mc_ nwk_ s_ key - Derives the key that verifies a multicast group’s frames, section 4.3.
- pamoja_
lorawan_ ⚠mc_ root_ key - Derives a device’s multicast root key, TS005-2.0.0 section 4.3.
- pamoja_
lorawan_ ⚠package_ encode - Writes one command of an application layer package.
- pamoja_
lorawan_ ⚠package_ parse - Reads one command of an application layer package.
- pamoja_
lorawan_ ⚠package_ status_ item - Reads one group record of a multicast status answer, TS005-2.0.0 section 4.2.
- pamoja_
lorawan_ ⚠wrap_ mc_ key - Wraps a group key for a device, which is what a server does before sending it.