libosmogsm 1.6.0.113-b17c
Osmocom GSM library
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 ***********************************************************************/
13};
14
17};
18
19/***********************************************************************
20 * Primitives towards the upper layers at the RNL SAP
21 ***********************************************************************/
22
23/* 3GPP TS 25.415 Section 7.2.1 */
29};
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 /* transparent (true) or SMpSDU (false): */
48
49 /* should we actively transmit INIT in SmpSDU mode? */
50 bool active;
51
52 /* Currently Version 0 or 1: */
54
55 /* Supported mode versions */
57 uint8_t num_rfci;
58 uint8_t num_subflows;
61 uint8_t IPTIs[IUUP_MAX_RFCIS]; /* values range 0-15, 4 bits */
62
63 /* TODO: Indication of delivery of erroneous SDUs*/
67};
68
70 uint8_t rfci;
71 uint8_t frame_nr;
72 uint8_t fqc;
73};
74
77 union {
78 struct {
82 struct {
83 uint16_t mode_version;
85 uint8_t num_rfci;
86 uint8_t num_subflows;
89 uint8_t IPTIs[IUUP_MAX_RFCIS]; /* values range 0-15, 4 bits */
91 struct {
93 struct {
95 } u;
96};
97
98/* SAP on the upper side of IuUP, towards the user */
101 union {
105 //struct osmo_iuup_rnl_unitdata unitdata;
106 } u;
107};
108
109struct osmo_iuup_instance;
110struct osmo_iuup_instance *osmo_iuup_instance_alloc(void *ctx, const char *id);
112
117
118
119int osmo_iuup_compute_header_crc(const uint8_t *iuup_pdu, unsigned int pdu_len);
120int osmo_iuup_compute_payload_crc(const uint8_t *iuup_pdu, unsigned int pdu_len);
121
122struct osmo_iuup_rnl_prim *osmo_iuup_rnl_prim_alloc(void *ctx, unsigned int primitive, unsigned int operation, unsigned int size);
123struct osmo_iuup_tnl_prim *osmo_iuup_tnl_prim_alloc(void *ctx, unsigned int primitive, unsigned int operation, unsigned int size);
int(* osmo_prim_cb)(struct osmo_prim_hdr *oph, void *ctx)
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:208
void osmo_iuup_instance_set_transport_prim_cb(struct osmo_iuup_instance *iui, osmo_prim_cb func, void *priv)
Definition: iuup.c:1026
int osmo_iuup_compute_payload_crc(const uint8_t *iuup_pdu, unsigned int pdu_len)
Definition: iuup.c:67
struct osmo_iuup_instance * osmo_iuup_instance_alloc(void *ctx, const char *id)
Definition: iuup.c:993
int osmo_iuup_compute_header_crc(const uint8_t *iuup_pdu, unsigned int pdu_len)
Definition: iuup.c:94
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:875
void osmo_iuup_instance_set_user_prim_cb(struct osmo_iuup_instance *iui, osmo_prim_cb func, void *priv)
Definition: iuup.c:1021
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:1010
struct osmo_iuup_tnl_prim * osmo_iuup_tnl_prim_alloc(void *ctx, unsigned int primitive, unsigned int operation, unsigned int size)
Definition: iuup.c:219
int osmo_iuup_rnl_prim_down(struct osmo_iuup_instance *inst, struct osmo_iuup_rnl_prim *irp)
Definition: iuup.c:965
#define IUUP_MAX_RFCIS
Definition: iuup.h:33
Definition: iuup.c:121
Definition: iuup.h:41
uint32_t n_max
Definition: iuup.h:43
uint32_t t_ms
Definition: iuup.h:42
Definition: iuup.h:45
uint16_t supported_versions_mask
Definition: iuup.h:56
struct osmo_iuup_rnl_config_timer t_ta
Definition: iuup.h:65
uint8_t data_pdu_type
Definition: iuup.h:53
struct osmo_iuup_rnl_config_timer t_init
Definition: iuup.h:64
bool active
Definition: iuup.h:50
uint8_t IPTIs[IUUP_MAX_RFCIS]
Definition: iuup.h:61
uint8_t num_rfci
Definition: iuup.h:57
struct osmo_iuup_rnl_config_timer t_rc
Definition: iuup.h:66
bool IPTIs_present
Definition: iuup.h:60
uint16_t subflow_sizes[IUUP_MAX_RFCIS][IUUP_MAX_SUBFLOWS]
Definition: iuup.h:59
uint8_t num_subflows
Definition: iuup.h:58
bool transparent
Definition: iuup.h:47
Definition: iuup.h:69
uint8_t fqc
Definition: iuup.h:72
uint8_t rfci
Definition: iuup.h:70
uint8_t frame_nr
Definition: iuup.h:71
Definition: iuup.h:99
union osmo_iuup_rnl_prim::@16 u
struct osmo_iuup_rnl_data data
Definition: iuup.h:103
struct osmo_iuup_rnl_status status
Definition: iuup.h:104
struct osmo_prim_hdr oph
Definition: iuup.h:100
struct osmo_iuup_rnl_config config
Definition: iuup.h:102
Definition: iuup.h:75
enum iuup_error_distance distance
Definition: iuup.h:80
uint8_t IPTIs[IUUP_MAX_RFCIS]
Definition: iuup.h:89
uint16_t mode_version
Definition: iuup.h:83
struct osmo_iuup_rnl_status::@11::@12 error_event
uint16_t subflow_sizes[IUUP_MAX_RFCIS][IUUP_MAX_SUBFLOWS]
Definition: iuup.h:87
struct osmo_iuup_rnl_status::@11::@15 time_alignment
struct osmo_iuup_rnl_status::@11::@14 rate_control
union osmo_iuup_rnl_status::@11 u
uint8_t num_subflows
Definition: iuup.h:86
uint8_t num_rfci
Definition: iuup.h:85
enum iuup_error_cause cause
Definition: iuup.h:79
struct osmo_iuup_rnl_status::@11::@13 initialization
uint8_t data_pdu_type
Definition: iuup.h:84
enum iuup_procedure procedure
Definition: iuup.h:76
bool IPTIs_present
Definition: iuup.h:88
Definition: iuup.h:15
struct osmo_prim_hdr oph
Definition: iuup.h:16