@@ -46,41 +46,90 @@ const uint16_t DataPort = 52100;
46
46
const uint8_t PacketHeaderLSB = (OCULUS_CHECK_ID & 0x00FF );
47
47
const uint8_t PacketHeaderMSB = (OCULUS_CHECK_ID & 0xFF00 ) >> 8 ;
48
48
49
- namespace Oculus_1200MHz {
49
+ #define DEG2RAD (x ) (x * M_PI / 180.0 )
50
+
51
+ // ===================================================================
52
+ //
53
+ // New constants API which separates constants by both model
54
+ // and frequency band
55
+
56
+ namespace Oculus_M750d {
57
+ namespace Freq_750kHz {
58
+ const float ElevationBeamwidthDeg = 20.0 ;
59
+ const float ElevationBeamwidthRad = DEG2RAD(ElevationBeamwidthDeg);
60
+
61
+ const float AzimuthBeamwidthDeg = 1.0 ;
62
+ const float AzimuthBeamwidthRad = DEG2RAD(AzimuthBeamwidthDeg);
63
+
64
+ const float MaxRange = 120 ;
65
+ }; // namespace Freq_750kHz
66
+
67
+ namespace Freq_1200kHz {
68
+ const float ElevationBeamwidthDeg = 12.0 ;
69
+ const float ElevationBeamwidthRad = DEG2RAD(ElevationBeamwidthDeg);
70
+
71
+ const float AzimuthBeamwidthDeg = 0.6 ;
72
+ const float AzimuthBeamwidthRad = DEG2RAD(AzimuthBeamwidthDeg);
73
+
74
+ const float MaxRange = 40 ;
75
+ }; // namespace Freq_1200kHz
76
+ }; // namespace Oculus_M750d
77
+
78
+ namespace Oculus_M1200d {
79
+ namespace Freq_1200kHz {
50
80
const float ElevationBeamwidthDeg = 20.0 ;
51
- const float ElevationBeamwidthRad = 20.0 * M_PI / 180.0 ;
81
+ const float ElevationBeamwidthRad = DEG2RAD(ElevationBeamwidthDeg) ;
52
82
53
83
const float AzimuthBeamwidthDeg = 0.6 ;
54
- const float AzimuthBeamwidthRad = 0.6 * M_PI / 180.0 ;
84
+ const float AzimuthBeamwidthRad = DEG2RAD(AzimuthBeamwidthDeg) ;
55
85
56
- // NOTE(lindzey): According to the spec sheet, max range is 30 m
57
- // at 1.2 MHz on the M3000d, but 40 m on the M1200d.
58
86
const float MaxRange = 40 ;
59
- }; // namespace Oculus_1200MHz
87
+ }; // namespace Freq_1200kHz
60
88
61
- namespace Oculus_2100MHz {
89
+ namespace Freq_2100kHz {
62
90
const float ElevationBeamwidthDeg = 12.0 ;
63
- const float ElevationBeamwidthRad = 12.0 * M_PI / 180.0 ;
91
+ const float ElevationBeamwidthRad = DEG2RAD(ElevationBeamwidthDeg) ;
64
92
65
93
const float AzimuthBeamwidthDeg = 0.4 ;
66
- const float AzimuthBeamwidthRad = 0.4 * M_PI / 180.0 ;
94
+ const float AzimuthBeamwidthRad = DEG2RAD(AzimuthBeamwidthDeg) ;
67
95
68
- // \todo These shouldn't be fixed, should read from Oculus.h
69
- // But I don't feel like dealing with their data structure
70
- const float MaxRange = 10 ; // meters
71
- }; // namespace Oculus_2100MHz
96
+ const float MaxRange = 10 ;
97
+ }; // namespace Freq_2100kHz
98
+ }; // namespace Oculus_M1200d
72
99
73
- namespace Oculus_3000MHz {
100
+ namespace Oculus_M3000d {
101
+ namespace Freq_1200kHz {
74
102
const float ElevationBeamwidthDeg = 20.0 ;
75
- const float ElevationBeamwidthRad = 20.0 * M_PI / 180.0 ;
103
+ const float ElevationBeamwidthRad = DEG2RAD(ElevationBeamwidthDeg) ;
76
104
77
- const float AzimuthBeamwidthDeg = 0.4 ;
78
- const float AzimuthBeamwidthRad = 0.4 * M_PI / 180.0 ;
105
+ const float AzimuthBeamwidthDeg = 0.6 ;
106
+ const float AzimuthBeamwidthRad = DEG2RAD(AzimuthBeamwidthDeg) ;
79
107
80
- // \todo These shouldn't be fixed, should read from Oculus.h
81
- // But I don't feel like dealing with their data structure
82
- const float MaxRange = 5 ; // meters
83
- }; // namespace Oculus_3000MHz
108
+ const float MaxRange = 30 ;
109
+ }; // namespace Freq_1200kHz
110
+
111
+ namespace Freq_3000kHz {
112
+ const float ElevationBeamwidthDeg = 20.0 ;
113
+ const float ElevationBeamwidthRad = DEG2RAD(ElevationBeamwidthDeg);
114
+
115
+ const float AzimuthBeamwidthDeg = 0.4 ;
116
+ const float AzimuthBeamwidthRad = DEG2RAD(AzimuthBeamwidthDeg);
117
+
118
+ const float MaxRange = 5 ;
119
+ }; // namespace Freq_3000kHz
120
+ }; // namespace Oculus_M3000d
121
+
122
+ // ===================================================================
123
+ //
124
+ // "Old"" constants API which only considered nominal frequency.
125
+ // So it can't handle the case where different models may have
126
+ // different performance at the same nominal center frequency.
127
+
128
+ // For backwards compatibility
129
+ namespace Oculus_750KHz = Oculus_M750d::Freq_750kHz;
130
+ namespace Oculus_1200MHz = Oculus_M1200d::Freq_1200kHz;
131
+ namespace Oculus_2100MHz = Oculus_M1200d::Freq_2100kHz;
132
+ namespace Oculus_3000MHz = Oculus_M3000d::Freq_3000kHz;
84
133
85
134
struct FlagBits {
86
135
// bit 0: 0 = interpret range as percent, 1 = interpret range as meters
0 commit comments