Skip to content

Commit dec8a5e

Browse files
committed
feat(orb-mcu-util): print new diamond evt version
also print 'Diamond_unknown' in case binary doesn't support any new version
1 parent ac96655 commit dec8a5e

3 files changed

Lines changed: 73 additions & 24 deletions

File tree

Cargo.lock

Lines changed: 5 additions & 5 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ seek-camera.path = "seek-camera/wrapper"
121121

122122
[workspace.dependencies.orb-messages]
123123
git = "https://github.com/worldcoin/orb-messages"
124-
rev = "3dffed6e01fa4aaca347eca52be87bfc298508eb"
124+
rev = "c251751145f5376087f99305fbdfba10718e3cdd"
125125

126126
[workspace.dependencies.nusb]
127127
git = "https://github.com/kevinmehall/nusb"

mcu-util/src/orb/revision.rs

Lines changed: 67 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,77 @@
1-
use std::fmt::{Display, Formatter};
2-
31
use orb_mcu_interface::orb_messages;
2+
use std::fmt::{Display, Formatter};
43

54
#[derive(Clone, Debug, Default)]
65
pub struct OrbRevision(pub orb_messages::Hardware);
76

7+
trait OrbVersionFromInt {
8+
fn from_version_i32(value: i32) -> Self;
9+
}
10+
impl OrbVersionFromInt for orb_messages::hardware::OrbVersion {
11+
fn from_version_i32(value: i32) -> Self {
12+
match value {
13+
1 => orb_messages::hardware::OrbVersion::HwVersionPearlEv1,
14+
2 => orb_messages::hardware::OrbVersion::HwVersionPearlEv2,
15+
3 => orb_messages::hardware::OrbVersion::HwVersionPearlEv3,
16+
4 => orb_messages::hardware::OrbVersion::HwVersionPearlEv4,
17+
5 => orb_messages::hardware::OrbVersion::HwVersionPearlEv5,
18+
6 => orb_messages::hardware::OrbVersion::HwVersionDiamondPoc1,
19+
7 => orb_messages::hardware::OrbVersion::HwVersionDiamondPoc2,
20+
8 => orb_messages::hardware::OrbVersion::HwVersionDiamondB3,
21+
9 => orb_messages::hardware::OrbVersion::HwVersionDiamondEvt,
22+
_ => orb_messages::hardware::OrbVersion::HwVersionUnknown,
23+
}
24+
}
25+
}
26+
827
impl Display for OrbRevision {
928
fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
10-
if self.0.version
11-
== i32::from(orb_messages::hardware::OrbVersion::HwVersionUnknown)
12-
{
13-
write!(f, "unknown")
14-
} else if self.0.version
15-
< orb_messages::hardware::OrbVersion::HwVersionDiamondPoc1 as i32
16-
{
17-
write!(f, "EVT{:?}", self.0.version)
18-
} else {
19-
write!(
20-
f,
21-
"Diamond_B{:?}",
22-
self.0.version
23-
- orb_messages::hardware::OrbVersion::HwVersionDiamondPoc1 as i32
24-
+ 1
25-
)
29+
match orb_messages::hardware::OrbVersion::from_version_i32(self.0.version) {
30+
orb_messages::hardware::OrbVersion::HwVersionUnknown => {
31+
// from_version_i32 returned unknown but the version might not be 0
32+
// meaning it's known by the firmware but not by the current binary
33+
if self.0.version
34+
== orb_messages::hardware::OrbVersion::HwVersionUnknown as i32
35+
{
36+
return write!(f, "unknown");
37+
}
38+
39+
tracing::error!(
40+
"A new orb revision might not be implemented by that binary: {:?}.",
41+
self.0.version
42+
);
43+
44+
// let's write if it's a pearl or diamond orb, guessing by the version number
45+
if self.0.version
46+
< orb_messages::hardware::OrbVersion::HwVersionDiamondPoc1 as i32
47+
{
48+
write!(f, "Pearl_unknown")
49+
} else {
50+
write!(f, "Diamond_unknown")
51+
}
52+
}
53+
orb_messages::hardware::OrbVersion::HwVersionPearlEv1
54+
| orb_messages::hardware::OrbVersion::HwVersionPearlEv2
55+
| orb_messages::hardware::OrbVersion::HwVersionPearlEv3
56+
| orb_messages::hardware::OrbVersion::HwVersionPearlEv4
57+
| orb_messages::hardware::OrbVersion::HwVersionPearlEv5 => {
58+
write!(f, "EVT{:?}", self.0.version)
59+
}
60+
orb_messages::hardware::OrbVersion::HwVersionDiamondPoc1
61+
| orb_messages::hardware::OrbVersion::HwVersionDiamondPoc2
62+
| orb_messages::hardware::OrbVersion::HwVersionDiamondB3 => {
63+
write!(
64+
f,
65+
"Diamond_B{:?}",
66+
self.0.version
67+
- orb_messages::hardware::OrbVersion::HwVersionDiamondPoc1
68+
as i32
69+
+ 1
70+
)
71+
}
72+
orb_messages::hardware::OrbVersion::HwVersionDiamondEvt => {
73+
write!(f, "Diamond_EVT")
74+
}
2675
}
2776
}
2877
}

0 commit comments

Comments
 (0)