blob: d24ee95f71dc6c15371d86362be2c7836c1a0874 [file] [log] [blame]
Sylvain Munaut12ba7782014-06-16 10:13:40 +02001#pragma once
Harald Weltee779c362010-06-29 20:51:13 +02002
3#include <stdint.h>
Harald Welte33cb71a2011-05-21 18:54:32 +02004#include <osmocom/core/write_queue.h>
5#include <osmocom/core/select.h>
Harald Weltee779c362010-06-29 20:51:13 +02006
Harald Welte47379ca2011-08-17 16:35:24 +02007/*! \defgroup gsmtap GSMTAP
8 * @{
Neels Hofmeyr17518fe2017-06-20 04:35:06 +02009 * \file gsmtap_util.h */
Harald Welte47379ca2011-08-17 16:35:24 +020010
Harald Welte67733042020-03-08 17:21:29 +010011uint8_t chantype_rsl2gsmtap2(uint8_t rsl_chantype, uint8_t rsl_link_id, bool user_plane);
12
Harald Welted8c74b82020-03-08 17:37:21 +010013uint8_t chantype_rsl2gsmtap(uint8_t rsl_chantype, uint8_t rsl_link_id)
14 OSMO_DEPRECATED("Use chantype_rsl2gsmtap2() instead");
Harald Welte67733042020-03-08 17:21:29 +010015
Harald Welte93713a52017-07-12 23:43:40 +020016void chantype_gsmtap2rsl(uint8_t gsmtap_chantype, uint8_t *rsl_chantype, uint8_t *link_id);
Harald Weltee779c362010-06-29 20:51:13 +020017
Sylvain Munaut15ae7152011-09-26 13:05:07 +020018struct msgb *gsmtap_makemsg_ex(uint8_t type, uint16_t arfcn, uint8_t ts, uint8_t chan_type,
19 uint8_t ss, uint32_t fn, int8_t signal_dbm,
Vadim Yanitskiy833e8fa2021-01-04 17:40:05 +010020 int8_t snr, const uint8_t *data, unsigned int len);
Sylvain Munaut15ae7152011-09-26 13:05:07 +020021
Harald Weltee34a9402010-06-29 22:31:21 +020022struct msgb *gsmtap_makemsg(uint16_t arfcn, uint8_t ts, uint8_t chan_type,
23 uint8_t ss, uint32_t fn, int8_t signal_dbm,
Vadim Yanitskiy833e8fa2021-01-04 17:40:05 +010024 int8_t snr, const uint8_t *data, unsigned int len);
Harald Weltee34a9402010-06-29 22:31:21 +020025
Neels Hofmeyr87e45502017-06-20 00:17:59 +020026/*! one gsmtap instance */
arehbein1584b2a2023-10-12 00:20:17 +020027struct gsmtap_inst;
Harald Weltee779c362010-06-29 20:51:13 +020028
arehbein1584b2a2023-10-12 00:20:17 +020029int gsmtap_inst_fd(struct gsmtap_inst *gti)
30 OSMO_DEPRECATED("Use gsmtap_inst_fd2() instead");
31
32int gsmtap_inst_fd2(const struct gsmtap_inst *gti);
Harald Weltee779c362010-06-29 20:51:13 +020033
Harald Welte33cb71a2011-05-21 18:54:32 +020034int gsmtap_source_init_fd(const char *host, uint16_t port);
Maxa747d362023-02-18 23:45:42 +030035int gsmtap_source_init_fd2(const char *local_host, uint16_t local_port, const char *rem_host, uint16_t rem_port);
Harald Welte33cb71a2011-05-21 18:54:32 +020036
Harald Welte33cb71a2011-05-21 18:54:32 +020037int gsmtap_source_add_sink_fd(int gsmtap_fd);
38
Harald Welte33cb71a2011-05-21 18:54:32 +020039struct gsmtap_inst *gsmtap_source_init(const char *host, uint16_t port,
40 int ofd_wq_mode);
Maxa747d362023-02-18 23:45:42 +030041struct gsmtap_inst *gsmtap_source_init2(const char *local_host, uint16_t local_port,
42 const char *rem_host, uint16_t rem_port, int ofd_wq_mode);
43
Vadim Yanitskiy2f4186a2021-12-29 21:58:19 +060044void gsmtap_source_free(struct gsmtap_inst *gti);
Harald Welte33cb71a2011-05-21 18:54:32 +020045
Harald Welte33cb71a2011-05-21 18:54:32 +020046int gsmtap_source_add_sink(struct gsmtap_inst *gti);
47
Harald Welte33cb71a2011-05-21 18:54:32 +020048int gsmtap_sendmsg(struct gsmtap_inst *gti, struct msgb *msg);
Harald Welte9e34f082021-11-25 15:35:50 +010049int gsmtap_sendmsg_free(struct gsmtap_inst *gti, struct msgb *msg);
Harald Welte33cb71a2011-05-21 18:54:32 +020050
Sylvain Munaut15ae7152011-09-26 13:05:07 +020051int gsmtap_send_ex(struct gsmtap_inst *gti, uint8_t type, uint16_t arfcn, uint8_t ts,
52 uint8_t chan_type, uint8_t ss, uint32_t fn,
Vadim Yanitskiy833e8fa2021-01-04 17:40:05 +010053 int8_t signal_dbm, int8_t snr, const uint8_t *data,
Sylvain Munaut15ae7152011-09-26 13:05:07 +020054 unsigned int len);
55
Harald Welte33cb71a2011-05-21 18:54:32 +020056int gsmtap_send(struct gsmtap_inst *gti, uint16_t arfcn, uint8_t ts,
57 uint8_t chan_type, uint8_t ss, uint32_t fn,
Vadim Yanitskiy833e8fa2021-01-04 17:40:05 +010058 int8_t signal_dbm, int8_t snr, const uint8_t *data,
Harald Welte33cb71a2011-05-21 18:54:32 +020059 unsigned int len);
Harald Welted58ba462011-04-27 10:57:49 +020060
Harald Welteaa3ba462017-07-13 00:01:02 +020061extern const struct value_string gsmtap_gsm_channel_names[];
62extern const struct value_string gsmtap_type_names[];
63
Katerina Barone-Adesic28c6a02013-02-15 13:27:59 +010064/*! @} */