libosmogsm 1.11.0.26-c59d.202505152026
Osmocom GSM library
Loading...
Searching...
No Matches
iuup.h
Go to the documentation of this file.
1#pragma once
2
3#include <stdint.h>
4
5#include <osmocom/core/prim.h>
7
8/***********************************************************************
9 * Primitives towards the lower layers (typically RTP transport)
10 ***********************************************************************/
14
18
19/***********************************************************************
20 * Primitives towards the upper layers at the RNL SAP
21 ***********************************************************************/
22
23/* 3GPP TS 25.415 Section 7.2.1 */
30
31/* TS 25.413 9.2.1.3*/
32#define IUUP_MAX_SUBFLOWS 7
33#define IUUP_MAX_RFCIS 64
34
35#define IUUP_TIMER_INIT_T_DEFAULT 1000
36#define IUUP_TIMER_TA_T_DEFAULT 500
37#define IUUP_TIMER_RC_T_DEFAULT 500
38#define IUUP_TIMER_INIT_N_DEFAULT 3
39#define IUUP_TIMER_TA_N_DEFAULT 1
40#define IUUP_TIMER_RC_N_DEFAULT 1
42 uint32_t t_ms; /* time in ms */
43 uint32_t n_max; /* max number of repetitions */
44};
46 uint8_t used:1,
48 id:6;
49 uint8_t spare2:4,
50 IPTI:4; /* values range 0-15, 4 bits */;
52};
54 /* transparent (true) or SMpSDU (false): */
56
57 /* should we actively transmit INIT in SmpSDU mode? */
58 bool active;
59
60 /* Currently Version 0 or 1: */
62
63 /* Supported mode versions */
65 uint8_t num_rfci;
66 uint8_t num_subflows;
69
70 /* TODO: Indication of delivery of erroneous SDUs*/
74};
75
77 uint8_t rfci;
78 uint8_t frame_nr;
79 uint8_t fqc;
80};
81
103
104/* SAP on the upper side of IuUP, towards the user */
107 union {
110 struct osmo_iuup_rnl_status status;
111 //struct osmo_iuup_rnl_unitdata unitdata;
112 } u;
113};
114
115struct osmo_iuup_instance;
116struct osmo_iuup_instance *osmo_iuup_instance_alloc(void *ctx, const char *id);
118
119void osmo_iuup_instance_set_user_prim_cb(struct osmo_iuup_instance *iui, osmo_prim_cb func, void *priv);
120void osmo_iuup_instance_set_transport_prim_cb(struct osmo_iuup_instance *iui, osmo_prim_cb func, void *priv);
123
124
125int osmo_iuup_compute_header_crc(const uint8_t *iuup_pdu, unsigned int pdu_len);
126int osmo_iuup_compute_payload_crc(const uint8_t *iuup_pdu, unsigned int pdu_len);
127
128struct osmo_iuup_rnl_prim *osmo_iuup_rnl_prim_alloc(void *ctx, unsigned int primitive, unsigned int operation, unsigned int size);
129struct osmo_iuup_tnl_prim *osmo_iuup_tnl_prim_alloc(void *ctx, unsigned int primitive, unsigned int operation, unsigned int size);
write Write running configuration to or terminal n Write configuration to the copy running config startup config
uint8_t data[0]
Definition gsm_03_41.h:16
iuup_error_distance
Definition gsm_25_415.h:190
iuup_error_cause
Definition gsm_25_415.h:199
iuup_procedure
Definition gsm_25_415.h:181
#define IUUP_MAX_SUBFLOWS
Definition iuup.h:32
struct osmo_iuup_rnl_prim * osmo_iuup_rnl_prim_alloc(void *ctx, unsigned int primitive, unsigned int operation, unsigned int size)
Definition iuup.c:212
void osmo_iuup_instance_set_transport_prim_cb(struct osmo_iuup_instance *iui, osmo_prim_cb func, void *priv)
Definition iuup.c:1067
int osmo_iuup_compute_payload_crc(const uint8_t *iuup_pdu, unsigned int pdu_len)
Definition iuup.c:71
struct osmo_iuup_instance * osmo_iuup_instance_alloc(void *ctx, const char *id)
Definition iuup.c:1034
int osmo_iuup_compute_header_crc(const uint8_t *iuup_pdu, unsigned int pdu_len)
Definition iuup.c:98
osmo_iuup_tnl_prim_type
Definition iuup.h:11
@ OSMO_IUUP_TNL_UNITDATA
Definition iuup.h:12
int osmo_iuup_tnl_prim_up(struct osmo_iuup_instance *iui, struct osmo_iuup_tnl_prim *itp)
Definition iuup.c:916
void osmo_iuup_instance_set_user_prim_cb(struct osmo_iuup_instance *iui, osmo_prim_cb func, void *priv)
Definition iuup.c:1062
osmo_iuup_rnl_prim_type
Definition iuup.h:24
@ OSMO_IUUP_RNL_CONFIG
Definition iuup.h:25
@ OSMO_IUUP_RNL_STATUS
Definition iuup.h:27
@ OSMO_IUUP_RNL_DATA
Definition iuup.h:26
@ OSMO_IUUP_RNL_UNIT_DATA
Definition iuup.h:28
void osmo_iuup_instance_free(struct osmo_iuup_instance *iui)
Definition iuup.c:1051
struct osmo_iuup_tnl_prim * osmo_iuup_tnl_prim_alloc(void *ctx, unsigned int primitive, unsigned int operation, unsigned int size)
Definition iuup.c:223
int osmo_iuup_rnl_prim_down(struct osmo_iuup_instance *inst, struct osmo_iuup_rnl_prim *irp)
Definition iuup.c:1006
#define IUUP_MAX_RFCIS
Definition iuup.h:33
Definition iuup.c:125
Definition iuup.h:45
uint8_t IPTI
Definition iuup.h:50
uint16_t subflow_sizes[IUUP_MAX_SUBFLOWS]
Definition iuup.h:51
uint8_t spare2
Definition iuup.h:49
uint8_t used
Definition iuup.h:46
uint8_t spare1
Definition iuup.h:47
uint8_t id
Definition iuup.h:48
Definition iuup.h:41
uint32_t n_max
Definition iuup.h:43
uint32_t t_ms
Definition iuup.h:42
Definition iuup.h:53
uint16_t supported_versions_mask
Definition iuup.h:64
struct osmo_iuup_rnl_config_timer t_ta
Definition iuup.h:72
uint8_t data_pdu_type
Definition iuup.h:61
struct osmo_iuup_rnl_config_timer t_init
Definition iuup.h:71
bool active
Definition iuup.h:58
uint8_t num_rfci
Definition iuup.h:65
struct osmo_iuup_rnl_config_timer t_rc
Definition iuup.h:73
bool IPTIs_present
Definition iuup.h:67
uint8_t num_subflows
Definition iuup.h:66
struct osmo_iuup_rfci rfci[IUUP_MAX_RFCIS]
Definition iuup.h:68
bool transparent
Definition iuup.h:55
Definition iuup.h:76
uint8_t fqc
Definition iuup.h:79
uint8_t rfci
Definition iuup.h:77
uint8_t frame_nr
Definition iuup.h:78
Definition iuup.h:105
struct osmo_prim_hdr oph
Definition iuup.h:106
union osmo_iuup_rnl_prim::@18 u
Definition iuup.h:82
struct osmo_iuup_rnl_status::@13::@17 time_alignment
enum iuup_error_distance distance
Definition iuup.h:87
uint16_t mode_version
Definition iuup.h:90
struct osmo_iuup_rnl_status::@13::@15 initialization
union osmo_iuup_rnl_status::@13 u
struct osmo_iuup_rnl_status::@13::@16 rate_control
uint8_t num_subflows
Definition iuup.h:93
uint8_t num_rfci
Definition iuup.h:92
enum iuup_error_cause cause
Definition iuup.h:86
struct osmo_iuup_rfci rfci[IUUP_MAX_RFCIS]
Definition iuup.h:95
uint8_t data_pdu_type
Definition iuup.h:91
enum iuup_procedure procedure
Definition iuup.h:83
bool IPTIs_present
Definition iuup.h:94
struct osmo_iuup_rnl_status::@13::@14 error_event
Definition iuup.h:15
struct osmo_prim_hdr oph
Definition iuup.h:16