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
}