Zephyr API Documentation 4.1.99
A Scalable Open Source RTOS
 4.1.99
All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
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
30struct modem_ubx;
31
32typedef void (*modem_ubx_match_callback)(struct modem_ubx *ubx,
33 const struct ubx_frame *frame,
34 size_t len,
35 void *user_data);
36
41
42#define MODEM_UBX_MATCH_ARRAY_DEFINE(_name, ...) \
43 struct modem_ubx_match _name[] = {__VA_ARGS__};
44
45#define MODEM_UBX_MATCH_DEFINE(_class_id, _msg_id, _handler) \
46{ \
47 .filter = { \
48 .class = _class_id, \
49 .id = _msg_id, \
50 }, \
51 .handler = _handler, \
52}
53
68
85
95
105int modem_ubx_attach(struct modem_ubx *ubx, struct modem_pipe *pipe);
106
112void modem_ubx_release(struct modem_ubx *ubx);
113
120int modem_ubx_init(struct modem_ubx *ubx, const struct modem_ubx_config *config);
121
148int modem_ubx_run_script(struct modem_ubx *ubx, struct modem_ubx_script *script);
149
151 struct ubx_frame *array, size_t array_size);
152
157#ifdef __cplusplus
158}
159#endif
160
161#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:32
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 sys_clock.h:65
A structure used to submit work.
Definition kernel.h:4073
Definition ubx.h:86
size_t size
Definition ubx.h:92
const struct modem_ubx_match * array
Definition ubx.h:91
uint16_t receive_buf_size
Definition ubx.h:89
uint8_t * receive_buf
Definition ubx.h:88
void * user_data
Definition ubx.h:87
struct modem_ubx_config::@362 unsol_matches
Definition ubx.h:37
modem_ubx_match_callback handler
Definition ubx.h:39
struct ubx_frame_match filter
Definition ubx.h:38
Definition ubx.h:54
uint16_t len
Definition ubx.h:57
k_timeout_t timeout
Definition ubx.h:66
struct modem_ubx_script::@359 request
struct modem_ubx_match match
Definition ubx.h:64
uint16_t retry_count
Definition ubx.h:65
uint16_t received_len
Definition ubx.h:62
uint16_t buf_len
Definition ubx.h:61
uint8_t * buf
Definition ubx.h:60
const struct ubx_frame * buf
Definition ubx.h:56
struct modem_ubx_script::@360 response
Definition ubx.h:69
struct k_sem script_running_sem
Definition ubx.h:79
uint8_t * receive_buf
Definition ubx.h:72
struct modem_pipe * pipe
Definition ubx.h:76
atomic_t attached
Definition ubx.h:71
uint16_t receive_buf_size
Definition ubx.h:73
uint16_t receive_buf_offset
Definition ubx.h:74
size_t size
Definition ubx.h:82
struct modem_ubx_script * script
Definition ubx.h:75
void * user_data
Definition ubx.h:70
struct k_work process_work
Definition ubx.h:77
struct modem_ubx::@361 unsol_matches
struct k_sem script_stopped_sem
Definition ubx.h:78
const struct modem_ubx_match * array
Definition ubx.h:81
Definition protocol.h:38
Definition protocol.h:29