/
GPRSTimer3.go
30 lines (27 loc) · 965 Bytes
/
GPRSTimer3.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
package nasConvert
import (
"github.com/free5gc/nas/nasMessage"
)
// TS 24.008 10.5.7.4a
func GPRSTimer3ToNas(timerValue int) (timerValueNas uint8) {
if timerValue <= 2*31 {
t := uint8(timerValue / 2)
timerValueNas = (nasMessage.GPRSTimer3UnitMultiplesOf2Seconds << 5) + t
} else if timerValue <= 30*31 {
t := uint8(timerValue / 30)
timerValueNas = (nasMessage.GPRSTimer3UnitMultiplesOf30Seconds << 5) + t
} else if timerValue <= 60*31 {
t := uint8(timerValue / 60)
timerValueNas = (nasMessage.GPRSTimer3UnitMultiplesOf1Minute << 5) + t
} else if timerValue <= 600*31 {
t := uint8(timerValue / 600)
timerValueNas = (nasMessage.GPRSTimer3UnitMultiplesOf10Minutes << 5) + t
} else if timerValue <= 3600*31 {
t := uint8(timerValue / 3600)
timerValueNas = (nasMessage.GPRSTimer3UnitMultiplesOf1Hour << 5) + t
} else {
t := uint8(timerValue / (36000))
timerValueNas = (nasMessage.GPRSTimer3UnitMultiplesOf10Hours << 5) + t
}
return
}