diff options
Diffstat (limited to 'include/osmocom/gsm')
-rw-r--r-- | include/osmocom/gsm/a5.h | 4 | ||||
-rw-r--r-- | include/osmocom/gsm/abis_nm.h | 2 | ||||
-rw-r--r-- | include/osmocom/gsm/gsm_utils.h | 8 | ||||
-rw-r--r-- | include/osmocom/gsm/kasumi.h | 6 | ||||
-rw-r--r-- | include/osmocom/gsm/l1sap.h | 154 | ||||
-rw-r--r-- | include/osmocom/gsm/lapd_core.h | 104 | ||||
-rw-r--r-- | include/osmocom/gsm/lapdm.h | 52 | ||||
-rw-r--r-- | include/osmocom/gsm/oap.h | 6 | ||||
-rw-r--r-- | include/osmocom/gsm/protocol/gsm_04_08.h | 4 | ||||
-rw-r--r-- | include/osmocom/gsm/protocol/gsm_08_08.h | 6 | ||||
-rw-r--r-- | include/osmocom/gsm/protocol/gsm_08_58.h | 64 | ||||
-rw-r--r-- | include/osmocom/gsm/protocol/gsm_12_21.h | 108 | ||||
-rw-r--r-- | include/osmocom/gsm/rsl.h | 6 | ||||
-rw-r--r-- | include/osmocom/gsm/tlv.h | 118 |
14 files changed, 321 insertions, 321 deletions
diff --git a/include/osmocom/gsm/a5.h b/include/osmocom/gsm/a5.h index a2278f22..893fb026 100644 --- a/include/osmocom/gsm/a5.h +++ b/include/osmocom/gsm/a5.h @@ -32,10 +32,10 @@ */ /*! \file gsm/a5.h - * \brief Osmocom GSM A5 ciphering algorithm header + * Osmocom GSM A5 ciphering algorithm header */ -/*! \brief Converts a frame number into the 22 bit number used in A5/x +/*! Converts a frame number into the 22 bit number used in A5/x * \param[in] fn The true framenumber * \return 22 bit word */ diff --git a/include/osmocom/gsm/abis_nm.h b/include/osmocom/gsm/abis_nm.h index 14dbc08c..acddb7f4 100644 --- a/include/osmocom/gsm/abis_nm.h +++ b/include/osmocom/gsm/abis_nm.h @@ -36,7 +36,7 @@ const char *abis_nm_test_name(uint8_t test); extern const struct tlv_definition abis_nm_osmo_att_tlvdef; extern const struct tlv_definition abis_nm_att_tlvdef_ipa; -/*! \brief write a human-readable OML header to the debug log +/*! write a human-readable OML header to the debug log * \param[in] ss Logging sub-system * \param[in] foh A-bis OML FOM header */ diff --git a/include/osmocom/gsm/gsm_utils.h b/include/osmocom/gsm/gsm_utils.h index 1ffe5797..e76d9ee8 100644 --- a/include/osmocom/gsm/gsm_utils.h +++ b/include/osmocom/gsm/gsm_utils.h @@ -60,7 +60,7 @@ const char *gsm_band_name(enum gsm_band band); enum gsm_band gsm_band_parse(const char *mhz); /*! - * \brief Decode a sequence of GSM 03.38 encoded 7 bit characters. + * Decode a sequence of GSM 03.38 encoded 7 bit characters. * * \param decoded The destination buffer for the decoded characters. * \param n A maximum of n chars is written (incl. terminating \0). @@ -76,14 +76,14 @@ enum gsm_band gsm_band_parse(const char *mhz); int gsm_7bit_decode_n(char *decoded, size_t n, const uint8_t *user_data, uint8_t length); /*! - * \brief Decode a sequence of 7 bit characters (USSD encoding). + * Decode a sequence of 7 bit characters (USSD encoding). * * \see gsm_7bit_encode_n() */ int gsm_7bit_decode_n_ussd(char *decoded, size_t n, const uint8_t *user_data, uint8_t length); /*! - * \brief Encode a text string into GSM 03.38 encoded 7 bit characters. + * Encode a text string into GSM 03.38 encoded 7 bit characters. * * \param result The destination buffer for the packed 7 bit sequence. * \param n A maximum of n octets is written. @@ -97,7 +97,7 @@ int gsm_7bit_decode_n_ussd(char *decoded, size_t n, const uint8_t *user_data, ui int gsm_7bit_encode_n(uint8_t *result, size_t n, const char *data, int *octets_written); /*! - * \brief Encode a text string into GSM 03.38 encoded 7 bit characters (USSD encoding). + * Encode a text string into GSM 03.38 encoded 7 bit characters (USSD encoding). * * \see gsm_7bit_decode_n() */ diff --git a/include/osmocom/gsm/kasumi.h b/include/osmocom/gsm/kasumi.h index 8ecf65f6..222aece8 100644 --- a/include/osmocom/gsm/kasumi.h +++ b/include/osmocom/gsm/kasumi.h @@ -9,7 +9,7 @@ #include <stdint.h> -/*! \brief Single iteration of KASUMI cipher +/*! Single iteration of KASUMI cipher * \param[in] P Block, 64 bits to be processed in this round * \param[in] KLi1 Expanded subkeys * \param[in] KLi2 Expanded subkeys @@ -23,7 +23,7 @@ */ uint64_t _kasumi(uint64_t P, const uint16_t *KLi1, const uint16_t *KLi2, const uint16_t *KOi1, const uint16_t *KOi2, const uint16_t *KOi3, const uint16_t *KIi1, const uint16_t *KIi2, const uint16_t *KIi3); -/*! \brief Implementation of the KGCORE algorithm (used by A5/3, A5/4, GEA3, GEA4 and ECSD) +/*! Implementation of the KGCORE algorithm (used by A5/3, A5/4, GEA3, GEA4 and ECSD) * \param[in] CA * \param[in] cb * \param[in] cc @@ -34,7 +34,7 @@ uint64_t _kasumi(uint64_t P, const uint16_t *KLi1, const uint16_t *KLi2, const u */ void _kasumi_kgcore(uint8_t CA, uint8_t cb, uint32_t cc, uint8_t cd, const uint8_t *ck, uint8_t *co, uint16_t cl); -/*! \brief Expand key into set of subkeys - see TS 135 202 for details +/*! Expand key into set of subkeys - see TS 135 202 for details * \param[in] key (128 bits) as array of bytes * \param[out] KLi1 Expanded subkeys * \param[out] KLi2 Expanded subkeys diff --git a/include/osmocom/gsm/l1sap.h b/include/osmocom/gsm/l1sap.h index 183edbcb..322c7ec1 100644 --- a/include/osmocom/gsm/l1sap.h +++ b/include/osmocom/gsm/l1sap.h @@ -2,51 +2,51 @@ #include <osmocom/core/prim.h> -/*! \brief PH-SAP related primitives (L1<->L2 SAP) */ +/*! PH-SAP related primitives (L1<->L2 SAP) */ enum osmo_ph_prim { - PRIM_PH_DATA, /*!< \brief PH-DATA */ - PRIM_PH_RACH, /*!< \brief PH-RANDOM_ACCESS */ - PRIM_PH_CONN, /*!< \brief PH-CONNECT */ - PRIM_PH_EMPTY_FRAME, /*!< \brief PH-EMPTY_FRAME */ - PRIM_PH_RTS, /*!< \brief PH-RTS */ - PRIM_MPH_INFO, /*!< \brief MPH-INFO */ - PRIM_TCH, /*!< \brief TCH */ - PRIM_TCH_RTS, /*!< \brief TCH */ + PRIM_PH_DATA, /*!< PH-DATA */ + PRIM_PH_RACH, /*!< PH-RANDOM_ACCESS */ + PRIM_PH_CONN, /*!< PH-CONNECT */ + PRIM_PH_EMPTY_FRAME, /*!< PH-EMPTY_FRAME */ + PRIM_PH_RTS, /*!< PH-RTS */ + PRIM_MPH_INFO, /*!< MPH-INFO */ + PRIM_TCH, /*!< TCH */ + PRIM_TCH_RTS, /*!< TCH */ }; extern const struct value_string osmo_ph_prim_names[]; -/*! \brief PH-SAP related primitives (L1<->L2 SAP) */ +/*! PH-SAP related primitives (L1<->L2 SAP) */ enum osmo_mph_info_type { - PRIM_INFO_TIME, /*!< \brief Current GSM time */ - PRIM_INFO_MEAS, /*!< \brief Measurement indication */ - PRIM_INFO_ACTIVATE, /*!< \brief Activation of channel */ - PRIM_INFO_DEACTIVATE, /*!< \brief Deactivation of channel */ - PRIM_INFO_MODIFY, /*!< \brief Mode Modify of channel */ - PRIM_INFO_ACT_CIPH, /*!< \brief Activation of ciphering */ - PRIM_INFO_DEACT_CIPH, /*!< \brief Deactivation of ciphering */ + PRIM_INFO_TIME, /*!< Current GSM time */ + PRIM_INFO_MEAS, /*!< Measurement indication */ + PRIM_INFO_ACTIVATE, /*!< Activation of channel */ + PRIM_INFO_DEACTIVATE, /*!< Deactivation of channel */ + PRIM_INFO_MODIFY, /*!< Mode Modify of channel */ + PRIM_INFO_ACT_CIPH, /*!< Activation of ciphering */ + PRIM_INFO_DEACT_CIPH, /*!< Deactivation of ciphering */ }; -/*! \brief PH-DATA presence information */ +/*! PH-DATA presence information */ enum osmo_ph_pres_info_type { - PRES_INFO_INVALID = 0, /*!< \brief Data is invalid */ - PRES_INFO_HEADER = 1, /*!< \brief Only header is present and valid */ - PRES_INFO_FIRST = 3, /*!< \brief First half of data + header are valid (2nd half may be present but invalid) */ - PRES_INFO_SECOND = 5, /*!< \brief Second half of data + header are valid (1st halfmay be present but invalid) */ - PRES_INFO_BOTH = 7, /*!< \brief Both parts + header are present and valid */ + PRES_INFO_INVALID = 0, /*!< Data is invalid */ + PRES_INFO_HEADER = 1, /*!< Only header is present and valid */ + PRES_INFO_FIRST = 3, /*!< First half of data + header are valid (2nd half may be present but invalid) */ + PRES_INFO_SECOND = 5, /*!< Second half of data + header are valid (1st halfmay be present but invalid) */ + PRES_INFO_BOTH = 7, /*!< Both parts + header are present and valid */ PRES_INFO_UNKNOWN }; -/*! \brief for PH-RANDOM_ACCESS.req */ +/*! for PH-RANDOM_ACCESS.req */ struct ph_rach_req_param { - uint8_t ra; /*!< \brief Random Access */ - uint8_t ta; /*!< \brief Timing Advance */ - uint8_t tx_power; /*!< \brief Transmit Power */ - uint8_t is_combined_ccch;/*!< \brief Are we using a combined CCCH? */ - uint16_t offset; /*!< \brief Timing Offset */ + uint8_t ra; /*!< Random Access */ + uint8_t ta; /*!< Timing Advance */ + uint8_t tx_power; /*!< Transmit Power */ + uint8_t is_combined_ccch;/*!< Are we using a combined CCCH? */ + uint16_t offset; /*!< Timing Offset */ }; -/*! \brief for PH_RA_IND burstType inforamtion */ +/*! for PH_RA_IND burstType inforamtion */ enum ph_burst_type { GSM_L1_BURST_TYPE_NONE = 0, GSM_L1_BURST_TYPE_ACCESS_0, @@ -54,79 +54,79 @@ enum ph_burst_type { GSM_L1_BURST_TYPE_ACCESS_2 }; -/*! \brief for PH-RANDOM_ACCESS.ind */ +/*! for PH-RANDOM_ACCESS.ind */ struct ph_rach_ind_param { - uint8_t chan_nr; /*!< \brief Channel Number (Like RSL) */ - uint16_t ra; /*!< \brief Random Access */ - uint8_t acc_delay; /*!< \brief Delay in bit periods */ - uint32_t fn; /*!< \brief GSM Frame Number at time of RA */ - uint8_t is_11bit; /*!< \brief no.of bits in RACH*/ - enum ph_burst_type burst_type; /*!< \brief type of burst*/ + uint8_t chan_nr; /*!< Channel Number (Like RSL) */ + uint16_t ra; /*!< Random Access */ + uint8_t acc_delay; /*!< Delay in bit periods */ + uint32_t fn; /*!< GSM Frame Number at time of RA */ + uint8_t is_11bit; /*!< no.of bits in RACH*/ + enum ph_burst_type burst_type; /*!< type of burst*/ }; -/*! \brief for PH-[UNIT]DATA.{req,ind} | PH-RTS.ind */ +/*! for PH-[UNIT]DATA.{req,ind} | PH-RTS.ind */ struct ph_data_param { - uint8_t link_id; /*!< \brief Link Identifier (Like RSL) */ - uint8_t chan_nr; /*!< \brief Channel Number (Like RSL) */ - uint32_t fn; /*!< \brief GSM Frame Number */ - int8_t rssi; /*!< \brief RSSI of receivedindication */ - uint16_t ber10k; /*!< \brief BER in units of 0.01% */ - int16_t ta_offs_qbits; /* !< \brief Burst TA Offset in quarter bits */ - int16_t lqual_cb; /* !< \brief Link quality in centiBel */ - enum osmo_ph_pres_info_type pdch_presence_info; /*!< \brief Info regarding presence/validity of header and data parts */ + uint8_t link_id; /*!< Link Identifier (Like RSL) */ + uint8_t chan_nr; /*!< Channel Number (Like RSL) */ + uint32_t fn; /*!< GSM Frame Number */ + int8_t rssi; /*!< RSSI of receivedindication */ + uint16_t ber10k; /*!< BER in units of 0.01% */ + int16_t ta_offs_qbits; /* !< Burst TA Offset in quarter bits */ + int16_t lqual_cb; /* !< Link quality in centiBel */ + enum osmo_ph_pres_info_type pdch_presence_info; /*!< Info regarding presence/validity of header and data parts */ }; -/*! \brief for TCH.{req,ind} | TCH-RTS.ind */ +/*! for TCH.{req,ind} | TCH-RTS.ind */ struct ph_tch_param { - uint8_t chan_nr; /*!< \brief Channel Number (Like RSL) */ - uint32_t fn; /*!< \brief GSM Frame Number */ - int8_t rssi; /*!< \brief RSSI of received indication */ - uint8_t marker; /*!< \brief RTP Marker bit (speech onset indicator) */ + uint8_t chan_nr; /*!< Channel Number (Like RSL) */ + uint32_t fn; /*!< GSM Frame Number */ + int8_t rssi; /*!< RSSI of received indication */ + uint8_t marker; /*!< RTP Marker bit (speech onset indicator) */ }; -/*! \brief for PH-CONN.ind */ +/*! for PH-CONN.ind */ struct ph_conn_ind_param { - uint32_t fn; /*!< \brief GSM Frame Number */ + uint32_t fn; /*!< GSM Frame Number */ }; -/*! \brief for TIME MPH-INFO.ind */ +/*! for TIME MPH-INFO.ind */ struct info_time_ind_param { - uint32_t fn; /*!< \brief GSM Frame Number */ + uint32_t fn; /*!< GSM Frame Number */ }; -/*! \brief for MEAS MPH-INFO.ind */ +/*! for MEAS MPH-INFO.ind */ struct info_meas_ind_param { - uint8_t chan_nr; /*!< \brief Channel Number (Like RSL) */ - uint32_t fn; /*!< \brief GSM Frame Number */ - uint16_t ber10k; /*!< \brief BER in units of 0.01% */ - int16_t ta_offs_qbits; /*!< \brief timing advance offset (in qbits) */ - int16_t c_i_cb; /*!< \brief C/I ratio in 0.1 dB */ - uint8_t is_sub:1; /*!< \brief flags */ - uint8_t inv_rssi; /*!< \brief RSSI in dBm * -1 */ + uint8_t chan_nr; /*!< Channel Number (Like RSL) */ + uint32_t fn; /*!< GSM Frame Number */ + uint16_t ber10k; /*!< BER in units of 0.01% */ + int16_t ta_offs_qbits; /*!< timing advance offset (in qbits) */ + int16_t c_i_cb; /*!< C/I ratio in 0.1 dB */ + uint8_t is_sub:1; /*!< flags */ + uint8_t inv_rssi; /*!< RSSI in dBm * -1 */ }; -/*! \brief for {ACTIVATE,DEACTIVATE,MODIFY} MPH-INFO.req */ +/*! for {ACTIVATE,DEACTIVATE,MODIFY} MPH-INFO.req */ struct info_act_req_param { - uint8_t chan_nr; /*!< \brief Channel Number (Like RSL) */ + uint8_t chan_nr; /*!< Channel Number (Like RSL) */ uint8_t sacch_only; /*!< \breif Only deactivate SACCH */ }; -/*! \brief for {ACTIVATE,DEACTIVATE} MPH-INFO.cnf */ +/*! for {ACTIVATE,DEACTIVATE} MPH-INFO.cnf */ struct info_act_cnf_param { - uint8_t chan_nr; /*!< \brief Channel Number (Like RSL) */ - uint8_t cause; /*!< \brief RSL cause in case of nack */ + uint8_t chan_nr; /*!< Channel Number (Like RSL) */ + uint8_t cause; /*!< RSL cause in case of nack */ }; -/*! \brief for {ACTIVATE,DEACTIVATE} MPH-INFO.{req,cnf} */ +/*! for {ACTIVATE,DEACTIVATE} MPH-INFO.{req,cnf} */ struct info_ciph_req_param { - uint8_t chan_nr; /*!< \brief Channel Number (Like RSL) */ - uint8_t downlink; /*!< \brief Apply to downlink */ - uint8_t uplink; /*!< \brief Apply to uplink */ + uint8_t chan_nr; /*!< Channel Number (Like RSL) */ + uint8_t downlink; /*!< Apply to downlink */ + uint8_t uplink; /*!< Apply to uplink */ }; -/*! \brief for MPH-INFO.ind */ +/*! for MPH-INFO.ind */ struct mph_info_param { - enum osmo_mph_info_type type; /*!< \brief Info message type */ + enum osmo_mph_info_type type; /*!< Info message type */ union { struct info_time_ind_param time_ind; struct info_meas_ind_param meas_ind; @@ -136,9 +136,9 @@ struct mph_info_param { } u; }; -/*! \brief primitive header for PH-SAP primitives */ +/*! primitive header for PH-SAP primitives */ struct osmo_phsap_prim { - struct osmo_prim_hdr oph; /*!< \brief generic primitive header */ + struct osmo_prim_hdr oph; /*!< generic primitive header */ union { struct ph_data_param data; struct ph_tch_param tch; @@ -146,5 +146,5 @@ struct osmo_phsap_prim { struct ph_rach_ind_param rach_ind; struct ph_conn_ind_param conn_ind; struct mph_info_param info; - } u; /*!< \brief request-specific data */ + } u; /*!< request-specific data */ }; diff --git a/include/osmocom/gsm/lapd_core.h b/include/osmocom/gsm/lapd_core.h index 42ef417e..8d3a0f81 100644 --- a/include/osmocom/gsm/lapd_core.h +++ b/include/osmocom/gsm/lapd_core.h @@ -14,16 +14,16 @@ * primitive related stuff */ -/*! \brief LAPD related primitives (L2<->L3 SAP)*/ +/*! LAPD related primitives (L2<->L3 SAP)*/ enum osmo_dl_prim { - PRIM_DL_UNIT_DATA, /*!< \brief DL-UNIT-DATA */ - PRIM_DL_DATA, /*!< \brief DL-DATA */ - PRIM_DL_EST, /*!< \brief DL-ESTABLISH */ - PRIM_DL_REL, /*!< \brief DL-RLEEASE */ - PRIM_DL_SUSP, /*!< \brief DL-SUSPEND */ - PRIM_DL_RES, /*!< \brief DL-RESUME */ - PRIM_DL_RECON, /*!< \brief DL-RECONNECT */ - PRIM_MDL_ERROR, /*!< \brief MDL-ERROR */ + PRIM_DL_UNIT_DATA, /*!< DL-UNIT-DATA */ + PRIM_DL_DATA, /*!< DL-DATA */ + PRIM_DL_EST, /*!< DL-ESTABLISH */ + PRIM_DL_REL, /*!< DL-RLEEASE */ + PRIM_DL_SUSP, /*!< DL-SUSPEND */ + PRIM_DL_RES, /*!< DL-RESUME */ + PRIM_DL_RECON, /*!< DL-RECONNECT */ + PRIM_MDL_ERROR, /*!< MDL-ERROR */ }; /* Uses the same values as RLL, so no conversion for GSM is required. */ @@ -43,32 +43,32 @@ enum osmo_dl_prim { #define MDL_CAUSE_SABM_INFO_NOTALL 0x0e #define MDL_CAUSE_FRMR 0x0f -/*! \brief for MDL-ERROR.ind */ +/*! for MDL-ERROR.ind */ struct mdl_error_ind_param { - uint8_t cause; /*!< \brief generic cause value */ + uint8_t cause; /*!< generic cause value */ }; -/*! \brief for DL-REL.req */ +/*! for DL-REL.req */ struct dl_rel_req_param { - uint8_t mode; /*!< \brief release mode */ + uint8_t mode; /*!< release mode */ }; -/*! \brief primitive header for LAPD DL-SAP primitives */ +/*! primitive header for LAPD DL-SAP primitives */ struct osmo_dlsap_prim { - struct osmo_prim_hdr oph; /*!< \brief generic primitive header */ + struct osmo_prim_hdr oph; /*!< generic primitive header */ union { struct mdl_error_ind_param error_ind; struct dl_rel_req_param rel_req; - } u; /*!< \brief request-specific data */ + } u; /*!< request-specific data */ }; -/*! \brief LAPD mode/role */ +/*! LAPD mode/role */ enum lapd_mode { - LAPD_MODE_USER, /*!< \brief behave like user */ - LAPD_MODE_NETWORK, /*!< \brief behave like network */ + LAPD_MODE_USER, /*!< behave like user */ + LAPD_MODE_NETWORK, /*!< behave like network */ }; -/*! \brief LAPD state (Figure B.2/Q.921)*/ +/*! LAPD state (Figure B.2/Q.921)*/ enum lapd_state { LAPD_STATE_NULL = 0, LAPD_STATE_TEI_UNASS, @@ -81,7 +81,7 @@ enum lapd_state { LAPD_STATE_TIMER_RECOV, }; -/*! \brief LAPD message format (I / S / U) */ +/*! LAPD message format (I / S / U) */ enum lapd_format { LAPD_FORM_UKN = 0, LAPD_FORM_I, @@ -89,7 +89,7 @@ enum lapd_format { LAPD_FORM_U, }; -/*! \brief LAPD message context */ +/*! LAPD message context */ struct lapd_msg_ctx { struct lapd_datalink *dl; int n201; @@ -119,45 +119,45 @@ struct lapd_history { int more; /* if message is fragmented */ }; -/*! \brief LAPD datalink */ +/*! LAPD datalink */ struct lapd_datalink { int (*send_dlsap)(struct osmo_dlsap_prim *dp, struct lapd_msg_ctx *lctx); int (*send_ph_data_req)(struct lapd_msg_ctx *lctx, struct msgb *msg); int (*update_pending_frames)(struct lapd_msg_ctx *lctx); struct { - /*! \brief filled-in once we set the lapd_mode above */ + /*! filled-in once we set the lapd_mode above */ struct lapd_cr_ent loc2rem; struct lapd_cr_ent rem2loc; } cr; - enum lapd_mode mode; /*!< \brief current mode of link */ - int use_sabme; /*!< \brief use SABME instead of SABM */ - int reestablish; /*!< \brief enable reestablish support */ - int n200, n200_est_rel; /*!< \brief number of retranmissions */ - struct lapd_msg_ctx lctx; /*!< \brief LAPD context */ - int maxf; /*!< \brief maximum frame size (after defragmentation) */ - uint8_t k; /*!< \brief maximum number of unacknowledged frames */ - uint8_t v_range; /*!< \brief range of sequence numbers */ - uint8_t v_send; /*!< \brief seq nr of next I frame to be transmitted */ - uint8_t v_ack; /*!< \brief last frame ACKed by peer */ - uint8_t v_recv; /*!< \brief seq nr of next I frame expected to be received */ - uint32_t state; /*!< \brief LAPD state (\ref lapd_state) */ - int seq_err_cond; /*!< \brief condition of sequence error */ - uint8_t own_busy; /*!< \brief receiver busy on our side */ - uint8_t peer_busy; /*!< \brief receiver busy on remote side */ - int t200_sec, t200_usec; /*!< \brief retry timer (default 1 sec) */ - int t203_sec, t203_usec; /*!< \brief retry timer (default 10 secs) */ - struct osmo_timer_list t200; /*!< \brief T200 timer */ - struct osmo_timer_list t203; /*!< \brief T203 timer */ - uint8_t retrans_ctr; /*!< \brief re-transmission counter */ - struct llist_head tx_queue; /*!< \brief frames to L1 */ - struct llist_head send_queue; /*!< \brief frames from L3 */ - struct msgb *send_buffer; /*!< \brief current frame transmitting */ - int send_out; /*!< \brief how much was sent from send_buffer */ - struct lapd_history *tx_hist; /*!< \brief tx history structure array */ - uint8_t range_hist; /*!< \brief range of history buffer 2..2^n */ - struct msgb *rcv_buffer; /*!< \brief buffer to assemble the received message */ - struct msgb *cont_res; /*!< \brief buffer to store content resolution data on network side, to detect multiple phones on same channel */ + enum lapd_mode mode; /*!< current mode of link */ + int use_sabme; /*!< use SABME instead of SABM */ + int reestablish; /*!< enable reestablish support */ + int n200, n200_est_rel; /*!< number of retranmissions */ + struct lapd_msg_ctx lctx; /*!< LAPD context */ + int maxf; /*!< maximum frame size (after defragmentation) */ + uint8_t k; /*!< maximum number of unacknowledged frames */ + uint8_t v_range; /*!< range of sequence numbers */ + uint8_t v_send; /*!< seq nr of next I frame to be transmitted */ + uint8_t v_ack; /*!< last frame ACKed by peer */ + uint8_t v_recv; /*!< seq nr of next I frame expected to be received */ + uint32_t state; /*!< LAPD state (\ref lapd_state) */ + int seq_err_cond; /*!< condition of sequence error */ + uint8_t own_busy; /*!< receiver busy on our side */ + uint8_t peer_busy; /*!< receiver busy on remote side */ + int t200_sec, t200_usec; /*!< retry timer (default 1 sec) */ + int t203_sec, t203_usec; /*!< retry timer (default 10 secs) */ + struct osmo_timer_list t200; /*!< T200 timer */ + struct osmo_timer_list t203; /*!< T203 timer */ + uint8_t retrans_ctr; /*!< re-transmission counter */ + struct llist_head tx_queue; /*!< frames to L1 */ + struct llist_head send_queue; /*!< frames from L3 */ + struct msgb *send_buffer; /*!< current frame transmitting */ + int send_out; /*!< how much was sent from send_buffer */ + struct lapd_history *tx_hist; /*!< tx history structure array */ + uint8_t range_hist; /*!< range of history buffer 2..2^n */ + struct msgb *rcv_buffer; /*!< buffer to assemble the received message */ + struct msgb *cont_res; /*!< buffer to store content resolution data on network side, to detect multiple phones on same channel */ }; void lapd_dl_init(struct lapd_datalink *dl, uint8_t k, uint8_t v_range, diff --git a/include/osmocom/gsm/lapdm.h b/include/osmocom/gsm/lapdm.h index 84d109d5..ec14cddc 100644 --- a/include/osmocom/gsm/lapdm.h +++ b/include/osmocom/gsm/lapdm.h @@ -9,15 +9,15 @@ /*! \file lapdm.h */ -/*! \brief LAPDm mode/role */ +/*! LAPDm mode/role */ enum lapdm_mode { - LAPDM_MODE_MS, /*!< \brief behave like a MS (mobile phone) */ - LAPDM_MODE_BTS, /*!< \brief behave like a BTS (network) */ + LAPDM_MODE_MS, /*!< behave like a MS (mobile phone) */ + LAPDM_MODE_BTS, /*!< behave like a BTS (network) */ }; struct lapdm_entity; -/*! \brief LAPDm message context */ +/*! LAPDm message context */ struct lapdm_msg_ctx { struct lapdm_datalink *dl; int lapdm_fmt; @@ -27,18 +27,18 @@ struct lapdm_msg_ctx { uint8_t tx_power_ind; /* MS power indicated by network */ }; -/*! \brief LAPDm datalink like TS 04.06 / Section 3.5.2 */ +/*! LAPDm datalink like TS 04.06 / Section 3.5.2 */ struct lapdm_datalink { - struct lapd_datalink dl; /* \brief common LAPD */ - struct lapdm_msg_ctx mctx; /*!< \brief context of established connection */ + struct lapd_datalink dl; /* common LAPD */ + struct lapdm_msg_ctx mctx; /*!< context of established connection */ - struct lapdm_entity *entity; /*!< \brief LAPDm entity we are part of */ + struct lapdm_entity *entity; /*!< LAPDm entity we are part of */ }; -/*! \brief LAPDm datalink SAPIs */ +/*! LAPDm datalink SAPIs */ enum lapdm_dl_sapi { - DL_SAPI0 = 0, /*!< \brief SAPI 0 */ - DL_SAPI3 = 1, /*!< \brief SAPI 1 */ + DL_SAPI0 = 0, /*!< SAPI 0 */ + DL_SAPI3 = 1, /*!< SAPI 1 */ _NR_DL_SAPI }; @@ -47,34 +47,34 @@ typedef int (*lapdm_cb_t)(struct msgb *msg, struct lapdm_entity *le, void *ctx); #define LAPDM_ENT_F_EMPTY_FRAME 0x0001 #define LAPDM_ENT_F_POLLING_ONLY 0x0002 -/*! \brief a LAPDm Entity */ +/*! a LAPDm Entity */ struct lapdm_entity { - /*! \brief the SAPIs of the LAPDm entity */ + /*! the SAPIs of the LAPDm entity */ struct lapdm_datalink datalink[_NR_DL_SAPI]; - int last_tx_dequeue; /*!< \brief last entity that was dequeued */ - int tx_pending; /*!< \brief currently a pending frame not confirmed by L1 */ - enum lapdm_mode mode; /*!< \brief are we in BTS mode or MS mode */ + int last_tx_dequeue; /*!< last entity that was dequeued */ + int tx_pending; /*!< currently a pending frame not confirmed by L1 */ + enum lapdm_mode mode; /*!< are we in BTS mode or MS mode */ unsigned int flags; - void *l1_ctx; /*!< \brief context for layer1 instance */ - void *l3_ctx; /*!< \brief context for layer3 instance */ + void *l1_ctx; /*!< context for layer1 instance */ + void *l3_ctx; /*!< context for layer3 instance */ - osmo_prim_cb l1_prim_cb;/*!< \brief callback for sending prims to L1 */ - lapdm_cb_t l3_cb; /*!< \brief callback for sending stuff to L3 */ + osmo_prim_cb l1_prim_cb;/*!< callback for sending prims to L1 */ + lapdm_cb_t l3_cb; /*!< callback for sending stuff to L3 */ - /*! \brief pointer to \ref lapdm_channel of which we're part */ + /*! pointer to \ref lapdm_channel of which we're part */ struct lapdm_channel *lapdm_ch; uint8_t ta; /* TA used and indicated to network */ uint8_t tx_power; /* MS power used and indicated to network */ }; -/*! \brief the two lapdm_entities that form a GSM logical channel (ACCH + DCCH) */ +/*! the two lapdm_entities that form a GSM logical channel (ACCH + DCCH) */ struct lapdm_channel { - struct llist_head list; /*!< \brief internal linked list */ - char *name; /*!< \brief human-readable name */ - struct lapdm_entity lapdm_acch; /*!< \brief Associated Control Channel */ - struct lapdm_entity lapdm_dcch; /*!< \brief Dedicated Control Channel */ + struct llist_head list; /*!< internal linked list */ + char *name; /*!< human-readable name */ + struct lapdm_entity lapdm_acch; /*!< Associated Control Channel */ + struct lapdm_entity lapdm_dcch; /*!< Dedicated Control Channel */ }; const char *get_rsl_name(int value); diff --git a/include/osmocom/gsm/oap.h b/include/osmocom/gsm/oap.h index ff561bf1..fba22c78 100644 --- a/include/osmocom/gsm/oap.h +++ b/include/osmocom/gsm/oap.h @@ -26,7 +26,7 @@ #include <osmocom/core/msgb.h> #include <osmocom/gsm/protocol/gsm_04_08_gprs.h> -/*! \brief Information Element Identifiers for OAP IEs. +/*! Information Element Identifiers for OAP IEs. * They match osmo_gsup_iei (so far). */ enum osmo_oap_iei { OAP_CAUSE_IE = 0x02, @@ -37,7 +37,7 @@ enum osmo_oap_iei { OAP_CLIENT_ID_IE = 0x30, }; -/*! \brief OAP message types */ +/*! OAP message types */ enum osmo_oap_message_type { OAP_MSGT_REGISTER_REQUEST = 0b00000100, OAP_MSGT_REGISTER_ERROR = 0b00000101, @@ -52,7 +52,7 @@ enum osmo_oap_message_type { OAP_MSGT_SYNC_RESULT = 0b00001110, }; -/*! \brief Parsed/decoded OAP protocol message */ +/*! Parsed/decoded OAP protocol message */ struct osmo_oap_message { enum osmo_oap_message_type message_type; enum gsm48_gmm_cause cause; diff --git a/include/osmocom/gsm/protocol/gsm_04_08.h b/include/osmocom/gsm/protocol/gsm_04_08.h index 604a5df4..90b6cf15 100644 --- a/include/osmocom/gsm/protocol/gsm_04_08.h +++ b/include/osmocom/gsm/protocol/gsm_04_08.h @@ -957,7 +957,7 @@ static inline uint8_t gsm48_hdr_trans_id(const struct gsm48_hdr *hdr) #define GSM48_TA_INVALID 220 -/*! \brief Check if TA is valid according to 3GPP TS 44.018 § 10.5.2.40 +/*! Check if TA is valid according to 3GPP TS 44.018 § 10.5.2.40 * \param[in] ta Timing Advance value * \returns true if ta is valid, false otherwise * Note: Rules for GSM400 band are ignored as it's not implemented in practice. @@ -1620,7 +1620,7 @@ enum gsm48_bcap_modem_type { GSM48_BCAP_MT_AUTO_1 = 8, }; -/*! \brief GSM 04.08 Bearer Capability: Speech Version Indication +/*! GSM 04.08 Bearer Capability: Speech Version Indication * (See also 3GPP TS 24.008, Table 10.5.103) */ enum gsm48_bcap_speech_ver { GSM48_BCAP_SV_FR = 0, /*!< GSM FR V1 (GSM FR) */ diff --git a/include/osmocom/gsm/protocol/gsm_08_08.h b/include/osmocom/gsm/protocol/gsm_08_08.h index d1653309..6ae6855c 100644 --- a/include/osmocom/gsm/protocol/gsm_08_08.h +++ b/include/osmocom/gsm/protocol/gsm_08_08.h @@ -391,7 +391,7 @@ enum gsm0808_chan_rate_type_speech { GSM0808_SPEECH_PERM_NO_CHANGE = 0x1f, }; -/*! \brief GSM 08.08 3.2.2.11 Channel Type +/*! GSM 08.08 3.2.2.11 Channel Type * (see also 3GPP TS 48.008, section 3.2.2.11) */ enum gsm0808_permitted_speech { GSM0808_PERM_FR1 = 0x01, /*!< GSM FR */ @@ -406,7 +406,7 @@ enum gsm0808_permitted_speech { GSM0808_PERM_HR6 = 0x45, /*!< OHR AMR */ }; -/*! \brief 3GPP TS 48.008, 3.2.2.103 Speech Codec Type */ +/*! 3GPP TS 48.008, 3.2.2.103 Speech Codec Type */ enum gsm0808_speech_codec_type { GSM0808_SCT_FR1 = 0x0, /*!< GSM FR */ GSM0808_SCT_FR2 = 0x2, /*!< GSM EFR */ @@ -449,7 +449,7 @@ struct gsm0808_speech_codec { uint16_t cfg; }; -/*! \brief Default speech codec configurations: Some codecs specified with +/*! Default speech codec configurations: Some codecs specified with * struct gsm0808_speech_codec, require a configuration (cfg). The following * default configuration will configure the codec (RTP) to match the * configuration that is used on the air interface (Um). diff --git a/include/osmocom/gsm/protocol/gsm_08_58.h b/include/osmocom/gsm/protocol/gsm_08_58.h index a7a2ccfd..c76cf3b1 100644 --- a/include/osmocom/gsm/protocol/gsm_08_58.h +++ b/include/osmocom/gsm/protocol/gsm_08_58.h @@ -30,59 +30,59 @@ /*! \file gsm_08_58.h */ -/*! \brief RSL common header */ +/*! RSL common header */ struct abis_rsl_common_hdr { - uint8_t msg_discr; /*!< \brief message discriminator (ABIS_RSL_MDISC_*) */ - uint8_t msg_type; /*!< \brief message type (\ref abis_rsl_msgtype) */ - uint8_t data[0]; /*!< \brief actual payload data */ + uint8_t msg_discr; /*!< message discriminator (ABIS_RSL_MDISC_*) */ + uint8_t msg_type; /*!< message type (\ref abis_rsl_msgtype) */ + uint8_t data[0]; /*!< actual payload data */ } __attribute__ ((packed)); -/* \brief RSL RLL header (Chapter 8.3) */ +/* RSL RLL header (Chapter 8.3) */ struct abis_rsl_rll_hdr { struct abis_rsl_common_hdr c; - uint8_t ie_chan; /*!< \brief \ref RSL_IE_CHAN_NR (tag) */ - uint8_t chan_nr; /*!< \brief RSL channel number (value) */ - uint8_t ie_link_id; /*!< \brief \ref RSL_IE_LINK_IDENT (tag) */ - uint8_t link_id; /*!< \brief RSL link identifier (value) */ - uint8_t data[0]; /*!< \brief message payload data */ + uint8_t ie_chan; /*!< \ref RSL_IE_CHAN_NR (tag) */ + uint8_t chan_nr; /*!< RSL channel number (value) */ + uint8_t ie_link_id; /*!< \ref RSL_IE_LINK_IDENT (tag) */ + uint8_t link_id; /*!< RSL link identifier (value) */ + uint8_t data[0]; /*!< message payload data */ } __attribute__ ((packed)); -/* \brief RSL Dedicated Channel header (Chapter 8.3 and 8.4) */ +/* RSL Dedicated Channel header (Chapter 8.3 and 8.4) */ struct abis_rsl_dchan_hdr { struct abis_rsl_common_hdr c; - uint8_t ie_chan; /*!< \brief \ref RSL_IE_CHAN_NR (tag) */ - uint8_t chan_nr; /*!< \brief RSL channel number (value) */ - uint8_t data[0]; /*!< \brief message payload data */ + uint8_t ie_chan; /*!< \ref RSL_IE_CHAN_NR (tag) */ + uint8_t chan_nr; /*!< RSL channel number (value) */ + uint8_t data[0]; /*!< message payload data */ } __attribute__ ((packed)); -/* \brief RSL Common Channel header (Chapter 8.5) */ +/* RSL Common Channel header (Chapter 8.5) */ struct abis_rsl_cchan_hdr { struct abis_rsl_common_hdr c; - uint8_t ie_chan; /*!< \brief \ref RSL_IE_CHAN_NR (tag) */ - uint8_t chan_nr; /*!< \brief RSL channel number (value) */ - uint8_t data[0]; /*!< \brief message payload data */ + uint8_t ie_chan; /*!< \ref RSL_IE_CHAN_NR (tag) */ + uint8_t chan_nr; /*!< RSL channel number (value) */ + uint8_t data[0]; /*!< message payload data */ } __attribute__ ((packed)); /* Chapter 9.1 */ -/* \brief RSL Message Discriminator: RLL */ +/* RSL Message Discriminator: RLL */ #define ABIS_RSL_MDISC_RLL 0x02 -/* \brief RSL Message Discriminator: Dedicated Channel */ +/* RSL Message Discriminator: Dedicated Channel */ #define ABIS_RSL_MDISC_DED_CHAN 0x08 -/* \brief RSL Message Discriminator: Common Channel */ +/* RSL Message Discriminator: Common Channel */ #define ABIS_RSL_MDISC_COM_CHAN 0x0c -/* \brief RSL Message Discriminator: TRX Management */ +/* RSL Message Discriminator: TRX Management */ #define ABIS_RSL_MDISC_TRX 0x10 -/* \brief RSL Message Discriminator: Location Service */ +/* RSL Message Discriminator: Location Service */ #define ABIS_RSL_MDISC_LOC 0x20 -/* \brief RSL Message Discriminator: ip.access */ +/* RSL Message Discriminator: ip.access */ #define ABIS_RSL_MDISC_IPACCESS 0x7e #define ABIS_RSL_MDISC_TRANSP 0x01 -/* \brief Check if given RSL message discriminator is transparent */ +/* Check if given RSL message discriminator is transparent */ #define ABIS_RSL_MDISC_IS_TRANSP(x) (x & 0x01) -/* \brief RSL Message Type (Chapter 9.1) */ +/* RSL Message Type (Chapter 9.1) */ enum abis_rsl_msgtype { /* Radio Link Layer Management */ RSL_MT_DATA_REQ = 0x01, @@ -182,7 +182,7 @@ enum abis_rsl_msgtype { RSL_MT_IPAC_DLCX_NACK, }; -/*! \brief Siemens vendor-specific RSL message types */ +/*! Siemens vendor-specific RSL message types */ enum abis_rsl_msgtype_siemens { RSL_MT_SIEMENS_MRPCI = 0x41, RSL_MT_SIEMENS_INTRAC_HO_COND_IND = 0x42, @@ -202,7 +202,7 @@ enum abis_rsl_msgtype_siemens { RSL_MT_SIEMENS_MODIF_COND_IND = 0x50, }; -/*! \brief RSL Information Element Identifiers (Chapter 9.3) */ +/*! RSL Information Element Identifiers (Chapter 9.3) */ enum abis_rsl_ie { RSL_IE_CHAN_NR = 0x01, RSL_IE_LINK_IDENT, @@ -340,7 +340,7 @@ enum abis_rsl_ie { #define RSL_ACT_SECOND_MULTI 0x05 #define RSL_ACT_OSMO_PDCH 0x0f /*< non-standard, for dyn TS */ -/*! \brief RSL Channel Mode IF (Chapter 9.3.6) */ +/*! RSL Channel Mode IF (Chapter 9.3.6) */ struct rsl_ie_chan_mode { uint8_t dtx_dtu; uint8_t spd_ind; @@ -383,7 +383,7 @@ enum rsl_cmod_spd { #define RSL_CMOD_CSD_T_600 0x14 #define RSL_CMOD_CSD_T_1200_75 0x15 -/*! \brief RSL Channel Identification IE (Chapter 9.3.5) */ +/*! RSL Channel Identification IE (Chapter 9.3.5) */ struct rsl_ie_chan_ident { /* GSM 04.08 10.5.2.5 */ struct { @@ -496,7 +496,7 @@ struct rsl_ie_chan_ident { #define RSL_CHANNEED_TCH_F 0x02 #define RSL_CHANNEED_TCH_ForH 0x03 -/*! \brief RSL Cell Broadcast Command (Chapter 9.3.45) */ +/*! RSL Cell Broadcast Command (Chapter 9.3.45) */ struct rsl_ie_cb_cmd_type { uint8_t last_block:2; uint8_t spare:1; @@ -603,7 +603,7 @@ enum rsl_rel_mode { RSL_REL_LOCAL_END = 1, }; -/*! \brief ip.access specific embedded information elements */ +/*! ip.access specific embedded information elements */ enum rsl_ipac_embedded_ie { RSL_IPAC_EIE_RXLEV = 0x00, RSL_IPAC_EIE_RXQUAL = 0x01, diff --git a/include/osmocom/gsm/protocol/gsm_12_21.h b/include/osmocom/gsm/protocol/gsm_12_21.h index b35da447..1bdee9cd 100644 --- a/include/osmocom/gsm/protocol/gsm_12_21.h +++ b/include/osmocom/gsm/protocol/gsm_12_21.h @@ -32,60 +32,60 @@ #include <stdbool.h> #include <osmocom/gsm/tlv.h> -/*! \brief generic header in front of every OML message according to TS 08.59 */ +/*! generic header in front of every OML message according to TS 08.59 */ struct abis_om_hdr { - /*! \brief Message Discriminator \ref abis_oml_mdisc */ + /*! Message Discriminator \ref abis_oml_mdisc */ uint8_t mdisc; - /*! \brief Placement (like \ref ABIS_OM_PLACEMENT_ONLY) */ + /*! Placement (like \ref ABIS_OM_PLACEMENT_ONLY) */ uint8_t placement; - /*! \brief Sequence Number (if \ref ABIS_OM_PLACEMENT_MIDDLE) */ + /*! Sequence Number (if \ref ABIS_OM_PLACEMENT_MIDDLE) */ uint8_t sequence; - /*! \brief Length in octets */ + /*! Length in octets */ uint8_t length; - /*! \brief actual payload data */ + /*! actual payload data */ uint8_t data[0]; } __attribute__ ((packed)); #define ABIS_NM_MSG_SIZE 1024 #define ABIS_NM_MSG_HEADROOM 128 -/*! \brief Message Discriminator for Formatted Object Messages */ +/*! Message Discriminator for Formatted Object Messages */ #define ABIS_OM_MDISC_FOM 0x80 -/*! \brief Message Discriminator for Man Machine Interface */ +/*! Message Discriminator for Man Machine Interface */ #define ABIS_OM_MDISC_MMI 0x40 -/*! \brief Message Discriminator for TRAU management */ +/*! Message Discriminator for TRAU management */ #define ABIS_OM_MDISC_TRAU 0x20 -/*! \brief Message Discriminator for Manufacturer Specific Messages */ +/*! Message Discriminator for Manufacturer Specific Messages */ #define ABIS_OM_MDISC_MANUF 0x10 -/*! \brief Entire OML message is in the L2 frame */ +/*! Entire OML message is in the L2 frame */ #define ABIS_OM_PLACEMENT_ONLY 0x80 -/*! \brief First fragment of OML message is in this L2 frame */ +/*! First fragment of OML message is in this L2 frame */ #define ABIS_OM_PLACEMENT_FIRST 0x40 -/*! \brief Middle fragment of OML message is in this L2 frame */ +/*! Middle fragment of OML message is in this L2 frame */ #define ABIS_OM_PLACEMENT_MIDDLE 0x20 -/*! \brief Last fragment of OML message is in this L2 frame */ +/*! Last fragment of OML message is in this L2 frame */ #define ABIS_OM_PLACEMENT_LAST 0x10 -/*! \brief OML Object Instance */ +/*! OML Object Instance */ struct abis_om_obj_inst { - uint8_t bts_nr; /*!< \brief BTS Number */ - uint8_t trx_nr; /*!< \brief TRX Number */ - uint8_t ts_nr; /*!< \brief Timeslot Number */ + uint8_t bts_nr; /*!< BTS Number */ + uint8_t trx_nr; /*!< TRX Number */ + uint8_t ts_nr; /*!< Timeslot Number */ } __attribute__ ((packed)); -/*! \brief OML Object Instance */ +/*! OML Object Instance */ struct abis_om_fom_hdr { - uint8_t msg_type; /*!< \brief Message Type (\ref abis_nm_msgtype) */ - uint8_t obj_class; /*!< \brief Object Class (\ref abis_nm_obj_class) */ - struct abis_om_obj_inst obj_inst; /*!< \brief Object Instance */ - uint8_t data[0]; /*!< \brief Data */ + uint8_t msg_type; /*!< Message Type (\ref abis_nm_msgtype) */ + uint8_t obj_class; /*!< Object Class (\ref abis_nm_obj_class) */ + struct abis_om_obj_inst obj_inst; /*!< Object Instance */ + uint8_t data[0]; /*!< Data */ } __attribute__ ((packed)); -/*! \brief Size of the OML FOM header in octets */ +/*! Size of the OML FOM header in octets */ #define ABIS_OM_FOM_HDR_SIZE (sizeof(struct abis_om_hdr) + sizeof(struct abis_om_fom_hdr)) -/*! \brief OML Message Type (Section 9.1) */ +/*! OML Message Type (Section 9.1) */ enum abis_nm_msgtype { /* SW Download Management Messages */ NM_MT_LOAD_INIT = 0x01, @@ -196,7 +196,7 @@ enum abis_nm_msgtype { NM_MT_SET_ALARM_THRES_NACK, }; -/*! \brief Siemens specific OML Message Types */ +/*! Siemens specific OML Message Types */ enum abis_nm_msgtype_bs11 { NM_MT_BS11_RESET_RESOURCE = 0x74, @@ -232,7 +232,7 @@ enum abis_nm_msgtype_bs11 { NM_MT_BS11_RECONNECT_ACK, }; -/*! \brief ip.access specific OML Message Types */ +/*! ip.access specific OML Message Types */ enum abis_nm_msgtype_ipacc { NM_MT_IPACC_RESTART = 0x87, NM_MT_IPACC_RESTART_ACK, @@ -260,7 +260,7 @@ enum abis_nm_msgtype_ipacc { NM_MT_IPACC_SET_ATTR_NACK, }; -/*! \brief OML Probable Cause (Section 9.4.43) Manufacturer specific values */ +/*! OML Probable Cause (Section 9.4.43) Manufacturer specific values */ enum abis_mm_event_causes { /* Critical causes */ OSMO_EVT_CRIT_SW_FATAL = 0x0000, @@ -288,7 +288,7 @@ enum abis_nm_bs11_cell_alloc { NM_BS11_CANR_DCS1800 = 0x01, }; -/*! \brief OML Object Class (Section 9.2) */ +/*! OML Object Class (Section 9.2) */ enum abis_nm_obj_class { NM_OC_SITE_MANAGER = 0x00, NM_OC_BTS, @@ -319,7 +319,7 @@ enum abis_nm_obj_class { NM_OC_NULL = 0xff, }; -/*! \brief OML Attributes / IEs (Section 9.4) */ +/*! OML Attributes / IEs (Section 9.4) */ enum abis_nm_attr { NM_ATT_ABIS_CHANNEL = 0x01, NM_ATT_ADD_INFO, @@ -519,7 +519,7 @@ enum abis_nm_attr { }; #define NM_ATT_BS11_FILE_DATA NM_ATT_EVENT_TYPE -/*! \brief OML Administrative State (Section 9.4.4) */ +/*! OML Administrative State (Section 9.4.4) */ enum abis_nm_adm_state { NM_STATE_LOCKED = 0x01, NM_STATE_UNLOCKED = 0x02, @@ -527,7 +527,7 @@ enum abis_nm_adm_state { NM_STATE_NULL = 0xff, }; -/*! \brief OML Availability State (Section 9.4.7) */ +/*! OML Availability State (Section 9.4.7) */ enum abis_nm_avail_state { NM_AVSTATE_IN_TEST = 1, NM_AVSTATE_POWER_OFF = 2, @@ -538,14 +538,14 @@ enum abis_nm_avail_state { NM_AVSTATE_OK = 0xff, }; -/*! \brief OML Operational State */ +/*! OML Operational State */ enum abis_nm_op_state { NM_OPSTATE_DISABLED = 1, NM_OPSTATE_ENABLED = 2, NM_OPSTATE_NULL = 0xff, }; -/* \brief Channel Combination (Section 9.4.13) */ +/* Channel Combination (Section 9.4.13) */ enum abis_nm_chan_comb { NM_CHANC_TCHFull = 0x00, /* TCH/F + TCH/H + SACCH/TF */ NM_CHANC_TCHHalf = 0x01, /* TCH/H(0,1) + FACCH/H(0,1) + @@ -570,7 +570,7 @@ enum abis_nm_chan_comb { NM_CHANC_OSMO_TCHFull_TCHHalf_PDCH = 0x90, }; -/*! \brief Event Type (Section 9.4.16) */ +/*! Event Type (Section 9.4.16) */ enum abis_nm_event_type { NM_EVT_COMM_FAIL = 0x00, NM_EVT_QOS_FAIL = 0x01, @@ -579,7 +579,7 @@ enum abis_nm_event_type { NM_EVT_ENV_FAIL = 0x04, }; -/*! \brief Perceived Severity (Section: 9.4.63) */ +/*! Perceived Severity (Section: 9.4.63) */ enum abis_nm_severity { NM_SEVER_CEASED = 0x00, NM_SEVER_CRITICAL = 0x01, @@ -589,7 +589,7 @@ enum abis_nm_severity { NM_SEVER_INDETERMINATE = 0x05, }; -/*! \brief Probable Cause Type (Section 9.4.43) */ +/*! Probable Cause Type (Section 9.4.43) */ enum abis_nm_pcause_type { NM_PCAUSE_T_X721 = 0x01, NM_PCAUSE_T_GSM = 0x02, @@ -600,7 +600,7 @@ extern const struct value_string abis_nm_pcause_type_names[]; extern const struct value_string abis_nm_msgtype_names[]; extern const struct value_string abis_nm_att_names[]; -/*! \brief NACK causes (Section 9.4.36) */ +/*! NACK causes (Section 9.4.36) */ enum abis_nm_nack_cause { /* General Nack Causes */ NM_NACK_INCORR_STRUCT = 0x01, @@ -638,15 +638,15 @@ enum abis_nm_nack_cause { NM_NACK_MEAS_NOTSTART = 0x2c, }; -/*! \brief Abis OML Channel (Section 9.4.1) */ +/*! Abis OML Channel (Section 9.4.1) */ struct abis_nm_channel { uint8_t attrib; - uint8_t bts_port; /*!< \brief BTS port number */ - uint8_t timeslot; /*!< \brief E1 timeslot */ - uint8_t subslot; /*!< \brief E1 sub-slot */ + uint8_t bts_port; /*!< BTS port number */ + uint8_t timeslot; /*!< E1 timeslot */ + uint8_t subslot; /*!< E1 sub-slot */ } __attribute__ ((packed)); -/*! \brief 3GPP TS 12.21 9.4.53 T200 index */ +/*! 3GPP TS 12.21 9.4.53 T200 index */ enum abis_nm_t200_idx { T200_SDCCH = 0, T200_FACCH_F = 1, @@ -659,7 +659,7 @@ enum abis_nm_t200_idx { extern const uint8_t abis_nm_t200_ms[]; -/*! \brief Siemens BS-11 specific objects in the SienemsHW (0xA5) object class */ +/*! Siemens BS-11 specific objects in the SienemsHW (0xA5) object class */ enum abis_bs11_objtype { BS11_OBJ_ALCO = 0x01, BS11_OBJ_BBSIG = 0x02, /* obj_class: 0,1 */ @@ -670,7 +670,7 @@ enum abis_bs11_objtype { BS11_OBJ_PA = 0x09, /* obj_class: 0, 1*/ }; -/*! \brief Siemens BS11 TRX power */ +/*! Siemens BS11 TRX power */ enum abis_bs11_trx_power { BS11_TRX_POWER_GSM_2W = 0x06, BS11_TRX_POWER_GSM_250mW= 0x07, @@ -682,20 +682,20 @@ enum abis_bs11_trx_power { BS11_TRX_POWER_DCS_160mW= 0x0d, }; -/*! \brief Siemens BS11 PLL mode */ +/*! Siemens BS11 PLL mode */ enum abis_bs11_li_pll_mode { BS11_LI_PLL_LOCKED = 2, BS11_LI_PLL_STANDALONE = 3, }; -/*! \brief Siemens BS11 E1 line configuration */ +/*! Siemens BS11 E1 line configuration */ enum abis_bs11_line_cfg { BS11_LINE_CFG_STAR = 0x00, BS11_LINE_CFG_MULTIDROP = 0x01, BS11_LINE_CFG_LOOP = 0x02, }; -/*! \brief Siemens BS11 boot phase */ +/*! Siemens BS11 boot phase */ enum abis_bs11_phase { BS11_STATE_SOFTWARE_RQD = 0x01, BS11_STATE_LOAD_SMU_INTENDED = 0x11, @@ -712,7 +712,7 @@ enum abis_bs11_phase { BS11_STATE_ABIS_LOAD = 0x13, }; -/*! \brief ip.access test number */ +/*! ip.access test number */ enum abis_nm_ipacc_test_no { NM_IPACC_TESTNO_RLOOP_ANT = 0x01, NM_IPACC_TESTNO_RLOOP_XCVR = 0x02, @@ -726,7 +726,7 @@ enum abis_nm_ipacc_test_no { NM_IPACC_TESTNO_BCCCH_MONITOR = 0x46, }; -/*! \brief first byte after length inside NM_ATT_TEST_REPORT */ +/*! first byte after length inside NM_ATT_TEST_REPORT */ enum abis_nm_ipacc_test_res { NM_IPACC_TESTRES_SUCCESS = 0, NM_IPACC_TESTRES_TIMEOUT = 1, @@ -735,7 +735,7 @@ enum abis_nm_ipacc_test_res { NM_IPACC_TESTRES_STOPPED = 4, }; -/*! \brief internal IE inside NM_ATT_TEST_REPORT */ +/*! internal IE inside NM_ATT_TEST_REPORT */ enum abis_nm_ipacc_testres_ie { NM_IPACC_TR_IE_FREQ_ERR_LIST = 3, NM_IPACC_TR_IE_CHAN_USAGE = 4, @@ -744,7 +744,7 @@ enum abis_nm_ipacc_testres_ie { NM_IPACC_TR_IE_FREQ_ERR = 18, }; -/*! \brief ip.access IEI */ +/*! ip.access IEI */ enum ipac_eie { NM_IPAC_EIE_ARFCN_WHITE = 0x01, NM_IPAC_EIE_ARFCH_BLACK = 0x02, @@ -777,7 +777,7 @@ enum ipac_eie { NM_IPAC_EIE_BTS_ID = 0x25, }; -/*! \brief ip.access NWL BCCH information type */ +/*! ip.access NWL BCCH information type */ enum ipac_bcch_info_type { IPAC_BINF_RXLEV = (1 << 8), IPAC_BINF_RXQUAL = (1 << 9), @@ -792,7 +792,7 @@ enum ipac_bcch_info_type { IPAC_BINF_CELL_ALLOC = (1 << 2), }; -/*! \brief 3GPP TS 52.021 §9.4.62 SW Description */ +/*! 3GPP TS 52.021 §9.4.62 SW Description */ struct abis_nm_sw_desc { uint8_t file_id[UINT8_MAX]; uint8_t file_id_len; diff --git a/include/osmocom/gsm/rsl.h b/include/osmocom/gsm/rsl.h index 5da61808..93e27a14 100644 --- a/include/osmocom/gsm/rsl.h +++ b/include/osmocom/gsm/rsl.h @@ -17,13 +17,13 @@ void rsl_init_cchan_hdr(struct abis_rsl_cchan_hdr *ch, uint8_t msg_type); extern const struct tlv_definition rsl_att_tlvdef; -/*! \brief Parse RSL TLV structure using \ref tlv_parse */ +/*! Parse RSL TLV structure using \ref tlv_parse */ #define rsl_tlv_parse(dec, buf, len) \ tlv_parse(dec, &rsl_att_tlvdef, buf, len, 0, 0) extern const struct tlv_definition rsl_ipac_eie_tlvdef; -/*! \brief Parse RSL IPAC EIE TLV structure using \ref tlv_parse */ +/*! Parse RSL IPAC EIE TLV structure using \ref tlv_parse */ #define rsl_ipac_eie_tlv_parse(dec, buf, len) \ tlv_parse(dec, &rsl_ipac_eie_tlvdef, buf, len, 0, 0) @@ -58,7 +58,7 @@ struct msgb *rsl_rll_simple(uint8_t msg_type, uint8_t chan_nr, extern const struct value_string rsl_act_type_names[]; -/*! \brief Return a human readable name for GSM 08.58 RSL_ACT_* constants. */ +/*! Return a human readable name for GSM 08.58 RSL_ACT_* constants. */ static inline const char *rsl_act_type_name(uint8_t act_type) { return get_value_string(rsl_act_type_names, act_type); diff --git a/include/osmocom/gsm/tlv.h b/include/osmocom/gsm/tlv.h index 4a9bd272..fa3b6564 100644 --- a/include/osmocom/gsm/tlv.h +++ b/include/osmocom/gsm/tlv.h @@ -25,21 +25,21 @@ */ -/*! \brief gross length of a LV type field */ +/*! gross length of a LV type field */ #define LV_GROSS_LEN(x) (x+1) -/*! \brief gross length of a TLV type field */ +/*! gross length of a TLV type field */ #define TLV_GROSS_LEN(x) (x+2) -/*! \brief gross length of a TLV16 type field */ +/*! gross length of a TLV16 type field */ #define TLV16_GROSS_LEN(x) ((2*x)+2) -/*! \brief gross length of a TL16V type field */ +/*! gross length of a TL16V type field */ #define TL16V_GROSS_LEN(x) (x+3) -/*! \brief gross length of a L16TV type field */ +/*! gross length of a L16TV type field */ #define L16TV_GROSS_LEN(x) (x+3) -/*! \brief maximum length of TLV of one byte length */ +/*! maximum length of TLV of one byte length */ #define TVLV_MAX_ONEBYTE 0x7f -/*! \brief gross length of a TVLV type field */ +/*! gross length of a TVLV type field */ static inline uint16_t TVLV_GROSS_LEN(uint16_t len) { if (len <= TVLV_MAX_ONEBYTE) @@ -48,7 +48,7 @@ static inline uint16_t TVLV_GROSS_LEN(uint16_t len) return TL16V_GROSS_LEN(len); } -/*! \brief gross length of vTvL header (tag+len) */ +/*! gross length of vTvL header (tag+len) */ static inline uint16_t VTVL_GAN_GROSS_LEN(uint16_t tag, uint16_t len) { uint16_t ret = 2; @@ -62,7 +62,7 @@ static inline uint16_t VTVL_GAN_GROSS_LEN(uint16_t tag, uint16_t len) return ret; } -/*! \brief gross length of vTvLV (tag+len+val) */ +/*! gross length of vTvLV (tag+len+val) */ static inline uint16_t VTVLV_GAN_GROSS_LEN(uint16_t tag, uint16_t len) { uint16_t ret; @@ -80,7 +80,7 @@ static inline uint16_t VTVLV_GAN_GROSS_LEN(uint16_t tag, uint16_t len) /* TLV generation */ -/*! \brief put (append) a LV field */ +/*! put (append) a LV field */ static inline uint8_t *lv_put(uint8_t *buf, uint8_t len, const uint8_t *val) { @@ -89,7 +89,7 @@ static inline uint8_t *lv_put(uint8_t *buf, uint8_t len, return buf + len; } -/*! \brief put (append) a TLV field */ +/*! put (append) a TLV field */ static inline uint8_t *tlv_put(uint8_t *buf, uint8_t tag, uint8_t len, const uint8_t *val) { @@ -99,7 +99,7 @@ static inline uint8_t *tlv_put(uint8_t *buf, uint8_t tag, uint8_t len, return buf + len; } -/*! \brief put (append) a TLV16 field */ +/*! put (append) a TLV16 field */ static inline uint8_t *tlv16_put(uint8_t *buf, uint8_t tag, uint8_t len, const uint16_t *val) { @@ -109,7 +109,7 @@ static inline uint8_t *tlv16_put(uint8_t *buf, uint8_t tag, uint8_t len, return buf + len*2; } -/*! \brief put (append) a TL16V field */ +/*! put (append) a TL16V field */ static inline uint8_t *tl16v_put(uint8_t *buf, uint8_t tag, uint16_t len, const uint8_t *val) { @@ -120,7 +120,7 @@ static inline uint8_t *tl16v_put(uint8_t *buf, uint8_t tag, uint16_t len, return buf + len*2; } -/*! \brief put (append) a TvLV field */ +/*! put (append) a TvLV field */ static inline uint8_t *tvlv_put(uint8_t *buf, uint8_t tag, uint16_t len, const uint8_t *val) { @@ -135,7 +135,7 @@ static inline uint8_t *tvlv_put(uint8_t *buf, uint8_t tag, uint16_t len, return ret; } -/*! \brief put (append) a variable-length tag or variable-length length * */ +/*! put (append) a variable-length tag or variable-length length * */ static inline uint8_t *vt_gan_put(uint8_t *buf, uint16_t tag) { if (tag > TVLV_MAX_ONEBYTE) { @@ -148,7 +148,7 @@ static inline uint8_t *vt_gan_put(uint8_t *buf, uint16_t tag) return buf; } -/* \brief put (append) vTvL (GAN) field (tag + length)*/ +/* put (append) vTvL (GAN) field (tag + length)*/ static inline uint8_t *vtvl_gan_put(uint8_t *buf, uint16_t tag, uint16_t len) { uint8_t *ret; @@ -157,7 +157,7 @@ static inline uint8_t *vtvl_gan_put(uint8_t *buf, uint16_t tag, uint16_t len) return vt_gan_put(ret, len); } -/* \brief put (append) vTvLV (GAN) field (tag + length + val) */ +/* put (append) vTvLV (GAN) field (tag + length + val) */ static inline uint8_t *vtvlv_gan_put(uint8_t *buf, uint16_t tag, uint16_t len, const uint8_t *val) { @@ -171,14 +171,14 @@ static inline uint8_t *vtvlv_gan_put(uint8_t *buf, uint16_t tag, uint16_t len, return ret; } -/*! \brief put (append) a TLV16 field to \ref msgb */ +/*! put (append) a TLV16 field to \ref msgb */ static inline uint8_t *msgb_tlv16_put(struct msgb *msg, uint8_t tag, uint8_t len, const uint16_t *val) { uint8_t *buf = msgb_put(msg, TLV16_GROSS_LEN(len)); return tlv16_put(buf, tag, len, val); } -/*! \brief put (append) a TL16V field to \ref msgb */ +/*! put (append) a TL16V field to \ref msgb */ static inline uint8_t *msgb_tl16v_put(struct msgb *msg, uint8_t tag, uint16_t len, const uint8_t *val) { @@ -186,7 +186,7 @@ static inline uint8_t *msgb_tl16v_put(struct msgb *msg, uint8_t tag, uint16_t le return tl16v_put(buf, tag, len, val); } -/*! \brief put (append) a TvLV field to \ref msgb */ +/*! put (append) a TvLV field to \ref msgb */ static inline uint8_t *msgb_tvlv_put(struct msgb *msg, uint8_t tag, uint16_t len, const uint8_t *val) { @@ -194,7 +194,7 @@ static inline uint8_t *msgb_tvlv_put(struct msgb *msg, uint8_t tag, uint16_t len return tvlv_put(buf, tag, len, val); } -/*! \brief put (append) a vTvLV field to \ref msgb */ +/*! put (append) a vTvLV field to \ref msgb */ static inline uint8_t *msgb_vtvlv_gan_put(struct msgb *msg, uint16_t tag, uint16_t len, const uint8_t *val) { @@ -202,7 +202,7 @@ static inline uint8_t *msgb_vtvlv_gan_put(struct msgb *msg, uint16_t tag, return vtvlv_gan_put(buf, tag, len, val); } -/*! \brief put (append) a L16TV field to \ref msgb */ +/*! put (append) a L16TV field to \ref msgb */ static inline uint8_t *msgb_l16tv_put(struct msgb *msg, uint16_t len, uint8_t tag, const uint8_t *val) { @@ -215,14 +215,14 @@ static inline uint8_t *msgb_l16tv_put(struct msgb *msg, uint16_t len, uint8_t ta return buf + len; } -/*! \brief put (append) a V field */ +/*! put (append) a V field */ static inline uint8_t *v_put(uint8_t *buf, uint8_t val) { *buf++ = val; return buf; } -/*! \brief put (append) a TV field */ +/*! put (append) a TV field */ static inline uint8_t *tv_put(uint8_t *buf, uint8_t tag, uint8_t val) { @@ -231,7 +231,7 @@ static inline uint8_t *tv_put(uint8_t *buf, uint8_t tag, return buf; } -/*! \brief put (append) a TVfixed field */ +/*! put (append) a TVfixed field */ static inline uint8_t *tv_fixed_put(uint8_t *buf, uint8_t tag, unsigned int len, const uint8_t *val) { @@ -240,7 +240,7 @@ static inline uint8_t *tv_fixed_put(uint8_t *buf, uint8_t tag, return buf + len; } -/*! \brief put (append) a TV16 field +/*! put (append) a TV16 field * \param[in,out] buf data buffer * \param[in] tag Tag value * \param[in] val Value (in host byte order!) @@ -254,7 +254,7 @@ static inline uint8_t *tv16_put(uint8_t *buf, uint8_t tag, return buf; } -/*! \brief put (append) a LV field to a \ref msgb +/*! put (append) a LV field to a \ref msgb * \returns pointer to first byte after newly-put information */ static inline uint8_t *msgb_lv_put(struct msgb *msg, uint8_t len, const uint8_t *val) { @@ -262,7 +262,7 @@ static inline uint8_t *msgb_lv_put(struct msgb *msg, uint8_t len, const uint8_t return lv_put(buf, len, val); } -/*! \brief put (append) a TLV field to a \ref msgb +/*! put (append) a TLV field to a \ref msgb * \returns pointer to first byte after newly-put information */ static inline uint8_t *msgb_tlv_put(struct msgb *msg, uint8_t tag, uint8_t len, const uint8_t *val) { @@ -270,7 +270,7 @@ static inline uint8_t *msgb_tlv_put(struct msgb *msg, uint8_t tag, uint8_t len, return tlv_put(buf, tag, len, val); } -/*! \brief put (append) a TV field to a \ref msgb +/*! put (append) a TV field to a \ref msgb * \returns pointer to first byte after newly-put information */ static inline uint8_t *msgb_tv_put(struct msgb *msg, uint8_t tag, uint8_t val) { @@ -278,7 +278,7 @@ static inline uint8_t *msgb_tv_put(struct msgb *msg, uint8_t tag, uint8_t val) return tv_put(buf, tag, val); } -/*! \brief put (append) a TVfixed field to a \ref msgb +/*! put (append) a TVfixed field to a \ref msgb * \returns pointer to first byte after newly-put information */ static inline uint8_t *msgb_tv_fixed_put(struct msgb *msg, uint8_t tag, unsigned int len, const uint8_t *val) @@ -287,7 +287,7 @@ static inline uint8_t *msgb_tv_fixed_put(struct msgb *msg, uint8_t tag, return tv_fixed_put(buf, tag, len, val); } -/*! \brief put (append) a V field to a \ref msgb +/*! put (append) a V field to a \ref msgb * \returns pointer to first byte after newly-put information */ static inline uint8_t *msgb_v_put(struct msgb *msg, uint8_t val) { @@ -295,7 +295,7 @@ static inline uint8_t *msgb_v_put(struct msgb *msg, uint8_t val) return v_put(buf, val); } -/*! \brief put (append) a TV16 field to a \ref msgb +/*! put (append) a TV16 field to a \ref msgb * \returns pointer to first byte after newly-put information */ static inline uint8_t *msgb_tv16_put(struct msgb *msg, uint8_t tag, uint16_t val) { @@ -303,7 +303,7 @@ static inline uint8_t *msgb_tv16_put(struct msgb *msg, uint8_t tag, uint16_t val return tv16_put(buf, tag, val); } -/*! \brief push (prepend) a TLV field to a \ref msgb +/*! push (prepend) a TLV field to a \ref msgb * \returns pointer to first byte of newly-pushed information */ static inline uint8_t *msgb_tlv_push(struct msgb *msg, uint8_t tag, uint8_t len, const uint8_t *val) { @@ -312,7 +312,7 @@ static inline uint8_t *msgb_tlv_push(struct msgb *msg, uint8_t tag, uint8_t len, return buf; } -/*! \brief push (prepend) a TV field to a \ref msgb +/*! push (prepend) a TV field to a \ref msgb * \returns pointer to first byte of newly-pushed information */ static inline uint8_t *msgb_tv_push(struct msgb *msg, uint8_t tag, uint8_t val) { @@ -321,7 +321,7 @@ static inline uint8_t *msgb_tv_push(struct msgb *msg, uint8_t tag, uint8_t val) return buf; } -/*! \brief push (prepend) a TV16 field to a \ref msgb +/*! push (prepend) a TV16 field to a \ref msgb * \returns pointer to first byte of newly-pushed information */ static inline uint8_t *msgb_tv16_push(struct msgb *msg, uint8_t tag, uint16_t val) { @@ -330,7 +330,7 @@ static inline uint8_t *msgb_tv16_push(struct msgb *msg, uint8_t tag, uint16_t va return buf; } -/*! \brief push (prepend) a TvLV field to a \ref msgb +/*! push (prepend) a TvLV field to a \ref msgb * \returns pointer to first byte of newly-pushed information */ static inline uint8_t *msgb_tvlv_push(struct msgb *msg, uint8_t tag, uint16_t len, const uint8_t *val) @@ -340,7 +340,7 @@ static inline uint8_t *msgb_tvlv_push(struct msgb *msg, uint8_t tag, uint16_t le return buf; } -/* \brief push (prepend) a vTvL header to a \ref msgb +/* push (prepend) a vTvL header to a \ref msgb */ static inline uint8_t *msgb_vtvl_gan_push(struct msgb *msg, uint16_t tag, uint16_t len) @@ -361,37 +361,37 @@ static inline uint8_t *msgb_vtvlv_gan_push(struct msgb *msg, uint16_t tag, /* TLV parsing */ -/*! \brief Entry in a TLV parser array */ +/*! Entry in a TLV parser array */ struct tlv_p_entry { - uint16_t len; /*!< \brief length */ - const uint8_t *val; /*!< \brief pointer to value */ + uint16_t len; /*!< length */ + const uint8_t *val; /*!< pointer to value */ }; -/*! \brief TLV type */ +/*! TLV type */ enum tlv_type { - TLV_TYPE_NONE, /*!< \brief no type */ - TLV_TYPE_FIXED, /*!< \brief fixed-length value-only */ - TLV_TYPE_T, /*!< \brief tag-only */ - TLV_TYPE_TV, /*!< \brief tag-value (8bit) */ - TLV_TYPE_TLV, /*!< \brief tag-length-value */ - TLV_TYPE_TL16V, /*!< \brief tag, 16 bit length, value */ - TLV_TYPE_TvLV, /*!< \brief tag, variable length, value */ - TLV_TYPE_SINGLE_TV, /*!< \brief tag and value (both 4 bit) in 1 byte */ - TLV_TYPE_vTvLV_GAN, /*!< \brief variable-length tag, variable-length length */ + TLV_TYPE_NONE, /*!< no type */ + TLV_TYPE_FIXED, /*!< fixed-length value-only */ + TLV_TYPE_T, /*!< tag-only */ + TLV_TYPE_TV, /*!< tag-value (8bit) */ + TLV_TYPE_TLV, /*!< tag-length-value */ + TLV_TYPE_TL16V, /*!< tag, 16 bit length, value */ + TLV_TYPE_TvLV, /*!< tag, variable length, value */ + TLV_TYPE_SINGLE_TV, /*!< tag and value (both 4 bit) in 1 byte */ + TLV_TYPE_vTvLV_GAN, /*!< variable-length tag, variable-length length */ }; -/*! \brief Definition of a single IE (Information Element) */ +/*! Definition of a single IE (Information Element) */ struct tlv_def { - enum tlv_type type; /*!< \brief TLV type */ - uint8_t fixed_len; /*!< \brief length in case of \ref TLV_TYPE_FIXED */ + enum tlv_type type; /*!< TLV type */ + uint8_t fixed_len; /*!< length in case of \ref TLV_TYPE_FIXED */ }; -/*! \brief Definition of All 256 IE / TLV */ +/*! Definition of All 256 IE / TLV */ struct tlv_definition { struct tlv_def def[256]; }; -/*! \brief result of the TLV parser */ +/*! result of the TLV parser */ struct tlv_parsed { struct tlv_p_entry lv[256]; }; @@ -414,7 +414,7 @@ void tlv_def_patch(struct tlv_definition *dst, const struct tlv_definition *src) #define TLVP_PRES_LEN(tp, tag, min_len) \ (TLVP_PRESENT(tp, tag) && TLVP_LEN(tp, tag) >= min_len) -/*! \brief Align given TLV element with 16 bit value to an even address +/*! Align given TLV element with 16 bit value to an even address * \param[in] tp pointer to \ref tlv_parsed * \param[in] pos element to return * \returns aligned 16 bit value @@ -426,7 +426,7 @@ static inline uint16_t tlvp_val16_unal(const struct tlv_parsed *tp, int pos) return res; } -/*! \brief Align given TLV element with 32 bit value to an address that is a multiple of 4 +/*! Align given TLV element with 32 bit value to an address that is a multiple of 4 * \param[in] tp pointer to \ref tlv_parsed * \param[in] pos element to return * \returns aligned 32 bit value @@ -438,7 +438,7 @@ static inline uint32_t tlvp_val32_unal(const struct tlv_parsed *tp, int pos) return res; } -/*! \brief Retrieve (possibly unaligned) TLV element and convert to host byte order +/*! Retrieve (possibly unaligned) TLV element and convert to host byte order * \param[in] tp pointer to \ref tlv_parsed * \param[in] pos element to return * \returns aligned 16 bit value in host byte order @@ -448,7 +448,7 @@ static inline uint16_t tlvp_val16be(const struct tlv_parsed *tp, int pos) return osmo_load16be(TLVP_VAL(tp, pos)); } -/*! \brief Retrieve (possibly unaligned) TLV element and convert to host byte order +/*! Retrieve (possibly unaligned) TLV element and convert to host byte order * \param[in] tp pointer to \ref tlv_parsed * \param[in] pos element to return * \returns aligned 32 bit value in host byte order |