lib60870-C  2.3.2
C source code library for the IEC 60870-5-101/104 protocols
cs101_information_objects.h
Go to the documentation of this file.
1 /*
2  * Copyright 2016-2022 Michael Zillgith
3  *
4  * This file is part of lib60870-C
5  *
6  * lib60870-C is free software: you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation, either version 3 of the License, or
9  * (at your option) any later version.
10  *
11  * lib60870-C is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with lib60870-C. If not, see <http://www.gnu.org/licenses/>.
18  *
19  * See COPYING file for the complete license text.
20  */
21 
22 #ifndef SRC_INC_INFORMATION_OBJECTS_H_
23 #define SRC_INC_INFORMATION_OBJECTS_H_
24 
25 #include "iec60870_common.h"
26 
27 #ifdef __cplusplus
28 extern "C" {
29 #endif
30 
43 const char*
44 TypeID_toString(TypeID self);
45 
46 typedef uint8_t QualityDescriptor;
47 
51 typedef uint8_t QualityDescriptorP;
52 
53 #define IEC60870_QUALITY_GOOD 0
54 #define IEC60870_QUALITY_OVERFLOW 0x01 /* QualityDescriptor */
55 #define IEC60870_QUALITY_RESERVED 0x04 /* QualityDescriptorP */
56 #define IEC60870_QUALITY_ELAPSED_TIME_INVALID 0x08 /* QualityDescriptorP */
57 #define IEC60870_QUALITY_BLOCKED 0x10 /* QualityDescriptor, QualityDescriptorP */
58 #define IEC60870_QUALITY_SUBSTITUTED 0x20 /* QualityDescriptor, QualityDescriptorP */
59 #define IEC60870_QUALITY_NON_TOPICAL 0x40 /* QualityDescriptor, QualityDescriptorP */
60 #define IEC60870_QUALITY_INVALID 0x80 /* QualityDescriptor, QualityDescriptorP */
61 
65 typedef uint8_t StartEvent;
66 
67 #define IEC60870_START_EVENT_NONE 0
68 #define IEC60870_START_EVENT_GS 0x01 /* General start of operation */
69 #define IEC60870_START_EVENT_SL1 0x02 /* Start of operation phase L1 */
70 #define IEC60870_START_EVENT_SL2 0x04 /* Start of operation phase L2 */
71 #define IEC60870_START_EVENT_SL3 0x08 /* Start of operation phase L3 */
72 #define IEC60870_START_EVENT_SIE 0x10 /* Start of operation IE (earth current) */
73 #define IEC60870_START_EVENT_SRD 0x20 /* Start of operation in reverse direction */
74 #define IEC60870_START_EVENT_RES1 0x40 /* Reserved bit */
75 #define IEC60870_START_EVENT_RES2 0x80 /* Reserved bit */
76 
80 typedef uint8_t OutputCircuitInfo;
81 
82 #define IEC60870_OUTPUT_CI_GC 0x01 /* General command to output circuit */
83 #define IEC60870_OUTPUT_CI_CL1 0x02 /* Command to output circuit phase L1 */
84 #define IEC60870_OUTPUT_CI_CL2 0x04 /* Command to output circuit phase L2 */
85 #define IEC60870_OUTPUT_CI_CL3 0x08 /* Command to output circuit phase L3 */
86 
99 typedef uint8_t QualifierOfParameterMV;
100 
101 #define IEC60870_QPM_NOT_USED 0
102 #define IEC60870_QPM_THRESHOLD_VALUE 1
103 #define IEC60870_QPM_SMOOTHING_FACTOR 2
104 #define IEC60870_QPM_LOW_LIMIT_FOR_TRANSMISSION 3
105 #define IEC60870_QPM_HIGH_LIMIT_FOR_TRANSMISSION 4
106 
111 typedef uint8_t CauseOfInitialization;
112 
113 #define IEC60870_COI_LOCAL_SWITCH_ON 0
114 #define IEC60870_COI_LOCAL_MANUAL_RESET 1
115 #define IEC60870_COI_REMOTE_RESET 2
116 
120 typedef uint8_t QualifierOfCommand;
121 
122 #define IEC60870_QOC_NO_ADDITIONAL_DEFINITION 0
123 #define IEC60870_QOC_SHORT_PULSE_DURATION 1
124 #define IEC60870_QOC_LONG_PULSE_DURATION 2
125 #define IEC60870_QOC_PERSISTANT_OUTPUT 3
126 
131 typedef uint8_t SelectAndCallQualifier;
132 
133 #define IEC60870_SCQ_DEFAULT 0
134 #define IEC60870_SCQ_SELECT_FILE 1
135 #define IEC60870_SCQ_REQUEST_FILE 2
136 #define IEC60870_SCQ_DEACTIVATE_FILE 3
137 #define IEC60870_SCQ_DELETE_FILE 4
138 #define IEC60870_SCQ_SELECT_SECTION 5
139 #define IEC60870_SCQ_REQUEST_SECTION 6
140 #define IEC60870_SCQ_DEACTIVATE_SECTION 7
141 
146 typedef uint8_t QualifierOfInterrogation;
147 
148 #define IEC60870_QOI_STATION 20
149 #define IEC60870_QOI_GROUP_1 21
150 #define IEC60870_QOI_GROUP_2 22
151 #define IEC60870_QOI_GROUP_3 23
152 #define IEC60870_QOI_GROUP_4 24
153 #define IEC60870_QOI_GROUP_5 25
154 #define IEC60870_QOI_GROUP_6 26
155 #define IEC60870_QOI_GROUP_7 27
156 #define IEC60870_QOI_GROUP_8 28
157 #define IEC60870_QOI_GROUP_9 29
158 #define IEC60870_QOI_GROUP_10 30
159 #define IEC60870_QOI_GROUP_11 31
160 #define IEC60870_QOI_GROUP_12 32
161 #define IEC60870_QOI_GROUP_13 33
162 #define IEC60870_QOI_GROUP_14 34
163 #define IEC60870_QOI_GROUP_15 35
164 #define IEC60870_QOI_GROUP_16 36
165 
166 
185 typedef uint8_t QualifierOfCIC;
186 
187 #define IEC60870_QCC_RQT_GROUP_1 1
188 #define IEC60870_QCC_RQT_GROUP_2 2
189 #define IEC60870_QCC_RQT_GROUP_3 3
190 #define IEC60870_QCC_RQT_GROUP_4 4
191 #define IEC60870_QCC_RQT_GENERAL 5
192 
193 #define IEC60870_QCC_FRZ_READ 0x00
194 #define IEC60870_QCC_FRZ_FREEZE_WITHOUT_RESET 0x40
195 #define IEC60870_QCC_FRZ_FREEZE_WITH_RESET 0x80
196 #define IEC60870_QCC_FRZ_COUNTER_RESET 0xc0
197 
201 typedef uint8_t QualifierOfRPC;
202 
203 #define IEC60870_QRP_NOT_USED 0
204 #define IEC60870_QRP_GENERAL_RESET 1
205 #define IEC60870_QRP_RESET_PENDING_INFO_WITH_TIME_TAG 2
206 
207 
212 
213 #define IEC60870_QPA_NOT_USED 0
214 #define IEC60870_QPA_DE_ACT_PREV_LOADED_PARAMETER 1
215 #define IEC60870_QPA_DE_ACT_OBJECT_PARAMETER 2
216 #define IEC60870_QPA_DE_ACT_OBJECT_TRANSMISSION 4
217 
218 
219 typedef uint8_t SetpointCommandQualifier;
220 
221 typedef enum {
222  IEC60870_DOUBLE_POINT_INTERMEDIATE = 0,
223  IEC60870_DOUBLE_POINT_OFF = 1,
224  IEC60870_DOUBLE_POINT_ON = 2,
225  IEC60870_DOUBLE_POINT_INDETERMINATE = 3
226 } DoublePointValue;
227 
228 typedef enum {
229  IEC60870_EVENTSTATE_INDETERMINATE_0 = 0,
230  IEC60870_EVENTSTATE_OFF = 1,
231  IEC60870_EVENTSTATE_ON = 2,
232  IEC60870_EVENTSTATE_INDETERMINATE_3 = 3
233 } EventState;
234 
238 typedef enum {
239  IEC60870_STEP_INVALID_0 = 0,
240  IEC60870_STEP_LOWER = 1,
241  IEC60870_STEP_HIGHER = 2,
242  IEC60870_STEP_INVALID_3 = 3
244 
245 typedef uint8_t tSingleEvent;
246 
247 typedef tSingleEvent* SingleEvent;
248 
249 void
250 SingleEvent_setEventState(SingleEvent self, EventState eventState);
251 
252 EventState
253 SingleEvent_getEventState(const SingleEvent self);
254 
255 void
256 SingleEvent_setQDP(SingleEvent self, QualityDescriptorP qdp);
257 
259 SingleEvent_getQDP(const SingleEvent self);
260 
261 
263 
265 
267  uint8_t encodedValue[4];
268 };
269 
270 uint16_t
271 StatusAndStatusChangeDetection_getSTn(const StatusAndStatusChangeDetection self);
272 
273 uint16_t
274 StatusAndStatusChangeDetection_getCDn(const StatusAndStatusChangeDetection self);
275 
276 void
277 StatusAndStatusChangeDetection_setSTn(StatusAndStatusChangeDetection self, uint16_t value);
278 
279 bool
280 StatusAndStatusChangeDetection_getST(const StatusAndStatusChangeDetection self, int index);
281 
282 bool
283 StatusAndStatusChangeDetection_getCD(const StatusAndStatusChangeDetection self, int index);
284 
285 
286 /************************************************
287  * InformationObject
288  ************************************************/
289 
295 int
297 
298 int
299 InformationObject_getObjectAddress(InformationObject self);
300 
301 TypeID
302 InformationObject_getType(InformationObject self);
303 
311 void
312 InformationObject_destroy(InformationObject self);
313 
314 /************************************************
315  * SinglePointInformation (:InformationObject)
316  ************************************************/
317 
318 typedef struct sSinglePointInformation* SinglePointInformation;
319 
320 SinglePointInformation
321 SinglePointInformation_create(SinglePointInformation self, int ioa, bool value,
322  QualityDescriptor quality);
323 
324 bool
325 SinglePointInformation_getValue(SinglePointInformation self);
326 
327 QualityDescriptor
328 SinglePointInformation_getQuality(SinglePointInformation self);
329 
330 void
331 SinglePointInformation_destroy(SinglePointInformation self);
332 
333 /********************************************************
334  * SinglePointWithCP24Time2a (:SinglePointInformation)
335  ********************************************************/
336 
337 typedef struct sSinglePointWithCP24Time2a* SinglePointWithCP24Time2a;
338 
339 SinglePointWithCP24Time2a
340 SinglePointWithCP24Time2a_create(SinglePointWithCP24Time2a self, int ioa, bool value,
341  QualityDescriptor quality, const CP24Time2a timestamp);
342 
343 void
344 SinglePointWithCP24Time2a_destroy(SinglePointWithCP24Time2a self);
345 
347 SinglePointWithCP24Time2a_getTimestamp(SinglePointWithCP24Time2a self);
348 
349 /********************************************************
350  * SinglePointWithCP56Time2a (:SinglePointInformation)
351  ********************************************************/
352 
353 typedef struct sSinglePointWithCP56Time2a* SinglePointWithCP56Time2a;
354 
355 SinglePointWithCP56Time2a
356 SinglePointWithCP56Time2a_create(SinglePointWithCP56Time2a self, int ioa, bool value,
357  QualityDescriptor quality, const CP56Time2a timestamp);
358 
359 void
360 SinglePointWithCP56Time2a_destroy(SinglePointWithCP56Time2a self);
361 
363 SinglePointWithCP56Time2a_getTimestamp(SinglePointWithCP56Time2a self);
364 
365 
366 /************************************************
367  * DoublePointInformation (:InformationObject)
368  ************************************************/
369 
370 typedef struct sDoublePointInformation* DoublePointInformation;
371 
372 void
373 DoublePointInformation_destroy(DoublePointInformation self);
374 
375 DoublePointInformation
376 DoublePointInformation_create(DoublePointInformation self, int ioa, DoublePointValue value,
377  QualityDescriptor quality);
378 
379 DoublePointValue
380 DoublePointInformation_getValue(DoublePointInformation self);
381 
382 QualityDescriptor
383 DoublePointInformation_getQuality(DoublePointInformation self);
384 
385 /********************************************************
386  * DoublePointWithCP24Time2a (:DoublePointInformation)
387  ********************************************************/
388 
389 typedef struct sDoublePointWithCP24Time2a* DoublePointWithCP24Time2a;
390 
391 void
392 DoublePointWithCP24Time2a_destroy(DoublePointWithCP24Time2a self);
393 
394 DoublePointWithCP24Time2a
395 DoublePointWithCP24Time2a_create(DoublePointWithCP24Time2a self, int ioa, DoublePointValue value,
396  QualityDescriptor quality, const CP24Time2a timestamp);
397 
399 DoublePointWithCP24Time2a_getTimestamp(DoublePointWithCP24Time2a self);
400 
401 /********************************************************
402  * DoublePointWithCP56Time2a (:DoublePointInformation)
403  ********************************************************/
404 
405 typedef struct sDoublePointWithCP56Time2a* DoublePointWithCP56Time2a;
406 
407 DoublePointWithCP56Time2a
408 DoublePointWithCP56Time2a_create(DoublePointWithCP56Time2a self, int ioa, DoublePointValue value,
409  QualityDescriptor quality, const CP56Time2a timestamp);
410 
411 void
412 DoublePointWithCP56Time2a_destroy(DoublePointWithCP56Time2a self);
413 
415 DoublePointWithCP56Time2a_getTimestamp(DoublePointWithCP56Time2a self);
416 
417 /************************************************
418  * StepPositionInformation (:InformationObject)
419  ************************************************/
420 
421 typedef struct sStepPositionInformation* StepPositionInformation;
422 
434 StepPositionInformation
435 StepPositionInformation_create(StepPositionInformation self, int ioa, int value, bool isTransient,
436  QualityDescriptor quality);
437 
438 void
439 StepPositionInformation_destroy(StepPositionInformation self);
440 
441 int
442 StepPositionInformation_getObjectAddress(StepPositionInformation self);
443 
447 int
448 StepPositionInformation_getValue(StepPositionInformation self);
449 
450 bool
451 StepPositionInformation_isTransient(StepPositionInformation self);
452 
453 QualityDescriptor
454 StepPositionInformation_getQuality(StepPositionInformation self);
455 
456 /*********************************************************
457  * StepPositionWithCP24Time2a (:StepPositionInformation)
458  *********************************************************/
459 
460 typedef struct sStepPositionWithCP24Time2a* StepPositionWithCP24Time2a;
461 
462 void
463 StepPositionWithCP24Time2a_destroy(StepPositionWithCP24Time2a self);
464 
465 StepPositionWithCP24Time2a
466 StepPositionWithCP24Time2a_create(StepPositionWithCP24Time2a self, int ioa, int value, bool isTransient,
467  QualityDescriptor quality, const CP24Time2a timestamp);
468 
470 StepPositionWithCP24Time2a_getTimestamp(StepPositionWithCP24Time2a self);
471 
472 
473 /*********************************************************
474  * StepPositionWithCP56Time2a (:StepPositionInformation)
475  *********************************************************/
476 
477 typedef struct sStepPositionWithCP56Time2a* StepPositionWithCP56Time2a;
478 
479 void
480 StepPositionWithCP56Time2a_destroy(StepPositionWithCP56Time2a self);
481 
482 StepPositionWithCP56Time2a
483 StepPositionWithCP56Time2a_create(StepPositionWithCP56Time2a self, int ioa, int value, bool isTransient,
484  QualityDescriptor quality, const CP56Time2a timestamp);
485 
487 StepPositionWithCP56Time2a_getTimestamp(StepPositionWithCP56Time2a self);
488 
489 /**********************************************
490  * BitString32 (:InformationObject)
491  **********************************************/
492 
493 typedef struct sBitString32* BitString32;
494 
495 void
496 BitString32_destroy(BitString32 self);
497 
498 BitString32
499 BitString32_create(BitString32 self, int ioa, uint32_t value);
500 
501 BitString32
502 BitString32_createEx(BitString32 self, int ioa, uint32_t value, QualityDescriptor quality);
503 
504 uint32_t
505 BitString32_getValue(BitString32 self);
506 
507 QualityDescriptor
508 BitString32_getQuality(BitString32 self);
509 
510 /**********************************************
511  * Bitstring32WithCP24Time2a (:BitString32)
512  **********************************************/
513 
514 typedef struct sBitstring32WithCP24Time2a* Bitstring32WithCP24Time2a;
515 
516 void
517 Bitstring32WithCP24Time2a_destroy(Bitstring32WithCP24Time2a self);
518 
519 Bitstring32WithCP24Time2a
520 Bitstring32WithCP24Time2a_create(Bitstring32WithCP24Time2a self, int ioa, uint32_t value, const CP24Time2a timestamp);
521 
522 Bitstring32WithCP24Time2a
523 Bitstring32WithCP24Time2a_createEx(Bitstring32WithCP24Time2a self, int ioa, uint32_t value, QualityDescriptor quality, const CP24Time2a timestamp);
524 
526 Bitstring32WithCP24Time2a_getTimestamp(Bitstring32WithCP24Time2a self);
527 
528 /**********************************************
529  * Bitstring32WithCP56Time2a (:BitString32)
530  **********************************************/
531 
532 typedef struct sBitstring32WithCP56Time2a* Bitstring32WithCP56Time2a;
533 
534 void
535 Bitstring32WithCP56Time2a_destroy(Bitstring32WithCP56Time2a self);
536 
537 Bitstring32WithCP56Time2a
538 Bitstring32WithCP56Time2a_create(Bitstring32WithCP56Time2a self, int ioa, uint32_t value, const CP56Time2a timestamp);
539 
540 Bitstring32WithCP56Time2a
541 Bitstring32WithCP56Time2a_createEx(Bitstring32WithCP56Time2a self, int ioa, uint32_t value, QualityDescriptor quality, const CP56Time2a timestamp);
542 
544 Bitstring32WithCP56Time2a_getTimestamp(Bitstring32WithCP56Time2a self);
545 
546 /*************************************************************
547  * MeasuredValueNormalizedWithoutQuality : InformationObject
548  *************************************************************/
549 
550 typedef struct sMeasuredValueNormalizedWithoutQuality* MeasuredValueNormalizedWithoutQuality;
551 
552 void
553 MeasuredValueNormalizedWithoutQuality_destroy(MeasuredValueNormalizedWithoutQuality self);
554 
555 MeasuredValueNormalizedWithoutQuality
556 MeasuredValueNormalizedWithoutQuality_create(MeasuredValueNormalizedWithoutQuality self, int ioa, float value);
557 
558 float
559 MeasuredValueNormalizedWithoutQuality_getValue(MeasuredValueNormalizedWithoutQuality self);
560 
561 void
562 MeasuredValueNormalizedWithoutQuality_setValue(MeasuredValueNormalizedWithoutQuality self, float value);
563 
564 /**********************************************
565  * MeasuredValueNormalized
566  **********************************************/
567 
568 typedef struct sMeasuredValueNormalized* MeasuredValueNormalized;
569 
570 void
571 MeasuredValueNormalized_destroy(MeasuredValueNormalized self);
572 
573 MeasuredValueNormalized
574 MeasuredValueNormalized_create(MeasuredValueNormalized self, int ioa, float value, QualityDescriptor quality);
575 
576 float
577 MeasuredValueNormalized_getValue(MeasuredValueNormalized self);
578 
579 void
580 MeasuredValueNormalized_setValue(MeasuredValueNormalized self, float value);
581 
582 QualityDescriptor
583 MeasuredValueNormalized_getQuality(MeasuredValueNormalized self);
584 
585 /***********************************************************************
586  * MeasuredValueNormalizedWithCP24Time2a : MeasuredValueNormalized
587  ***********************************************************************/
588 
589 typedef struct sMeasuredValueNormalizedWithCP24Time2a* MeasuredValueNormalizedWithCP24Time2a;
590 
591 void
592 MeasuredValueNormalizedWithCP24Time2a_destroy(MeasuredValueNormalizedWithCP24Time2a self);
593 
594 MeasuredValueNormalizedWithCP24Time2a
595 MeasuredValueNormalizedWithCP24Time2a_create(MeasuredValueNormalizedWithCP24Time2a self, int ioa,
596  float value, QualityDescriptor quality, const CP24Time2a timestamp);
597 
599 MeasuredValueNormalizedWithCP24Time2a_getTimestamp(MeasuredValueNormalizedWithCP24Time2a self);
600 
601 void
602 MeasuredValueNormalizedWithCP24Time2a_setTimestamp(MeasuredValueNormalizedWithCP24Time2a self, CP24Time2a value);
603 
604 /***********************************************************************
605  * MeasuredValueNormalizedWithCP56Time2a : MeasuredValueNormalized
606  ***********************************************************************/
607 
608 typedef struct sMeasuredValueNormalizedWithCP56Time2a* MeasuredValueNormalizedWithCP56Time2a;
609 
610 void
611 MeasuredValueNormalizedWithCP56Time2a_destroy(MeasuredValueNormalizedWithCP56Time2a self);
612 
613 MeasuredValueNormalizedWithCP56Time2a
614 MeasuredValueNormalizedWithCP56Time2a_create(MeasuredValueNormalizedWithCP56Time2a self, int ioa,
615  float value, QualityDescriptor quality, const CP56Time2a timestamp);
616 
618 MeasuredValueNormalizedWithCP56Time2a_getTimestamp(MeasuredValueNormalizedWithCP56Time2a self);
619 
620 void
621 MeasuredValueNormalizedWithCP56Time2a_setTimestamp(MeasuredValueNormalizedWithCP56Time2a self, CP56Time2a value);
622 
623 
624 /*******************************************
625  * MeasuredValueScaled : InformationObject
626  *******************************************/
627 
628 typedef struct sMeasuredValueScaled* MeasuredValueScaled;
629 
640 MeasuredValueScaled
641 MeasuredValueScaled_create(MeasuredValueScaled self, int ioa, int value, QualityDescriptor quality);
642 
643 void
644 MeasuredValueScaled_destroy(MeasuredValueScaled self);
645 
646 int
647 MeasuredValueScaled_getValue(MeasuredValueScaled self);
648 
649 void
650 MeasuredValueScaled_setValue(MeasuredValueScaled self, int value);
651 
652 QualityDescriptor
653 MeasuredValueScaled_getQuality(MeasuredValueScaled self);
654 
655 void
656 MeasuredValueScaled_setQuality(MeasuredValueScaled self, QualityDescriptor quality);
657 
658 /***********************************************************************
659  * MeasuredValueScaledWithCP24Time2a : MeasuredValueScaled
660  ***********************************************************************/
661 
662 typedef struct sMeasuredValueScaledWithCP24Time2a* MeasuredValueScaledWithCP24Time2a;
663 
664 void
665 MeasuredValueScaledWithCP24Time2a_destroy(MeasuredValueScaledWithCP24Time2a self);
666 
667 MeasuredValueScaledWithCP24Time2a
668 MeasuredValueScaledWithCP24Time2a_create(MeasuredValueScaledWithCP24Time2a self, int ioa,
669  int value, QualityDescriptor quality, const CP24Time2a timestamp);
670 
672 MeasuredValueScaledWithCP24Time2a_getTimestamp(MeasuredValueScaledWithCP24Time2a self);
673 
674 void
675 MeasuredValueScaledWithCP24Time2a_setTimestamp(MeasuredValueScaledWithCP24Time2a self, CP24Time2a value);
676 
677 /***********************************************************************
678  * MeasuredValueScaledWithCP56Time2a : MeasuredValueScaled
679  ***********************************************************************/
680 
681 typedef struct sMeasuredValueScaledWithCP56Time2a* MeasuredValueScaledWithCP56Time2a;
682 
683 void
684 MeasuredValueScaledWithCP56Time2a_destroy(MeasuredValueScaledWithCP56Time2a self);
685 
686 MeasuredValueScaledWithCP56Time2a
687 MeasuredValueScaledWithCP56Time2a_create(MeasuredValueScaledWithCP56Time2a self, int ioa,
688  int value, QualityDescriptor quality, const CP56Time2a timestamp);
689 
691 MeasuredValueScaledWithCP56Time2a_getTimestamp(MeasuredValueScaledWithCP56Time2a self);
692 
693 void
694 MeasuredValueScaledWithCP56Time2a_setTimestamp(MeasuredValueScaledWithCP56Time2a self, CP56Time2a value);
695 
696 /*******************************************
697  * MeasuredValueShort : InformationObject
698  *******************************************/
699 
700 typedef struct sMeasuredValueShort* MeasuredValueShort;
701 
702 void
703 MeasuredValueShort_destroy(MeasuredValueShort self);
704 
705 MeasuredValueShort
706 MeasuredValueShort_create(MeasuredValueShort self, int ioa, float value, QualityDescriptor quality);
707 
708 float
709 MeasuredValueShort_getValue(MeasuredValueShort self);
710 
711 void
712 MeasuredValueShort_setValue(MeasuredValueShort self, float value);
713 
714 QualityDescriptor
715 MeasuredValueShort_getQuality(MeasuredValueShort self);
716 
717 /***********************************************************************
718  * MeasuredValueShortWithCP24Time2a : MeasuredValueShort
719  ***********************************************************************/
720 
721 typedef struct sMeasuredValueShortWithCP24Time2a* MeasuredValueShortWithCP24Time2a;
722 
723 void
724 MeasuredValueShortWithCP24Time2a_destroy(MeasuredValueShortWithCP24Time2a self);
725 
726 MeasuredValueShortWithCP24Time2a
727 MeasuredValueShortWithCP24Time2a_create(MeasuredValueShortWithCP24Time2a self, int ioa,
728  float value, QualityDescriptor quality, const CP24Time2a timestamp);
729 
731 MeasuredValueShortWithCP24Time2a_getTimestamp(MeasuredValueShortWithCP24Time2a self);
732 
733 void
734 MeasuredValueShortWithCP24Time2a_setTimestamp(MeasuredValueShortWithCP24Time2a self,
735  CP24Time2a value);
736 
737 /***********************************************************************
738  * MeasuredValueShortWithCP56Time2a : MeasuredValueShort
739  ***********************************************************************/
740 
741 typedef struct sMeasuredValueShortWithCP56Time2a* MeasuredValueShortWithCP56Time2a;
742 
743 void
744 MeasuredValueShortWithCP56Time2a_destroy(MeasuredValueShortWithCP56Time2a self);
745 
746 MeasuredValueShortWithCP56Time2a
747 MeasuredValueShortWithCP56Time2a_create(MeasuredValueShortWithCP56Time2a self, int ioa,
748  float value, QualityDescriptor quality, CP56Time2a timestamp);
749 
751 MeasuredValueShortWithCP56Time2a_getTimestamp(MeasuredValueShortWithCP56Time2a self);
752 
753 void
754 MeasuredValueShortWithCP56Time2a_setTimestamp(MeasuredValueShortWithCP56Time2a self,
755  CP56Time2a value);
756 
757 /*******************************************
758  * IntegratedTotals : InformationObject
759  *******************************************/
760 
761 typedef struct sIntegratedTotals* IntegratedTotals;
762 
763 void
764 IntegratedTotals_destroy(IntegratedTotals self);
765 
777 IntegratedTotals
778 IntegratedTotals_create(IntegratedTotals self, int ioa, const BinaryCounterReading value);
779 
781 IntegratedTotals_getBCR(IntegratedTotals self);
782 
783 void
784 IntegratedTotals_setBCR(IntegratedTotals self, BinaryCounterReading value);
785 
786 /***********************************************************************
787  * IntegratedTotalsWithCP24Time2a : IntegratedTotals
788  ***********************************************************************/
789 
790 typedef struct sIntegratedTotalsWithCP24Time2a* IntegratedTotalsWithCP24Time2a;
791 
804 IntegratedTotalsWithCP24Time2a
805 IntegratedTotalsWithCP24Time2a_create(IntegratedTotalsWithCP24Time2a self, int ioa,
806  const BinaryCounterReading value, const CP24Time2a timestamp);
807 
808 void
809 IntegratedTotalsWithCP24Time2a_destroy(IntegratedTotalsWithCP24Time2a self);
810 
812 IntegratedTotalsWithCP24Time2a_getTimestamp(IntegratedTotalsWithCP24Time2a self);
813 
814 void
815 IntegratedTotalsWithCP24Time2a_setTimestamp(IntegratedTotalsWithCP24Time2a self,
816  CP24Time2a value);
817 
818 /***********************************************************************
819  * IntegratedTotalsWithCP56Time2a : IntegratedTotals
820  ***********************************************************************/
821 
822 typedef struct sIntegratedTotalsWithCP56Time2a* IntegratedTotalsWithCP56Time2a;
823 
836 IntegratedTotalsWithCP56Time2a
837 IntegratedTotalsWithCP56Time2a_create(IntegratedTotalsWithCP56Time2a self, int ioa,
838  const BinaryCounterReading value, const CP56Time2a timestamp);
839 
840 void
841 IntegratedTotalsWithCP56Time2a_destroy(IntegratedTotalsWithCP56Time2a self);
842 
844 IntegratedTotalsWithCP56Time2a_getTimestamp(IntegratedTotalsWithCP56Time2a self);
845 
846 void
847 IntegratedTotalsWithCP56Time2a_setTimestamp(IntegratedTotalsWithCP56Time2a self,
848  CP56Time2a value);
849 
850 /***********************************************************************
851  * EventOfProtectionEquipment : InformationObject
852  ***********************************************************************/
853 
854 typedef struct sEventOfProtectionEquipment* EventOfProtectionEquipment;
855 
856 void
857 EventOfProtectionEquipment_destroy(EventOfProtectionEquipment self);
858 
859 EventOfProtectionEquipment
860 EventOfProtectionEquipment_create(EventOfProtectionEquipment self, int ioa,
861  const SingleEvent event, const CP16Time2a elapsedTime, const CP24Time2a timestamp);
862 
863 SingleEvent
864 EventOfProtectionEquipment_getEvent(EventOfProtectionEquipment self);
865 
867 EventOfProtectionEquipment_getElapsedTime(EventOfProtectionEquipment self);
868 
870 EventOfProtectionEquipment_getTimestamp(EventOfProtectionEquipment self);
871 
872 /***********************************************************************
873  * PackedStartEventsOfProtectionEquipment : InformationObject
874  ***********************************************************************/
875 
876 typedef struct sPackedStartEventsOfProtectionEquipment* PackedStartEventsOfProtectionEquipment;
877 
878 PackedStartEventsOfProtectionEquipment
879 PackedStartEventsOfProtectionEquipment_create(PackedStartEventsOfProtectionEquipment self, int ioa,
880  StartEvent event, QualityDescriptorP qdp, const CP16Time2a elapsedTime, const CP24Time2a timestamp);
881 
882 void
883 PackedStartEventsOfProtectionEquipment_destroy(PackedStartEventsOfProtectionEquipment self);
884 
886 PackedStartEventsOfProtectionEquipment_getEvent(PackedStartEventsOfProtectionEquipment self);
887 
889 PackedStartEventsOfProtectionEquipment_getQuality(PackedStartEventsOfProtectionEquipment self);
890 
892 PackedStartEventsOfProtectionEquipment_getElapsedTime(PackedStartEventsOfProtectionEquipment self);
893 
895 PackedStartEventsOfProtectionEquipment_getTimestamp(PackedStartEventsOfProtectionEquipment self);
896 
897 /***********************************************************************
898  * PacketOutputCircuitInfo : InformationObject
899  ***********************************************************************/
900 
901 typedef struct sPackedOutputCircuitInfo* PackedOutputCircuitInfo;
902 
903 void
904 PackedOutputCircuitInfo_destroy(PackedOutputCircuitInfo self);
905 
906 PackedOutputCircuitInfo
907 PackedOutputCircuitInfo_create(PackedOutputCircuitInfo self, int ioa,
908  OutputCircuitInfo oci, QualityDescriptorP qdp, const CP16Time2a operatingTime, const CP24Time2a timestamp);
909 
911 PackedOutputCircuitInfo_getOCI(PackedOutputCircuitInfo self);
912 
914 PackedOutputCircuitInfo_getQuality(PackedOutputCircuitInfo self);
915 
917 PackedOutputCircuitInfo_getOperatingTime(PackedOutputCircuitInfo self);
918 
920 PackedOutputCircuitInfo_getTimestamp(PackedOutputCircuitInfo self);
921 
922 /***********************************************************************
923  * PackedSinglePointWithSCD : InformationObject
924  ***********************************************************************/
925 
926 typedef struct sPackedSinglePointWithSCD* PackedSinglePointWithSCD;
927 
928 void
929 PackedSinglePointWithSCD_destroy(PackedSinglePointWithSCD self);
930 
931 PackedSinglePointWithSCD
932 PackedSinglePointWithSCD_create(PackedSinglePointWithSCD self, int ioa,
933  const StatusAndStatusChangeDetection scd, QualityDescriptor qds);
934 
935 QualityDescriptor
936 PackedSinglePointWithSCD_getQuality(PackedSinglePointWithSCD self);
937 
939 PackedSinglePointWithSCD_getSCD(PackedSinglePointWithSCD self);
940 
941 
942 /*******************************************
943  * SingleCommand
944  *******************************************/
945 
946 typedef struct sSingleCommand* SingleCommand;
947 
959 SingleCommand
960 SingleCommand_create(SingleCommand self, int ioa, bool command, bool selectCommand, int qu);
961 
962 void
963 SingleCommand_destroy(SingleCommand self);
964 
970 int
971 SingleCommand_getQU(SingleCommand self);
972 
976 bool
977 SingleCommand_getState(SingleCommand self);
978 
984 bool
985 SingleCommand_isSelect(SingleCommand self);
986 
987 /***********************************************************************
988  * SingleCommandWithCP56Time2a : SingleCommand
989  ***********************************************************************/
990 
991 typedef struct sSingleCommandWithCP56Time2a* SingleCommandWithCP56Time2a;
992 
993 void
994 SingleCommandWithCP56Time2a_destroy(SingleCommandWithCP56Time2a self);
995 
1008 SingleCommandWithCP56Time2a
1009 SingleCommandWithCP56Time2a_create(SingleCommandWithCP56Time2a self, int ioa, bool command, bool selectCommand, int qu, const CP56Time2a timestamp);
1010 
1019 CP56Time2a
1020 SingleCommandWithCP56Time2a_getTimestamp(SingleCommandWithCP56Time2a self);
1021 
1022 /*******************************************
1023  * DoubleCommand : InformationObject
1024  *******************************************/
1025 
1026 typedef struct sDoubleCommand* DoubleCommand;
1027 
1028 void
1029 DoubleCommand_destroy(DoubleCommand self);
1030 
1042 DoubleCommand
1043 DoubleCommand_create(DoubleCommand self, int ioa, int command, bool selectCommand, int qu);
1044 
1050 int
1051 DoubleCommand_getQU(DoubleCommand self);
1052 
1058 int
1059 DoubleCommand_getState(DoubleCommand self);
1060 
1066 bool
1067 DoubleCommand_isSelect(DoubleCommand self);
1068 
1069 /*******************************************
1070  * StepCommand : InformationObject
1071  *******************************************/
1072 
1073 typedef struct sStepCommand* StepCommand;
1074 
1075 void
1076 StepCommand_destroy(StepCommand self);
1077 
1078 StepCommand
1079 StepCommand_create(StepCommand self, int ioa, StepCommandValue command, bool selectCommand, int qu);
1080 
1086 int
1087 StepCommand_getQU(StepCommand self);
1088 
1090 StepCommand_getState(StepCommand self);
1091 
1097 bool
1098 StepCommand_isSelect(StepCommand self);
1099 
1100 /*************************************************
1101  * SetpointCommandNormalized : InformationObject
1102  ************************************************/
1103 
1104 typedef struct sSetpointCommandNormalized* SetpointCommandNormalized;
1105 
1106 void
1107 SetpointCommandNormalized_destroy(SetpointCommandNormalized self);
1108 
1120 SetpointCommandNormalized
1121 SetpointCommandNormalized_create(SetpointCommandNormalized self, int ioa, float value, bool selectCommand, int ql);
1122 
1123 float
1124 SetpointCommandNormalized_getValue(SetpointCommandNormalized self);
1125 
1126 int
1127 SetpointCommandNormalized_getQL(SetpointCommandNormalized self);
1128 
1134 bool
1135 SetpointCommandNormalized_isSelect(SetpointCommandNormalized self);
1136 
1137 /*************************************************
1138  * SetpointCommandScaled : InformationObject
1139  ************************************************/
1140 
1141 typedef struct sSetpointCommandScaled* SetpointCommandScaled;
1142 
1143 void
1144 SetpointCommandScaled_destroy(SetpointCommandScaled self);
1145 
1157 SetpointCommandScaled
1158 SetpointCommandScaled_create(SetpointCommandScaled self, int ioa, int value, bool selectCommand, int ql);
1159 
1160 int
1161 SetpointCommandScaled_getValue(SetpointCommandScaled self);
1162 
1163 int
1164 SetpointCommandScaled_getQL(SetpointCommandScaled self);
1165 
1171 bool
1172 SetpointCommandScaled_isSelect(SetpointCommandScaled self);
1173 
1174 /*************************************************
1175  * SetpointCommandShort: InformationObject
1176  ************************************************/
1177 
1178 typedef struct sSetpointCommandShort* SetpointCommandShort;
1179 
1180 void
1181 SetpointCommandShort_destroy(SetpointCommandShort self);
1182 
1194 SetpointCommandShort
1195 SetpointCommandShort_create(SetpointCommandShort self, int ioa, float value, bool selectCommand, int ql);
1196 
1197 float
1198 SetpointCommandShort_getValue(SetpointCommandShort self);
1199 
1200 int
1201 SetpointCommandShort_getQL(SetpointCommandShort self);
1202 
1208 bool
1209 SetpointCommandShort_isSelect(SetpointCommandShort self);
1210 
1211 /*************************************************
1212  * Bitstring32Command : InformationObject
1213  ************************************************/
1214 
1215 typedef struct sBitstring32Command* Bitstring32Command;
1216 
1217 Bitstring32Command
1218 Bitstring32Command_create(Bitstring32Command self, int ioa, uint32_t value);
1219 
1220 void
1221 Bitstring32Command_destroy(Bitstring32Command self);
1222 
1223 uint32_t
1224 Bitstring32Command_getValue(Bitstring32Command self);
1225 
1226 /*************************************************
1227  * InterrogationCommand : InformationObject
1228  ************************************************/
1229 
1230 typedef struct sInterrogationCommand* InterrogationCommand;
1231 
1232 InterrogationCommand
1233 InterrogationCommand_create(InterrogationCommand self, int ioa, uint8_t qoi);
1234 
1235 void
1236 InterrogationCommand_destroy(InterrogationCommand self);
1237 
1238 uint8_t
1239 InterrogationCommand_getQOI(InterrogationCommand self);
1240 
1241 /*************************************************
1242  * ReadCommand : InformationObject
1243  ************************************************/
1244 
1245 typedef struct sReadCommand* ReadCommand;
1246 
1247 ReadCommand
1248 ReadCommand_create(ReadCommand self, int ioa);
1249 
1250 void
1251 ReadCommand_destroy(ReadCommand self);
1252 
1253 /***************************************************
1254  * ClockSynchronizationCommand : InformationObject
1255  **************************************************/
1256 
1257 typedef struct sClockSynchronizationCommand* ClockSynchronizationCommand;
1258 
1259 ClockSynchronizationCommand
1260 ClockSynchronizationCommand_create(ClockSynchronizationCommand self, int ioa, const CP56Time2a timestamp);
1261 
1262 void
1263 ClockSynchronizationCommand_destroy(ClockSynchronizationCommand self);
1264 
1265 CP56Time2a
1266 ClockSynchronizationCommand_getTime(ClockSynchronizationCommand self);
1267 
1268 /******************************************************
1269  * ParameterNormalizedValue : MeasuredValueNormalized
1270  *****************************************************/
1271 
1272 typedef struct sMeasuredValueNormalized* ParameterNormalizedValue;
1273 
1274 void
1275 ParameterNormalizedValue_destroy(ParameterNormalizedValue self);
1276 
1299 ParameterNormalizedValue
1300 ParameterNormalizedValue_create(ParameterNormalizedValue self, int ioa, float value, QualifierOfParameterMV qpm);
1301 
1302 float
1303 ParameterNormalizedValue_getValue(ParameterNormalizedValue self);
1304 
1305 void
1306 ParameterNormalizedValue_setValue(ParameterNormalizedValue self, float value);
1307 
1314 ParameterNormalizedValue_getQPM(ParameterNormalizedValue self);
1315 
1316 /******************************************************
1317  * ParameterScaledValue : MeasuredValueScaled
1318  *****************************************************/
1319 
1320 typedef struct sMeasuredValueScaled* ParameterScaledValue;
1321 
1322 void
1323 ParameterScaledValue_destroy(ParameterScaledValue self);
1324 
1347 ParameterScaledValue
1348 ParameterScaledValue_create(ParameterScaledValue self, int ioa, int value, QualifierOfParameterMV qpm);
1349 
1350 int
1351 ParameterScaledValue_getValue(ParameterScaledValue self);
1352 
1353 void
1354 ParameterScaledValue_setValue(ParameterScaledValue self, int value);
1355 
1362 ParameterScaledValue_getQPM(ParameterScaledValue self);
1363 
1364 /******************************************************
1365  * ParameterFloatValue : MeasuredValueShort
1366  *****************************************************/
1367 
1368 typedef struct sMeasuredValueShort* ParameterFloatValue;
1369 
1370 void
1371 ParameterFloatValue_destroy(ParameterFloatValue self);
1372 
1395 ParameterFloatValue
1396 ParameterFloatValue_create(ParameterFloatValue self, int ioa, float value, QualifierOfParameterMV qpm);
1397 
1398 float
1399 ParameterFloatValue_getValue(ParameterFloatValue self);
1400 
1401 void
1402 ParameterFloatValue_setValue(ParameterFloatValue self, float value);
1403 
1410 ParameterFloatValue_getQPM(ParameterFloatValue self);
1411 
1412 /*******************************************
1413  * ParameterActivation : InformationObject
1414  *******************************************/
1415 
1416 typedef struct sParameterActivation* ParameterActivation;
1417 
1418 void
1419 ParameterActivation_destroy(ParameterActivation self);
1420 
1430 ParameterActivation
1431 ParameterActivation_create(ParameterActivation self, int ioa, QualifierOfParameterActivation qpa);
1432 
1439 ParameterActivation_getQuality(ParameterActivation self);
1440 
1441 /***********************************************************************
1442  * EventOfProtectionEquipmentWithCP56Time2a : InformationObject
1443  ***********************************************************************/
1444 
1445 typedef struct sEventOfProtectionEquipmentWithCP56Time2a* EventOfProtectionEquipmentWithCP56Time2a;
1446 
1447 void
1448 EventOfProtectionEquipmentWithCP56Time2a_destroy(EventOfProtectionEquipmentWithCP56Time2a self);
1449 
1450 EventOfProtectionEquipmentWithCP56Time2a
1451 EventOfProtectionEquipmentWithCP56Time2a_create(EventOfProtectionEquipmentWithCP56Time2a self, int ioa,
1452  const SingleEvent event, const CP16Time2a elapsedTime, const CP56Time2a timestamp);
1453 
1454 SingleEvent
1455 EventOfProtectionEquipmentWithCP56Time2a_getEvent(EventOfProtectionEquipmentWithCP56Time2a self);
1456 
1457 CP16Time2a
1458 EventOfProtectionEquipmentWithCP56Time2a_getElapsedTime(EventOfProtectionEquipmentWithCP56Time2a self);
1459 
1460 CP56Time2a
1461 EventOfProtectionEquipmentWithCP56Time2a_getTimestamp(EventOfProtectionEquipmentWithCP56Time2a self);
1462 
1463 /***************************************************************************
1464  * PackedStartEventsOfProtectionEquipmentWithCP56Time2a : InformationObject
1465  ***************************************************************************/
1466 
1467 typedef struct sPackedStartEventsOfProtectionEquipmentWithCP56Time2a* PackedStartEventsOfProtectionEquipmentWithCP56Time2a;
1468 
1469 void
1470 PackedStartEventsOfProtectionEquipmentWithCP56Time2a_destroy(PackedStartEventsOfProtectionEquipmentWithCP56Time2a self);
1471 PackedStartEventsOfProtectionEquipmentWithCP56Time2a
1472 
1473 PackedStartEventsOfProtectionEquipmentWithCP56Time2a_create(PackedStartEventsOfProtectionEquipmentWithCP56Time2a self, int ioa,
1474  StartEvent event, QualityDescriptorP qdp, const CP16Time2a elapsedTime, const CP56Time2a timestamp);
1475 
1476 StartEvent
1477 PackedStartEventsOfProtectionEquipmentWithCP56Time2a_getEvent(PackedStartEventsOfProtectionEquipmentWithCP56Time2a self);
1478 
1480 PackedStartEventsOfProtectionEquipmentWithCP56Time2a_getQuality(PackedStartEventsOfProtectionEquipmentWithCP56Time2a self);
1481 
1482 CP16Time2a
1483 PackedStartEventsOfProtectionEquipmentWithCP56Time2a_getElapsedTime(PackedStartEventsOfProtectionEquipmentWithCP56Time2a self);
1484 
1485 CP56Time2a
1486 PackedStartEventsOfProtectionEquipmentWithCP56Time2a_getTimestamp(PackedStartEventsOfProtectionEquipmentWithCP56Time2a self);
1487 
1488 /***********************************************************************
1489  * PackedOutputCircuitInfoWithCP56Time2a : InformationObject
1490  ***********************************************************************/
1491 
1492 typedef struct sPackedOutputCircuitInfoWithCP56Time2a* PackedOutputCircuitInfoWithCP56Time2a;
1493 
1494 void
1495 PackedOutputCircuitInfoWithCP56Time2a_destroy(PackedOutputCircuitInfoWithCP56Time2a self);
1496 
1497 PackedOutputCircuitInfoWithCP56Time2a
1498 PackedOutputCircuitInfoWithCP56Time2a_create(PackedOutputCircuitInfoWithCP56Time2a self, int ioa,
1499  OutputCircuitInfo oci, QualityDescriptorP qdp, const CP16Time2a operatingTime, const CP56Time2a timestamp);
1500 
1502 PackedOutputCircuitInfoWithCP56Time2a_getOCI(PackedOutputCircuitInfoWithCP56Time2a self);
1503 
1505 PackedOutputCircuitInfoWithCP56Time2a_getQuality(PackedOutputCircuitInfoWithCP56Time2a self);
1506 
1507 CP16Time2a
1508 PackedOutputCircuitInfoWithCP56Time2a_getOperatingTime(PackedOutputCircuitInfoWithCP56Time2a self);
1509 
1510 CP56Time2a
1511 PackedOutputCircuitInfoWithCP56Time2a_getTimestamp(PackedOutputCircuitInfoWithCP56Time2a self);
1512 
1513 /**********************************************
1514  * DoubleCommandWithCP56Time2a : DoubleCommand
1515  **********************************************/
1516 
1517 typedef struct sDoubleCommandWithCP56Time2a* DoubleCommandWithCP56Time2a;
1518 
1519 void
1520 DoubleCommandWithCP56Time2a_destroy(DoubleCommandWithCP56Time2a self);
1521 
1522 DoubleCommandWithCP56Time2a
1523 DoubleCommandWithCP56Time2a_create(DoubleCommandWithCP56Time2a self, int ioa, int command, bool selectCommand, int qu, const CP56Time2a timestamp);
1524 
1525 int
1526 DoubleCommandWithCP56Time2a_getQU(DoubleCommandWithCP56Time2a self);
1527 
1528 int
1529 DoubleCommandWithCP56Time2a_getState(DoubleCommandWithCP56Time2a self);
1530 
1531 bool
1532 DoubleCommandWithCP56Time2a_isSelect(DoubleCommandWithCP56Time2a self);
1533 
1534 CP56Time2a
1535 DoubleCommandWithCP56Time2a_getTimestamp(DoubleCommandWithCP56Time2a self);
1536 
1537 /*************************************************
1538  * StepCommandWithCP56Time2a : InformationObject
1539  *************************************************/
1540 
1541 typedef struct sStepCommandWithCP56Time2a* StepCommandWithCP56Time2a;
1542 
1543 void
1544 StepCommandWithCP56Time2a_destroy(StepCommandWithCP56Time2a self);
1545 
1546 StepCommandWithCP56Time2a
1547 StepCommandWithCP56Time2a_create(StepCommandWithCP56Time2a self, int ioa, StepCommandValue command, bool selectCommand, int qu, const CP56Time2a timestamp);
1548 
1549 int
1550 StepCommandWithCP56Time2a_getQU(StepCommandWithCP56Time2a self);
1551 
1553 StepCommandWithCP56Time2a_getState(StepCommandWithCP56Time2a self);
1554 
1555 bool
1556 StepCommandWithCP56Time2a_isSelect(StepCommandWithCP56Time2a self);
1557 
1558 CP56Time2a
1559 StepCommandWithCP56Time2a_getTimestamp(StepCommandWithCP56Time2a self);
1560 
1561 /**********************************************************************
1562  * SetpointCommandNormalizedWithCP56Time2a : SetpointCommandNormalized
1563  **********************************************************************/
1564 
1565 typedef struct sSetpointCommandNormalizedWithCP56Time2a* SetpointCommandNormalizedWithCP56Time2a;
1566 
1567 void
1568 SetpointCommandNormalizedWithCP56Time2a_destroy(SetpointCommandNormalizedWithCP56Time2a self);
1569 
1570 SetpointCommandNormalizedWithCP56Time2a
1571 SetpointCommandNormalizedWithCP56Time2a_create(SetpointCommandNormalizedWithCP56Time2a self, int ioa, float value, bool selectCommand, int ql, const CP56Time2a timestamp);
1572 
1573 float
1574 SetpointCommandNormalizedWithCP56Time2a_getValue(SetpointCommandNormalizedWithCP56Time2a self);
1575 
1576 int
1577 SetpointCommandNormalizedWithCP56Time2a_getQL(SetpointCommandNormalizedWithCP56Time2a self);
1578 
1579 bool
1580 SetpointCommandNormalizedWithCP56Time2a_isSelect(SetpointCommandNormalizedWithCP56Time2a self);
1581 
1582 CP56Time2a
1583 SetpointCommandNormalizedWithCP56Time2a_getTimestamp(SetpointCommandNormalizedWithCP56Time2a self);
1584 
1585 /**********************************************************************
1586  * SetpointCommandScaledWithCP56Time2a : SetpointCommandScaled
1587  **********************************************************************/
1588 
1589 typedef struct sSetpointCommandScaledWithCP56Time2a* SetpointCommandScaledWithCP56Time2a;
1590 
1591 void
1592 SetpointCommandScaledWithCP56Time2a_destroy(SetpointCommandScaledWithCP56Time2a self);
1593 
1594 SetpointCommandScaledWithCP56Time2a
1595 SetpointCommandScaledWithCP56Time2a_create(SetpointCommandScaledWithCP56Time2a self, int ioa, int value, bool selectCommand, int ql, const CP56Time2a timestamp);
1596 
1597 int
1598 SetpointCommandScaledWithCP56Time2a_getValue(SetpointCommandScaledWithCP56Time2a self);
1599 
1600 int
1601 SetpointCommandScaledWithCP56Time2a_getQL(SetpointCommandScaledWithCP56Time2a self);
1602 
1603 bool
1604 SetpointCommandScaledWithCP56Time2a_isSelect(SetpointCommandScaledWithCP56Time2a self);
1605 
1606 CP56Time2a
1607 SetpointCommandScaledWithCP56Time2a_getTimestamp(SetpointCommandScaledWithCP56Time2a self);
1608 
1609 /**********************************************************************
1610  * SetpointCommandShortWithCP56Time2a : SetpointCommandShort
1611  **********************************************************************/
1612 
1613 typedef struct sSetpointCommandShortWithCP56Time2a* SetpointCommandShortWithCP56Time2a;
1614 
1615 void
1616 SetpointCommandShortWithCP56Time2a_destroy(SetpointCommandShortWithCP56Time2a self);
1617 
1618 SetpointCommandShortWithCP56Time2a
1619 SetpointCommandShortWithCP56Time2a_create(SetpointCommandShortWithCP56Time2a self, int ioa, float value, bool selectCommand, int ql, const CP56Time2a timestamp);
1620 
1621 float
1622 SetpointCommandShortWithCP56Time2a_getValue(SetpointCommandShortWithCP56Time2a self);
1623 
1624 int
1625 SetpointCommandShortWithCP56Time2a_getQL(SetpointCommandShortWithCP56Time2a self);
1626 
1627 bool
1628 SetpointCommandShortWithCP56Time2a_isSelect(SetpointCommandShortWithCP56Time2a self);
1629 
1630 CP56Time2a
1631 SetpointCommandShortWithCP56Time2a_getTimestamp(SetpointCommandShortWithCP56Time2a self);
1632 
1633 /*******************************************************
1634  * Bitstring32CommandWithCP56Time2a: Bitstring32Command
1635  *******************************************************/
1636 
1637 typedef struct sBitstring32CommandWithCP56Time2a* Bitstring32CommandWithCP56Time2a;
1638 
1639 Bitstring32CommandWithCP56Time2a
1640 Bitstring32CommandWithCP56Time2a_create(Bitstring32CommandWithCP56Time2a self, int ioa, uint32_t value, const CP56Time2a timestamp);
1641 
1642 void
1643 Bitstring32CommandWithCP56Time2a_destroy(Bitstring32CommandWithCP56Time2a self);
1644 
1645 uint32_t
1646 Bitstring32CommandWithCP56Time2a_getValue(Bitstring32CommandWithCP56Time2a self);
1647 
1648 CP56Time2a
1649 Bitstring32CommandWithCP56Time2a_getTimestamp(Bitstring32CommandWithCP56Time2a self);
1650 
1651 
1652 /**************************************************
1653  * CounterInterrogationCommand : InformationObject
1654  **************************************************/
1655 
1656 typedef struct sCounterInterrogationCommand* CounterInterrogationCommand;
1657 
1658 CounterInterrogationCommand
1659 CounterInterrogationCommand_create(CounterInterrogationCommand self, int ioa, QualifierOfCIC qcc);
1660 
1661 void
1662 CounterInterrogationCommand_destroy(CounterInterrogationCommand self);
1663 
1665 CounterInterrogationCommand_getQCC(CounterInterrogationCommand self);
1666 
1667 /*************************************************
1668  * TestCommand : InformationObject
1669  ************************************************/
1670 
1671 typedef struct sTestCommand* TestCommand;
1672 
1673 TestCommand
1674 TestCommand_create(TestCommand self);
1675 
1676 void
1677 TestCommand_destroy(TestCommand self);
1678 
1679 bool
1680 TestCommand_isValid(TestCommand self);
1681 
1682 /*************************************************
1683  * TestCommandWithCP56Time2a : InformationObject
1684  ************************************************/
1685 
1686 typedef struct sTestCommandWithCP56Time2a* TestCommandWithCP56Time2a;
1687 
1697 TestCommandWithCP56Time2a
1698 TestCommandWithCP56Time2a_create(TestCommandWithCP56Time2a self, uint16_t tsc, const CP56Time2a timestamp);
1699 
1700 void
1701 TestCommandWithCP56Time2a_destroy(TestCommandWithCP56Time2a self);
1702 
1703 uint16_t
1704 TestCommandWithCP56Time2a_getCounter(TestCommandWithCP56Time2a self);
1705 
1706 CP56Time2a
1707 TestCommandWithCP56Time2a_getTimestamp(TestCommandWithCP56Time2a self);
1708 
1709 /*************************************************
1710  * ResetProcessCommand : InformationObject
1711  ************************************************/
1712 
1713 typedef struct sResetProcessCommand* ResetProcessCommand;
1714 
1715 ResetProcessCommand
1716 ResetProcessCommand_create(ResetProcessCommand self, int ioa, QualifierOfRPC qrp);
1717 
1718 void
1719 ResetProcessCommand_destroy(ResetProcessCommand self);
1720 
1722 ResetProcessCommand_getQRP(ResetProcessCommand self);
1723 
1724 /*************************************************
1725  * DelayAcquisitionCommand : InformationObject
1726  ************************************************/
1727 
1728 typedef struct sDelayAcquisitionCommand* DelayAcquisitionCommand;
1729 
1730 DelayAcquisitionCommand
1731 DelayAcquisitionCommand_create(DelayAcquisitionCommand self, int ioa, const CP16Time2a delay);
1732 
1733 void
1734 DelayAcquisitionCommand_destroy(DelayAcquisitionCommand self);
1735 
1736 CP16Time2a
1737 DelayAcquisitionCommand_getDelay(DelayAcquisitionCommand self);
1738 
1739 /*******************************************
1740  * EndOfInitialization : InformationObject
1741  *******************************************/
1742 
1743 typedef struct sEndOfInitialization* EndOfInitialization;
1744 
1745 EndOfInitialization
1746 EndOfInitialization_create(EndOfInitialization self, uint8_t coi);
1747 
1748 void
1749 EndOfInitialization_destroy(EndOfInitialization self);
1750 
1751 uint8_t
1752 EndOfInitialization_getCOI(EndOfInitialization self);
1753 
1754 /*******************************************
1755  * FileReady : InformationObject
1756  *******************************************/
1757 
1766 #define CS101_NOF_DEFAULT 0
1767 #define CS101_NOF_TRANSPARENT_FILE 1
1768 #define CS101_NOF_DISTURBANCE_DATA 2
1769 #define CS101_NOF_SEQUENCES_OF_EVENTS 3
1770 #define CS101_NOF_SEQUENCES_OF_ANALOGUE_VALUES 4
1771 
1782 #define CS101_SCQ_DEFAULT 0
1783 #define CS101_SCQ_SELECT_FILE 1
1784 #define CS101_SCQ_REQUEST_FILE 2
1785 #define CS101_SCQ_DEACTIVATE_FILE 3
1786 #define CS101_SCQ_DELETE_FILE 4
1787 #define CS101_SCQ_SELECT_SECTION 5
1788 #define CS101_SCQ_REQUEST_SECTION 6
1789 #define CS101_SCQ_DEACTIVATE_SECTION 7
1790 
1801 #define CS101_LSQ_NOT_USED 0,
1802 #define CS101_LSQ_FILE_TRANSFER_WITHOUT_DEACT 1
1803 #define CS101_LSQ_FILE_TRANSFER_WITH_DEACT 2
1804 #define CS101_LSQ_SECTION_TRANSFER_WITHOUT_DEACT 3
1805 #define CS101_LSQ_SECTION_TRANSFER_WITH_DEACT 4
1806 
1818 #define CS101_AFQ_NOT_USED 0
1819 
1821 #define CS101_AFQ_POS_ACK_FILE 1
1822 
1824 #define CS101_AFQ_NEG_ACK_FILE 2
1825 
1827 #define CS101_AFQ_POS_ACK_SECTION 3
1828 
1830 #define CS101_AFQ_NEG_ACK_SECTION 4
1831 
1843 #define CS101_FILE_ERROR_DEFAULT 0
1844 
1846 #define CS101_FILE_ERROR_REQ_MEMORY_NOT_AVAILABLE 1
1847 
1849 #define CS101_FILE_ERROR_CHECKSUM_FAILED 2
1850 
1852 #define CS101_FILE_ERROR_UNEXPECTED_COMM_SERVICE 3
1853 
1855 #define CS101_FILE_ERROR_UNEXPECTED_NAME_OF_FILE 4
1856 
1858 #define CS101_FILE_ERROR_UNEXPECTED_NAME_OF_SECTION 5
1859 
1871 #define CS101_SOF_STATUS 0x1f
1872 
1874 #define CS101_SOF_LFD 0x20
1875 
1877 #define CS101_SOF_FOR 0x40
1878 
1880 #define CS101_SOF_FA 0x80
1881 
1884 typedef struct sFileReady* FileReady;
1885 
1897 FileReady
1898 FileReady_create(FileReady self, int ioa, uint16_t nof, uint32_t lengthOfFile, bool positive);
1899 
1900 uint8_t
1901 FileReady_getFRQ(FileReady self);
1902 
1903 void
1904 FileReady_setFRQ(FileReady self, uint8_t frq);
1905 
1906 bool
1907 FileReady_isPositive(FileReady self);
1908 
1909 uint16_t
1910 FileReady_getNOF(FileReady self);
1911 
1912 uint32_t
1913 FileReady_getLengthOfFile(FileReady self);
1914 
1915 void
1916 FileReady_destroy(FileReady self);
1917 
1918 /*******************************************
1919  * SectionReady : InformationObject
1920  *******************************************/
1921 
1922 typedef struct sSectionReady* SectionReady;
1923 
1924 SectionReady
1925 SectionReady_create(SectionReady self, int ioa, uint16_t nof, uint8_t nos, uint32_t lengthOfSection, bool notReady);
1926 
1927 
1928 bool
1929 SectionReady_isNotReady(SectionReady self);
1930 
1931 uint8_t
1932 SectionReady_getSRQ(SectionReady self);
1933 
1934 void
1935 SectionReady_setSRQ(SectionReady self, uint8_t srq);
1936 
1937 uint16_t
1938 SectionReady_getNOF(SectionReady self);
1939 
1940 uint8_t
1941 SectionReady_getNameOfSection(SectionReady self);
1942 
1943 uint32_t
1944 SectionReady_getLengthOfSection(SectionReady self);
1945 
1946 void
1947 SectionReady_destroy(SectionReady self);
1948 
1949 /*******************************************
1950  * FileCallOrSelect : InformationObject
1951  *******************************************/
1952 
1953 
1954 typedef struct sFileCallOrSelect* FileCallOrSelect;
1955 
1956 FileCallOrSelect
1957 FileCallOrSelect_create(FileCallOrSelect self, int ioa, uint16_t nof, uint8_t nos, uint8_t scq);
1958 
1959 uint16_t
1960 FileCallOrSelect_getNOF(FileCallOrSelect self);
1961 
1962 uint8_t
1963 FileCallOrSelect_getNameOfSection(FileCallOrSelect self);
1964 
1965 uint8_t
1966 FileCallOrSelect_getSCQ(FileCallOrSelect self);
1967 
1968 void
1969 FileCallOrSelect_destroy(FileCallOrSelect self);
1970 
1971 /*************************************************
1972  * FileLastSegmentOrSection : InformationObject
1973  *************************************************/
1974 
1975 typedef struct sFileLastSegmentOrSection* FileLastSegmentOrSection;
1976 
1977 FileLastSegmentOrSection
1978 FileLastSegmentOrSection_create(FileLastSegmentOrSection self, int ioa, uint16_t nof, uint8_t nos, uint8_t lsq, uint8_t chs);
1979 
1980 uint16_t
1981 FileLastSegmentOrSection_getNOF(FileLastSegmentOrSection self);
1982 
1983 uint8_t
1984 FileLastSegmentOrSection_getNameOfSection(FileLastSegmentOrSection self);
1985 
1986 uint8_t
1987 FileLastSegmentOrSection_getLSQ(FileLastSegmentOrSection self);
1988 
1989 uint8_t
1990 FileLastSegmentOrSection_getCHS(FileLastSegmentOrSection self);
1991 
1992 void
1993 FileLastSegmentOrSection_destroy(FileLastSegmentOrSection self);
1994 
1995 /*************************************************
1996  * FileACK : InformationObject
1997  *************************************************/
1998 
1999 typedef struct sFileACK* FileACK;
2000 
2001 FileACK
2002 FileACK_create(FileACK self, int ioa, uint16_t nof, uint8_t nos, uint8_t afq);
2003 
2004 uint16_t
2005 FileACK_getNOF(FileACK self);
2006 
2007 uint8_t
2008 FileACK_getNameOfSection(FileACK self);
2009 
2010 uint8_t
2011 FileACK_getAFQ(FileACK self);
2012 
2013 void
2014 FileACK_destroy(FileACK self);
2015 
2016 /*************************************************
2017  * FileSegment : InformationObject
2018  *************************************************/
2019 
2020 typedef struct sFileSegment* FileSegment;
2021 
2022 FileSegment
2023 FileSegment_create(FileSegment self, int ioa, uint16_t nof, uint8_t nos, uint8_t* data, uint8_t los);
2024 
2025 uint16_t
2026 FileSegment_getNOF(FileSegment self);
2027 
2028 uint8_t
2029 FileSegment_getNameOfSection(FileSegment self);
2030 
2031 uint8_t
2032 FileSegment_getLengthOfSegment(FileSegment self);
2033 
2034 uint8_t*
2035 FileSegment_getSegmentData(FileSegment self);
2036 
2037 int
2038 FileSegment_GetMaxDataSize(CS101_AppLayerParameters parameters);
2039 
2040 void
2041 FileSegment_destroy(FileSegment self);
2042 
2043 /*************************************************
2044  * FileDirectory: InformationObject
2045  *************************************************/
2046 
2047 typedef struct sFileDirectory* FileDirectory;
2048 
2049 FileDirectory
2050 FileDirectory_create(FileDirectory self, int ioa, uint16_t nof, int lengthOfFile, uint8_t sof, const CP56Time2a creationTime);
2051 
2052 uint16_t
2053 FileDirectory_getNOF(FileDirectory self);
2054 
2055 uint8_t
2056 FileDirectory_getSOF(FileDirectory self);
2057 
2058 int
2059 FileDirectory_getSTATUS(FileDirectory self);
2060 
2061 bool
2062 FileDirectory_getLFD(FileDirectory self);
2063 
2064 bool
2065 FileDirectory_getFOR(FileDirectory self);
2066 
2067 bool
2068 FileDirectory_getFA(FileDirectory self);
2069 
2070 uint8_t
2071 FileDirectory_getLengthOfFile(FileDirectory self);
2072 
2073 CP56Time2a
2074 FileDirectory_getCreationTime(FileDirectory self);
2075 
2076 void
2077 FileDirectory_destroy(FileDirectory self);
2078 
2079 /*************************************************
2080  * QueryLog: InformationObject
2081  *************************************************/
2082 
2083 typedef struct sQueryLog* QueryLog;
2084 
2085 QueryLog
2086 QueryLog_create(QueryLog self, int ioa, uint16_t nof, const CP56Time2a rangeStartTime, const CP56Time2a rangeStopTime);
2087 
2088 uint16_t
2089 QueryLog_getNOF(QueryLog self);
2090 
2091 CP56Time2a
2092 QueryLog_getRangeStartTime(QueryLog self);
2093 
2094 
2095 CP56Time2a
2096 QueryLog_getRangeStopTime(QueryLog self);
2097 
2098 void
2099 QueryLog_destroy(QueryLog self);
2100 
2105 #ifdef __cplusplus
2106 }
2107 #endif
2108 
2109 #endif /* SRC_INC_INFORMATION_OBJECTS_H_ */
SingleCommandWithCP56Time2a SingleCommandWithCP56Time2a_create(SingleCommandWithCP56Time2a self, int ioa, bool command, bool selectCommand, int qu, const CP56Time2a timestamp)
Create a single command with CP56Time2a time stamp information object.
bool SingleCommand_getState(SingleCommand self)
Get the state (command) value.
SetpointCommandScaled SetpointCommandScaled_create(SetpointCommandScaled self, int ioa, int value, bool selectCommand, int ql)
Create a scaled set point command information object.
SetpointCommandShort SetpointCommandShort_create(SetpointCommandShort self, int ioa, float value, bool selectCommand, int ql)
Create a short floating point set point command information object.
int StepCommand_getQU(StepCommand self)
Get the qualifier of command QU value.
QualifierOfParameterMV ParameterScaledValue_getQPM(ParameterScaledValue self)
Returns the qualifier of measured values (QPM)
bool SetpointCommandShort_isSelect(SetpointCommandShort self)
Return the value of the S/E bit of the qualifier of command.
uint8_t QualifierOfCIC
QCC (Qualifier of counter interrogation command) according to IEC 60870-5-101:2003 7....
Definition: cs101_information_objects.h:185
SingleCommand SingleCommand_create(SingleCommand self, int ioa, bool command, bool selectCommand, int qu)
Create a single point command information object.
FileReady FileReady_create(FileReady self, int ioa, uint16_t nof, uint32_t lengthOfFile, bool positive)
Create a new instance of FileReady information object.
int DoubleCommand_getState(DoubleCommand self)
Get the state (command) value.
StepPositionInformation StepPositionInformation_create(StepPositionInformation self, int ioa, int value, bool isTransient, QualityDescriptor quality)
Create a new instance of StepPositionInformation information object.
IntegratedTotalsWithCP56Time2a IntegratedTotalsWithCP56Time2a_create(IntegratedTotalsWithCP56Time2a self, int ioa, const BinaryCounterReading value, const CP56Time2a timestamp)
Create a new instance of IntegratedTotalsWithCP56Time2a information object.
uint8_t OutputCircuitInfo
Output circuit information (OCI) of protection equipment according to IEC 60870-5-101:2003 7....
Definition: cs101_information_objects.h:80
SetpointCommandNormalized SetpointCommandNormalized_create(SetpointCommandNormalized self, int ioa, float value, bool selectCommand, int ql)
Create a normalized set point command information object.
StepCommandValue
Regulating step command state (RCS) according to IEC 60870-5-101:2003 7.2.6.17.
Definition: cs101_information_objects.h:238
uint8_t SelectAndCallQualifier
Select And Call Qualifier (SCQ) according to IEC 60870-5-101:2003 7.2.6.30.
Definition: cs101_information_objects.h:131
int SingleCommand_getQU(SingleCommand self)
Get the qualifier of command QU value.
bool SingleCommand_isSelect(SingleCommand self)
Return the value of the S/E bit of the qualifier of command.
uint8_t QualifierOfCommand
Qualifier Of Command (QOC) according to IEC 60870-5-101:2003 7.2.6.26.
Definition: cs101_information_objects.h:120
void InformationObject_destroy(InformationObject self)
Destroy object - free all related resources.
ParameterNormalizedValue ParameterNormalizedValue_create(ParameterNormalizedValue self, int ioa, float value, QualifierOfParameterMV qpm)
Create a parameter measured values, normalized (P_ME_NA_1) information object.
DoubleCommand DoubleCommand_create(DoubleCommand self, int ioa, int command, bool selectCommand, int qu)
Create a double command information object.
bool StepCommand_isSelect(StepCommand self)
Return the value of the S/E bit of the qualifier of command.
uint8_t StartEvent
SPE - Start events of protection equipment according to IEC 60870-5-101:2003 7.2.6....
Definition: cs101_information_objects.h:65
IEC60870_5_TypeID
Message type IDs.
Definition: iec60870_common.h:125
IntegratedTotals IntegratedTotals_create(IntegratedTotals self, int ioa, const BinaryCounterReading value)
Create a new instance of IntegratedTotals information object.
bool DoubleCommand_isSelect(DoubleCommand self)
Return the value of the S/E bit of the qualifier of command.
uint8_t QualityDescriptorP
QDP - Quality descriptor for events of protection equipment according to IEC 60870-5-101:2003 7....
Definition: cs101_information_objects.h:51
IntegratedTotalsWithCP24Time2a IntegratedTotalsWithCP24Time2a_create(IntegratedTotalsWithCP24Time2a self, int ioa, const BinaryCounterReading value, const CP24Time2a timestamp)
Create a new instance of IntegratedTotalsWithCP24Time2a information object.
uint8_t QualifierOfRPC
QRP (Qualifier of reset process command) according to IEC 60870-5-101:2003 7.2.6.27.
Definition: cs101_information_objects.h:201
ParameterActivation ParameterActivation_create(ParameterActivation self, int ioa, QualifierOfParameterActivation qpa)
Create a parameter activation (P_AC_NA_1) information object.
QualifierOfParameterMV ParameterFloatValue_getQPM(ParameterFloatValue self)
Returns the qualifier of measured values (QPM)
uint8_t QualifierOfInterrogation
Qualifier of interrogation (QUI) according to IEC 60870-5-101:2003 7.2.6.22.
Definition: cs101_information_objects.h:146
uint8_t QualifierOfParameterMV
Qualifier of parameter of measured values (QPM) according to IEC 60870-5-101:2003 7....
Definition: cs101_information_objects.h:99
ParameterFloatValue ParameterFloatValue_create(ParameterFloatValue self, int ioa, float value, QualifierOfParameterMV qpm)
Create a parameter measured values, short floating point (P_ME_NC_1) information object.
int InformationObject_getMaxSizeInMemory(void)
return the size in memory of a generic InformationObject instance
ParameterScaledValue ParameterScaledValue_create(ParameterScaledValue self, int ioa, int value, QualifierOfParameterMV qpm)
Create a parameter measured values, scaled (P_ME_NB_1) information object.
QualifierOfParameterMV ParameterNormalizedValue_getQPM(ParameterNormalizedValue self)
Returns the qualifier of measured values (QPM)
bool SetpointCommandScaled_isSelect(SetpointCommandScaled self)
Return the value of the S/E bit of the qualifier of command.
CP56Time2a SingleCommandWithCP56Time2a_getTimestamp(SingleCommandWithCP56Time2a self)
Get the time stamp of the command.
bool SetpointCommandNormalized_isSelect(SetpointCommandNormalized self)
Return the value of the S/E bit of the qualifier of command.
uint8_t CauseOfInitialization
Cause of Initialization (COI) according to IEC 60870-5-101:2003 7.2.6.21.
Definition: cs101_information_objects.h:111
int StepPositionInformation_getValue(StepPositionInformation self)
Step position (range -64 ... +63)
QualifierOfParameterActivation ParameterActivation_getQuality(ParameterActivation self)
Get the qualifier of parameter activation (QPA) value.
MeasuredValueScaled MeasuredValueScaled_create(MeasuredValueScaled self, int ioa, int value, QualityDescriptor quality)
Create a new instance of MeasuredValueScaled information object.
int DoubleCommand_getQU(DoubleCommand self)
Get the qualifier of command QU value.
uint8_t QualifierOfParameterActivation
Qualifier of parameter activation (QPA) according to IEC 60870-5-101:2003 7.2.6.25.
Definition: cs101_information_objects.h:211
TestCommandWithCP56Time2a TestCommandWithCP56Time2a_create(TestCommandWithCP56Time2a self, uint16_t tsc, const CP56Time2a timestamp)
Create a test command with CP56Time2a timestamp information object.
Common definitions for IEC 60870-5-101/104 These types are used by CS101/CS104 master and slaves.
Definition: iec60870_common.h:264
Definition: iec60870_common.h:231
Definition: iec60870_common.h:237
Definition: iec60870_common.h:255
Definition: iec60870_common.h:112
Definition: cs101_information_objects.h:266