Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6070620713 | ||
|
|
1ad9dd4ab7 | ||
|
|
56c7081e8f | ||
|
|
ddfcd31b27 |
+117
-2
@@ -20,7 +20,6 @@ const (
|
|||||||
IRSDK_BROADCASTMSGNAME string = "IRSDK_BROADCASTMSG"
|
IRSDK_BROADCASTMSGNAME string = "IRSDK_BROADCASTMSG"
|
||||||
fileMapSize uint32 = 1164 * 1024
|
fileMapSize uint32 = 1164 * 1024
|
||||||
connTimeout int64 = 30
|
connTimeout int64 = 30
|
||||||
stConnected int = 1
|
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
@@ -117,6 +116,22 @@ const (
|
|||||||
csFocusAtDriver int = 0 // ctFocusAtDriver + car number...
|
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
|
// Camera positions
|
||||||
type bitfieldValue struct {
|
type bitfieldValue struct {
|
||||||
Value int
|
Value int
|
||||||
@@ -248,7 +263,7 @@ func (i *IBT) AbsActive() bool {
|
|||||||
|
|
||||||
// EngineWarnings - END
|
// EngineWarnings - END
|
||||||
|
|
||||||
// SessionState const
|
// SessionState - START
|
||||||
const (
|
const (
|
||||||
irsdk_StateInvalid = 0x00
|
irsdk_StateInvalid = 0x00
|
||||||
irsdk_StateGetInCar = 0x01
|
irsdk_StateGetInCar = 0x01
|
||||||
@@ -259,6 +274,104 @@ const (
|
|||||||
irsdk_StateCoolDown = 0x06
|
irsdk_StateCoolDown = 0x06
|
||||||
)
|
)
|
||||||
|
|
||||||
|
func (i *IBT) SessionStateInvalid() bool {
|
||||||
|
val, ok := i.Vars.Vars["SessionState"]
|
||||||
|
if !ok {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
bitfield, err := strconv.ParseInt(val.Value.(string), 0, 64)
|
||||||
|
if err != nil {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
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 {
|
func SessionStateToString(state int) string {
|
||||||
switch state {
|
switch state {
|
||||||
case irsdk_StateInvalid:
|
case irsdk_StateInvalid:
|
||||||
@@ -280,6 +393,8 @@ func SessionStateToString(state int) string {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SessionState - END
|
||||||
|
|
||||||
// TrkLoc const
|
// TrkLoc const
|
||||||
const (
|
const (
|
||||||
irsdk_NotInWorld = -1
|
irsdk_NotInWorld = -1
|
||||||
|
|||||||
@@ -59,16 +59,19 @@ type IBT struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (i *IBT) IsConnected() bool {
|
func (i *IBT) IsConnected() bool {
|
||||||
if i.Headers != nil {
|
if i.Headers == nil {
|
||||||
if sessionStatusOK(int(i.Headers.Status)) {
|
return false
|
||||||
return true
|
|
||||||
}
|
|
||||||
// if sessionStatusOK(int(i.Headers.Status)) && (sdk.lastValidData+connTimeout > time.Now().Unix()) {
|
|
||||||
// return true
|
|
||||||
// }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return false
|
if !i.SessionStatusConnected() {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
if i.SessionStateInvalid() {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
func (i *IBT) exportYAML() error {
|
func (i *IBT) exportYAML() error {
|
||||||
|
|||||||
@@ -370,11 +370,6 @@ func parseSessionInfo(buf []byte, len int32) (*SessionInfoYAML, error) {
|
|||||||
return &sessionInfo, nil
|
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
|
// ToString will return a readable string of the struct
|
||||||
func (s *SessionInfoYAML) ToString() string {
|
func (s *SessionInfoYAML) ToString() string {
|
||||||
stringified, _ := json.MarshalIndent(s, "", " ")
|
stringified, _ := json.MarshalIndent(s, "", " ")
|
||||||
|
|||||||
Reference in New Issue
Block a user