aboutsummaryrefslogtreecommitdiffstats
path: root/include/osmocom/bsc/lchan_fsm.h
diff options
context:
space:
mode:
authorNeels Hofmeyr <neels@hofmeyr.de>2018-07-12 21:23:26 +0200
committerNeels Hofmeyr <neels@hofmeyr.de>2018-07-28 12:18:23 +0200
commitac85b34476afc341af7e09e9eca368835cd9d68b (patch)
tree742a6682f64a132d400c440fb9835a2d044cd434 /include/osmocom/bsc/lchan_fsm.h
parentdbb38d532b10797aa65bfd29aa5a31ce76e6b5ea (diff)
lchan_fsm: split off lchan_rtp_fsm, establish RTP a bit earlier
Diffstat (limited to 'include/osmocom/bsc/lchan_fsm.h')
-rw-r--r--include/osmocom/bsc/lchan_fsm.h23
1 files changed, 9 insertions, 14 deletions
diff --git a/include/osmocom/bsc/lchan_fsm.h b/include/osmocom/bsc/lchan_fsm.h
index 49701c1d0..35b88471e 100644
--- a/include/osmocom/bsc/lchan_fsm.h
+++ b/include/osmocom/bsc/lchan_fsm.h
@@ -16,13 +16,9 @@ enum lchan_fsm_state {
LCHAN_ST_UNUSED,
LCHAN_ST_WAIT_TS_READY,
LCHAN_ST_WAIT_ACTIV_ACK, /*< After RSL Chan Act Ack, lchan is active but RTP not configured. */
- LCHAN_ST_WAIT_RLL_ESTABLISH,
- LCHAN_ST_WAIT_MGW_ENDPOINT_AVAILABLE,
- LCHAN_ST_WAIT_IPACC_CRCX_ACK,
- LCHAN_ST_WAIT_IPACC_MDCX_ACK,
- LCHAN_ST_WAIT_MGW_ENDPOINT_CONFIGURED,
+ LCHAN_ST_WAIT_RLL_RTP_ESTABLISH,
LCHAN_ST_ESTABLISHED, /*< Active and RTP is fully configured. */
- LCHAN_ST_WAIT_SAPIS_RELEASED,
+ LCHAN_ST_WAIT_RLL_RTP_RELEASED,
LCHAN_ST_WAIT_BEFORE_RF_RELEASE,
LCHAN_ST_WAIT_RF_RELEASE_ACK,
LCHAN_ST_WAIT_AFTER_ERROR,
@@ -36,13 +32,9 @@ enum lchan_fsm_event {
LCHAN_EV_RSL_CHAN_ACTIV_ACK,
LCHAN_EV_RSL_CHAN_ACTIV_NACK,
LCHAN_EV_RLL_ESTABLISH_IND,
- LCHAN_EV_MGW_ENDPOINT_AVAILABLE,
- LCHAN_EV_MGW_ENDPOINT_CONFIGURED,
- LCHAN_EV_MGW_ENDPOINT_ERROR,
- LCHAN_EV_IPACC_CRCX_ACK,
- LCHAN_EV_IPACC_CRCX_NACK,
- LCHAN_EV_IPACC_MDCX_ACK,
- LCHAN_EV_IPACC_MDCX_NACK,
+ LCHAN_EV_RTP_READY,
+ LCHAN_EV_RTP_ERROR,
+ LCHAN_EV_RTP_RELEASED,
LCHAN_EV_RLL_REL_IND,
LCHAN_EV_RLL_REL_CONF,
LCHAN_EV_RSL_RF_CHAN_REL_ACK,
@@ -66,11 +58,13 @@ struct lchan_activate_info {
* When a dyn TS was selected, the lchan->type has been set to the desired rate. */
enum gsm48_chan_mode chan_mode;
bool requires_voice_stream;
+ bool wait_before_switching_rtp;
uint16_t msc_assigned_cic;
struct gsm_lchan *old_lchan;
};
void lchan_activate(struct gsm_lchan *lchan, struct lchan_activate_info *info);
+void lchan_ready_to_switch_rtp(struct gsm_lchan *lchan);
static inline const char *lchan_state_name(struct gsm_lchan *lchan)
{
@@ -86,4 +80,5 @@ static inline bool lchan_state_is(struct gsm_lchan *lchan, uint32_t state)
bool lchan_may_receive_data(struct gsm_lchan *lchan);
void lchan_forget_conn(struct gsm_lchan *lchan);
-void lchan_forget_mgw_endpoint(struct gsm_lchan *lchan);
+
+void lchan_set_last_error(struct gsm_lchan *lchan, const char *fmt, ...);