aboutsummaryrefslogtreecommitdiffstats
path: root/tests/handover/handover_test.c
diff options
context:
space:
mode:
Diffstat (limited to 'tests/handover/handover_test.c')
-rw-r--r--tests/handover/handover_test.c42
1 files changed, 30 insertions, 12 deletions
diff --git a/tests/handover/handover_test.c b/tests/handover/handover_test.c
index 2c97f782a..60a31be2f 100644
--- a/tests/handover/handover_test.c
+++ b/tests/handover/handover_test.c
@@ -287,6 +287,34 @@ static struct gsm_bts *_create_bts(int num_trx, const char * const *ts_args, int
return bts;
}
+char *lchans_use_str(struct gsm_bts_trx_ts *ts, const char *established_prefix, char established_char)
+{
+ char state_chars[8] = { 0 };
+ struct gsm_lchan *lchan;
+ bool any_lchans_established = false;
+ bool any_lchans_in_use = false;
+ ts_for_n_lchans(lchan, ts, ts->max_primary_lchans) {
+ char state_char;
+ if (lchan_state_is(lchan, LCHAN_ST_UNUSED)) {
+ state_char = '-';
+ } else {
+ any_lchans_in_use = true;
+ if (lchan_state_is(lchan, LCHAN_ST_ESTABLISHED)) {
+ any_lchans_established = true;
+ state_char = established_char;
+ } else {
+ state_char = '!';
+ }
+ }
+ state_chars[lchan->nr] = state_char;
+ }
+ if (!any_lchans_in_use)
+ return "-";
+ if (!any_lchans_established)
+ established_prefix = "";
+ return talloc_asprintf(OTC_SELECT, "%s%s", established_prefix, state_chars);
+}
+
const char *ts_use_str(struct gsm_bts_trx_ts *ts)
{
switch (ts->pchan_is) {
@@ -297,20 +325,10 @@ const char *ts_use_str(struct gsm_bts_trx_ts *ts)
return "-";
case GSM_PCHAN_TCH_F:
- if (lchan_state_is(&ts->lchan[0], LCHAN_ST_ESTABLISHED))
- return "TCH/F";
- else
- return "-";
+ return lchans_use_str(ts, "TCH/", 'F');
case GSM_PCHAN_TCH_H:
- if (lchan_state_is(&ts->lchan[0], LCHAN_ST_ESTABLISHED)
- && lchan_state_is(&ts->lchan[1], LCHAN_ST_ESTABLISHED))
- return "TCH/HH";
- if (lchan_state_is(&ts->lchan[0], LCHAN_ST_ESTABLISHED))
- return "TCH/H-";
- if (lchan_state_is(&ts->lchan[1], LCHAN_ST_ESTABLISHED))
- return "TCH/-H";
- return "-";
+ return lchans_use_str(ts, "TCH/", 'H');
default:
return gsm_pchan_name(ts->pchan_is);