Fix mixing of Class-B _k vs _periodicity.

In the UI the k value (LoRaWAN < 1.0.4) was used as periodicity
(LoRaWAN 1.0.4). This renames the `_nb_k` fields to `_periodicity` to
align with the LoRaWAN 1.0.4 spec and updates the backend code to use
this value as periodicity as defined by the LoRaWAN 1.0.4 spec.

Fixes #670.
This commit is contained in:
Orne Brocaar
2025-06-11 09:18:01 +01:00
parent 8804f774fb
commit 28b5f91183
33 changed files with 164 additions and 112 deletions

View File

@ -240,11 +240,15 @@ message DeviceProfile {
// from the device (if requested).
uint32 class_b_timeout = 16;
// Class-B ping-slots per beacon period.
// Class-B ping-slot periodicity.
// Valid options are: 0 - 7.
//
// The actual number of ping-slots per beacon period equals to 2^k.
uint32 class_b_ping_slot_nb_k = 17;
// Number of ping-slots per beacon-period:
// pingNb = 2^(7-periodicity)
//
// Periodicity: 0 = 128 ping-slots per beacon period = ~ every 1 sec
// Periodicity: 7 = 1 ping-slot per beacon period = ~ every 128 sec
uint32 class_b_ping_slot_periodicity = 17;
// Class-B ping-slot DR.
uint32 class_b_ping_slot_dr = 18;

View File

@ -117,11 +117,15 @@ message DeviceProfileTemplate {
// This is the maximum time ChirpStack will wait to receive an acknowledgement from the device (if requested).
uint32 class_b_timeout = 18;
// Class-B ping-slots per beacon period.
// Class-B ping-slot periodicity (only for Class-B).
// Valid options are: 0 - 7.
//
// The actual number of ping-slots per beacon period equals to 2^k.
uint32 class_b_ping_slot_nb_k = 19;
// Number of ping-slots per beacon-period:
// pingNb = 2^(7-periodicity)
//
// Periodicity: 0 = 128 ping-slots per beacon period = ~ every 1 sec
// Periodicity: 7 = 1 ping-slot per beacon period = ~ every 128 sec
uint32 class_b_ping_slot_periodicity = 19;
// Class-B ping-slot DR.
uint32 class_b_ping_slot_dr = 20;

View File

@ -104,7 +104,14 @@ message FuotaDeployment {
uint32 multicast_dr = 7;
// Multicast ping-slot period (Class-B only).
uint32 multicast_class_b_ping_slot_nb_k = 8;
// Valid options are: 0 - 7.
//
// Number of ping-slots per beacon-period:
// pingNb = 2^(7-periodicity)
//
// Periodicity: 0 = 128 ping-slots per beacon period = ~ every 1 sec
// Periodicity: 7 = 1 ping-slot per beacon period = ~ every 128 sec
uint32 multicast_class_b_ping_slot_periodicity = 8;
// Multicast frequency (Hz).
uint32 multicast_frequency = 9;

View File

@ -165,15 +165,15 @@ message MulticastGroup {
// Frequency (Hz).
uint32 frequency = 11;
// Ping-slot period (only for Class-B).
// Deprecated: use class_b_ping_slot_nb_k.
uint32 class_b_ping_slot_period = 12;
// Class-B ping-slots per beacon period (only for Class-B).
// Valid options are: 0 - 7;
// Class-B ping-slot periodicity (only for Class-B).
// Valid options are: 0 - 7.
//
// The actual number of ping-slots per beacon period equals to 2^k.
uint32 class_b_ping_slot_nb_k = 14;
// Number of ping-slots per beacon-period:
// pingNb = 2^(7-periodicity)
//
// Periodicity: 0 = 128 ping-slots per beacon period = ~ every 1 sec
// Periodicity: 7 = 1 ping-slot per beacon period = ~ every 128 sec
uint32 class_b_ping_slot_periodicity = 14;
// Scheduling type (only for Class-C).
MulticastGroupSchedulingType class_c_scheduling_type = 13;