Testato:
Io ingloberei tutto nella funzione e poi far ritornare solo l id già tutto intero.
Sono nove byte, puoi gestirli solo tramite un array e gli array non si passano tra funzioni, si possono passare solo i puntatori.
Diciamo che si può gestire il tutto tramite un singolo file .h dove ci sono le definizioni dei registri e una macro che li legge, però sempre con i puntatori dovrai litigare.
p.s.
Non esiste il software Arduino like, esiste solo il software scritto bene e quello scritto male.