gnss17  2.1.0.0
gnss17.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 GNSS17_H
29 #define GNSS17_H
30 
31 #ifdef __cplusplus
32 extern "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_uart.h"
52 
73 #define GNSS17_RSP_START "$"
74 #define GNSS17_RSP_DELIMITER ","
75 #define GNSS17_RSP_END "\r\n"
76 #define GNSS17_RSP_GGA "GGA"
77 
82 #define GNSS17_GGA_ELEMENT_SIZE 15
83 #define GNSS17_GGA_TIME 1
84 #define GNSS17_GGA_LATITUDE 2
85 #define GNSS17_GGA_LATITUDE_SIDE 3
86 #define GNSS17_GGA_LONGITUDE 4
87 #define GNSS17_GGA_LONGITUDE_SIDE 5
88 #define GNSS17_GGA_QUALITY_INDICATOR 6
89 #define GNSS17_GGA_NUMBER_OF_SATELLITES 7
90 #define GNSS17_GGA_H_DILUTION_OF_POS 8
91 #define GNSS17_GGA_ALTITUDE 9
92 #define GNSS17_GGA_ALTITUDE_UNIT 10
93 #define GNSS17_GGA_GEOIDAL_SEPARATION 11
94 #define GNSS17_GGA_GEOIDAL_SEPARATION_UNIT 12
95 #define GNSS17_GGA_TIME_SINCE_LAST_DGPS 13
96 #define GNSS17_GGA_DGPS_REFERENCE_STATION_ID 14
97 
103 #define GNSS17_TX_DRV_BUFFER_SIZE 100
104 #define GNSS17_RX_DRV_BUFFER_SIZE 1000
105  // gnss17_cmd
107 
122 #define GNSS17_MAP_MIKROBUS( cfg, mikrobus ) \
123  cfg.tx_pin = MIKROBUS( mikrobus, MIKROBUS_TX ); \
124  cfg.rx_pin = MIKROBUS( mikrobus, MIKROBUS_RX ); \
125  cfg.aon = MIKROBUS( mikrobus, MIKROBUS_AN ); \
126  cfg.en = MIKROBUS( mikrobus, MIKROBUS_RST ); \
127  cfg.rts = MIKROBUS( mikrobus, MIKROBUS_CS ); \
128  cfg.rtc = MIKROBUS( mikrobus, MIKROBUS_PWM );
129  // gnss17_map // gnss17
132 
137 typedef struct
138 {
139  // Output pins
140  digital_out_t aon;
141  digital_out_t en;
142  digital_out_t rts;
143  digital_out_t rtc;
145  // Modules
146  uart_t uart;
148  // Buffers
149  uint8_t uart_rx_buffer[ GNSS17_RX_DRV_BUFFER_SIZE ];
150  uint8_t uart_tx_buffer[ GNSS17_TX_DRV_BUFFER_SIZE ];
152 } gnss17_t;
153 
158 typedef struct
159 {
160  // Communication gpio pins
161  pin_name_t rx_pin;
162  pin_name_t tx_pin;
164  // Additional gpio pins
165  pin_name_t aon;
166  pin_name_t en;
167  pin_name_t rts;
168  pin_name_t rtc;
170  // Static variable
171  uint32_t baud_rate;
173  uart_data_bits_t data_bit;
174  uart_parity_t parity_bit;
175  uart_stop_bits_t stop_bit;
177 } gnss17_cfg_t;
178 
183 typedef enum
184 {
186  GNSS17_ERROR = -1
187 
189 
206 
220 err_t gnss17_init ( gnss17_t *ctx, gnss17_cfg_t *cfg );
221 
234 err_t gnss17_generic_write ( gnss17_t *ctx, uint8_t *data_in, uint16_t len );
235 
248 err_t gnss17_generic_read ( gnss17_t *ctx, uint8_t *data_out, uint16_t len );
249 
259 void gnss17_set_en_pin ( gnss17_t *ctx, uint8_t state );
260 
270 void gnss17_set_aon_pin ( gnss17_t *ctx, uint8_t state );
271 
281 void gnss17_set_rts_pin ( gnss17_t *ctx, uint8_t state );
282 
292 void gnss17_set_rtc_pin ( gnss17_t *ctx, uint8_t state );
293 
303 
315 err_t gnss17_parse_gga ( uint8_t *rsp_buf, uint8_t gga_element, uint8_t *element_data );
316 
317 #ifdef __cplusplus
318 }
319 #endif
320 #endif // GNSS17_H
321  // gnss17
323 
324 // ------------------------------------------------------------------------ END
GNSS17_RX_DRV_BUFFER_SIZE
#define GNSS17_RX_DRV_BUFFER_SIZE
Definition: gnss17.h:104
gnss17_set_rtc_pin
void gnss17_set_rtc_pin(gnss17_t *ctx, uint8_t state)
GNSS 17 set RTC pin function.
gnss17_t::uart
uart_t uart
Definition: gnss17.h:146
gnss17_return_value_t
gnss17_return_value_t
GNSS 17 Click return value data.
Definition: gnss17.h:184
gnss17_reset_device
void gnss17_reset_device(gnss17_t *ctx)
GNSS 17 reset device function.
gnss17_t::rts
digital_out_t rts
Definition: gnss17.h:142
gnss17_t::aon
digital_out_t aon
Definition: gnss17.h:140
gnss17_set_en_pin
void gnss17_set_en_pin(gnss17_t *ctx, uint8_t state)
GNSS 17 set EN pin function.
gnss17_cfg_t::rts
pin_name_t rts
Definition: gnss17.h:167
gnss17_set_rts_pin
void gnss17_set_rts_pin(gnss17_t *ctx, uint8_t state)
GNSS 17 set RTS pin function.
GNSS17_ERROR
@ GNSS17_ERROR
Definition: gnss17.h:186
gnss17_t
GNSS 17 Click context object.
Definition: gnss17.h:138
gnss17_cfg_t::en
pin_name_t en
Definition: gnss17.h:166
gnss17_cfg_t::data_bit
uart_data_bits_t data_bit
Definition: gnss17.h:173
gnss17_cfg_t::rx_pin
pin_name_t rx_pin
Definition: gnss17.h:161
gnss17_t::en
digital_out_t en
Definition: gnss17.h:141
GNSS17_OK
@ GNSS17_OK
Definition: gnss17.h:185
gnss17_cfg_t::uart_blocking
bool uart_blocking
Definition: gnss17.h:172
gnss17_cfg_t::stop_bit
uart_stop_bits_t stop_bit
Definition: gnss17.h:175
gnss17_cfg_t::aon
pin_name_t aon
Definition: gnss17.h:165
GNSS17_TX_DRV_BUFFER_SIZE
#define GNSS17_TX_DRV_BUFFER_SIZE
GNSS 17 driver buffer size.
Definition: gnss17.h:103
gnss17_cfg_setup
void gnss17_cfg_setup(gnss17_cfg_t *cfg)
GNSS 17 configuration object setup function.
gnss17_generic_read
err_t gnss17_generic_read(gnss17_t *ctx, uint8_t *data_out, uint16_t len)
GNSS 17 data reading function.
gnss17_init
err_t gnss17_init(gnss17_t *ctx, gnss17_cfg_t *cfg)
GNSS 17 initialization function.
gnss17_cfg_t::parity_bit
uart_parity_t parity_bit
Definition: gnss17.h:174
gnss17_cfg_t::baud_rate
uint32_t baud_rate
Definition: gnss17.h:171
gnss17_cfg_t
GNSS 17 Click configuration object.
Definition: gnss17.h:159
gnss17_cfg_t::rtc
pin_name_t rtc
Definition: gnss17.h:168
gnss17_generic_write
err_t gnss17_generic_write(gnss17_t *ctx, uint8_t *data_in, uint16_t len)
GNSS 17 data writing function.
gnss17_t::rtc
digital_out_t rtc
Definition: gnss17.h:143
gnss17_parse_gga
err_t gnss17_parse_gga(uint8_t *rsp_buf, uint8_t gga_element, uint8_t *element_data)
GNSS 17 parse GGA function.
gnss17_cfg_t::tx_pin
pin_name_t tx_pin
Definition: gnss17.h:162
gnss17_set_aon_pin
void gnss17_set_aon_pin(gnss17_t *ctx, uint8_t state)
GNSS 17 set AON pin function.