TELEMETRY <%= target_name %> HEALTH_STATUS BIG_ENDIAN "Health and status from the <%= target_name %> target"
  <%= render "_ccsds_tlm.txt", locals: {apid: 1} %>
  APPEND_ITEM COLLECTS         16 UINT     "Number of collects"
  APPEND_ITEM TEMP1            16 UINT     "Temperature #1"
    POLY_READ_CONVERSION  -100.0 0.00305
    POLY_WRITE_CONVERSION 32768.885246 327.86885
    UNITS CELSIUS C
    FORMAT_STRING "%0.3f"
    LIMITS DEFAULT 1 ENABLED -80.0 -70.0 60.0 80.0 -20.0 20.0
    LIMITS TVAC 1 ENABLED -80.0 -30.0 30.0 80.0
    LIMITS_RESPONSE example_limits_response.rb
  APPEND_ITEM TEMP2            32 FLOAT    "Temperature #2"
    POLY_READ_CONVERSION -100.0 0.00305
    POLY_WRITE_CONVERSION 32768.885246 327.86885
    UNITS CELSIUS C
    FORMAT_STRING "%0.3f"
    LIMITS DEFAULT 1 ENABLED -60.0 -55.0 30.0 35.0
    LIMITS TVAC 1 ENABLED -60.0 20.0 30.0 35.0
  APPEND_ITEM TEMP3            16 UINT     "Temperature #3"
    POLY_READ_CONVERSION -100.0 0.00305
    POLY_WRITE_CONVERSION 32768.885246 327.86885
    UNITS CELSIUS C
    FORMAT_STRING "%0.3f"
    LIMITS DEFAULT 1 ENABLED -25.0 -10.0 50.0 55.0
    LIMITS TVAC 1 ENABLED -15.0 -10.0 20.0 30.0
  APPEND_ITEM TEMP4            16 UINT     "Temperature #4"
    POLY_READ_CONVERSION -100.0 0.00305
    POLY_WRITE_CONVERSION 32768.885246 327.86885
    UNITS CELSIUS C
    FORMAT_STRING "%0.3f"
    LIMITS DEFAULT 1 ENABLED -80.0 -70.0 60.0 80.0
  APPEND_ARRAY_ITEM ARY         8 UINT 80 "Array data"
    UNITS VOLTS V
  APPEND_ITEM DURATION 32 FLOAT "Most recent collect duration"
  APPEND_ITEM COLLECT_TYPE 16 UINT "Most recent collect type"
    STATE NORMAL  0
    STATE SPECIAL 1
    STATE ERROR ANY
  APPEND_ARRAY_ITEM ARY2       64 FLOAT 640 "Double array"
    UNITS CELSIUS C
  APPEND_ITEM ASCIICMD 2048 STRING "Most recent ASCIICMD string"
    STATE "NOOP" "NOOP"
    STATE "FIRE LASER" "FIRE LASER"
    STATE "ARM LASER" "ARM LASER"
  APPEND_ITEM GROUND1STATUS 8 UINT "Ground station #1 status"
    STATE CONNECTED 1 GREEN
    STATE UNAVAILABLE 0 YELLOW
  APPEND_ITEM GROUND2STATUS 8 UINT "Ground station #2 status"
    STATE CONNECTED 1 GREEN
    STATE UNAVAILABLE 0 YELLOW
  APPEND_ITEM BLOCKTEST 80 BLOCK "Block data"
  ITEM TIMESECONDS 0 0 DERIVED "Derived floating-point time since epoch in seconds"
    READ_CONVERSION unix_time_seconds_conversion.rb TIMESEC TIMEUS
    FORMAT_STRING '%0.6f'
  ITEM TIMEFORMATTED 0 0 DERIVED "Derived time since epoch as formatted string"
    READ_CONVERSION unix_time_formatted_conversion.rb TIMESEC TIMEUS
  ITEM TEMP1HIGH 0 0 DERIVED "High-water mark for TEMP1"
    READ_CONVERSION processor_conversion.rb TEMP1WATER HIGH_WATER
  ITEM TEMP1LOW 0 0 DERIVED "Low-water mark for TEMP1"
    READ_CONVERSION processor_conversion.rb TEMP1WATER LOW_WATER
  ITEM TEMP1MAX 0 0 DERIVED "Maximum of most recent 100 samples for TEMP1"
    READ_CONVERSION processor_conversion.rb TEMP1STAT MAX
  ITEM TEMP1MIN 0 0 DERIVED "Minimum of most recent 100 samples for TEMP1"
    READ_CONVERSION processor_conversion.rb TEMP1STAT MIN
  ITEM TEMP1MEAN 0 0 DERIVED "Mean of most recent 100 samples for TEMP1"
    READ_CONVERSION processor_conversion.rb TEMP1STAT MEAN
  ITEM TEMP1STDDEV 0 0 DERIVED "Stddev of most recent 100 samples for TEMP1"
    READ_CONVERSION processor_conversion.rb TEMP1STAT STDDEV
  PROCESSOR TEMP1STAT statistics_processor.rb TEMP1 100
  PROCESSOR TEMP1WATER watermark_processor.rb TEMP1

TELEMETRY <%= target_name %> ADCS BIG_ENDIAN "Position and attitude data"
  META TYPE 'struct adcs'
  <%= render "_ccsds_tlm.txt", locals: {apid: 2} %>
  ITEM POSX             128 32 FLOAT "Position X"
    UNITS METERS M
  ITEM POSY             160 32 FLOAT "Position Y"
    UNITS METERS M
  ITEM POSZ             192 32 FLOAT "Position Z"
    UNITS METERS M
  ITEM VELX             224 32 FLOAT "Velocity X"
    UNITS METERS_PER_SECOND MPS
  ITEM VELY             256 32 FLOAT "Velocity Y"
    UNITS METERS_PER_SECOND MPS
  ITEM VELZ             288 32 FLOAT "Velocity Z"
    UNITS METERS_PER_SECOND MPS
  ITEM Q1               320 32 FLOAT "Quaternion param 1"
    FORMAT_STRING "%0.6f"
    META TYPE 'float32'
  ITEM Q2               352 32 FLOAT "Quaternion param 2"
    FORMAT_STRING "%0.6f"
    META TYPE 'float32'
  ITEM Q3               384 32 FLOAT "Quaternion param 3"
    FORMAT_STRING "%0.6f"
    META TYPE 'float32'
  ITEM Q4               416 32 FLOAT "Quaternion param 4"
    FORMAT_STRING "%0.6f"
    META TYPE 'float32'
  ITEM BIASX            448 32 FLOAT "Body X rate bias"
    FORMAT_STRING "%0.6f"
  ITEM BIASY            480 32 FLOAT "Body Y rate bias"
    FORMAT_STRING "%0.6f"
  ITEM BIASZ            512 32 FLOAT "Body Z rate bias"
    FORMAT_STRING "%0.6f"
  <% (1..5).each do |i| %>
    APPEND_ITEM STAR<%= i %>ID 16 UINT "Star <%= i %> id"
  <% end %>
  ITEM POSPROGRESS      624 32 FLOAT "Position file progress"
    FORMAT_STRING "%0.2f"
  ITEM ATTPROGRESS      656 32 FLOAT "Attitude file progress"
    FORMAT_STRING "%0.2f"
  ITEM TIMESECONDS 0 0 DERIVED "Derived floating-point time since epoch in seconds"
    READ_CONVERSION unix_time_seconds_conversion.rb TIMESEC TIMEUS
    FORMAT_STRING '%0.6f'
  ITEM TIMEFORMATTED 0 0 DERIVED "Derived time since epoch as formatted string"
    READ_CONVERSION unix_time_formatted_conversion.rb TIMESEC TIMEUS

TELEMETRY <%= target_name %> PARAMS BIG_ENDIAN "Params set by SETPARAMS command"
  <%= render "_ccsds_tlm.txt", locals: {apid: 3} %>
  # ERB syntax:
  <% (1..5).each do |i| %>
    APPEND_ITEM VALUE<%= i %> 16 UINT "Value <%= i %> setting"
      STATE GOOD 0 GREEN
      STATE BAD 1 RED
  <% end %>

  ITEM TIMESECONDS 0 0 DERIVED "Derived floating-point time since epoch in seconds"
    READ_CONVERSION unix_time_seconds_conversion.rb TIMESEC TIMEUS
    FORMAT_STRING '%0.6f'
  ITEM TIMEFORMATTED 0 0 DERIVED "Derived time since epoch as formatted string"
    READ_CONVERSION unix_time_formatted_conversion.rb TIMESEC TIMEUS

TELEMETRY <%= target_name %> IMAGE BIG_ENDIAN "Packet with image data"
  <%= render "_ccsds_tlm.txt", locals: {apid: 4} %>
  ITEM BYTES 128 32 UINT "First bytes"
    FORMAT_STRING '0x%08x'
  ITEM IMAGE 128 131072 BLOCK   "10x10 Image Data"
    OVERLAP # Notify OpenC3 that this is intentionally overlapping the BYTES field
  ITEM TIMESECONDS 0 0 DERIVED "Derived floating-point time since epoch in seconds"
    READ_CONVERSION unix_time_seconds_conversion.rb TIMESEC TIMEUS
    FORMAT_STRING '%0.6f'
  ITEM TIMEFORMATTED 0 0 DERIVED "Derived time since epoch as formatted string"
    READ_CONVERSION unix_time_formatted_conversion.rb TIMESEC TIMEUS

TELEMETRY <%= target_name %> MECH BIG_ENDIAN "Mechanism status"
  <%= render "_ccsds_tlm.txt", locals: {apid: 5} %>
  APPEND_ITEM EXTRA         32 FLOAT    "Extra item to be deleted"
  APPEND_ITEM SLRPNL1       32 FLOAT    "Solar panel 1 angle"
    UNITS DEGREES DEG
  APPEND_ITEM SLRPNL2       32 FLOAT    "Solar panel 2 angle"
    UNITS DEGREES DEG
  APPEND_ITEM SLRPNL3       32 FLOAT    "Solar panel 3 angle"
    UNITS DEGREES DEG
  APPEND_ITEM SLRPNL4       32 FLOAT    "Solar panel 4 angle"
    UNITS DEGREES DEG
  APPEND_ITEM SLRPNL5       32 FLOAT    "Solar panel 5 angle"
    UNITS DEGREES DEG
  ITEM TIMESECONDS 0 0 DERIVED "Derived floating-point time since epoch in seconds"
    READ_CONVERSION unix_time_seconds_conversion.rb TIMESEC TIMEUS
    FORMAT_STRING '%0.6f'
  ITEM TIMEFORMATTED 0 0 DERIVED "Derived time since epoch as formatted string"
    READ_CONVERSION unix_time_formatted_conversion.rb TIMESEC TIMEUS