A camada MAC do dispositivo deve ser configurável a partir do console.
Substitui https://github.com/TheThingsNetwork/lorawan-stack/issues/1378
CLI como o único meio de configurar a camada MAC do dispositivo
Suporte para configurar todos os campos MACSettings
.
Todos os dispositivos
rx2_data_rate_index
rx2_frequency
factory_preset_frequencies
Classe A específica (também conhecido como todos os dispositivos não multicast)
rx1_delay
rx1_data_rate_offset
resets_f_cnt
Classe B específica
ping_slot_periodicity
Classe A específica (também conhecido como todos os dispositivos não multicast)
max_duty_cycle
supports_32_bit_f_cnt
use_adr
status_time_periodicity
status_count_periodicity
Classe B específica
ping_slot_data_rate_index
ping_slot_frequency
beacon_frequency
Classe A específica (também conhecido como todos os dispositivos não multicast)
adr_margin
desired_rx1_delay
desired_rx1_data_rate_offset
desired_rx2_data_rate_index
desired_rx2_frequency
desired_max_duty_cycle
desired_adr_ack_limit_exponent
desired_adr_ack_delay_exponent
Classe B específica
class_b_timeout
desired_ping_slot_data_rate_index
desired_ping_slot_frequency
desired_beacon_frequency
Classe C específica
class_c_timeout
NOTA: Alguns deles já podem ser configuráveis (por exemplo, coisas do FCnt), atualize as caixas de seleção adequadamente e verifique se essas configurações estão nos locais corretos (ou seja, não está disponível para dispositivos multicast)
Acredito que as configurações específicas de classe B e C devem estar disponíveis para todos os dispositivos, mesmo para dispositivos para os quais o respectivo SupportsClass{B,C}
é false
. Desta forma os usuários podem (temporariamente) desabilitar/habilitar a operação classe B/C sempre que necessário e manter as configurações específicas.
As configurações específicas da classe A devem estar disponíveis apenas para dispositivos não multicast.
Adicione todos os campos de MACSettings
https://github.com/TheThingsNetwork/lorawan-stack/blob/74c9da9a9e07a31d7103eabcd3440f9c80c24ea1/api/end_device.proto#L190 -L284 como campos para a configuração da camada de rede. Esses campos devem ser sempre configuráveis, ou seja, tanto na criação quanto na atualização.
Use comentários do proto para descrição.
@bafonins vai lidar com isso
Eu terminei principalmente com os campos de alta prioridade para a configuração de configurações de MAC:
Capturas de tela
PA:
classe B:
OTAA:
No entanto, para adicionar todos eles e permitir que os usuários registrem, por exemplo, The Things Uno via Console, o campo mac_state.factory_preset_frequencies
está ausente. Não tenho certeza de como exatamente isso deve ser representado na interface do usuário, atualmente tenho essas ideias:
IMO, esse campo torna a seleção de frequências muito fácil. Além disso, podemos apresentar ao usuário frequências com base no frequency_plan_id
para o dispositivo final. No entanto, como @rvolosatovs mencionou que as entradas podem ter valores arbitrários e não necessariamente dependem do plano de frequência do dispositivo final.
Além disso, para esta abordagem seria ótimo ter um RPC para buscar presets de frequências por banda.
Essa abordagem é mais flexível, porém, leva mais tempo para o usuário definir o campo, exige frequências de digitação.
Basicamente, uma combinação de 1 e 2.
@rvolosatovs @johanstokking
Acho que ter a lista (2) é mais claro, pois mostra a ordem. E a ordem é importante.
As frequências podem ser qualquer coisa, mas seria muito útil buscá-las por meio de um plano de frequência existente.
Adicionando compat/api
porque podemos precisar de um NS rpc para obter o plano de frequência.
Acho que ter a lista (2) é mais claro, pois mostra a ordem. E a ordem é importante.
Ambos os componentes selecionados (1) e (2) também preservam a ordem.
As frequências podem realmente ser qualquer coisa,
Com (3) valores de frequência arbitrários também podem ser adicionados
Eu acho que a solução (2) é a mais limpa também, enquanto (3) parece melhor para uma pequena quantidade de frequências, ter várias (por exemplo, 4 ou mais) parecerá confuso e difícil de acompanhar.
Seria ótimo se pudéssemos ter sugestões de frequência para (2) em cada caixa de texto (do RPC do plano de frequência proposto), então é mais ou menos o que você vê em (3), mas por caixa de texto
Mais ou menos concluído com a implementação, mas deseja esperar que https://github.com/TheThingsNetwork/lorawan-stack/issues/2605 seja mesclado antes de fazer um PR para adicionar testes para o assistente do dispositivo (incluindo o manuseio das configurações do mac)
Qual é o estado aqui?
@johanstokking https://github.com/TheThingsNetwork/lorawan-stack/pull/3065 está pronto para revisão. Eu adicionei todos os campos de alta e alguns campos de prioridade média.
Mudando o marco desta edição sem próxima. Todos os campos de alta prioridade, juntamente com alguns campos de prioridade média, foram adicionados em https://github.com/TheThingsNetwork/lorawan-stack/pull/3065. Voltaremos a isso mais tarde se quaisquer outros campos forem adicionados ao console.