blob: ab5a5d5edb6daa24492e34f95e48cccfb513dfd4 [file] [log] [blame]
Sylvain Munaut12ba7782014-06-16 10:13:40 +02001#pragma once
Harald Weltef7a1bcc2011-05-22 22:45:16 +02002
3#include <osmocom/gsm/tlv.h>
Harald Weltefc906462011-06-05 11:22:59 +02004#include <osmocom/gsm/gsm_utils.h>
Harald Weltef7a1bcc2011-05-22 22:45:16 +02005#include <osmocom/gsm/protocol/gsm_12_21.h>
6
Neels Hofmeyr17518fe2017-06-20 04:35:06 +02007/*! \defgroup oml A-bis OML
8 * @{
9 * \file abis_nm.h */
Harald Welte4e777c32011-08-17 19:15:24 +020010
Harald Welte604d5522014-08-17 18:42:58 +020011extern const char abis_nm_ipa_magic[13];
12extern const char abis_nm_osmo_magic[12];
13
Holger Hans Peter Freyther271c43b2011-05-31 00:42:38 +020014enum abis_nm_msgtype;
15enum gsm_phys_chan_config;
16
Tobias Engel6ad25f22012-10-24 17:52:53 +020017extern const enum abis_nm_msgtype abis_nm_reports[4];
18extern const enum abis_nm_msgtype abis_nm_no_ack_nack[3];
19extern const enum abis_nm_msgtype abis_nm_sw_load_msgs[9];
20extern const enum abis_nm_msgtype abis_nm_nacks[33];
Harald Weltef7a1bcc2011-05-22 22:45:16 +020021
Harald Welte8d5180e2014-08-17 19:36:26 +020022extern const struct value_string abis_nm_msg_disc_names[];
Holger Hans Peter Freyther30366122011-05-23 21:41:34 +020023extern const struct value_string abis_nm_obj_class_names[];
24extern const struct value_string abis_nm_adm_state_names[];
Harald Welteea4b12a2011-05-23 20:41:31 +020025
Harald Weltef7a1bcc2011-05-22 22:45:16 +020026const char *abis_nm_nack_cause_name(uint8_t cause);
27const char *abis_nm_nack_name(uint8_t nack);
28const char *abis_nm_event_type_name(uint8_t cause);
29const char *abis_nm_severity_name(uint8_t cause);
Tobias Engel6ad25f22012-10-24 17:52:53 +020030extern const struct tlv_definition abis_nm_att_tlvdef;
Pau Espin Pedrol4b456692017-10-19 16:49:12 +020031
Harald Weltef7a1bcc2011-05-22 22:45:16 +020032const char *abis_nm_opstate_name(uint8_t os);
33const char *abis_nm_avail_name(uint8_t avail);
34const char *abis_nm_test_name(uint8_t test);
Pau Espin Pedrol4b456692017-10-19 16:49:12 +020035/*! Get human-readable string for OML administrative state */
36static inline const char *abis_nm_admin_name(uint8_t admin)
37{
38 return get_value_string(abis_nm_adm_state_names, admin);
39}
40
Álvaro Neira Ayuso550b06c2014-05-19 19:22:55 +020041extern const struct tlv_definition abis_nm_osmo_att_tlvdef;
Max0bee65c2017-01-02 13:42:24 +010042extern const struct tlv_definition abis_nm_att_tlvdef_ipa;
Harald Welte868a5c42013-02-10 09:29:27 +010043
Harald Welted86055b2018-03-17 10:32:07 +010044const char *abis_nm_dump_foh(const struct abis_om_fom_hdr *foh);
Harald Welte4a62eda2019-03-18 18:27:00 +010045char *abis_nm_dump_foh_buf(char *buf, size_t buf_len, const struct abis_om_fom_hdr *foh);
Harald Welte179f3572019-03-18 18:38:47 +010046char *abis_nm_dump_foh_c(void *ctx, const struct abis_om_fom_hdr *foh);
Harald Welted86055b2018-03-17 10:32:07 +010047
Neels Hofmeyr87e45502017-06-20 00:17:59 +020048/*! write a human-readable OML header to the debug log
Harald Welte868a5c42013-02-10 09:29:27 +010049 * \param[in] ss Logging sub-system
50 * \param[in] foh A-bis OML FOM header
51 */
52#define abis_nm_debugp_foh(ss, foh) \
Harald Welted86055b2018-03-17 10:32:07 +010053 DEBUGP(ss, "%s ", abis_nm_dump_foh(foh))
Harald Weltef7a1bcc2011-05-22 22:45:16 +020054
Harald Welte11c71932011-05-24 17:15:12 +020055int abis_nm_chcomb4pchan(enum gsm_phys_chan_config pchan);
Holger Hans Peter Freytherd4d87c52014-01-02 14:10:25 +010056enum gsm_phys_chan_config abis_nm_pchan4chcomb(uint8_t chcomb);
Harald Welte4e777c32011-08-17 19:15:24 +020057
Sylvain Munautdca7d2c2012-04-18 21:53:23 +020058/*! @} */