Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7a210af58d | ||
|
|
78ec6a1e86 | ||
|
|
6070620713 | ||
|
|
1ad9dd4ab7 | ||
|
|
56c7081e8f | ||
|
|
ddfcd31b27 |
+118
-2
@@ -20,7 +20,6 @@ const (
|
||||
IRSDK_BROADCASTMSGNAME string = "IRSDK_BROADCASTMSG"
|
||||
fileMapSize uint32 = 1164 * 1024
|
||||
connTimeout int64 = 30
|
||||
stConnected int = 1
|
||||
)
|
||||
|
||||
const (
|
||||
@@ -117,6 +116,22 @@ const (
|
||||
csFocusAtDriver int = 0 // ctFocusAtDriver + car number...
|
||||
)
|
||||
|
||||
// StatusField - START
|
||||
const (
|
||||
irsdk_stConnected = 0x01
|
||||
)
|
||||
|
||||
func (i *IBT) SessionStatusConnected() bool {
|
||||
return i.Headers.Status == irsdk_stConnected
|
||||
}
|
||||
|
||||
// NOTE: move this away from here
|
||||
// func (i *IBT) SessionTimedOut() bool {
|
||||
// return sdk.lastValidData+connTimeout > time.Now().Unix()
|
||||
// }
|
||||
|
||||
// StatusField - END
|
||||
|
||||
// Camera positions
|
||||
type bitfieldValue struct {
|
||||
Value int
|
||||
@@ -248,7 +263,7 @@ func (i *IBT) AbsActive() bool {
|
||||
|
||||
// EngineWarnings - END
|
||||
|
||||
// SessionState const
|
||||
// SessionState - START
|
||||
const (
|
||||
irsdk_StateInvalid = 0x00
|
||||
irsdk_StateGetInCar = 0x01
|
||||
@@ -259,6 +274,105 @@ const (
|
||||
irsdk_StateCoolDown = 0x06
|
||||
)
|
||||
|
||||
func (i *IBT) SessionStateInvalid() bool {
|
||||
val, ok := i.Vars.Vars["SessionState"]
|
||||
if !ok {
|
||||
return true
|
||||
}
|
||||
|
||||
value, ok := val.Value.(int)
|
||||
if !ok {
|
||||
return true
|
||||
}
|
||||
|
||||
return value == irsdk_StateInvalid
|
||||
}
|
||||
|
||||
// BUG: Need to fix all of these functions, they are all wrong
|
||||
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 +394,8 @@ func SessionStateToString(state int) string {
|
||||
}
|
||||
}
|
||||
|
||||
// SessionState - END
|
||||
|
||||
// TrkLoc const
|
||||
const (
|
||||
irsdk_NotInWorld = -1
|
||||
|
||||
@@ -59,16 +59,19 @@ type IBT struct {
|
||||
}
|
||||
|
||||
func (i *IBT) IsConnected() bool {
|
||||
if i.Headers != nil {
|
||||
if sessionStatusOK(int(i.Headers.Status)) {
|
||||
return true
|
||||
}
|
||||
// if sessionStatusOK(int(i.Headers.Status)) && (sdk.lastValidData+connTimeout > time.Now().Unix()) {
|
||||
// return true
|
||||
// }
|
||||
if i.Headers == nil {
|
||||
return false
|
||||
}
|
||||
|
||||
return false
|
||||
if !i.SessionStatusConnected() {
|
||||
return false
|
||||
}
|
||||
|
||||
if i.SessionStateInvalid() {
|
||||
return false
|
||||
}
|
||||
|
||||
return true
|
||||
}
|
||||
|
||||
func (i *IBT) exportYAML() error {
|
||||
|
||||
@@ -370,11 +370,6 @@ func parseSessionInfo(buf []byte, len int32) (*SessionInfoYAML, error) {
|
||||
return &sessionInfo, nil
|
||||
}
|
||||
|
||||
// sessionStatusOK will tell us if we are connected to the live data
|
||||
func sessionStatusOK(status int) bool {
|
||||
return (status & stConnected) > 0
|
||||
}
|
||||
|
||||
// ToString will return a readable string of the struct
|
||||
func (s *SessionInfoYAML) ToString() string {
|
||||
stringified, _ := json.MarshalIndent(s, "", " ")
|
||||
|
||||
Reference in New Issue
Block a user