Zephyr API Documentation 4.2.99
A Scalable Open Source RTOS
Loading...
Searching...
No Matches
ubx.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2024 NXP
3 * Copyright (c) 2025 Croxel Inc.
4 * Copyright (c) 2025 CogniPilot Foundation
5 *
6 * SPDX-License-Identifier: Apache-2.0
7 */
8
9#include <zephyr/kernel.h>
10#include <zephyr/types.h>
11#include <zephyr/sys/atomic.h>
12
13#include <zephyr/modem/pipe.h>
15
16#ifndef ZEPHYR_MODEM_UBX_
17#define ZEPHYR_MODEM_UBX_
18
19#ifdef __cplusplus
20extern "C" {
21#endif
22
31
32struct modem_ubx;
33
34typedef void (*modem_ubx_match_callback)(struct modem_ubx *ubx,
35 const struct ubx_frame *frame,
36 size_t len,
37 void *user_data);
38
43
44#define MODEM_UBX_MATCH_ARRAY_DEFINE(_name, ...) \
45 struct modem_ubx_match _name[] = {__VA_ARGS__};
46
47#define MODEM_UBX_MATCH_DEFINE(_class_id, _msg_id, _handler) \
48{ \
49 .filter = { \
50 .class = _class_id, \
51 .id = _msg_id, \
52 }, \
53 .handler = _handler, \
54}
55
70
87
97
107int modem_ubx_attach(struct modem_ubx *ubx, struct modem_pipe *pipe);
108
114void modem_ubx_release(struct modem_ubx *ubx);
115
122int modem_ubx_init(struct modem_ubx *ubx, const struct modem_ubx_config *config);
123
150int modem_ubx_run_script(struct modem_ubx *ubx, struct modem_ubx_script *script);
151
153 struct ubx_frame *array, size_t array_size);
154
158
159#ifdef __cplusplus
160}
161#endif
162
163#endif /* ZEPHYR_MODEM_UBX_ */
long atomic_t
Definition atomic_types.h:15
int modem_ubx_run_script_for_each(struct modem_ubx *ubx, struct modem_ubx_script *script, struct ubx_frame *array, size_t array_size)
int modem_ubx_attach(struct modem_ubx *ubx, struct modem_pipe *pipe)
Attach pipe to Modem Ubx.
void modem_ubx_release(struct modem_ubx *ubx)
Release pipe from Modem Ubx instance.
int modem_ubx_run_script(struct modem_ubx *ubx, struct modem_ubx_script *script)
Writes the ubx frame in script.request and reads back its response (if available)
void(* modem_ubx_match_callback)(struct modem_ubx *ubx, const struct ubx_frame *frame, size_t len, void *user_data)
Definition ubx.h:34
int modem_ubx_init(struct modem_ubx *ubx, const struct modem_ubx_config *config)
Initialize Modem Ubx instance.
Public kernel APIs.
__UINT8_TYPE__ uint8_t
Definition stdint.h:88
__UINT16_TYPE__ uint16_t
Definition stdint.h:89
Semaphore structure.
Definition kernel.h:3275
Kernel timeout type.
Definition clock.h:65
A structure used to submit work.
Definition kernel.h:4164
Definition ubx.h:88
struct modem_ubx_config::@064247072102043330135135206211045316343340146202 unsol_matches
size_t size
Definition ubx.h:94
const struct modem_ubx_match * array
Definition ubx.h:93
uint16_t receive_buf_size
Definition ubx.h:91
uint8_t * receive_buf
Definition ubx.h:90
void * user_data
Definition ubx.h:89
Definition ubx.h:39
modem_ubx_match_callback handler
Definition ubx.h:41
struct ubx_frame_match filter
Definition ubx.h:40
Definition ubx.h:56
uint16_t len
Definition ubx.h:59
k_timeout_t timeout
Definition ubx.h:68
const void * buf
Definition ubx.h:58
struct modem_ubx_match match
Definition ubx.h:66
uint16_t retry_count
Definition ubx.h:67
uint16_t received_len
Definition ubx.h:64
struct modem_ubx_script::@125262324261144301256337001320113377072112120173 response
uint16_t buf_len
Definition ubx.h:63
struct modem_ubx_script::@352254277043233371101045333366114317241110234076 request
Definition ubx.h:71
struct k_sem script_running_sem
Definition ubx.h:81
uint8_t * receive_buf
Definition ubx.h:74
struct modem_pipe * pipe
Definition ubx.h:78
atomic_t attached
Definition ubx.h:73
uint16_t receive_buf_size
Definition ubx.h:75
uint16_t receive_buf_offset
Definition ubx.h:76
size_t size
Definition ubx.h:84
struct modem_ubx_script * script
Definition ubx.h:77
void * user_data
Definition ubx.h:72
struct k_work process_work
Definition ubx.h:79
struct k_sem script_stopped_sem
Definition ubx.h:80
const struct modem_ubx_match * array
Definition ubx.h:83
struct modem_ubx::@222303241252066212057020164220110307037317275334 unsol_matches
Definition protocol.h:38
Definition protocol.h:29