33 lines
982 B
Go
33 lines
982 B
Go
package vod_decoder
|
|
|
|
import (
|
|
"encoding/hex"
|
|
"log"
|
|
)
|
|
|
|
// VOD coding information
|
|
// https://fiskerinc-my.sharepoint.com/:x:/p/bdoan/EQCJFiYi3dlIgyQ9ZhXgHC4BTW6r_f677rTa2zSxgBkUmg?email=aandrews%40fiskerinc.com&wdOrigin=TEAMS-MAGLEV.p2p_ns.rwc&wdExp=TEAMS-TREATMENT&wdhostclicktime=1704913173133&web=1
|
|
// The coding information is 2 bytes off of what the cloud has, as we do not have a starting DID.
|
|
// Given a VOD, going to return either Right hand drive, or left hand drive
|
|
func GetDriverSideFromVOD(vod string)(driverSide string, ok bool){
|
|
hexVOD := decodeVOD(vod)
|
|
if len(hexVOD) < 8 {
|
|
return "INVALID", false
|
|
}
|
|
b := hexVOD[7]
|
|
switch b{
|
|
case 0x00:
|
|
return "LEFT", true
|
|
case 0x01:
|
|
return "RIGHT", true
|
|
default:
|
|
badHexValue := hex.EncodeToString([]byte{b})
|
|
log.Printf("Received an invalid left/right side drive value from vod: %s", badHexValue)
|
|
return "INVALID", false
|
|
}
|
|
}
|
|
|
|
func decodeVOD(vod string)(hexVOD []byte){
|
|
hexVOD, _ = hex.DecodeString(vod)
|
|
return
|
|
} |