# If a handover from TCH/F to TCH/H frees a dynamic timeslot,
# take the freed TCH/H from the soure timeslot into account,
# both when the target is a dynamic timeslot and when the target is a static timeslot.

create-bts trx-count 1 timeslots c+s4 dyn TCH/F TCH/F TCH/H PDCH PDCH PDCH

network
 bts 0
  handover2 min-free-slots tch/f 3
  handover2 min-free-slots tch/h 2
  handover2 assignment 1

set-ts-use trx 0 0 states * TCH/F - - - * * *
# (there must be at least one measurement report on each lchan for congestion check to work)
meas-rep lchan * * * * rxlev 40 rxqual 0 ta 0 neighbors 30
congestion-check
expect-as from lchan 0 0 1 0 to lchan 0 0 4 0
expect-ts-use trx 0 0 states * pdch - - TCH/H- * * *

# Again with one more TCH/H occupied, there will still be two free TCH/H after HO on the dyn TS
set-ts-use trx 0 0 states * TCH/F - - TCH/H- * * *
meas-rep lchan * * * * rxlev 40 rxqual 0 ta 0 neighbors 30
congestion-check
expect-as from lchan 0 0 1 0 to lchan 0 0 4 1
expect-ts-use trx 0 0 states * pdch - - TCH/HH * * *

# Again, with the target being a dyn TS
create-bts trx-count 1 timeslots c+s4 dyn TCH/F TCH/F dyn PDCH PDCH PDCH

network
 bts 1
  handover2 min-free-slots tch/f 3
  handover2 min-free-slots tch/h 2
  handover2 assignment 1

set-ts-use trx 1 0 states * TCH/F TCH/F - pdch * * *
meas-rep lchan 1 * * * rxlev 40 rxqual 0 ta 0 neighbors 30
congestion-check
expect-as from lchan 1 0 1 0 to lchan 1 0 4 0
expect-ts-use trx 1 0 states * pdch TCH/F - TCH/H- * * *

# Again with one more TCH/H occupied, there will still be two free TCH/H after HO on the dyn TS
set-ts-use trx 1 0 states * TCH/F TCH/F - TCH/H- * * *
meas-rep lchan 1 * * * rxlev 40 rxqual 0 ta 0 neighbors 30
congestion-check
expect-as from lchan 1 0 1 0 to lchan 1 0 4 1
expect-ts-use trx 1 0 states * pdch TCH/F - TCH/HH * * *
