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: */
53  uint8_t data_pdu_type;
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 {
81  } error_event;
82  struct {
83  uint16_t mode_version;
84  uint8_t data_pdu_type;
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 {
92  } rate_control;
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 
109 struct osmo_iuup_instance;
110 struct osmo_iuup_instance *osmo_iuup_instance_alloc(void *ctx, const char *id);
112 
113 void osmo_iuup_instance_set_user_prim_cb(struct osmo_iuup_instance *iui, osmo_prim_cb func, void *priv);
115 int osmo_iuup_tnl_prim_up(struct osmo_iuup_instance *iui, struct osmo_iuup_tnl_prim *itp);
116 int osmo_iuup_rnl_prim_down(struct osmo_iuup_instance *inst, struct osmo_iuup_rnl_prim *irp);
117 
118 
119 int osmo_iuup_compute_header_crc(const uint8_t *iuup_pdu, unsigned int pdu_len);
120 int osmo_iuup_compute_payload_crc(const uint8_t *iuup_pdu, unsigned int pdu_len);
121 
122 struct osmo_iuup_rnl_prim *osmo_iuup_rnl_prim_alloc(void *ctx, unsigned int primitive, unsigned int operation, unsigned int size);
123 struct osmo_iuup_tnl_prim *osmo_iuup_tnl_prim_alloc(void *ctx, unsigned int primitive, unsigned int operation, unsigned int size);
osmo_prim_cb
int(* osmo_prim_cb)(struct osmo_prim_hdr *oph, void *ctx)
osmo_iuup_rnl_prim::oph
struct osmo_prim_hdr oph
Definition: iuup.h:100
osmo_iuup_rnl_prim_alloc
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
osmo_iuup_rnl_status
Definition: iuup.h:75
osmo_iuup_rnl_prim::u
union osmo_iuup_rnl_prim::@16 u
osmo_iuup_tnl_prim_alloc
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
osmo_prim_hdr
osmo_iuup_rnl_prim_type
osmo_iuup_rnl_prim_type
Definition: iuup.h:24
osmo_iuup_rnl_status::cause
enum iuup_error_cause cause
Definition: iuup.h:79
osmo_iuup_rnl_data
Definition: iuup.h:69
osmo_iuup_rnl_prim_down
int osmo_iuup_rnl_prim_down(struct osmo_iuup_instance *inst, struct osmo_iuup_rnl_prim *irp)
Definition: iuup.c:965
osmo_iuup_rnl_config::t_ta
struct osmo_iuup_rnl_config_timer t_ta
Definition: iuup.h:65
osmo_iuup_rnl_config
Definition: iuup.h:45
osmo_iuup_rnl_config::supported_versions_mask
uint16_t supported_versions_mask
Definition: iuup.h:56
osmo_iuup_compute_header_crc
int osmo_iuup_compute_header_crc(const uint8_t *iuup_pdu, unsigned int pdu_len)
Definition: iuup.c:94
osmo_iuup_rnl_config::num_rfci
uint8_t num_rfci
Definition: iuup.h:57
iuup_error_distance
iuup_error_distance
Definition: gsm_25_415.h:190
osmo_iuup_rnl_prim::data
struct osmo_iuup_rnl_data data
Definition: iuup.h:103
osmo_iuup_rnl_config::data_pdu_type
uint8_t data_pdu_type
Definition: iuup.h:53
osmo_iuup_instance_alloc
struct osmo_iuup_instance * osmo_iuup_instance_alloc(void *ctx, const char *id)
Definition: iuup.c:993
osmo_iuup_instance
Definition: iuup.c:121
OSMO_IUUP_RNL_UNIT_DATA
@ OSMO_IUUP_RNL_UNIT_DATA
Definition: iuup.h:30
osmo_iuup_rnl_status::error_event
struct osmo_iuup_rnl_status::@11::@12 error_event
osmo_iuup_instance_set_transport_prim_cb
void osmo_iuup_instance_set_transport_prim_cb(struct osmo_iuup_instance *iui, osmo_prim_cb func, void *priv)
Definition: iuup.c:1026
OSMO_IUUP_RNL_STATUS
@ OSMO_IUUP_RNL_STATUS
Definition: iuup.h:29
osmo_iuup_rnl_status::time_alignment
struct osmo_iuup_rnl_status::@11::@15 time_alignment
osmo_iuup_tnl_prim
Definition: iuup.h:15
osmo_iuup_rnl_prim
Definition: iuup.h:99
osmo_iuup_rnl_config_timer::n_max
uint32_t n_max
Definition: iuup.h:43
osmo_iuup_rnl_data::fqc
uint8_t fqc
Definition: iuup.h:72
osmo_iuup_rnl_config::IPTIs_present
bool IPTIs_present
Definition: iuup.h:60
OSMO_IUUP_RNL_DATA
@ OSMO_IUUP_RNL_DATA
Definition: iuup.h:28
osmo_iuup_rnl_config_timer::t_ms
uint32_t t_ms
Definition: iuup.h:42
osmo_iuup_rnl_status::num_subflows
uint8_t num_subflows
Definition: iuup.h:86
OSMO_IUUP_RNL_CONFIG
@ OSMO_IUUP_RNL_CONFIG
Definition: iuup.h:27
osmo_iuup_rnl_status::subflow_sizes
uint16_t subflow_sizes[IUUP_MAX_RFCIS][IUUP_MAX_SUBFLOWS]
Definition: iuup.h:87
osmo_iuup_rnl_status::data_pdu_type
uint8_t data_pdu_type
Definition: iuup.h:84
osmo_iuup_rnl_status::num_rfci
uint8_t num_rfci
Definition: iuup.h:85
osmo_iuup_rnl_config::active
bool active
Definition: iuup.h:50
osmo_iuup_rnl_status::IPTIs_present
bool IPTIs_present
Definition: iuup.h:88
osmo_iuup_rnl_config::subflow_sizes
uint16_t subflow_sizes[IUUP_MAX_RFCIS][IUUP_MAX_SUBFLOWS]
Definition: iuup.h:59
osmo_iuup_rnl_data::rfci
uint8_t rfci
Definition: iuup.h:70
osmo_iuup_rnl_config::t_init
struct osmo_iuup_rnl_config_timer t_init
Definition: iuup.h:64
prim.h
osmo_iuup_rnl_config_timer
Definition: iuup.h:41
iuup_procedure
iuup_procedure
Definition: gsm_25_415.h:181
iuup_error_cause
iuup_error_cause
Definition: gsm_25_415.h:199
osmo_iuup_instance_free
void osmo_iuup_instance_free(struct osmo_iuup_instance *iui)
Definition: iuup.c:1010
IUUP_MAX_RFCIS
#define IUUP_MAX_RFCIS
Definition: iuup.h:33
osmo_iuup_rnl_prim::status
struct osmo_iuup_rnl_status status
Definition: iuup.h:104
osmo_iuup_tnl_prim_type
osmo_iuup_tnl_prim_type
Definition: iuup.h:11
osmo_iuup_rnl_config::IPTIs
uint8_t IPTIs[IUUP_MAX_RFCIS]
Definition: iuup.h:61
gsm_25_415.h
osmo_iuup_rnl_config::transparent
bool transparent
Definition: iuup.h:47
osmo_iuup_rnl_status::IPTIs
uint8_t IPTIs[IUUP_MAX_RFCIS]
Definition: iuup.h:89
osmo_iuup_rnl_status::distance
enum iuup_error_distance distance
Definition: iuup.h:80
osmo_iuup_rnl_status::rate_control
struct osmo_iuup_rnl_status::@11::@14 rate_control
osmo_iuup_tnl_prim_up
int osmo_iuup_tnl_prim_up(struct osmo_iuup_instance *iui, struct osmo_iuup_tnl_prim *itp)
Definition: iuup.c:875
osmo_iuup_rnl_config::num_subflows
uint8_t num_subflows
Definition: iuup.h:58
osmo_iuup_rnl_status::procedure
enum iuup_procedure procedure
Definition: iuup.h:76
osmo_iuup_compute_payload_crc
int osmo_iuup_compute_payload_crc(const uint8_t *iuup_pdu, unsigned int pdu_len)
Definition: iuup.c:67
osmo_iuup_rnl_config::t_rc
struct osmo_iuup_rnl_config_timer t_rc
Definition: iuup.h:66
osmo_iuup_rnl_data::frame_nr
uint8_t frame_nr
Definition: iuup.h:71
IUUP_MAX_SUBFLOWS
#define IUUP_MAX_SUBFLOWS
Definition: iuup.h:32
osmo_iuup_rnl_status::mode_version
uint16_t mode_version
Definition: iuup.h:83
OSMO_IUUP_TNL_UNITDATA
@ OSMO_IUUP_TNL_UNITDATA
Definition: iuup.h:14
osmo_iuup_rnl_prim::config
struct osmo_iuup_rnl_config config
Definition: iuup.h:102
osmo_iuup_rnl_status::u
union osmo_iuup_rnl_status::@11 u
osmo_iuup_instance_set_user_prim_cb
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_status::initialization
struct osmo_iuup_rnl_status::@11::@13 initialization
osmo_iuup_tnl_prim::oph
struct osmo_prim_hdr oph
Definition: iuup.h:16