1
0

SharedSensorMonitoringConsoleComponent.cs 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. using Robust.Shared.Serialization;
  2. using ConsoleUIState = Content.Shared.SensorMonitoring.SensorMonitoringConsoleBoundInterfaceState;
  3. namespace Content.Shared.SensorMonitoring;
  4. [Serializable, NetSerializable]
  5. public sealed class SensorMonitoringConsoleBoundInterfaceState : BoundUserInterfaceState
  6. {
  7. public TimeSpan RetentionTime;
  8. public SensorData[] Sensors = Array.Empty<SensorData>();
  9. [Serializable, NetSerializable]
  10. public sealed class SensorData
  11. {
  12. public int NetId;
  13. public string Name = "";
  14. public string Address = "";
  15. public SensorDeviceType DeviceType;
  16. public SensorStream[] Streams = Array.Empty<SensorStream>();
  17. }
  18. [Serializable, NetSerializable]
  19. public sealed class SensorStream
  20. {
  21. public int NetId;
  22. public string Name = "";
  23. public SensorUnit Unit;
  24. public SensorSample[] Samples = Array.Empty<SensorSample>();
  25. }
  26. }
  27. [Serializable, NetSerializable]
  28. public sealed class SensorMonitoringIncrementalUpdate : BoundUserInterfaceMessage
  29. {
  30. public TimeSpan RelTime;
  31. public SensorData[] Sensors = Array.Empty<SensorData>();
  32. public int[] RemovedSensors = Array.Empty<int>();
  33. [Serializable, NetSerializable]
  34. public sealed class SensorData
  35. {
  36. public int NetId;
  37. public SensorStream[] Streams = Array.Empty<SensorStream>();
  38. }
  39. [Serializable, NetSerializable]
  40. public sealed class SensorStream
  41. {
  42. public int NetId;
  43. public SensorUnit Unit;
  44. // Note: these samples have their time values relative to RelTime.
  45. // This improves effectiveness of integer compression in NetSerializer.
  46. public SensorSample[] Samples = Array.Empty<SensorSample>();
  47. }
  48. }
  49. [Serializable, NetSerializable]
  50. public enum SensorMonitoringConsoleUiKey
  51. {
  52. Key
  53. }
  54. [Serializable, NetSerializable]
  55. public enum SensorUnit : byte
  56. {
  57. Undetermined = 0,
  58. /// <summary>
  59. /// A pressure value in kilopascals (kPa).
  60. /// </summary>
  61. PressureKpa,
  62. /// <summary>
  63. /// A temperature value in Kelvin (K).
  64. /// </summary>
  65. TemperatureK,
  66. /// <summary>
  67. /// An amount of matter in moles.
  68. /// </summary>
  69. Moles,
  70. /// <summary>
  71. /// A value in the range 0-1.
  72. /// </summary>
  73. /* L + */ Ratio,
  74. /// <summary>
  75. /// Power in Watts (W).
  76. /// </summary>
  77. PowerW,
  78. /// <summary>
  79. /// Energy in Joules (J).
  80. /// </summary>
  81. EnergyJ
  82. }
  83. [Serializable, NetSerializable]
  84. public enum SensorDeviceType
  85. {
  86. Unknown = 0,
  87. Teg,
  88. AtmosSensor,
  89. ThermoMachine,
  90. VolumePump,
  91. Battery,
  92. }
  93. [Serializable, NetSerializable]
  94. public record struct SensorSample(TimeSpan Time, float Value);