Quality descriptors, qualifiers, and value scaling helpers for IEC 60870-5-101/104.
Matches cs101_information_objects.h and cs101_information_objects.c.
Summary
Functions
Encodes double-point value (:indeterminate, :off, :on, :intermediate) to 2-bit integer.
Encodes Quality Descriptor for Events of Protection Equipment (QDS).
Packs a list of quality atoms or an integer bitmask into a uint8 quality byte.
Supported flags: :overflow, :reserved, :elapsed_time_invalid, :blocked, :substituted, :non_topical, :invalid, :good.
Encodes regulating step command to byte.
Checks whether a specific quality flag is set in a quality byte.
Checks whether bit i (0..15) is set in cdn (StatusAndStatusChangeDetection_getCD).
Checks whether bit i (0..15) is set in stn (StatusAndStatusChangeDetection_getST).
Functions
@spec decode_double_point(0..3) :: :intermediate | :off | :on | :indeterminate
@spec decode_event_state(0..3) :: :indeterminate_0 | :off | :on | :indeterminate_3
@spec decode_scd(<<_::32>>) :: {non_neg_integer(), non_neg_integer()}
@spec decode_step_command(0..3) :: :invalid_0 | :lower | :higher | :invalid_3
@spec encode_double_point(atom() | 0..3) :: 0..3
Encodes double-point value (:indeterminate, :off, :on, :intermediate) to 2-bit integer.
@spec encode_event_state(atom() | 0..3) :: 0..3
Encodes Quality Descriptor for Events of Protection Equipment (QDS).
@spec encode_quality(non_neg_integer() | [atom()]) :: byte()
Packs a list of quality atoms or an integer bitmask into a uint8 quality byte.
Supported flags: :overflow, :reserved, :elapsed_time_invalid, :blocked, :substituted, :non_topical, :invalid, :good.
@spec encode_scd(non_neg_integer(), non_neg_integer()) :: <<_::32>>
@spec encode_step_command(atom() | 0..3) :: 0..3
Encodes regulating step command to byte.
Checks whether a specific quality flag is set in a quality byte.
@spec normalized_to_scaled(number()) :: -32768..32767
@spec scd_get_cd(non_neg_integer() | {non_neg_integer(), non_neg_integer()}, 0..15) :: boolean()
Checks whether bit i (0..15) is set in cdn (StatusAndStatusChangeDetection_getCD).
@spec scd_get_st(non_neg_integer() | {non_neg_integer(), non_neg_integer()}, 0..15) :: boolean()
Checks whether bit i (0..15) is set in stn (StatusAndStatusChangeDetection_getST).