Zephyr Project API 3.7.0
A Scalable Open Source RTOS
Loading...
Searching...
No Matches

Modem Ubx. More...

Data Structures

struct  ubx_frame
 
struct  modem_ubx_script
 
struct  modem_ubx
 
struct  modem_ubx_config
 

Macros

#define UBX_FRM_HEADER_SZ   6
 
#define UBX_FRM_FOOTER_SZ   2
 
#define UBX_FRM_SZ_WITHOUT_PAYLOAD   (UBX_FRM_HEADER_SZ + UBX_FRM_FOOTER_SZ)
 
#define UBX_FRM_SZ(payload_size)   (payload_size + UBX_FRM_SZ_WITHOUT_PAYLOAD)
 
#define UBX_PREAMBLE_SYNC_CHAR_1   0xB5
 
#define UBX_PREAMBLE_SYNC_CHAR_2   0x62
 
#define UBX_FRM_PREAMBLE_SYNC_CHAR_1_IDX   0
 
#define UBX_FRM_PREAMBLE_SYNC_CHAR_2_IDX   1
 
#define UBX_FRM_MSG_CLASS_IDX   2
 
#define UBX_FRM_MSG_ID_IDX   3
 
#define UBX_FRM_PAYLOAD_SZ_L_IDX   4
 
#define UBX_FRM_PAYLOAD_SZ_H_IDX   5
 
#define UBX_FRM_PAYLOAD_IDX   6
 
#define UBX_FRM_CHECKSUM_START_IDX   2
 
#define UBX_FRM_CHECKSUM_STOP_IDX(frame_len)   (frame_len - 2)
 
#define UBX_PAYLOAD_SZ_MAX   256
 
#define UBX_FRM_SZ_MAX   UBX_FRM_SZ(UBX_PAYLOAD_SZ_MAX)
 

Functions

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_init (struct modem_ubx *ubx, const struct modem_ubx_config *config)
 Initialize Modem Ubx instance.
 
int modem_ubx_run_script (struct modem_ubx *ubx, const struct modem_ubx_script *script)
 Writes the ubx frame in script.request and reads back its response (if available)
 
int modem_ubx_create_frame (uint8_t *ubx_frame, uint16_t ubx_frame_size, uint8_t msg_cls, uint8_t msg_id, const void *payload, uint16_t payload_size)
 Initialize ubx frame.
 

Detailed Description

Modem Ubx.

Macro Definition Documentation

◆ UBX_FRM_CHECKSUM_START_IDX

#define UBX_FRM_CHECKSUM_START_IDX   2

◆ UBX_FRM_CHECKSUM_STOP_IDX

#define UBX_FRM_CHECKSUM_STOP_IDX (   frame_len)    (frame_len - 2)

◆ UBX_FRM_FOOTER_SZ

#define UBX_FRM_FOOTER_SZ   2

◆ UBX_FRM_HEADER_SZ

#define UBX_FRM_HEADER_SZ   6

◆ UBX_FRM_MSG_CLASS_IDX

#define UBX_FRM_MSG_CLASS_IDX   2

◆ UBX_FRM_MSG_ID_IDX

#define UBX_FRM_MSG_ID_IDX   3

◆ UBX_FRM_PAYLOAD_IDX

#define UBX_FRM_PAYLOAD_IDX   6

◆ UBX_FRM_PAYLOAD_SZ_H_IDX

#define UBX_FRM_PAYLOAD_SZ_H_IDX   5

◆ UBX_FRM_PAYLOAD_SZ_L_IDX

#define UBX_FRM_PAYLOAD_SZ_L_IDX   4

◆ UBX_FRM_PREAMBLE_SYNC_CHAR_1_IDX

#define UBX_FRM_PREAMBLE_SYNC_CHAR_1_IDX   0

◆ UBX_FRM_PREAMBLE_SYNC_CHAR_2_IDX

#define UBX_FRM_PREAMBLE_SYNC_CHAR_2_IDX   1

◆ UBX_FRM_SZ

#define UBX_FRM_SZ (   payload_size)    (payload_size + UBX_FRM_SZ_WITHOUT_PAYLOAD)

◆ UBX_FRM_SZ_MAX

#define UBX_FRM_SZ_MAX   UBX_FRM_SZ(UBX_PAYLOAD_SZ_MAX)

◆ UBX_FRM_SZ_WITHOUT_PAYLOAD

#define UBX_FRM_SZ_WITHOUT_PAYLOAD   (UBX_FRM_HEADER_SZ + UBX_FRM_FOOTER_SZ)

◆ UBX_PAYLOAD_SZ_MAX

#define UBX_PAYLOAD_SZ_MAX   256

◆ UBX_PREAMBLE_SYNC_CHAR_1

#define UBX_PREAMBLE_SYNC_CHAR_1   0xB5

◆ UBX_PREAMBLE_SYNC_CHAR_2

#define UBX_PREAMBLE_SYNC_CHAR_2   0x62

Function Documentation

◆ modem_ubx_attach()

int modem_ubx_attach ( struct modem_ubx ubx,
struct modem_pipe *  pipe 
)

#include <include/zephyr/modem/ubx.h>

Attach pipe to Modem Ubx.

Parameters
ubxModem Ubx instance
pipePipe instance to attach Modem Ubx instance to
Returns
0 if successful
negative errno code if failure
Note
Modem Ubx instance is enabled if successful

◆ modem_ubx_create_frame()

int modem_ubx_create_frame ( uint8_t ubx_frame,
uint16_t  ubx_frame_size,
uint8_t  msg_cls,
uint8_t  msg_id,
const void *  payload,
uint16_t  payload_size 
)

#include <include/zephyr/modem/ubx.h>

Initialize ubx frame.

Parameters
ubx_frameUbx frame buffer
ubx_frame_sizeUbx frame buffer size
msg_clsMessage class
msg_idMessage id
payloadPayload buffer
payload_sizePayload buffer size
Returns
positive integer denoting the length of the ubx frame created
negative errno code if failure

◆ modem_ubx_init()

int modem_ubx_init ( struct modem_ubx ubx,
const struct modem_ubx_config config 
)

#include <include/zephyr/modem/ubx.h>

Initialize Modem Ubx instance.

Parameters
ubxModem Ubx instance
configConfiguration which shall be applied to the Modem Ubx instance
Note
Modem Ubx instance must be attached to a pipe instance

◆ modem_ubx_release()

void modem_ubx_release ( struct modem_ubx ubx)

#include <include/zephyr/modem/ubx.h>

Release pipe from Modem Ubx instance.

Parameters
ubxModem Ubx instance

◆ modem_ubx_run_script()

int modem_ubx_run_script ( struct modem_ubx ubx,
const struct modem_ubx_script script 
)

#include <include/zephyr/modem/ubx.h>

Writes the ubx frame in script.request and reads back its response (if available)

For each ubx frame sent, the device responds in 0, 1 or both of the following ways:

  1. The device sends back a UBX-ACK frame to denote 'acknowledge' and 'not-acknowledge'. Note: the message id of UBX-ACK frame determines whether the device acknowledged. Ex: when we send a UBX-CFG frame, the device responds with a UBX-ACK frame.
  2. The device sends back the same frame that we sent to it, with it's payload populated. It's used to get the current configuration corresponding to the frame that we sent. Ex: frame types such as "get" or "poll" ubx frames respond this way. This response (if received) is written to script.response.

This function writes the ubx frame in script.request then reads back it's response. If script.match is not NULL, then every ubx frame received from the device is compared with script.match to check if a match occurred. This could be used to match UBX-ACK frame sent from the device by populating script.match with UBX-ACK that the script expects to receive.

The script terminates when either of the following happens:

  1. script.match is successfully received and matched.
  2. timeout (denoted by script.timeout) occurs.
    Parameters
    ubxModem Ubx instance
    scriptScript to be executed
    Note
    The length of ubx frame in the script.request should not exceed UBX_FRM_SZ_MAX
    Modem Ubx instance must be attached to a pipe instance
    Returns
    0 if device acknowledged via UBX-ACK and no "get" response was received
    positive integer denoting the length of "get" response that was received
    negative errno code if failure