Files
cloud-services/pkg/vod_decoder/vod_decoder.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
}