Bonjour,
Je développe sur un microcontrôleur (STM32), et j'utilise une librairie fournie par ST pour établir une communication en LoRa. La question me semble plus d'ordre générale, je ne crée donc pas ce sujet dans la partie embarquée, mais n’hésitez pas à déplacer si nécessaire.
J'ai accès aux sources de cette librairie, mais je souhaiterais dans la mesure du possible éviter de les modifier pour faciliter les mises à jour. Pour se connecter à un réseau LoRa, il est nécessaire de définir des identifiants propres à chaque carte éléctronique, dans un fichier utilisateur (que je peux modifier/remplacer), sous forme de #define. Ces defines sont ensuite utilisés par la libraire pour initialiser des variables utilisées à la connexion (les ID ci-dessous sont ceux par défaut, je les ai remplacé par les miens et je me connecte sans problème au réseau) :
Commissioning.h
lora.c
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 #define IEEE_OUI 0x01, 0x01, 0x01 #define LORAWAN_DEVICE_EUI { IEEE_OUI, 0x01, 0x01, 0x01, 0x01, 0x01 } #define LORAWAN_JOIN_EUI { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 } #define LORAWAN_APP_KEY { 0x2B, 0x7E, 0x15, 0x16, 0x28, 0xAE, 0xD2, 0xA6, 0xAB, 0xF7, 0x15, 0x88, 0x09, 0xCF, 0x4F, 0x3C } #define LORAWAN_NWK_KEY { 0x2B, 0x7E, 0x15, 0x16, 0x28, 0xAE, 0xD2, 0xA6, 0xAB, 0xF7, 0x15, 0x88, 0x09, 0xCF, 0x4F, 0x3C }
Je souhaite pouvoir définir ces identifiants en EEPROM, et j'ai donc créé une structure, qui va lire les identifiants au démarrage, si présent. L'idée est donc de modifier les define pour passer un pointeur vers ma structure. Actuellement, j'ai fait les modifications suivantes (qui fonctionnent) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 static uint8_t DevEui[] = LORAWAN_DEVICE_EUI; static uint8_t JoinEui[] = LORAWAN_JOIN_EUI; static uint8_t AppKey[] = LORAWAN_APP_KEY; static uint8_t NwkKey[] = LORAWAN_NWK_KEY;
Commissioning.h
lora.c
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 #define LORAWAN_DEVICE_EUI config.radio.lora_credentials.dev_eui #define LORAWAN_JOIN_EUI config.radio.lora_credentials.join_eui #define LORAWAN_APP_KEY config.radio.lora_credentials.app_key #define LORAWAN_NWK_KEY config.radio.lora_credentials.nwk_key
Comme vous pouvez le voir, j'ai dû modifier le fichier lora.c, ce que je souhaiterai éviter. Si je le laisse comme précédemment, j'obtiens l'erreur "invalid initializer". Y a t'il une solution ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 static uint8_t *DevEui = LORAWAN_DEVICE_EUI; static uint8_t *JoinEui = LORAWAN_JOIN_EUI; static uint8_t *AppKey = LORAWAN_APP_KEY; static uint8_t *NwkKey = LORAWAN_NWK_KEY;
Dans le cas contraire, je créerais un patch avec git, mais ça n'est pas l'idéal.
Partager