From ddfcd31b27a0d345d9f9b6c9d131377a304d1940 Mon Sep 17 00:00:00 2001 From: Eduardo Silva Date: Tue, 8 Sep 2026 10:51:56 +0100 Subject: [PATCH] Added functions to check the session state --- constants.go | 102 ++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 101 insertions(+), 1 deletion(-) diff --git a/constants.go b/constants.go index e434477..9b520b8 100644 --- a/constants.go +++ b/constants.go @@ -248,7 +248,7 @@ func (i *IBT) AbsActive() bool { // EngineWarnings - END -// SessionState const +// SessionState - START const ( irsdk_StateInvalid = 0x00 irsdk_StateGetInCar = 0x01 @@ -259,6 +259,104 @@ const ( irsdk_StateCoolDown = 0x06 ) +func (i *IBT) SessionStateInvalid() bool { + val, ok := i.Vars.Vars["SessionState"] + if !ok { + log.Fatal("no SessionState") + } + + bitfield, err := strconv.ParseInt(val.Value.(string), 0, 64) + if err != nil { + log.Fatal("unable to get SessionState: " + err.Error()) + } + + return bitfield == irsdk_StateInvalid +} + +func (i *IBT) SessionStateGetInCar() bool { + val, ok := i.Vars.Vars["SessionState"] + if !ok { + log.Fatal("no SessionState") + } + + bitfield, err := strconv.ParseInt(val.Value.(string), 0, 64) + if err != nil { + log.Fatal("unable to get SessionState: " + err.Error()) + } + + return bitfield == irsdk_StateGetInCar +} + +func (i *IBT) SessionStateWarmup() bool { + val, ok := i.Vars.Vars["SessionState"] + if !ok { + log.Fatal("no SessionState") + } + + bitfield, err := strconv.ParseInt(val.Value.(string), 0, 64) + if err != nil { + log.Fatal("unable to get SessionState: " + err.Error()) + } + + return bitfield == irsdk_StateWarmup +} + +func (i *IBT) SessionStateParadeLaps() bool { + val, ok := i.Vars.Vars["SessionState"] + if !ok { + log.Fatal("no SessionState") + } + + bitfield, err := strconv.ParseInt(val.Value.(string), 0, 64) + if err != nil { + log.Fatal("unable to get SessionState: " + err.Error()) + } + + return bitfield == irsdk_StateParadeLaps +} + +func (i *IBT) SessionStateRacing() bool { + val, ok := i.Vars.Vars["SessionState"] + if !ok { + log.Fatal("no SessionState") + } + + bitfield, err := strconv.ParseInt(val.Value.(string), 0, 64) + if err != nil { + log.Fatal("unable to get SessionState: " + err.Error()) + } + + return bitfield == irsdk_StateRacing +} + +func (i *IBT) SessionStateCheckered() bool { + val, ok := i.Vars.Vars["SessionState"] + if !ok { + log.Fatal("no SessionState") + } + + bitfield, err := strconv.ParseInt(val.Value.(string), 0, 64) + if err != nil { + log.Fatal("unable to get SessionState: " + err.Error()) + } + + return bitfield == irsdk_StateCheckered +} + +func (i *IBT) SessionStateCoolDown() bool { + val, ok := i.Vars.Vars["SessionState"] + if !ok { + log.Fatal("no SessionState") + } + + bitfield, err := strconv.ParseInt(val.Value.(string), 0, 64) + if err != nil { + log.Fatal("unable to get SessionState: " + err.Error()) + } + + return bitfield == irsdk_StateCoolDown +} + func SessionStateToString(state int) string { switch state { case irsdk_StateInvalid: @@ -280,6 +378,8 @@ func SessionStateToString(state int) string { } } +// SessionState - END + // TrkLoc const const ( irsdk_NotInWorld = -1