lriot 2.1.0.0
lriot.h
Go to the documentation of this file.
1/****************************************************************************
2** Copyright (C) 2020 MikroElektronika d.o.o.
3** Contact: https://www.mikroe.com/contact
4**
5** Permission is hereby granted, free of charge, to any person obtaining a copy
6** of this software and associated documentation files (the "Software"), to deal
7** in the Software without restriction, including without limitation the rights
8** to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9** copies of the Software, and to permit persons to whom the Software is
10** furnished to do so, subject to the following conditions:
11** The above copyright notice and this permission notice shall be
12** included in all copies or substantial portions of the Software.
13**
14** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
16** OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
17** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
18** DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT
19** OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
20** USE OR OTHER DEALINGS IN THE SOFTWARE.
21****************************************************************************/
22
28#ifndef LRIOT_H
29#define LRIOT_H
30
31#ifdef __cplusplus
32extern "C"{
33#endif
34
39#ifdef PREINIT_SUPPORTED
40#include "preinit.h"
41#endif
42
43#ifdef MikroCCoreVersion
44 #if MikroCCoreVersion >= 1
45 #include "delays.h"
46 #endif
47#endif
48
49#include "drv_digital_out.h"
50#include "drv_digital_in.h"
51#include "drv_spi_master.h"
52#include "spi_specifics.h"
54#include "common/lr1110_types.h"
65
86#define LRIOT_TEMP_INT_VREF 1.35
87#define LRIOT_TEMP_VOLTAGE_AT_25C 0.7295
88#define LRIOT_TEMP_RESOLUTION 2047.0
89#define LRIOT_TEMP_NOMINAL 25
90#define LRIOT_TEMP_SLOPE -1.7
91#define LRIOT_TEMP_SLOPE_DIVIDEND 1000.0
92
97#define LRIOT_TCXO_DELAY_2SEC 0xFFFA
98
103#define LRIOT_GNSS_SCAN_MAX_SATELLITES 16
104#define LRIOT_GNSS_SCAN_RESULTS_BUF_LEN 256
105#define LRIOT_GNSS_SCAN_DISPLAY_ALL 0
106
111#define LRIOT_WIFI_SCAN_MAX_RESULTS 12
112#define LRIOT_WIFI_SCAN_DISPLAY_ALL 0
113
118#define LRIOT_LORA_PKT_PAYLOAD_LEN 64
119#define LRIOT_LORA_DEFAULT_FREQ 868100000ul
120
128#define LRIOT_UPDATE_FIRMWARE 0
129
134#define LRIOT_TRANSCEIVER_FIRMWARE 0
135#define LRIOT_MODEM_FIRMWARE 1
136#define LRIOT_FIRMWARE_SELECTOR LRIOT_TRANSCEIVER_FIRMWARE
137
146#define LRIOT_SET_DATA_SAMPLE_EDGE SET_SPI_DATA_SAMPLE_EDGE
147#define LRIOT_SET_DATA_SAMPLE_MIDDLE SET_SPI_DATA_SAMPLE_MIDDLE
148
149 // lriot_set
150
165#define LRIOT_MAP_MIKROBUS( cfg, mikrobus ) \
166 cfg.miso = MIKROBUS( mikrobus, MIKROBUS_MISO ); \
167 cfg.mosi = MIKROBUS( mikrobus, MIKROBUS_MOSI ); \
168 cfg.sck = MIKROBUS( mikrobus, MIKROBUS_SCK ); \
169 cfg.cs = MIKROBUS( mikrobus, MIKROBUS_CS ); \
170 cfg.rst = MIKROBUS( mikrobus, MIKROBUS_RST ); \
171 cfg.bsy = MIKROBUS( mikrobus, MIKROBUS_PWM ); \
172 cfg.int_pin = MIKROBUS( mikrobus, MIKROBUS_INT )
173
174 // lriot_map
175 // lriot
176
181typedef struct
182{
183#if ( LRIOT_FIRMWARE_SELECTOR == LRIOT_TRANSCEIVE_FIRMWARE )
187#else
190 lr1110_modem_wifi_mode_t scan_mode;
192#endif
193 uint8_t max_results;
197
199
204typedef struct
205{
206#if ( LRIOT_FIRMWARE_SELECTOR == LRIOT_TRANSCEIVE_FIRMWARE )
209#else
212#endif
214
216
221typedef struct
222{
224#if ( LRIOT_FIRMWARE_SELECTOR == LRIOT_TRANSCEIVE_FIRMWARE )
226#else
228#endif
229 uint8_t scan_results[ LRIOT_GNSS_SCAN_RESULTS_BUF_LEN ];
232
234
239typedef struct
240{
241#if ( LRIOT_FIRMWARE_SELECTOR == LRIOT_TRANSCEIVE_FIRMWARE )
246#else
251 uint32_t pin;
252#endif
253
255
267
272typedef struct
273{
274 // Output pins
275 digital_out_t rst;
277 // Input pins
278 digital_in_t bsy;
279 digital_in_t int_pin;
281 pin_name_t bsy_pin_name;
283 // Modules
284 spi_master_t spi;
286 pin_name_t chip_select;
290} lriot_t;
291
296typedef struct
297{
298 // Communication gpio pins
299 pin_name_t miso;
300 pin_name_t mosi;
301 pin_name_t sck;
302 pin_name_t cs;
304 // Additional gpio pins
305 pin_name_t rst;
306 pin_name_t bsy;
307 pin_name_t int_pin;
309 // static variable
310 uint32_t spi_speed;
311 spi_master_mode_t spi_mode;
312 spi_master_chip_select_polarity_t cs_polarity;
315
320typedef enum
321{
323 LRIOT_ERROR = -1
324
326
343
357err_t lriot_init ( lriot_t *ctx, lriot_cfg_t *cfg );
358
372
382void lriot_set_rst_pin ( lriot_t *ctx, uint8_t state );
383
393
402uint8_t lriot_get_int_pin ( lriot_t *ctx );
403
417
418#if ( LRIOT_FIRMWARE_SELECTOR == LRIOT_TRANSCEIVE_FIRMWARE )
430err_t lriot_get_temperature ( lriot_t *ctx, float *temperature );
431
443err_t lriot_send_lora_message ( lriot_t *ctx, uint8_t *message );
444
458err_t lriot_read_lora_message ( lriot_t *ctx, lriot_lora_packet_status_t *pkt_status, uint8_t *message );
459#endif
460
474
488
501
502#ifdef __cplusplus
503}
504#endif
505#endif // LRIOT_H
506
507 // lriot
508
509// ------------------------------------------------------------------------ END
#define LRIOT_GNSS_SCAN_RESULTS_BUF_LEN
Definition lriot.h:104
#define LRIOT_WIFI_SCAN_MAX_RESULTS
LR IoT WiFi scan macros.
Definition lriot.h:111
#define LRIOT_GNSS_SCAN_MAX_SATELLITES
LR IoT GNSS scan macros.
Definition lriot.h:103
err_t lriot_init(lriot_t *ctx, lriot_cfg_t *cfg)
LR IoT initialization function.
err_t lriot_default_cfg(lriot_t *ctx)
LR IoT default configuration function.
void lriot_cfg_setup(lriot_cfg_t *cfg)
LR IoT configuration object setup function.
err_t lriot_get_chip_info(lriot_t *ctx, lriot_chip_info_t *info)
LR IoT get chip info function.
void lriot_set_rst_pin(lriot_t *ctx, uint8_t state)
LR IoT set rst pin function.
err_t lriot_get_gnss_scan_results(lriot_t *ctx, lriot_gnss_scan_results_t *results)
LR IoT get gnss scan results function.
err_t lriot_update_firmware(lriot_t *ctx)
LR IoT update firmware function.
err_t lriot_get_wifi_scan_results(lriot_t *ctx, lriot_wifi_scan_results_t *results)
LR IoT get wifi scan results function.
err_t lriot_send_lora_message(lriot_t *ctx, uint8_t *message)
LR IoT send lora message function.
err_t lriot_get_temperature(lriot_t *ctx, float *temperature)
LR IoT get temperature function.
uint8_t lriot_get_int_pin(lriot_t *ctx)
LR IoT get int pin function.
uint8_t lriot_get_busy_pin(lriot_t *ctx)
LR IoT get busy pin function.
err_t lriot_read_lora_message(lriot_t *ctx, lriot_lora_packet_status_t *pkt_status, uint8_t *message)
LR IoT read lora message function.
Bootloader driver types for LR1110.
Cryptographic engine driver types for LR1110.
GNSS scan driver types for LR1110.
GNSS scan driver types definition for LR1110 modem.
helper functions types definition for LR1110 modem
Modem lorawan types for LR1110.
uint8_t lr1110_modem_chip_eui_t[LR1110_MODEM_CHIP_EUI_LENGTH]
Chip EUI type.
Definition lr1110_modem_lorawan_types.h:543
uint8_t lr1110_modem_dev_eui_t[LR1110_MODEM_DEV_EUI_LENGTH]
Device EUI type.
Definition lr1110_modem_lorawan_types.h:553
uint8_t lr1110_modem_join_eui_t[LR1110_MODEM_JOIN_EUI_LENGTH]
Join EUI type.
Definition lr1110_modem_lorawan_types.h:548
System driver types for LR1110 modem.
Wi-Fi passive scan driver types definition for LR1110 modem.
lr1110_modem_wifi_mode_t
Wi-Fi capture mode.
Definition lr1110_modem_wifi_types.h:186
lr1110_modem_wifi_signal_type_scan_t
Wi-Fi signal type for passive scanning configuration.
Definition lr1110_modem_wifi_types.h:144
lr1110_modem_wifi_result_format_t
Definition lr1110_modem_wifi_types.h:199
lr1110_modem_wifi_channel_t
Wi-Fi Channels index.
Definition lr1110_modem_wifi_types.h:115
Radio driver types for LR1110.
System driver types for LR1110.
uint8_t lr1110_system_pin_t[LR1110_SYSTEM_PIN_LENGTH]
Fixed-length array to store a PIN.
Definition lr1110_system_types.h:92
uint8_t lr1110_system_uid_t[LR1110_SYSTEM_UID_LENGTH]
Fixed-length array to store a UID.
Definition lr1110_system_types.h:82
uint8_t lr1110_system_join_eui_t[LR1110_SYSTEM_JOIN_EUI_LENGTH]
Fixed-length array to store a joinEUI.
Definition lr1110_system_types.h:87
Type definitions for LR1110.
Wi-Fi passive scan driver types for LR1110.
lr1110_wifi_mode_t
Wi-Fi capture mode.
Definition lr1110_wifi_types.h:271
uint16_t lr1110_wifi_channel_mask_t
Type to store a Wi-Fi channel mask.
Definition lr1110_wifi_types.h:103
lr1110_wifi_signal_type_scan_t
Wi-Fi signal type for passive scanning configuration.
Definition lr1110_wifi_types.h:227
lriot_return_value_t
LR IoT Click return value data.
Definition lriot.h:321
@ LRIOT_OK
Definition lriot.h:322
@ LRIOT_ERROR
Definition lriot.h:323
This file contains SPI specific macros, functions, etc.
Detected SV structure.
Definition lr1110_gnss_types.h:264
Detected satellite structure.
Definition lr1110_modem_gnss_types.h:226
LR1110 modem version structure.
Definition lr1110_modem_lorawan_types.h:487
Cumulative timings.
Definition lr1110_modem_wifi_types.h:236
Extended full result structure.
Definition lr1110_modem_wifi_types.h:288
Version structure definition.
Definition lr1110_system_types.h:301
Cumulative timings.
Definition lr1110_wifi_types.h:292
Extended full result structure.
Definition lr1110_wifi_types.h:340
LR IoT Click configuration object.
Definition lriot.h:297
pin_name_t bsy
Definition lriot.h:306
spi_master_chip_select_polarity_t cs_polarity
Definition lriot.h:312
pin_name_t sck
Definition lriot.h:301
spi_master_mode_t spi_mode
Definition lriot.h:311
pin_name_t mosi
Definition lriot.h:300
uint32_t spi_speed
Definition lriot.h:310
pin_name_t int_pin
Definition lriot.h:307
pin_name_t miso
Definition lriot.h:299
pin_name_t rst
Definition lriot.h:305
pin_name_t cs
Definition lriot.h:302
LR IoT chip info object.
Definition lriot.h:240
lr1110_system_join_eui_t join_eui
Definition lriot.h:244
lr1110_system_pin_t pin
Definition lriot.h:245
lr1110_system_version_t version
Definition lriot.h:242
lr1110_system_uid_t uid
Definition lriot.h:243
LR IoT GNSS Scan results object.
Definition lriot.h:222
uint16_t scan_results_len
Definition lriot.h:230
uint8_t destination_id
Definition lriot.h:231
uint8_t num_satellites
Definition lriot.h:223
LR IoT LoRa packet status object.
Definition lriot.h:261
int8_t signal_rssi_pkt_in_dbm
Definition lriot.h:264
int8_t rssi_pkt_in_dbm
Definition lriot.h:262
int8_t snr_pkt_in_db
Definition lriot.h:263
LR IoT Click context object.
Definition lriot.h:273
spi_master_t spi
Definition lriot.h:284
pin_name_t bsy_pin_name
Definition lriot.h:281
digital_in_t int_pin
Definition lriot.h:279
lriot_wifi_settings_t wifi_settings
Definition lriot.h:288
digital_in_t bsy
Definition lriot.h:278
digital_out_t rst
Definition lriot.h:275
pin_name_t chip_select
Definition lriot.h:286
LR IoT WiFi Scan results object.
Definition lriot.h:205
lr1110_wifi_cumulative_timings_t timings
Definition lriot.h:208
uint8_t num_wifi_results
Definition lriot.h:213
LR IoT WiFi settings object.
Definition lriot.h:182
lr1110_wifi_signal_type_scan_t signal_type
Definition lriot.h:184
uint8_t nb_scan_per_channel
Definition lriot.h:194
lr1110_wifi_mode_t scan_mode
Definition lriot.h:186
bool abort_on_timeout
Definition lriot.h:196
uint8_t max_results
Definition lriot.h:193
lr1110_wifi_channel_mask_t channels
Definition lriot.h:185
uint16_t timeout_in_ms
Definition lriot.h:195