CTRE Phoenix 6 C++ 26.50.0-alpha-1
Loading...
Searching...
No Matches
SlotConfigs.hpp
Go to the documentation of this file.
1/*
2 * Copyright (C) Cross The Road Electronics.  All rights reserved.
3 * License information can be found in CTRE_LICENSE.txt
4 * For support and suggestions contact support@ctr-electronics.com or file
5 * an issue tracker at https://github.com/CrossTheRoadElec/Phoenix-Releases
6 */
7#pragma once
8
13#include <unordered_map>
14
15namespace ctre {
16namespace phoenix6 {
17
18
19namespace configs {
20/**
21 * \brief Gains for the specified slot.
22 *
23 * \details If this slot is selected, these gains are used in closed
24 * loop control requests.
25 */
27 struct SlotSpns {
28 int kPSpn;
29 int kISpn;
30 int kDSpn;
31 int kSSpn;
32 int kVSpn;
33 int kASpn;
34 int kGSpn;
35 int GravityTypeSpn;
36 int StaticFeedforwardSignSpn;
37 int GravityArmPositionOffsetSpn;
38 int GainSchedBehaviorSpn;
39 };
40
41 static std::unordered_map<int, SlotSpns> const genericMap;
42
43public:
44 constexpr SlotConfigs() = default;
45
46 /**
47 * \brief Proportional gain.
48 *
49 * \details The units for this gain is dependent on the control mode.
50 * Since this gain is multiplied by error in the input, the units
51 * should be defined as units of output per unit of input error. For
52 * example, when controlling velocity using a duty cycle closed loop,
53 * the units for the proportional gain will be duty cycle per rps of
54 * error, or 1/rps.
55 *
56 * - Minimum Value: 0
57 * - Maximum Value: 3.4e+38
58 * - Default Value: 0
59 * - Units:
60 */
61 wpi::units::scalar_t kP = 0;
62 /**
63 * \brief Integral gain.
64 *
65 * \details The units for this gain is dependent on the control mode.
66 * Since this gain is multiplied by error in the input integrated over
67 * time (in units of seconds), the units should be defined as units of
68 * output per unit of integrated input error. For example, when
69 * controlling velocity using a duty cycle closed loop, integrating
70 * velocity over time results in rps * s = rotations. Therefore, the
71 * units for the integral gain will be duty cycle per rotation of
72 * accumulated error, or 1/rot.
73 *
74 * - Minimum Value: 0
75 * - Maximum Value: 3.4e+38
76 * - Default Value: 0
77 * - Units:
78 */
79 wpi::units::scalar_t kI = 0;
80 /**
81 * \brief Derivative gain.
82 *
83 * \details The units for this gain is dependent on the control mode.
84 * Since this gain is multiplied by the derivative of error in the
85 * input with respect to time (in units of seconds), the units should
86 * be defined as units of output per unit of the differentiated input
87 * error. For example, when controlling velocity using a duty cycle
88 * closed loop, the derivative of velocity with respect to time is rot
89 * per sec², which is acceleration. Therefore, the units for the
90 * derivative gain will be duty cycle per unit of acceleration error,
91 * or 1/(rot per sec²).
92 *
93 * - Minimum Value: 0
94 * - Maximum Value: 3.4e+38
95 * - Default Value: 0
96 * - Units:
97 */
98 wpi::units::scalar_t kD = 0;
99 /**
100 * \brief Static feedforward gain.
101 *
102 * \details This is added to the closed loop output. The unit for this
103 * constant is dependent on the control mode, typically fractional
104 * duty cycle, voltage, or torque current.
105 *
106 * The sign is typically determined by reference velocity when using
107 * position, velocity, and Motion Magic® closed loop modes. However,
108 * when using position closed loop with zero velocity reference (no
109 * motion profiling), the application can instead use the position
110 * closed loop error by setting the Static Feedforward Sign
111 * configuration parameter. When doing so, we recommend the minimal
112 * amount of kS, otherwise the motor output may dither when closed
113 * loop error is near zero.
114 *
115 * - Minimum Value: -128
116 * - Maximum Value: 127
117 * - Default Value: 0
118 * - Units:
119 */
120 wpi::units::scalar_t kS = 0;
121 /**
122 * \brief Velocity feedforward gain.
123 *
124 * \details The units for this gain is dependent on the control mode.
125 * Since this gain is multiplied by the requested velocity, the units
126 * should be defined as units of output per unit of requested input
127 * velocity. For example, when controlling velocity using a duty cycle
128 * closed loop, the units for the velocity feedfoward gain will be
129 * duty cycle per requested rps, or 1/rps.
130 *
131 * - Minimum Value: 0
132 * - Maximum Value: 3.4e+38
133 * - Default Value: 0
134 * - Units:
135 */
136 wpi::units::scalar_t kV = 0;
137 /**
138 * \brief Acceleration feedforward gain.
139 *
140 * \details The units for this gain is dependent on the control mode.
141 * Since this gain is multiplied by the requested acceleration, the
142 * units should be defined as units of output per unit of requested
143 * input acceleration. For example, when controlling velocity using a
144 * duty cycle closed loop, the units for the acceleration feedfoward
145 * gain will be duty cycle per requested rot per sec², or 1/(rot per
146 * sec²).
147 *
148 * - Minimum Value: 0
149 * - Maximum Value: 3.4e+38
150 * - Default Value: 0
151 * - Units:
152 */
153 wpi::units::scalar_t kA = 0;
154 /**
155 * \brief Gravity feedforward/feedback gain. The type of gravity
156 * compensation is selected by #GravityType.
157 *
158 * \details This is added to the closed loop output. The sign is
159 * determined by the gravity type. The unit for this constant is
160 * dependent on the control mode, typically fractional duty cycle,
161 * voltage, or torque current.
162 *
163 * Note that kG may be negative for some counterbalanced mechanisms.
164 *
165 * - Minimum Value: -128
166 * - Maximum Value: 127
167 * - Default Value: 0
168 * - Units:
169 */
170 wpi::units::scalar_t kG = 0;
171 /**
172 * \brief Gravity feedforward/feedback type.
173 *
174 * This determines the type of the gravity feedforward/feedback.
175 *
176 * Choose Elevator_Static for systems where the gravity feedforward is
177 * constant, such as an elevator. The gravity feedforward output will
178 * always have the same sign.
179 *
180 * Choose Arm_Cosine for systems where the gravity feedback is
181 * dependent on the angular position of the mechanism, such as an arm.
182 * The gravity feedback output will vary depending on the mechanism
183 * angular position. Note that the sensor offset and ratios must be
184 * configured so that the sensor reports a position of 0 when the
185 * mechanism is horizonal (parallel to the ground), and the reported
186 * sensor position is 1:1 with the mechanism.
187 *
188 * - Default Value: signals#GravityTypeValue#Elevator_Static
189 */
191 /**
192 * \brief Static feedforward sign during position closed loop.
193 *
194 * This determines the sign of the applied kS during position
195 * closed-loop modes. The default behavior uses the velocity reference
196 * sign. This works well with velocity closed loop, Motion Magic®
197 * controls, and position closed loop when velocity reference is
198 * specified (motion profiling).
199 *
200 * However, when using position closed loop with zero velocity
201 * reference (no motion profiling), the application may want to apply
202 * static feedforward based on the sign of closed loop error instead.
203 * When doing so, we recommend using the minimal amount of kS,
204 * otherwise the motor output may dither when closed loop error is
205 * near zero.
206 *
207 * - Default Value: signals#StaticFeedforwardSignValue#UseVelocitySign
208 */
210 /**
211 * \brief Gravity feedback position offset when using the Arm/Cosine
212 * gravity type.
213 *
214 * This is an offset applied to the position of the arm, within
215 * (-0.25, 0.25) rot, before calculating the output of kG. This is
216 * useful when the center of gravity of the arm is offset from the
217 * actual zero point of the arm, such as when the arm and intake form
218 * an L shape.
219 *
220 * - Minimum Value: -0.25
221 * - Maximum Value: 0.25
222 * - Default Value: 0
223 * - Units: rotations
224 */
225 wpi::units::turn_t GravityArmPositionOffset = 0_tr;
226 /**
227 * \brief The behavior of the gain scheduler on this slot. This
228 * specifies which gains to use while within the configured
229 * GainSchedErrorThreshold. The default is to continue using the
230 * specified slot.
231 *
232 * \details Gain scheduling will not take effect when running velocity
233 * closed-loop controls.
234 *
235 * - Default Value: signals#GainSchedBehaviorValue#Inactive
236 */
238
239 /**
240 * \brief Modifies this configuration's kP parameter and returns itself for
241 * method-chaining and easier to use config API.
242 *
243 * Proportional gain.
244 *
245 * \details The units for this gain is dependent on the control mode.
246 * Since this gain is multiplied by error in the input, the units
247 * should be defined as units of output per unit of input error. For
248 * example, when controlling velocity using a duty cycle closed loop,
249 * the units for the proportional gain will be duty cycle per rps of
250 * error, or 1/rps.
251 *
252 * - Minimum Value: 0
253 * - Maximum Value: 3.4e+38
254 * - Default Value: 0
255 * - Units:
256 *
257 * \param newKP Parameter to modify
258 * \returns Itself
259 */
260 constexpr SlotConfigs &WithKP(wpi::units::scalar_t newKP)
261 {
262 kP = std::move(newKP);
263 return *this;
264 }
265
266 /**
267 * \brief Modifies this configuration's kI parameter and returns itself for
268 * method-chaining and easier to use config API.
269 *
270 * Integral gain.
271 *
272 * \details The units for this gain is dependent on the control mode.
273 * Since this gain is multiplied by error in the input integrated over
274 * time (in units of seconds), the units should be defined as units of
275 * output per unit of integrated input error. For example, when
276 * controlling velocity using a duty cycle closed loop, integrating
277 * velocity over time results in rps * s = rotations. Therefore, the
278 * units for the integral gain will be duty cycle per rotation of
279 * accumulated error, or 1/rot.
280 *
281 * - Minimum Value: 0
282 * - Maximum Value: 3.4e+38
283 * - Default Value: 0
284 * - Units:
285 *
286 * \param newKI Parameter to modify
287 * \returns Itself
288 */
289 constexpr SlotConfigs &WithKI(wpi::units::scalar_t newKI)
290 {
291 kI = std::move(newKI);
292 return *this;
293 }
294
295 /**
296 * \brief Modifies this configuration's kD parameter and returns itself for
297 * method-chaining and easier to use config API.
298 *
299 * Derivative gain.
300 *
301 * \details The units for this gain is dependent on the control mode.
302 * Since this gain is multiplied by the derivative of error in the
303 * input with respect to time (in units of seconds), the units should
304 * be defined as units of output per unit of the differentiated input
305 * error. For example, when controlling velocity using a duty cycle
306 * closed loop, the derivative of velocity with respect to time is rot
307 * per sec², which is acceleration. Therefore, the units for the
308 * derivative gain will be duty cycle per unit of acceleration error,
309 * or 1/(rot per sec²).
310 *
311 * - Minimum Value: 0
312 * - Maximum Value: 3.4e+38
313 * - Default Value: 0
314 * - Units:
315 *
316 * \param newKD Parameter to modify
317 * \returns Itself
318 */
319 constexpr SlotConfigs &WithKD(wpi::units::scalar_t newKD)
320 {
321 kD = std::move(newKD);
322 return *this;
323 }
324
325 /**
326 * \brief Modifies this configuration's kS parameter and returns itself for
327 * method-chaining and easier to use config API.
328 *
329 * Static feedforward gain.
330 *
331 * \details This is added to the closed loop output. The unit for this
332 * constant is dependent on the control mode, typically fractional
333 * duty cycle, voltage, or torque current.
334 *
335 * The sign is typically determined by reference velocity when using
336 * position, velocity, and Motion Magic® closed loop modes. However,
337 * when using position closed loop with zero velocity reference (no
338 * motion profiling), the application can instead use the position
339 * closed loop error by setting the Static Feedforward Sign
340 * configuration parameter. When doing so, we recommend the minimal
341 * amount of kS, otherwise the motor output may dither when closed
342 * loop error is near zero.
343 *
344 * - Minimum Value: -128
345 * - Maximum Value: 127
346 * - Default Value: 0
347 * - Units:
348 *
349 * \param newKS Parameter to modify
350 * \returns Itself
351 */
352 constexpr SlotConfigs &WithKS(wpi::units::scalar_t newKS)
353 {
354 kS = std::move(newKS);
355 return *this;
356 }
357
358 /**
359 * \brief Modifies this configuration's kV parameter and returns itself for
360 * method-chaining and easier to use config API.
361 *
362 * Velocity feedforward gain.
363 *
364 * \details The units for this gain is dependent on the control mode.
365 * Since this gain is multiplied by the requested velocity, the units
366 * should be defined as units of output per unit of requested input
367 * velocity. For example, when controlling velocity using a duty cycle
368 * closed loop, the units for the velocity feedfoward gain will be
369 * duty cycle per requested rps, or 1/rps.
370 *
371 * - Minimum Value: 0
372 * - Maximum Value: 3.4e+38
373 * - Default Value: 0
374 * - Units:
375 *
376 * \param newKV Parameter to modify
377 * \returns Itself
378 */
379 constexpr SlotConfigs &WithKV(wpi::units::scalar_t newKV)
380 {
381 kV = std::move(newKV);
382 return *this;
383 }
384
385 /**
386 * \brief Modifies this configuration's kA parameter and returns itself for
387 * method-chaining and easier to use config API.
388 *
389 * Acceleration feedforward gain.
390 *
391 * \details The units for this gain is dependent on the control mode.
392 * Since this gain is multiplied by the requested acceleration, the
393 * units should be defined as units of output per unit of requested
394 * input acceleration. For example, when controlling velocity using a
395 * duty cycle closed loop, the units for the acceleration feedfoward
396 * gain will be duty cycle per requested rot per sec², or 1/(rot per
397 * sec²).
398 *
399 * - Minimum Value: 0
400 * - Maximum Value: 3.4e+38
401 * - Default Value: 0
402 * - Units:
403 *
404 * \param newKA Parameter to modify
405 * \returns Itself
406 */
407 constexpr SlotConfigs &WithKA(wpi::units::scalar_t newKA)
408 {
409 kA = std::move(newKA);
410 return *this;
411 }
412
413 /**
414 * \brief Modifies this configuration's kG parameter and returns itself for
415 * method-chaining and easier to use config API.
416 *
417 * Gravity feedforward/feedback gain. The type of gravity compensation
418 * is selected by #GravityType.
419 *
420 * \details This is added to the closed loop output. The sign is
421 * determined by the gravity type. The unit for this constant is
422 * dependent on the control mode, typically fractional duty cycle,
423 * voltage, or torque current.
424 *
425 * Note that kG may be negative for some counterbalanced mechanisms.
426 *
427 * - Minimum Value: -128
428 * - Maximum Value: 127
429 * - Default Value: 0
430 * - Units:
431 *
432 * \param newKG Parameter to modify
433 * \returns Itself
434 */
435 constexpr SlotConfigs &WithKG(wpi::units::scalar_t newKG)
436 {
437 kG = std::move(newKG);
438 return *this;
439 }
440
441 /**
442 * \brief Modifies this configuration's GravityType parameter and returns itself for
443 * method-chaining and easier to use config API.
444 *
445 * Gravity feedforward/feedback type.
446 *
447 * This determines the type of the gravity feedforward/feedback.
448 *
449 * Choose Elevator_Static for systems where the gravity feedforward is
450 * constant, such as an elevator. The gravity feedforward output will
451 * always have the same sign.
452 *
453 * Choose Arm_Cosine for systems where the gravity feedback is
454 * dependent on the angular position of the mechanism, such as an arm.
455 * The gravity feedback output will vary depending on the mechanism
456 * angular position. Note that the sensor offset and ratios must be
457 * configured so that the sensor reports a position of 0 when the
458 * mechanism is horizonal (parallel to the ground), and the reported
459 * sensor position is 1:1 with the mechanism.
460 *
461 * - Default Value: signals#GravityTypeValue#Elevator_Static
462 *
463 * \param newGravityType Parameter to modify
464 * \returns Itself
465 */
467 {
468 GravityType = std::move(newGravityType);
469 return *this;
470 }
471
472 /**
473 * \brief Modifies this configuration's StaticFeedforwardSign parameter and returns itself for
474 * method-chaining and easier to use config API.
475 *
476 * Static feedforward sign during position closed loop.
477 *
478 * This determines the sign of the applied kS during position
479 * closed-loop modes. The default behavior uses the velocity reference
480 * sign. This works well with velocity closed loop, Motion Magic®
481 * controls, and position closed loop when velocity reference is
482 * specified (motion profiling).
483 *
484 * However, when using position closed loop with zero velocity
485 * reference (no motion profiling), the application may want to apply
486 * static feedforward based on the sign of closed loop error instead.
487 * When doing so, we recommend using the minimal amount of kS,
488 * otherwise the motor output may dither when closed loop error is
489 * near zero.
490 *
491 * - Default Value: signals#StaticFeedforwardSignValue#UseVelocitySign
492 *
493 * \param newStaticFeedforwardSign Parameter to modify
494 * \returns Itself
495 */
497 {
498 StaticFeedforwardSign = std::move(newStaticFeedforwardSign);
499 return *this;
500 }
501
502 /**
503 * \brief Modifies this configuration's GravityArmPositionOffset parameter and returns itself for
504 * method-chaining and easier to use config API.
505 *
506 * Gravity feedback position offset when using the Arm/Cosine gravity
507 * type.
508 *
509 * This is an offset applied to the position of the arm, within
510 * (-0.25, 0.25) rot, before calculating the output of kG. This is
511 * useful when the center of gravity of the arm is offset from the
512 * actual zero point of the arm, such as when the arm and intake form
513 * an L shape.
514 *
515 * - Minimum Value: -0.25
516 * - Maximum Value: 0.25
517 * - Default Value: 0
518 * - Units: rotations
519 *
520 * \param newGravityArmPositionOffset Parameter to modify
521 * \returns Itself
522 */
523 constexpr SlotConfigs &WithGravityArmPositionOffset(wpi::units::turn_t newGravityArmPositionOffset)
524 {
525 GravityArmPositionOffset = std::move(newGravityArmPositionOffset);
526 return *this;
527 }
528
529 /**
530 * \brief Modifies this configuration's GainSchedBehavior parameter and returns itself for
531 * method-chaining and easier to use config API.
532 *
533 * The behavior of the gain scheduler on this slot. This specifies
534 * which gains to use while within the configured
535 * GainSchedErrorThreshold. The default is to continue using the
536 * specified slot.
537 *
538 * \details Gain scheduling will not take effect when running velocity
539 * closed-loop controls.
540 *
541 * - Default Value: signals#GainSchedBehaviorValue#Inactive
542 *
543 * \param newGainSchedBehavior Parameter to modify
544 * \returns Itself
545 */
547 {
548 GainSchedBehavior = std::move(newGainSchedBehavior);
549 return *this;
550 }
551
552
553 /**
554 * \brief Chooses which slot these configs are for.
555 */
556 int SlotNumber = 0;
557
558 /**
559 * Converts the provided value to an instance of this type.
560 *
561 * \param value The value to convert
562 * \returns Converted value
563 */
564 static SlotConfigs From(Slot0Configs const &value);
565 /**
566 * Converts the provided value to an instance of this type.
567 *
568 * \param value The value to convert
569 * \returns Converted value
570 */
571 static SlotConfigs From(Slot1Configs const &value);
572 /**
573 * Converts the provided value to an instance of this type.
574 *
575 * \param value The value to convert
576 * \returns Converted value
577 */
578 static SlotConfigs From(Slot2Configs const &value);
579
580 std::string ToString() const override;
581
582 std::string Serialize() const final;
583 ctre::phoenix::StatusCode Deserialize(std::string const &to_deserialize) final;
584};
585
586}
587}
588}
Definition Configuration.hpp:17
Gains for the specified slot.
Definition Slot0Configs.hpp:26
Gains for the specified slot.
Definition Slot1Configs.hpp:26
Gains for the specified slot.
Definition Slot2Configs.hpp:26
wpi::units::scalar_t kD
Derivative gain.
Definition SlotConfigs.hpp:98
constexpr SlotConfigs & WithGravityType(signals::GravityTypeValue newGravityType)
Modifies this configuration's GravityType parameter and returns itself for method-chaining and easier...
Definition SlotConfigs.hpp:466
wpi::units::scalar_t kG
Gravity feedforward/feedback gain.
Definition SlotConfigs.hpp:170
static SlotConfigs From(Slot1Configs const &value)
Converts the provided value to an instance of this type.
wpi::units::scalar_t kI
Integral gain.
Definition SlotConfigs.hpp:79
constexpr SlotConfigs & WithKV(wpi::units::scalar_t newKV)
Modifies this configuration's kV parameter and returns itself for method-chaining and easier to use c...
Definition SlotConfigs.hpp:379
wpi::units::scalar_t kA
Acceleration feedforward gain.
Definition SlotConfigs.hpp:153
wpi::units::turn_t GravityArmPositionOffset
Gravity feedback position offset when using the Arm/Cosine gravity type.
Definition SlotConfigs.hpp:225
constexpr SlotConfigs & WithStaticFeedforwardSign(signals::StaticFeedforwardSignValue newStaticFeedforwardSign)
Modifies this configuration's StaticFeedforwardSign parameter and returns itself for method-chaining ...
Definition SlotConfigs.hpp:496
constexpr SlotConfigs & WithKI(wpi::units::scalar_t newKI)
Modifies this configuration's kI parameter and returns itself for method-chaining and easier to use c...
Definition SlotConfigs.hpp:289
signals::GainSchedBehaviorValue GainSchedBehavior
The behavior of the gain scheduler on this slot.
Definition SlotConfigs.hpp:237
std::string ToString() const override
constexpr SlotConfigs & WithKS(wpi::units::scalar_t newKS)
Modifies this configuration's kS parameter and returns itself for method-chaining and easier to use c...
Definition SlotConfigs.hpp:352
static SlotConfigs From(Slot2Configs const &value)
Converts the provided value to an instance of this type.
std::string Serialize() const final
signals::StaticFeedforwardSignValue StaticFeedforwardSign
Static feedforward sign during position closed loop.
Definition SlotConfigs.hpp:209
constexpr SlotConfigs & WithGainSchedBehavior(signals::GainSchedBehaviorValue newGainSchedBehavior)
Modifies this configuration's GainSchedBehavior parameter and returns itself for method-chaining and ...
Definition SlotConfigs.hpp:546
int SlotNumber
Chooses which slot these configs are for.
Definition SlotConfigs.hpp:556
constexpr SlotConfigs & WithKD(wpi::units::scalar_t newKD)
Modifies this configuration's kD parameter and returns itself for method-chaining and easier to use c...
Definition SlotConfigs.hpp:319
constexpr SlotConfigs & WithKP(wpi::units::scalar_t newKP)
Modifies this configuration's kP parameter and returns itself for method-chaining and easier to use c...
Definition SlotConfigs.hpp:260
static SlotConfigs From(Slot0Configs const &value)
Converts the provided value to an instance of this type.
ctre::phoenix::StatusCode Deserialize(std::string const &to_deserialize) final
wpi::units::scalar_t kP
Proportional gain.
Definition SlotConfigs.hpp:61
signals::GravityTypeValue GravityType
Gravity feedforward/feedback type.
Definition SlotConfigs.hpp:190
constexpr SlotConfigs & WithKG(wpi::units::scalar_t newKG)
Modifies this configuration's kG parameter and returns itself for method-chaining and easier to use c...
Definition SlotConfigs.hpp:435
wpi::units::scalar_t kS
Static feedforward gain.
Definition SlotConfigs.hpp:120
wpi::units::scalar_t kV
Velocity feedforward gain.
Definition SlotConfigs.hpp:136
constexpr SlotConfigs & WithKA(wpi::units::scalar_t newKA)
Modifies this configuration's kA parameter and returns itself for method-chaining and easier to use c...
Definition SlotConfigs.hpp:407
constexpr SlotConfigs & WithGravityArmPositionOffset(wpi::units::turn_t newGravityArmPositionOffset)
Modifies this configuration's GravityArmPositionOffset parameter and returns itself for method-chaini...
Definition SlotConfigs.hpp:523
Definition ExternalFeedbackConfigs.hpp:21
Definition ExternalFeedbackConfigs.hpp:16
Definition FrcUsageReport.hpp:12
Definition motor_constants.h:14
The behavior of the gain scheduler on this slot.
Definition SpnEnums.hpp:5059
static constexpr int Inactive
No gain scheduling will occur.
Definition SpnEnums.hpp:5065
Gravity feedforward/feedback type.
Definition SpnEnums.hpp:1488
static constexpr int Elevator_Static
The system's gravity feedforward is constant, such as an elevator.
Definition SpnEnums.hpp:1495
Static feedforward sign during position closed loop.
Definition SpnEnums.hpp:2475
static constexpr int UseVelocitySign
Use the velocity reference sign.
Definition SpnEnums.hpp:2483