mirror of
https://github.com/RIOT-OS/RIOT.git
synced 2024-12-29 04:50:03 +01:00
pkg/semtech-loramac: make RX optional
This commit is contained in:
parent
f2c63c86fd
commit
b5c48ef04e
@ -68,6 +68,7 @@ PSEUDOMODULES += saul_gpio
|
||||
PSEUDOMODULES += saul_nrf_temperature
|
||||
PSEUDOMODULES += scanf_float
|
||||
PSEUDOMODULES += schedstatistics
|
||||
PSEUDOMODULES += semtech_loramac_rx
|
||||
PSEUDOMODULES += sock
|
||||
PSEUDOMODULES += sock_ip
|
||||
PSEUDOMODULES += sock_tcp
|
||||
|
@ -606,6 +606,7 @@ void *_semtech_loramac_event_loop(void *arg)
|
||||
msg_send(&msg_ret, mac->tx_pid);
|
||||
break;
|
||||
}
|
||||
#ifdef MODULE_SEMTECH_LORAMAC_RX
|
||||
case MLME_LINK_CHECK:
|
||||
if (confirm->Status == LORAMAC_EVENT_INFO_STATUS_OK) {
|
||||
mac->link_chk.demod_margin = confirm->DemodMargin;
|
||||
@ -619,6 +620,7 @@ void *_semtech_loramac_event_loop(void *arg)
|
||||
msg_ret.content.value = SEMTECH_LORAMAC_RX_LINK_CHECK;
|
||||
msg_send(&msg_ret, mac->rx_pid);
|
||||
}
|
||||
#endif
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@ -732,6 +734,7 @@ void *_semtech_loramac_event_loop(void *arg)
|
||||
_semtech_loramac_send(mac, NULL, 0);
|
||||
mac->port = prev_port;
|
||||
}
|
||||
#ifdef MODULE_SEMTECH_LORAMAC_RX
|
||||
if (indication->RxData) {
|
||||
DEBUG("[semtech-loramac] MCPS indication: data received\n");
|
||||
memcpy(mac->rx_data.payload,
|
||||
@ -755,6 +758,7 @@ void *_semtech_loramac_event_loop(void *arg)
|
||||
msg_ret.content.value = SEMTECH_LORAMAC_RX_CONFIRMED;
|
||||
msg_send(&msg_ret, mac->rx_pid);
|
||||
}
|
||||
#endif
|
||||
|
||||
break;
|
||||
}
|
||||
@ -825,6 +829,7 @@ uint8_t semtech_loramac_join(semtech_loramac_t *mac, uint8_t type)
|
||||
return SEMTECH_LORAMAC_JOIN_SUCCEEDED;
|
||||
}
|
||||
|
||||
#ifdef MODULE_SEMTECH_LORAMAC_RX
|
||||
void semtech_loramac_request_link_check(semtech_loramac_t *mac)
|
||||
{
|
||||
mutex_lock(&mac->lock);
|
||||
@ -833,6 +838,7 @@ void semtech_loramac_request_link_check(semtech_loramac_t *mac)
|
||||
LoRaMacMlmeRequest(&mlmeReq);
|
||||
mutex_unlock(&mac->lock);
|
||||
}
|
||||
#endif
|
||||
|
||||
uint8_t semtech_loramac_send(semtech_loramac_t *mac, uint8_t *data, uint8_t len)
|
||||
{
|
||||
@ -856,6 +862,7 @@ uint8_t semtech_loramac_send(semtech_loramac_t *mac, uint8_t *data, uint8_t len)
|
||||
return (uint8_t)msg.content.value;
|
||||
}
|
||||
|
||||
#ifdef MODULE_SEMTECH_LORAMAC_RX
|
||||
uint8_t semtech_loramac_recv(semtech_loramac_t *mac)
|
||||
{
|
||||
/* Correctly set the receiver thread pid */
|
||||
@ -868,3 +875,4 @@ uint8_t semtech_loramac_recv(semtech_loramac_t *mac)
|
||||
|
||||
return (uint8_t)msg.content.value;
|
||||
}
|
||||
#endif
|
||||
|
@ -96,7 +96,12 @@
|
||||
* }
|
||||
* ```
|
||||
*
|
||||
* To receive downlink messages, use a dedicated receiving thread.
|
||||
* To receive downlink messages, enable the `semtech_loramac_rx` and use a
|
||||
* dedicated receiving thread.
|
||||
* - In the application Makefile, add
|
||||
* ```mk
|
||||
* USEMODULE += semtech_loramac_rx
|
||||
* ```
|
||||
* - At the beginning of the application source file, add the necessary
|
||||
* includes and declare the message queue and stack arrays:
|
||||
* ```c
|
||||
|
@ -99,6 +99,7 @@ typedef struct {
|
||||
uint8_t port; /**< RX port */
|
||||
} semtech_loramac_rx_data_t;
|
||||
|
||||
#if defined(MODULE_SEMTECH_LORAMAC_RX) || DOXYGEN
|
||||
/**
|
||||
* @brief LoRaMAC link check information
|
||||
*/
|
||||
@ -106,6 +107,7 @@ typedef struct {
|
||||
uint8_t demod_margin; /**< Demodulation margin */
|
||||
uint8_t nb_gateways; /**< number of LoRa gateways found */
|
||||
} semtech_loramac_link_check_info_t;
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Semtech LoRaMAC descriptor
|
||||
@ -113,7 +115,9 @@ typedef struct {
|
||||
typedef struct {
|
||||
mutex_t lock; /**< loramac access lock */
|
||||
uint8_t tx_pid; /**< pid of sender thread */
|
||||
#if defined(MODULE_SEMTECH_LORAMAC_RX) || DOXYGEN
|
||||
uint8_t rx_pid; /**< pid of receiver thread */
|
||||
#endif
|
||||
uint8_t port; /**< application TX port */
|
||||
uint8_t cnf; /**< enable/disable confirmable messages */
|
||||
uint8_t deveui[LORAMAC_DEVEUI_LEN]; /**< device EUI */
|
||||
@ -122,8 +126,10 @@ typedef struct {
|
||||
uint8_t appskey[LORAMAC_APPSKEY_LEN]; /**< application session key */
|
||||
uint8_t nwkskey[LORAMAC_NWKSKEY_LEN]; /**< network session key */
|
||||
uint8_t devaddr[LORAMAC_DEVADDR_LEN]; /**< device address */
|
||||
#if defined(MODULE_SEMTECH_LORAMAC_RX) || DOXYGEN
|
||||
semtech_loramac_rx_data_t rx_data; /**< struct handling the RX data */
|
||||
semtech_loramac_link_check_info_t link_chk; /**< link check information */
|
||||
#endif
|
||||
} semtech_loramac_t;
|
||||
|
||||
/**
|
||||
@ -172,6 +178,7 @@ uint8_t semtech_loramac_join(semtech_loramac_t *mac, uint8_t type);
|
||||
*/
|
||||
uint8_t semtech_loramac_send(semtech_loramac_t *mac, uint8_t *data, uint8_t len);
|
||||
|
||||
#if defined(MODULE_SEMTECH_LORAMAC_RX) || DOXYGEN
|
||||
/**
|
||||
* @brief Wait for a message sent by the LoRaWAN network
|
||||
*
|
||||
@ -184,6 +191,9 @@ uint8_t semtech_loramac_send(semtech_loramac_t *mac, uint8_t *data, uint8_t len)
|
||||
* Be sure to call this function before the end of the RX windows otherwise it
|
||||
* may block the calling thread.
|
||||
*
|
||||
* By default this feature is not available to the user application, enable it
|
||||
* by adding `USEMODULE += semtech_loramac_rx` to the application Makefile.
|
||||
*
|
||||
* @see semtech_loramac_send
|
||||
*
|
||||
* @param[in] mac Pointer to the mac
|
||||
@ -193,13 +203,19 @@ uint8_t semtech_loramac_send(semtech_loramac_t *mac, uint8_t *data, uint8_t len)
|
||||
* @return SEMTECH_LORAMAC_RX_CONFIRMED when an ACK is received from the network
|
||||
*/
|
||||
uint8_t semtech_loramac_recv(semtech_loramac_t *mac);
|
||||
#endif
|
||||
|
||||
#if defined(MODULE_SEMTECH_LORAMAC_RX) || DOXYGEN
|
||||
/**
|
||||
* @brief Requests a LoRaWAN link check
|
||||
*
|
||||
* By default this feature is not available to the user application, enable it
|
||||
* by adding `USEMODULE += semtech_loramac_rx` to the application Makefile.
|
||||
*
|
||||
* @param[in] mac Pointer to the mac
|
||||
*/
|
||||
void semtech_loramac_request_link_check(semtech_loramac_t *mac);
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Sets the device EUI
|
||||
|
Loading…
Reference in New Issue
Block a user