dnp3  0.9.0
dnp3.h
Go to the documentation of this file.
1 // This library is provided under the terms of a non-commercial license.
2 //
3 // Please refer to the source repository for details:
4 //
5 // https://github.com/stepfunc/dnp3/blob/master/LICENSE.txt
6 //
7 // Please contact Step Function I/O if you are interested in commercial license:
8 //
9 // info@stepfunc.io
10 #pragma once
11 
12 #ifdef __cplusplus
13 extern "C" {
14 #endif
15 
16 #define DNP3_VERSION_MAJOR 0
17 #define DNP3_VERSION_MINOR 9
18 #define DNP3_VERSION_PATCH 0
19 #define DNP3_VERSION_STRING "0.9.0"
20 
21 #include <stdbool.h>
22 #include <stdint.h>
23 
25 
27 typedef enum dnp3_param_error_t
28 {
62 
67 {
68  switch (value)
69  {
70  case DNP3_PARAM_ERROR_OK: return "Ok";
71  case DNP3_PARAM_ERROR_NULL_PARAMETER: return "NullParameter";
72  case DNP3_PARAM_ERROR_ASSOCIATION_DOES_NOT_EXIST: return "AssociationDoesNotExist";
73  case DNP3_PARAM_ERROR_ASSOCIATION_DUPLICATE_ADDRESS: return "AssociationDuplicateAddress";
74  case DNP3_PARAM_ERROR_INVALID_SOCKET_ADDRESS: return "InvalidSocketAddress";
75  case DNP3_PARAM_ERROR_INVALID_DNP3_ADDRESS: return "InvalidDnp3Address";
76  case DNP3_PARAM_ERROR_INVALID_BUFFER_SIZE: return "InvalidBufferSize";
77  case DNP3_PARAM_ERROR_ADDRESS_FILTER_CONFLICT: return "AddressFilterConflict";
78  case DNP3_PARAM_ERROR_SERVER_ALREADY_STARTED: return "ServerAlreadyStarted";
79  case DNP3_PARAM_ERROR_SERVER_BIND_ERROR: return "ServerBindError";
80  case DNP3_PARAM_ERROR_MASTER_ALREADY_SHUTDOWN: return "MasterAlreadyShutdown";
81  case DNP3_PARAM_ERROR_RUNTIME_CREATION_FAILURE: return "RuntimeCreationFailure";
82  case DNP3_PARAM_ERROR_RUNTIME_DESTROYED: return "RuntimeDestroyed";
83  case DNP3_PARAM_ERROR_RUNTIME_CANNOT_BLOCK_WITHIN_ASYNC: return "RuntimeCannotBlockWithinAsync";
84  case DNP3_PARAM_ERROR_LOGGING_ALREADY_CONFIGURED: return "LoggingAlreadyConfigured";
85  case DNP3_PARAM_ERROR_POINT_DOES_NOT_EXIST: return "PointDoesNotExist";
86  default: return "UnknownParamError";
87  }
88 }
89 
90 
92 #define DNP3_FLAG_ONLINE 0x01
93 #define DNP3_FLAG_RESTART 0x02
95 #define DNP3_FLAG_COMM_LOST 0x04
97 #define DNP3_FLAG_REMOTE_FORCED 0x08
99 #define DNP3_FLAG_LOCAL_FORCED 0x10
101 #define DNP3_FLAG_CHATTER_FILTER 0x20
103 #define DNP3_FLAG_OVER_RANGE 0x20
105 #define DNP3_FLAG_DISCONTINUITY 0x40
107 #define DNP3_FLAG_REFERENCE_ERR 0x40
109 
113 typedef enum dnp3_log_level_t
114 {
126 
131 {
132  switch (value)
133  {
134  case DNP3_LOG_LEVEL_ERROR: return "Error";
135  case DNP3_LOG_LEVEL_WARN: return "Warn";
136  case DNP3_LOG_LEVEL_INFO: return "Info";
137  case DNP3_LOG_LEVEL_DEBUG: return "Debug";
138  case DNP3_LOG_LEVEL_TRACE: return "Trace";
139  default: return "UnknownLogLevel";
140  }
141 }
142 
144 typedef enum dnp3_time_format_t
145 {
153 
158 {
159  switch (value)
160  {
161  case DNP3_TIME_FORMAT_NONE: return "None";
162  case DNP3_TIME_FORMAT_RFC3339: return "Rfc3339";
163  case DNP3_TIME_FORMAT_SYSTEM: return "System";
164  default: return "UnknownTimeFormat";
165  }
166 }
167 
170 {
176 
181 {
182  switch (value)
183  {
184  case DNP3_LOG_OUTPUT_FORMAT_TEXT: return "Text";
185  case DNP3_LOG_OUTPUT_FORMAT_JSON: return "Json";
186  default: return "UnknownLogOutputFormat";
187  }
188 }
189 
191 
193 typedef struct dnp3_logging_config_t
194 {
211 
215 {
216  return (dnp3_logging_config_t)
217  {
219  .output_format = DNP3_LOG_OUTPUT_FORMAT_TEXT,
220  .time_format = DNP3_TIME_FORMAT_SYSTEM,
221  .print_level = true,
222  .print_module_info = false,
223  };
224 }
225 
227 typedef struct dnp3_logger_t
228 {
229 
234  void (*on_message)(dnp3_log_level_t, const char*, void*);
237  void (*on_destroy)(void* arg);
239  void* ctx;
240 } dnp3_logger_t;
241 
247  void (*on_message)(dnp3_log_level_t, const char*, void*),
248  void (*on_destroy)(void* arg),
249  void* ctx
250 )
251 {
252  dnp3_logger_t result =
253  {
254  .on_message = on_message,
255  .on_destroy = on_destroy,
256  .ctx = ctx,
257  };
258  return result;
259 }
260 
270 
271 
274 {
284 
289 {
290  switch (value)
291  {
292  case DNP3_APP_DECODE_LEVEL_NOTHING: return "Nothing";
293  case DNP3_APP_DECODE_LEVEL_HEADER: return "Header";
294  case DNP3_APP_DECODE_LEVEL_OBJECT_HEADERS: return "ObjectHeaders";
295  case DNP3_APP_DECODE_LEVEL_OBJECT_VALUES: return "ObjectValues";
296  default: return "UnknownAppDecodeLevel";
297  }
298 }
299 
302 {
310 
315 {
316  switch (value)
317  {
318  case DNP3_TRANSPORT_DECODE_LEVEL_NOTHING: return "Nothing";
319  case DNP3_TRANSPORT_DECODE_LEVEL_HEADER: return "Header";
320  case DNP3_TRANSPORT_DECODE_LEVEL_PAYLOAD: return "Payload";
321  default: return "UnknownTransportDecodeLevel";
322  }
323 }
324 
327 {
335 
340 {
341  switch (value)
342  {
343  case DNP3_LINK_DECODE_LEVEL_NOTHING: return "Nothing";
344  case DNP3_LINK_DECODE_LEVEL_HEADER: return "Header";
345  case DNP3_LINK_DECODE_LEVEL_PAYLOAD: return "Payload";
346  default: return "UnknownLinkDecodeLevel";
347  }
348 }
349 
352 {
360 
365 {
366  switch (value)
367  {
368  case DNP3_PHYS_DECODE_LEVEL_NOTHING: return "Nothing";
369  case DNP3_PHYS_DECODE_LEVEL_LENGTH: return "Length";
370  case DNP3_PHYS_DECODE_LEVEL_DATA: return "Data";
371  default: return "UnknownPhysDecodeLevel";
372  }
373 }
374 
376 
378 typedef struct dnp3_decode_level_t
379 {
393 
397 {
398  return (dnp3_decode_level_t)
399  {
403  .physical = DNP3_PHYS_DECODE_LEVEL_NOTHING,
404  };
405 }
406 
409 
411 
413 typedef struct dnp3_runtime_config_t
414 {
421 
425 {
426  return (dnp3_runtime_config_t)
427  {
428  .num_core_threads = 0,
429  };
430 }
431 
439 
444 void dnp3_runtime_destroy(dnp3_runtime_t* runtime);
445 
446 
448 
450 typedef struct dnp3_control_t
451 {
453  bool fir;
455  bool fin;
457  bool con;
459  bool uns;
461  uint8_t seq;
463 
471 static dnp3_control_t dnp3_control_init(bool fir, bool fin, bool con, bool uns, uint8_t seq)
472 {
473  return (dnp3_control_t)
474  {
475  .fir = fir,
476  .fin = fin,
477  .con = con,
478  .uns = uns,
479  .seq = seq,
480  };
481 }
482 
485 {
495 
500 {
501  switch (value)
502  {
503  case DNP3_TRIP_CLOSE_CODE_NUL: return "Nul";
504  case DNP3_TRIP_CLOSE_CODE_CLOSE: return "Close";
505  case DNP3_TRIP_CLOSE_CODE_TRIP: return "Trip";
506  case DNP3_TRIP_CLOSE_CODE_RESERVED: return "Reserved";
507  default: return "UnknownTripCloseCode";
508  }
509 }
510 
512 typedef enum dnp3_op_type_t
513 {
525 
529 static const char* dnp3_op_type_to_string(dnp3_op_type_t value)
530 {
531  switch (value)
532  {
533  case DNP3_OP_TYPE_NUL: return "Nul";
534  case DNP3_OP_TYPE_PULSE_ON: return "PulseOn";
535  case DNP3_OP_TYPE_PULSE_OFF: return "PulseOff";
536  case DNP3_OP_TYPE_LATCH_ON: return "LatchOn";
537  case DNP3_OP_TYPE_LATCH_OFF: return "LatchOff";
538  default: return "UnknownOpType";
539  }
540 }
541 
543 
545 typedef struct dnp3_control_code_t
546 {
550  bool clear;
553  bool queue;
557 
564 {
565  return (dnp3_control_code_t)
566  {
567  .tcc = tcc,
568  .clear = clear,
569  .queue = false,
570  .op_type = op_type,
571  };
572 }
573 
574 typedef struct dnp3_g12v1_t dnp3_g12v1_t;
575 
577 typedef struct dnp3_g12v1_t
578 {
582  uint8_t count;
584  uint32_t on_time;
586  uint32_t off_time;
587 } dnp3_g12v1_t;
588 
595 static dnp3_g12v1_t dnp3_g12v1_init(dnp3_control_code_t code, uint8_t count, uint32_t on_time, uint32_t off_time)
596 {
597  return (dnp3_g12v1_t)
598  {
599  .code = code,
600  .count = count,
601  .on_time = on_time,
602  .off_time = off_time,
603  };
604 }
605 
606 typedef struct dnp3_flags_t dnp3_flags_t;
607 
609 typedef struct dnp3_flags_t
610 {
612  uint8_t value;
613 } dnp3_flags_t;
614 
618 static dnp3_flags_t dnp3_flags_init(uint8_t value)
619 {
620  return (dnp3_flags_t)
621  {
622  .value = value,
623  };
624 }
625 
628 {
636 
641 {
642  switch (value)
643  {
644  case DNP3_TIME_QUALITY_SYNCHRONIZED: return "Synchronized";
645  case DNP3_TIME_QUALITY_NOT_SYNCHRONIZED: return "NotSynchronized";
646  case DNP3_TIME_QUALITY_INVALID: return "Invalid";
647  default: return "UnknownTimeQuality";
648  }
649 }
650 
652 
654 typedef struct dnp3_timestamp_t
655 {
657  uint64_t value;
661 
667 {
668  return (dnp3_timestamp_t)
669  {
670  .value = value,
671  .quality = quality,
672  };
673 }
674 
678 
683 
688 
689 
691 typedef enum dnp3_double_bit_t
692 {
702 
707 {
708  switch (value)
709  {
710  case DNP3_DOUBLE_BIT_INTERMEDIATE: return "Intermediate";
711  case DNP3_DOUBLE_BIT_DETERMINED_OFF: return "DeterminedOff";
712  case DNP3_DOUBLE_BIT_DETERMINED_ON: return "DeterminedOn";
713  case DNP3_DOUBLE_BIT_INDETERMINATE: return "Indeterminate";
714  default: return "UnknownDoubleBit";
715  }
716 }
717 
719 
721 typedef struct dnp3_binary_t
722 {
724  uint16_t index;
726  bool value;
731 } dnp3_binary_t;
732 
739 static dnp3_binary_t dnp3_binary_init(uint16_t index, bool value, dnp3_flags_t flags, dnp3_timestamp_t time)
740 {
741  return (dnp3_binary_t)
742  {
743  .index = index,
744  .value = value,
745  .flags = flags,
746  .time = time,
747  };
748 }
749 
752 
757 
758 
760 
763 {
765  uint16_t index;
773 
781 {
782  return (dnp3_double_bit_binary_t)
783  {
784  .index = index,
785  .value = value,
786  .flags = flags,
787  .time = time,
788  };
789 }
790 
793 
798 
799 
801 
804 {
806  uint16_t index;
808  bool value;
814 
822 {
824  {
825  .index = index,
826  .value = value,
827  .flags = flags,
828  .time = time,
829  };
830 }
831 
834 
839 
840 
842 
844 typedef struct dnp3_counter_t
845 {
847  uint16_t index;
849  uint32_t value;
855 
862 static dnp3_counter_t dnp3_counter_init(uint16_t index, uint32_t value, dnp3_flags_t flags, dnp3_timestamp_t time)
863 {
864  return (dnp3_counter_t)
865  {
866  .index = index,
867  .value = value,
868  .flags = flags,
869  .time = time,
870  };
871 }
872 
875 
880 
881 
883 
885 typedef struct dnp3_frozen_counter_t
886 {
888  uint16_t index;
890  uint32_t value;
896 
903 static dnp3_frozen_counter_t dnp3_frozen_counter_init(uint16_t index, uint32_t value, dnp3_flags_t flags, dnp3_timestamp_t time)
904 {
905  return (dnp3_frozen_counter_t)
906  {
907  .index = index,
908  .value = value,
909  .flags = flags,
910  .time = time,
911  };
912 }
913 
916 
921 
922 
924 
926 typedef struct dnp3_analog_t
927 {
929  uint16_t index;
931  double value;
936 } dnp3_analog_t;
937 
944 static dnp3_analog_t dnp3_analog_init(uint16_t index, double value, dnp3_flags_t flags, dnp3_timestamp_t time)
945 {
946  return (dnp3_analog_t)
947  {
948  .index = index,
949  .value = value,
950  .flags = flags,
951  .time = time,
952  };
953 }
954 
957 
962 
963 
965 
968 {
970  uint16_t index;
972  double value;
978 
986 {
988  {
989  .index = index,
990  .value = value,
991  .flags = flags,
992  .time = time,
993  };
994 }
995 
998 
1003 
1004 
1005 typedef struct dnp3_byte_t dnp3_byte_t;
1006 
1008 typedef struct dnp3_byte_t
1009 {
1011  uint8_t value;
1012 } dnp3_byte_t;
1013 
1017 static dnp3_byte_t dnp3_byte_init(uint8_t value)
1018 {
1019  return (dnp3_byte_t)
1020  {
1021  .value = value,
1022  };
1023 }
1024 
1027 
1032 
1033 
1035 
1037 typedef struct dnp3_octet_string_t
1038 {
1040  uint16_t index;
1044 
1050 {
1051  return (dnp3_octet_string_t)
1052  {
1053  .index = index,
1054  .value = value,
1055  };
1056 }
1057 
1060 
1065 
1066 
1068 typedef enum dnp3_port_state_t
1069 {
1079 
1084 {
1085  switch (value)
1086  {
1087  case DNP3_PORT_STATE_DISABLED: return "Disabled";
1088  case DNP3_PORT_STATE_WAIT: return "Wait";
1089  case DNP3_PORT_STATE_OPEN: return "Open";
1090  case DNP3_PORT_STATE_SHUTDOWN: return "Shutdown";
1091  default: return "UnknownPortState";
1092  }
1093 }
1094 
1097 {
1098 
1102  void (*on_change)(dnp3_port_state_t, void*);
1105  void (*on_destroy)(void* arg);
1107  void* ctx;
1109 
1115  void (*on_change)(dnp3_port_state_t, void*),
1116  void (*on_destroy)(void* arg),
1117  void* ctx
1118 )
1119 {
1120  dnp3_port_state_listener_t result =
1121  {
1122  .on_change = on_change,
1123  .on_destroy = on_destroy,
1124  .ctx = ctx,
1125  };
1126  return result;
1127 }
1128 
1130 typedef enum dnp3_variation_t
1131 {
1319 
1324 {
1325  switch (value)
1326  {
1327  case DNP3_VARIATION_GROUP1_VAR0: return "Group1Var0";
1328  case DNP3_VARIATION_GROUP1_VAR1: return "Group1Var1";
1329  case DNP3_VARIATION_GROUP1_VAR2: return "Group1Var2";
1330  case DNP3_VARIATION_GROUP2_VAR0: return "Group2Var0";
1331  case DNP3_VARIATION_GROUP2_VAR1: return "Group2Var1";
1332  case DNP3_VARIATION_GROUP2_VAR2: return "Group2Var2";
1333  case DNP3_VARIATION_GROUP2_VAR3: return "Group2Var3";
1334  case DNP3_VARIATION_GROUP3_VAR0: return "Group3Var0";
1335  case DNP3_VARIATION_GROUP3_VAR1: return "Group3Var1";
1336  case DNP3_VARIATION_GROUP3_VAR2: return "Group3Var2";
1337  case DNP3_VARIATION_GROUP4_VAR0: return "Group4Var0";
1338  case DNP3_VARIATION_GROUP4_VAR1: return "Group4Var1";
1339  case DNP3_VARIATION_GROUP4_VAR2: return "Group4Var2";
1340  case DNP3_VARIATION_GROUP4_VAR3: return "Group4Var3";
1341  case DNP3_VARIATION_GROUP10_VAR0: return "Group10Var0";
1342  case DNP3_VARIATION_GROUP10_VAR1: return "Group10Var1";
1343  case DNP3_VARIATION_GROUP10_VAR2: return "Group10Var2";
1344  case DNP3_VARIATION_GROUP11_VAR0: return "Group11Var0";
1345  case DNP3_VARIATION_GROUP11_VAR1: return "Group11Var1";
1346  case DNP3_VARIATION_GROUP11_VAR2: return "Group11Var2";
1347  case DNP3_VARIATION_GROUP12_VAR0: return "Group12Var0";
1348  case DNP3_VARIATION_GROUP12_VAR1: return "Group12Var1";
1349  case DNP3_VARIATION_GROUP20_VAR0: return "Group20Var0";
1350  case DNP3_VARIATION_GROUP20_VAR1: return "Group20Var1";
1351  case DNP3_VARIATION_GROUP20_VAR2: return "Group20Var2";
1352  case DNP3_VARIATION_GROUP20_VAR5: return "Group20Var5";
1353  case DNP3_VARIATION_GROUP20_VAR6: return "Group20Var6";
1354  case DNP3_VARIATION_GROUP21_VAR0: return "Group21Var0";
1355  case DNP3_VARIATION_GROUP21_VAR1: return "Group21Var1";
1356  case DNP3_VARIATION_GROUP21_VAR2: return "Group21Var2";
1357  case DNP3_VARIATION_GROUP21_VAR5: return "Group21Var5";
1358  case DNP3_VARIATION_GROUP21_VAR6: return "Group21Var6";
1359  case DNP3_VARIATION_GROUP21_VAR9: return "Group21Var9";
1360  case DNP3_VARIATION_GROUP21_VAR10: return "Group21Var10";
1361  case DNP3_VARIATION_GROUP22_VAR0: return "Group22Var0";
1362  case DNP3_VARIATION_GROUP22_VAR1: return "Group22Var1";
1363  case DNP3_VARIATION_GROUP22_VAR2: return "Group22Var2";
1364  case DNP3_VARIATION_GROUP22_VAR5: return "Group22Var5";
1365  case DNP3_VARIATION_GROUP22_VAR6: return "Group22Var6";
1366  case DNP3_VARIATION_GROUP23_VAR0: return "Group23Var0";
1367  case DNP3_VARIATION_GROUP23_VAR1: return "Group23Var1";
1368  case DNP3_VARIATION_GROUP23_VAR2: return "Group23Var2";
1369  case DNP3_VARIATION_GROUP23_VAR5: return "Group23Var5";
1370  case DNP3_VARIATION_GROUP23_VAR6: return "Group23Var6";
1371  case DNP3_VARIATION_GROUP30_VAR0: return "Group30Var0";
1372  case DNP3_VARIATION_GROUP30_VAR1: return "Group30Var1";
1373  case DNP3_VARIATION_GROUP30_VAR2: return "Group30Var2";
1374  case DNP3_VARIATION_GROUP30_VAR3: return "Group30Var3";
1375  case DNP3_VARIATION_GROUP30_VAR4: return "Group30Var4";
1376  case DNP3_VARIATION_GROUP30_VAR5: return "Group30Var5";
1377  case DNP3_VARIATION_GROUP30_VAR6: return "Group30Var6";
1378  case DNP3_VARIATION_GROUP32_VAR0: return "Group32Var0";
1379  case DNP3_VARIATION_GROUP32_VAR1: return "Group32Var1";
1380  case DNP3_VARIATION_GROUP32_VAR2: return "Group32Var2";
1381  case DNP3_VARIATION_GROUP32_VAR3: return "Group32Var3";
1382  case DNP3_VARIATION_GROUP32_VAR4: return "Group32Var4";
1383  case DNP3_VARIATION_GROUP32_VAR5: return "Group32Var5";
1384  case DNP3_VARIATION_GROUP32_VAR6: return "Group32Var6";
1385  case DNP3_VARIATION_GROUP32_VAR7: return "Group32Var7";
1386  case DNP3_VARIATION_GROUP32_VAR8: return "Group32Var8";
1387  case DNP3_VARIATION_GROUP40_VAR0: return "Group40Var0";
1388  case DNP3_VARIATION_GROUP40_VAR1: return "Group40Var1";
1389  case DNP3_VARIATION_GROUP40_VAR2: return "Group40Var2";
1390  case DNP3_VARIATION_GROUP40_VAR3: return "Group40Var3";
1391  case DNP3_VARIATION_GROUP40_VAR4: return "Group40Var4";
1392  case DNP3_VARIATION_GROUP41_VAR0: return "Group41Var0";
1393  case DNP3_VARIATION_GROUP41_VAR1: return "Group41Var1";
1394  case DNP3_VARIATION_GROUP41_VAR2: return "Group41Var2";
1395  case DNP3_VARIATION_GROUP41_VAR3: return "Group41Var3";
1396  case DNP3_VARIATION_GROUP41_VAR4: return "Group41Var4";
1397  case DNP3_VARIATION_GROUP42_VAR0: return "Group42Var0";
1398  case DNP3_VARIATION_GROUP42_VAR1: return "Group42Var1";
1399  case DNP3_VARIATION_GROUP42_VAR2: return "Group42Var2";
1400  case DNP3_VARIATION_GROUP42_VAR3: return "Group42Var3";
1401  case DNP3_VARIATION_GROUP42_VAR4: return "Group42Var4";
1402  case DNP3_VARIATION_GROUP42_VAR5: return "Group42Var5";
1403  case DNP3_VARIATION_GROUP42_VAR6: return "Group42Var6";
1404  case DNP3_VARIATION_GROUP42_VAR7: return "Group42Var7";
1405  case DNP3_VARIATION_GROUP42_VAR8: return "Group42Var8";
1406  case DNP3_VARIATION_GROUP50_VAR1: return "Group50Var1";
1407  case DNP3_VARIATION_GROUP50_VAR3: return "Group50Var3";
1408  case DNP3_VARIATION_GROUP50_VAR4: return "Group50Var4";
1409  case DNP3_VARIATION_GROUP51_VAR1: return "Group51Var1";
1410  case DNP3_VARIATION_GROUP51_VAR2: return "Group51Var2";
1411  case DNP3_VARIATION_GROUP52_VAR1: return "Group52Var1";
1412  case DNP3_VARIATION_GROUP52_VAR2: return "Group52Var2";
1413  case DNP3_VARIATION_GROUP60_VAR1: return "Group60Var1";
1414  case DNP3_VARIATION_GROUP60_VAR2: return "Group60Var2";
1415  case DNP3_VARIATION_GROUP60_VAR3: return "Group60Var3";
1416  case DNP3_VARIATION_GROUP60_VAR4: return "Group60Var4";
1417  case DNP3_VARIATION_GROUP80_VAR1: return "Group80Var1";
1418  case DNP3_VARIATION_GROUP110: return "Group110";
1419  case DNP3_VARIATION_GROUP111: return "Group111";
1420  default: return "UnknownVariation";
1421  }
1422 }
1423 
1425 
1430 {
1434  uint64_t min_delay;
1438  uint64_t max_delay;
1440 
1444 {
1445  return (dnp3_retry_strategy_t)
1446  {
1447  .min_delay = 1000,
1448  .max_delay = 10000,
1449  };
1450 }
1451 
1453 typedef enum dnp3_data_bits_t
1454 {
1464 
1469 {
1470  switch (value)
1471  {
1472  case DNP3_DATA_BITS_FIVE: return "Five";
1473  case DNP3_DATA_BITS_SIX: return "Six";
1474  case DNP3_DATA_BITS_SEVEN: return "Seven";
1475  case DNP3_DATA_BITS_EIGHT: return "Eight";
1476  default: return "UnknownDataBits";
1477  }
1478 }
1479 
1482 {
1490 
1495 {
1496  switch (value)
1497  {
1498  case DNP3_FLOW_CONTROL_NONE: return "None";
1499  case DNP3_FLOW_CONTROL_SOFTWARE: return "Software";
1500  case DNP3_FLOW_CONTROL_HARDWARE: return "Hardware";
1501  default: return "UnknownFlowControl";
1502  }
1503 }
1504 
1506 typedef enum dnp3_parity_t
1507 {
1514 } dnp3_parity_t;
1515 
1519 static const char* dnp3_parity_to_string(dnp3_parity_t value)
1520 {
1521  switch (value)
1522  {
1523  case DNP3_PARITY_NONE: return "None";
1524  case DNP3_PARITY_ODD: return "Odd";
1525  case DNP3_PARITY_EVEN: return "Even";
1526  default: return "UnknownParity";
1527  }
1528 }
1529 
1531 typedef enum dnp3_stop_bits_t
1532 {
1538 
1543 {
1544  switch (value)
1545  {
1546  case DNP3_STOP_BITS_ONE: return "One";
1547  case DNP3_STOP_BITS_TWO: return "Two";
1548  default: return "UnknownStopBits";
1549  }
1550 }
1551 
1553 
1556 {
1559  uint32_t baud_rate;
1573 
1577 {
1579  {
1580  .baud_rate = 9600,
1581  .data_bits = DNP3_DATA_BITS_EIGHT,
1582  .flow_control = DNP3_FLOW_CONTROL_NONE,
1583  .parity = DNP3_PARITY_NONE,
1584  .stop_bits = DNP3_STOP_BITS_ONE,
1585  };
1586 }
1587 
1590 {
1596 
1601 {
1602  switch (value)
1603  {
1604  case DNP3_LINK_ERROR_MODE_DISCARD: return "Discard";
1605  case DNP3_LINK_ERROR_MODE_CLOSE: return "Close";
1606  default: return "UnknownLinkErrorMode";
1607  }
1608 }
1609 
1612 {
1618 
1623 {
1624  switch (value)
1625  {
1626  case DNP3_RESPONSE_FUNCTION_RESPONSE: return "Response";
1627  case DNP3_RESPONSE_FUNCTION_UNSOLICITED_RESPONSE: return "UnsolicitedResponse";
1628  default: return "UnknownResponseFunction";
1629  }
1630 }
1631 
1632 typedef struct dnp3_iin1_t dnp3_iin1_t;
1633 
1635 typedef struct dnp3_iin1_t
1636 {
1638  uint8_t value;
1639 } dnp3_iin1_t;
1640 
1644 static dnp3_iin1_t dnp3_iin1_init(uint8_t value)
1645 {
1646  return (dnp3_iin1_t)
1647  {
1648  .value = value,
1649  };
1650 }
1651 
1653 typedef enum dnp3_iin1_flag_t
1654 {
1672 
1677 {
1678  switch (value)
1679  {
1680  case DNP3_IIN1_FLAG_BROADCAST: return "Broadcast";
1681  case DNP3_IIN1_FLAG_CLASS1_EVENTS: return "Class1Events";
1682  case DNP3_IIN1_FLAG_CLASS2_EVENTS: return "Class2Events";
1683  case DNP3_IIN1_FLAG_CLASS3_EVENTS: return "Class3Events";
1684  case DNP3_IIN1_FLAG_NEED_TIME: return "NeedTime";
1685  case DNP3_IIN1_FLAG_LOCAL_CONTROL: return "LocalControl";
1686  case DNP3_IIN1_FLAG_DEVICE_TROUBLE: return "DeviceTrouble";
1687  case DNP3_IIN1_FLAG_DEVICE_RESTART: return "DeviceRestart";
1688  default: return "UnknownIIN1Flag";
1689  }
1690 }
1691 
1697 
1698 
1699 typedef struct dnp3_iin2_t dnp3_iin2_t;
1700 
1702 typedef struct dnp3_iin2_t
1703 {
1705  uint8_t value;
1706 } dnp3_iin2_t;
1707 
1711 static dnp3_iin2_t dnp3_iin2_init(uint8_t value)
1712 {
1713  return (dnp3_iin2_t)
1714  {
1715  .value = value,
1716  };
1717 }
1718 
1720 typedef enum dnp3_iin2_flag_t
1721 {
1735 
1740 {
1741  switch (value)
1742  {
1743  case DNP3_IIN2_FLAG_NO_FUNC_CODE_SUPPORT: return "NoFuncCodeSupport";
1744  case DNP3_IIN2_FLAG_OBJECT_UNKNOWN: return "ObjectUnknown";
1745  case DNP3_IIN2_FLAG_PARAMETER_ERROR: return "ParameterError";
1746  case DNP3_IIN2_FLAG_EVENT_BUFFER_OVERFLOW: return "EventBufferOverflow";
1747  case DNP3_IIN2_FLAG_ALREADY_EXECUTING: return "AlreadyExecuting";
1748  case DNP3_IIN2_FLAG_CONFIG_CORRUPT: return "ConfigCorrupt";
1749  default: return "UnknownIIN2Flag";
1750  }
1751 }
1752 
1758 
1759 
1760 typedef struct dnp3_iin_t dnp3_iin_t;
1761 
1763 typedef struct dnp3_iin_t
1764 {
1769 } dnp3_iin_t;
1770 
1776 {
1777  return (dnp3_iin_t)
1778  {
1779  .iin1 = iin1,
1780  .iin2 = iin2,
1781  };
1782 }
1783 
1785 
1788 {
1796 
1803 {
1804  return (dnp3_response_header_t)
1805  {
1806  .control = control,
1807  .func = func,
1808  .iin = iin,
1809  };
1810 }
1811 
1814 {
1832 
1837 {
1838  switch (value)
1839  {
1840  case DNP3_QUALIFIER_CODE_RANGE8: return "Range8";
1841  case DNP3_QUALIFIER_CODE_RANGE16: return "Range16";
1842  case DNP3_QUALIFIER_CODE_ALL_OBJECTS: return "AllObjects";
1843  case DNP3_QUALIFIER_CODE_COUNT8: return "Count8";
1844  case DNP3_QUALIFIER_CODE_COUNT16: return "Count16";
1845  case DNP3_QUALIFIER_CODE_COUNT_AND_PREFIX8: return "CountAndPrefix8";
1846  case DNP3_QUALIFIER_CODE_COUNT_AND_PREFIX16: return "CountAndPrefix16";
1847  case DNP3_QUALIFIER_CODE_FREE_FORMAT16: return "FreeFormat16";
1848  default: return "UnknownQualifierCode";
1849  }
1850 }
1851 
1853 
1855 typedef struct dnp3_header_info_t
1856 {
1862 
1868 {
1869  return (dnp3_header_info_t)
1870  {
1871  .variation = variation,
1872  .qualifier = qualifier,
1873  };
1874 }
1875 
1877 typedef enum dnp3_read_type_t
1878 {
1888 
1893 {
1894  switch (value)
1895  {
1896  case DNP3_READ_TYPE_STARTUP_INTEGRITY: return "StartupIntegrity";
1897  case DNP3_READ_TYPE_UNSOLICITED: return "Unsolicited";
1898  case DNP3_READ_TYPE_SINGLE_POLL: return "SinglePoll";
1899  case DNP3_READ_TYPE_PERIODIC_POLL: return "PeriodicPoll";
1900  default: return "UnknownReadType";
1901  }
1902 }
1903 
1905 typedef struct dnp3_read_handler_t
1906 {
1907 
1913 
1919 
1925 
1931 
1937 
1943 
1949 
1955 
1961 
1969  void (*on_destroy)(void* arg);
1971  void* ctx;
1973 
1988  void (*begin_fragment)(dnp3_read_type_t, dnp3_response_header_t, void*),
1989  void (*end_fragment)(dnp3_read_type_t, dnp3_response_header_t, void*),
1990  void (*handle_binary)(dnp3_header_info_t, dnp3_binary_iterator_t*, void*),
1991  void (*handle_double_bit_binary)(dnp3_header_info_t, dnp3_double_bit_binary_iterator_t*, void*),
1992  void (*handle_binary_output_status)(dnp3_header_info_t, dnp3_binary_output_status_iterator_t*, void*),
1993  void (*handle_counter)(dnp3_header_info_t, dnp3_counter_iterator_t*, void*),
1994  void (*handle_frozen_counter)(dnp3_header_info_t, dnp3_frozen_counter_iterator_t*, void*),
1995  void (*handle_analog)(dnp3_header_info_t, dnp3_analog_iterator_t*, void*),
1996  void (*handle_analog_output_status)(dnp3_header_info_t, dnp3_analog_output_status_iterator_t*, void*),
1997  void (*handle_octet_string)(dnp3_header_info_t, dnp3_octet_string_iterator_t*, void*),
1998  void (*on_destroy)(void* arg),
1999  void* ctx
2000 )
2001 {
2002  dnp3_read_handler_t result =
2003  {
2004  .begin_fragment = begin_fragment,
2005  .end_fragment = end_fragment,
2006  .handle_binary = handle_binary,
2007  .handle_double_bit_binary = handle_double_bit_binary,
2008  .handle_binary_output_status = handle_binary_output_status,
2009  .handle_counter = handle_counter,
2010  .handle_frozen_counter = handle_frozen_counter,
2011  .handle_analog = handle_analog,
2012  .handle_analog_output_status = handle_analog_output_status,
2013  .handle_octet_string = handle_octet_string,
2014  .on_destroy = on_destroy,
2015  .ctx = ctx,
2016  };
2017  return result;
2018 }
2019 
2024 
2030 dnp3_endpoint_list_t* dnp3_endpoint_list_new(const char* main_endpoint);
2031 
2035 
2041 void dnp3_endpoint_list_add(dnp3_endpoint_list_t* list, const char* endpoint);
2042 
2043 
2045 
2048 {
2050  uint16_t address;
2061  uint16_t tx_buffer_size;
2066  uint16_t rx_buffer_size;
2068 
2073 {
2075  {
2076  .address = address,
2077  .decode_level = dnp3_decode_level_init(),
2078  .response_timeout = 5000,
2079  .tx_buffer_size = 2048,
2080  .rx_buffer_size = 2048,
2081  };
2082 }
2083 
2088 {
2102 
2107 {
2108  switch (value)
2109  {
2110  case DNP3_CLIENT_STATE_DISABLED: return "Disabled";
2111  case DNP3_CLIENT_STATE_CONNECTING: return "Connecting";
2112  case DNP3_CLIENT_STATE_CONNECTED: return "Connected";
2113  case DNP3_CLIENT_STATE_WAIT_AFTER_FAILED_CONNECT: return "WaitAfterFailedConnect";
2114  case DNP3_CLIENT_STATE_WAIT_AFTER_DISCONNECT: return "WaitAfterDisconnect";
2115  case DNP3_CLIENT_STATE_SHUTDOWN: return "Shutdown";
2116  default: return "UnknownClientState";
2117  }
2118 }
2119 
2122 {
2123 
2130  void (*on_destroy)(void* arg);
2132  void* ctx;
2134 
2140  void (*on_change)(dnp3_client_state_t, void*),
2141  void (*on_destroy)(void* arg),
2142  void* ctx
2143 )
2144 {
2146  {
2147  .on_change = on_change,
2148  .on_destroy = on_destroy,
2149  .ctx = ctx,
2150  };
2151  return result;
2152 }
2153 
2160 
2162 
2165 {
2179 
2183 {
2184  return (dnp3_connect_strategy_t)
2185  {
2186  .min_connect_delay = 1000,
2187  .max_connect_delay = 10000,
2188  .reconnect_delay = 1000,
2189  };
2190 }
2191 
2202 
2215 
2219 
2224 
2229 
2231 
2236 {
2238  uint16_t address;
2240 
2242 
2246 typedef struct dnp3_poll_id_t
2247 {
2249  uint16_t association_id;
2251  uint64_t id;
2252 } dnp3_poll_id_t;
2253 
2255 
2257 typedef struct dnp3_event_classes_t
2258 {
2260  bool class1;
2262  bool class2;
2264  bool class3;
2266 
2272 static dnp3_event_classes_t dnp3_event_classes_init(bool class1, bool class2, bool class3)
2273 {
2274  return (dnp3_event_classes_t)
2275  {
2276  .class1 = class1,
2277  .class2 = class2,
2278  .class3 = class3,
2279  };
2280 }
2281 
2285 
2289 
2290 
2292 
2294 typedef struct dnp3_classes_t
2295 {
2297  bool class0;
2299  bool class1;
2301  bool class2;
2303  bool class3;
2304 } dnp3_classes_t;
2305 
2312 static dnp3_classes_t dnp3_classes_init(bool class0, bool class1, bool class2, bool class3)
2313 {
2314  return (dnp3_classes_t)
2315  {
2316  .class0 = class0,
2317  .class1 = class1,
2318  .class2 = class2,
2319  .class3 = class3,
2320  };
2321 }
2322 
2326 
2330 
2331 
2334 {
2342 
2347 {
2348  switch (value)
2349  {
2350  case DNP3_AUTO_TIME_SYNC_NONE: return "None";
2351  case DNP3_AUTO_TIME_SYNC_LAN: return "Lan";
2352  case DNP3_AUTO_TIME_SYNC_NON_LAN: return "NonLan";
2353  default: return "UnknownAutoTimeSync";
2354  }
2355 }
2356 
2358 
2361 {
2390 
2397 static dnp3_association_config_t dnp3_association_config_init(dnp3_event_classes_t disable_unsol_classes, dnp3_event_classes_t enable_unsol_classes, dnp3_classes_t startup_integrity_classes, dnp3_event_classes_t event_scan_on_events_available)
2398 {
2399  return (dnp3_association_config_t)
2400  {
2401  .disable_unsol_classes = disable_unsol_classes,
2402  .enable_unsol_classes = enable_unsol_classes,
2403  .startup_integrity_classes = startup_integrity_classes,
2404  .auto_time_sync = DNP3_AUTO_TIME_SYNC_NONE,
2405  .auto_tasks_retry_strategy = dnp3_retry_strategy_init(),
2406  .keep_alive_timeout = 60,
2407  .auto_integrity_scan_on_buffer_overflow = true,
2408  .event_scan_on_events_available = event_scan_on_events_available,
2409  .max_queued_user_requests = 16,
2410  };
2411 }
2412 
2414 
2418 typedef struct dnp3_timestamp_utc_t
2419 {
2423  uint64_t value;
2425  bool is_valid;
2427 
2432 static dnp3_timestamp_utc_t dnp3_timestamp_utc_init(uint64_t value, bool is_valid)
2433 {
2434  return (dnp3_timestamp_utc_t)
2435  {
2436  .value = value,
2437  .is_valid = is_valid,
2438  };
2439 }
2440 
2445 
2449 
2450 
2453 {
2454 
2465  void (*on_destroy)(void* arg);
2467  void* ctx;
2469 
2475  dnp3_timestamp_utc_t (*get_current_time)(void*),
2476  void (*on_destroy)(void* arg),
2477  void* ctx
2478 )
2479 {
2480  dnp3_association_handler_t result =
2481  {
2482  .get_current_time = get_current_time,
2483  .on_destroy = on_destroy,
2484  .ctx = ctx,
2485  };
2486  return result;
2487 }
2488 
2493 
2497 
2506 dnp3_request_t* dnp3_request_new_class(bool class0, bool class1, bool class2, bool class3);
2507 
2510 void dnp3_request_destroy(dnp3_request_t* request);
2511 
2517 void dnp3_request_add_one_byte_header(dnp3_request_t* request, dnp3_variation_t variation, uint8_t start, uint8_t stop);
2518 
2524 void dnp3_request_add_two_byte_header(dnp3_request_t* request, dnp3_variation_t variation, uint16_t start, uint16_t stop);
2525 
2530 
2531 
2541 
2547 
2558 
2566 
2576 
2582 
2588 
2591 {
2609 
2614 {
2615  switch (value)
2616  {
2617  case DNP3_READ_RESULT_SUCCESS: return "Success";
2618  case DNP3_READ_RESULT_TOO_MANY_REQUESTS: return "TooManyRequests";
2619  case DNP3_READ_RESULT_BAD_RESPONSE: return "BadResponse";
2620  case DNP3_READ_RESULT_RESPONSE_TIMEOUT: return "ResponseTimeout";
2621  case DNP3_READ_RESULT_WRITE_ERROR: return "WriteError";
2622  case DNP3_READ_RESULT_NO_CONNECTION: return "NoConnection";
2623  case DNP3_READ_RESULT_SHUTDOWN: return "Shutdown";
2624  case DNP3_READ_RESULT_ASSOCIATION_REMOVED: return "AssociationRemoved";
2625  default: return "UnknownReadResult";
2626  }
2627 }
2628 
2631 {
2632 
2639  void (*on_destroy)(void* arg);
2641  void* ctx;
2643 
2649  void (*on_complete)(dnp3_read_result_t, void*),
2650  void (*on_destroy)(void* arg),
2651  void* ctx
2652 )
2653 {
2654  dnp3_read_task_callback_t result =
2655  {
2656  .on_complete = on_complete,
2657  .on_destroy = on_destroy,
2658  .ctx = ctx,
2659  };
2660  return result;
2661 }
2662 
2672 
2675 
2679 
2682 void dnp3_commands_destroy(dnp3_commands_t* command);
2683 
2687 
2692 void dnp3_commands_add_g12v1_u8(dnp3_commands_t* command, uint8_t idx, dnp3_g12v1_t header);
2693 
2698 void dnp3_commands_add_g12v1_u16(dnp3_commands_t* command, uint16_t idx, dnp3_g12v1_t header);
2699 
2704 void dnp3_commands_add_g41v1_u8(dnp3_commands_t* command, uint8_t idx, int32_t value);
2705 
2710 void dnp3_commands_add_g41v1_u16(dnp3_commands_t* command, uint16_t idx, int32_t value);
2711 
2716 void dnp3_commands_add_g41v2_u8(dnp3_commands_t* command, uint8_t idx, int16_t value);
2717 
2722 void dnp3_commands_add_g41v2_u16(dnp3_commands_t* command, uint16_t idx, int16_t value);
2723 
2728 void dnp3_commands_add_g41v3_u8(dnp3_commands_t* command, uint8_t idx, float value);
2729 
2734 void dnp3_commands_add_g41v3_u16(dnp3_commands_t* commands, uint16_t idx, float value);
2735 
2740 void dnp3_commands_add_g41v4_u8(dnp3_commands_t* commands, uint8_t idx, double value);
2741 
2746 void dnp3_commands_add_g41v4_u16(dnp3_commands_t* commands, uint16_t idx, double value);
2747 
2748 
2751 {
2757 
2762 {
2763  switch (value)
2764  {
2765  case DNP3_COMMAND_MODE_DIRECT_OPERATE: return "DirectOperate";
2766  case DNP3_COMMAND_MODE_SELECT_BEFORE_OPERATE: return "SelectBeforeOperate";
2767  default: return "UnknownCommandMode";
2768  }
2769 }
2770 
2773 {
2795 
2800 {
2801  switch (value)
2802  {
2803  case DNP3_COMMAND_RESULT_SUCCESS: return "Success";
2804  case DNP3_COMMAND_RESULT_BAD_STATUS: return "BadStatus";
2805  case DNP3_COMMAND_RESULT_HEADER_MISMATCH: return "HeaderMismatch";
2806  case DNP3_COMMAND_RESULT_TOO_MANY_REQUESTS: return "TooManyRequests";
2807  case DNP3_COMMAND_RESULT_BAD_RESPONSE: return "BadResponse";
2808  case DNP3_COMMAND_RESULT_RESPONSE_TIMEOUT: return "ResponseTimeout";
2809  case DNP3_COMMAND_RESULT_WRITE_ERROR: return "WriteError";
2810  case DNP3_COMMAND_RESULT_NO_CONNECTION: return "NoConnection";
2811  case DNP3_COMMAND_RESULT_SHUTDOWN: return "Shutdown";
2812  case DNP3_COMMAND_RESULT_ASSOCIATION_REMOVED: return "AssociationRemoved";
2813  default: return "UnknownCommandResult";
2814  }
2815 }
2816 
2819 {
2820 
2827  void (*on_destroy)(void* arg);
2829  void* ctx;
2831 
2837  void (*on_complete)(dnp3_command_result_t, void*),
2838  void (*on_destroy)(void* arg),
2839  void* ctx
2840 )
2841 {
2843  {
2844  .on_complete = on_complete,
2845  .on_destroy = on_destroy,
2846  .ctx = ctx,
2847  };
2848  return result;
2849 }
2850 
2859 
2862 {
2868 
2873 {
2874  switch (value)
2875  {
2876  case DNP3_TIME_SYNC_MODE_LAN: return "Lan";
2877  case DNP3_TIME_SYNC_MODE_NON_LAN: return "NonLan";
2878  default: return "UnknownTimeSyncMode";
2879  }
2880 }
2881 
2884 {
2916 
2921 {
2922  switch (value)
2923  {
2924  case DNP3_TIME_SYNC_RESULT_SUCCESS: return "Success";
2925  case DNP3_TIME_SYNC_RESULT_CLOCK_ROLLBACK: return "ClockRollback";
2926  case DNP3_TIME_SYNC_RESULT_SYSTEM_TIME_NOT_UNIX: return "SystemTimeNotUnix";
2927  case DNP3_TIME_SYNC_RESULT_BAD_OUTSTATION_TIME_DELAY: return "BadOutstationTimeDelay";
2928  case DNP3_TIME_SYNC_RESULT_OVERFLOW: return "Overflow";
2929  case DNP3_TIME_SYNC_RESULT_STILL_NEEDS_TIME: return "StillNeedsTime";
2930  case DNP3_TIME_SYNC_RESULT_SYSTEM_TIME_NOT_AVAILABLE: return "SystemTimeNotAvailable";
2931  case DNP3_TIME_SYNC_RESULT_IIN_ERROR: return "IinError";
2932  case DNP3_TIME_SYNC_RESULT_TOO_MANY_REQUESTS: return "TooManyRequests";
2933  case DNP3_TIME_SYNC_RESULT_BAD_RESPONSE: return "BadResponse";
2934  case DNP3_TIME_SYNC_RESULT_RESPONSE_TIMEOUT: return "ResponseTimeout";
2935  case DNP3_TIME_SYNC_RESULT_WRITE_ERROR: return "WriteError";
2936  case DNP3_TIME_SYNC_RESULT_NO_CONNECTION: return "NoConnection";
2937  case DNP3_TIME_SYNC_RESULT_SHUTDOWN: return "Shutdown";
2938  case DNP3_TIME_SYNC_RESULT_ASSOCIATION_REMOVED: return "AssociationRemoved";
2939  default: return "UnknownTimeSyncResult";
2940  }
2941 }
2942 
2945 {
2946 
2953  void (*on_destroy)(void* arg);
2955  void* ctx;
2957 
2963  void (*on_complete)(dnp3_time_sync_result_t, void*),
2964  void (*on_destroy)(void* arg),
2965  void* ctx
2966 )
2967 {
2969  {
2970  .on_complete = on_complete,
2971  .on_destroy = on_destroy,
2972  .ctx = ctx,
2973  };
2974  return result;
2975 }
2976 
2984 
2987 {
3005 
3010 {
3011  switch (value)
3012  {
3013  case DNP3_RESTART_ERROR_OK: return "Ok";
3014  case DNP3_RESTART_ERROR_TOO_MANY_REQUESTS: return "TooManyRequests";
3015  case DNP3_RESTART_ERROR_BAD_RESPONSE: return "BadResponse";
3016  case DNP3_RESTART_ERROR_RESPONSE_TIMEOUT: return "ResponseTimeout";
3017  case DNP3_RESTART_ERROR_WRITE_ERROR: return "WriteError";
3018  case DNP3_RESTART_ERROR_NO_CONNECTION: return "NoConnection";
3019  case DNP3_RESTART_ERROR_SHUTDOWN: return "Shutdown";
3020  case DNP3_RESTART_ERROR_ASSOCIATION_REMOVED: return "AssociationRemoved";
3021  default: return "UnknownRestartError";
3022  }
3023 }
3024 
3026 
3029 {
3034  uint64_t delay;
3036 
3042 {
3043  return (dnp3_restart_result_t)
3044  {
3045  .error = error,
3046  .delay = delay,
3047  };
3048 }
3049 
3052 {
3053 
3060  void (*on_destroy)(void* arg);
3062  void* ctx;
3064 
3070  void (*on_complete)(dnp3_restart_result_t, void*),
3071  void (*on_destroy)(void* arg),
3072  void* ctx
3073 )
3074 {
3076  {
3077  .on_complete = on_complete,
3078  .on_destroy = on_destroy,
3079  .ctx = ctx,
3080  };
3081  return result;
3082 }
3083 
3090 
3097 
3100 {
3108 
3113 {
3114  switch (value)
3115  {
3116  case DNP3_LINK_STATUS_RESULT_SUCCESS: return "Success";
3117  case DNP3_LINK_STATUS_RESULT_UNEXPECTED_RESPONSE: return "UnexpectedResponse";
3118  case DNP3_LINK_STATUS_RESULT_TASK_ERROR: return "TaskError";
3119  default: return "UnknownLinkStatusResult";
3120  }
3121 }
3122 
3125 {
3126 
3133  void (*on_destroy)(void* arg);
3135  void* ctx;
3137 
3143  void (*on_complete)(dnp3_link_status_result_t, void*),
3144  void (*on_destroy)(void* arg),
3145  void* ctx
3146 )
3147 {
3148  dnp3_link_status_callback_t result =
3149  {
3150  .on_complete = on_complete,
3151  .on_destroy = on_destroy,
3152  .ctx = ctx,
3153  };
3154  return result;
3155 }
3156 
3163 
3164 
3169 
3172 {
3182 
3187 {
3188  switch (value)
3189  {
3190  case DNP3_EVENT_CLASS_NONE: return "None";
3191  case DNP3_EVENT_CLASS_CLASS1: return "Class1";
3192  case DNP3_EVENT_CLASS_CLASS2: return "Class2";
3193  case DNP3_EVENT_CLASS_CLASS3: return "Class3";
3194  default: return "UnknownEventClass";
3195  }
3196 }
3197 
3199 typedef enum dnp3_event_mode_t
3200 {
3210 
3215 {
3216  switch (value)
3217  {
3218  case DNP3_EVENT_MODE_DETECT: return "Detect";
3219  case DNP3_EVENT_MODE_FORCE: return "Force";
3220  case DNP3_EVENT_MODE_SUPPRESS: return "Suppress";
3221  default: return "UnknownEventMode";
3222  }
3223 }
3224 
3226 
3231 {
3239 
3243 {
3244  return (dnp3_update_options_t)
3245  {
3246  .update_static = true,
3247  .event_mode = DNP3_EVENT_MODE_DETECT,
3248  };
3249 }
3250 
3253 {
3259 
3264 {
3265  switch (value)
3266  {
3267  case DNP3_STATIC_BINARY_VARIATION_GROUP1_VAR1: return "Group1Var1";
3268  case DNP3_STATIC_BINARY_VARIATION_GROUP1_VAR2: return "Group1Var2";
3269  default: return "UnknownStaticBinaryVariation";
3270  }
3271 }
3272 
3275 {
3283 
3288 {
3289  switch (value)
3290  {
3291  case DNP3_EVENT_BINARY_VARIATION_GROUP2_VAR1: return "Group2Var1";
3292  case DNP3_EVENT_BINARY_VARIATION_GROUP2_VAR2: return "Group2Var2";
3293  case DNP3_EVENT_BINARY_VARIATION_GROUP2_VAR3: return "Group2Var3";
3294  default: return "UnknownEventBinaryVariation";
3295  }
3296 }
3297 
3299 
3301 typedef struct dnp3_binary_config_t
3302 {
3310 
3314 {
3315  return (dnp3_binary_config_t)
3316  {
3318  .event_variation = DNP3_EVENT_BINARY_VARIATION_GROUP2_VAR1,
3319  };
3320 }
3321 
3328 bool dnp3_database_add_binary(dnp3_database_t* db, uint16_t index, dnp3_event_class_t point_class, dnp3_binary_config_t config);
3329 
3334 bool dnp3_database_remove_binary(dnp3_database_t* db, uint16_t index);
3335 
3342 
3349 
3352 {
3358 
3363 {
3364  switch (value)
3365  {
3366  case DNP3_STATIC_DOUBLE_BIT_BINARY_VARIATION_GROUP3_VAR1: return "Group3Var1";
3367  case DNP3_STATIC_DOUBLE_BIT_BINARY_VARIATION_GROUP3_VAR2: return "Group3Var2";
3368  default: return "UnknownStaticDoubleBitBinaryVariation";
3369  }
3370 }
3371 
3374 {
3382 
3387 {
3388  switch (value)
3389  {
3390  case DNP3_EVENT_DOUBLE_BIT_BINARY_VARIATION_GROUP4_VAR1: return "Group4Var1";
3391  case DNP3_EVENT_DOUBLE_BIT_BINARY_VARIATION_GROUP4_VAR2: return "Group4Var2";
3392  case DNP3_EVENT_DOUBLE_BIT_BINARY_VARIATION_GROUP4_VAR3: return "Group4Var3";
3393  default: return "UnknownEventDoubleBitBinaryVariation";
3394  }
3395 }
3396 
3398 
3401 {
3409 
3413 {
3415  {
3418  };
3419 }
3420 
3428 
3434 
3441 
3448 
3451 {
3457 
3462 {
3463  switch (value)
3464  {
3467  default: return "UnknownStaticBinaryOutputStatusVariation";
3468  }
3469 }
3470 
3473 {
3479 
3484 {
3485  switch (value)
3486  {
3487  case DNP3_EVENT_BINARY_OUTPUT_STATUS_VARIATION_GROUP11_VAR1: return "Group11Var1";
3488  case DNP3_EVENT_BINARY_OUTPUT_STATUS_VARIATION_GROUP11_VAR2: return "Group11Var2";
3489  default: return "UnknownEventBinaryOutputStatusVariation";
3490  }
3491 }
3492 
3494 
3497 {
3505 
3509 {
3511  {
3514  };
3515 }
3516 
3524 
3530 
3537 
3544 
3547 {
3557 
3562 {
3563  switch (value)
3564  {
3565  case DNP3_STATIC_COUNTER_VARIATION_GROUP20_VAR1: return "Group20Var1";
3566  case DNP3_STATIC_COUNTER_VARIATION_GROUP20_VAR2: return "Group20Var2";
3567  case DNP3_STATIC_COUNTER_VARIATION_GROUP20_VAR5: return "Group20Var5";
3568  case DNP3_STATIC_COUNTER_VARIATION_GROUP20_VAR6: return "Group20Var6";
3569  default: return "UnknownStaticCounterVariation";
3570  }
3571 }
3572 
3575 {
3585 
3590 {
3591  switch (value)
3592  {
3593  case DNP3_EVENT_COUNTER_VARIATION_GROUP22_VAR1: return "Group22Var1";
3594  case DNP3_EVENT_COUNTER_VARIATION_GROUP22_VAR2: return "Group22Var2";
3595  case DNP3_EVENT_COUNTER_VARIATION_GROUP22_VAR5: return "Group22Var5";
3596  case DNP3_EVENT_COUNTER_VARIATION_GROUP22_VAR6: return "Group22Var6";
3597  default: return "UnknownEventCounterVariation";
3598  }
3599 }
3600 
3602 
3605 {
3614  uint32_t deadband;
3616 
3620 {
3621  return (dnp3_counter_config_t)
3622  {
3624  .event_variation = DNP3_EVENT_COUNTER_VARIATION_GROUP22_VAR1,
3625  .deadband = 0,
3626  };
3627 }
3628 
3635 bool dnp3_database_add_counter(dnp3_database_t* db, uint16_t index, dnp3_event_class_t point_class, dnp3_counter_config_t config);
3636 
3641 bool dnp3_database_remove_counter(dnp3_database_t* db, uint16_t index);
3642 
3649 
3656 
3659 {
3673 
3678 {
3679  switch (value)
3680  {
3681  case DNP3_STATIC_FROZEN_COUNTER_VARIATION_GROUP21_VAR1: return "Group21Var1";
3682  case DNP3_STATIC_FROZEN_COUNTER_VARIATION_GROUP21_VAR2: return "Group21Var2";
3683  case DNP3_STATIC_FROZEN_COUNTER_VARIATION_GROUP21_VAR5: return "Group21Var5";
3684  case DNP3_STATIC_FROZEN_COUNTER_VARIATION_GROUP21_VAR6: return "Group21Var6";
3685  case DNP3_STATIC_FROZEN_COUNTER_VARIATION_GROUP21_VAR9: return "Group21Var9";
3686  case DNP3_STATIC_FROZEN_COUNTER_VARIATION_GROUP21_VAR10: return "Group21Var10";
3687  default: return "UnknownStaticFrozenCounterVariation";
3688  }
3689 }
3690 
3693 {
3703 
3708 {
3709  switch (value)
3710  {
3711  case DNP3_EVENT_FROZEN_COUNTER_VARIATION_GROUP23_VAR1: return "Group23Var1";
3712  case DNP3_EVENT_FROZEN_COUNTER_VARIATION_GROUP23_VAR2: return "Group23Var2";
3713  case DNP3_EVENT_FROZEN_COUNTER_VARIATION_GROUP23_VAR5: return "Group23Var5";
3714  case DNP3_EVENT_FROZEN_COUNTER_VARIATION_GROUP23_VAR6: return "Group23Var6";
3715  default: return "UnknownEventFrozenCounterVariation";
3716  }
3717 }
3718 
3720 
3723 {
3732  uint32_t deadband;
3734 
3738 {
3740  {
3743  .deadband = 0,
3744  };
3745 }
3746 
3754 
3759 bool dnp3_database_remove_frozen_counter(dnp3_database_t* db, uint16_t index);
3760 
3767 
3774 
3777 {
3791 
3796 {
3797  switch (value)
3798  {
3799  case DNP3_STATIC_ANALOG_VARIATION_GROUP30_VAR1: return "Group30Var1";
3800  case DNP3_STATIC_ANALOG_VARIATION_GROUP30_VAR2: return "Group30Var2";
3801  case DNP3_STATIC_ANALOG_VARIATION_GROUP30_VAR3: return "Group30Var3";
3802  case DNP3_STATIC_ANALOG_VARIATION_GROUP30_VAR4: return "Group30Var4";
3803  case DNP3_STATIC_ANALOG_VARIATION_GROUP30_VAR5: return "Group30Var5";
3804  case DNP3_STATIC_ANALOG_VARIATION_GROUP30_VAR6: return "Group30Var6";
3805  default: return "UnknownStaticAnalogVariation";
3806  }
3807 }
3808 
3811 {
3829 
3834 {
3835  switch (value)
3836  {
3837  case DNP3_EVENT_ANALOG_VARIATION_GROUP32_VAR1: return "Group32Var1";
3838  case DNP3_EVENT_ANALOG_VARIATION_GROUP32_VAR2: return "Group32Var2";
3839  case DNP3_EVENT_ANALOG_VARIATION_GROUP32_VAR3: return "Group32Var3";
3840  case DNP3_EVENT_ANALOG_VARIATION_GROUP32_VAR4: return "Group32Var4";
3841  case DNP3_EVENT_ANALOG_VARIATION_GROUP32_VAR5: return "Group32Var5";
3842  case DNP3_EVENT_ANALOG_VARIATION_GROUP32_VAR6: return "Group32Var6";
3843  case DNP3_EVENT_ANALOG_VARIATION_GROUP32_VAR7: return "Group32Var7";
3844  case DNP3_EVENT_ANALOG_VARIATION_GROUP32_VAR8: return "Group32Var8";
3845  default: return "UnknownEventAnalogVariation";
3846  }
3847 }
3848 
3850 
3852 typedef struct dnp3_analog_config_t
3853 {
3862  double deadband;
3864 
3868 {
3869  return (dnp3_analog_config_t)
3870  {
3872  .event_variation = DNP3_EVENT_ANALOG_VARIATION_GROUP32_VAR1,
3873  .deadband = 0,
3874  };
3875 }
3876 
3883 bool dnp3_database_add_analog(dnp3_database_t* db, uint16_t index, dnp3_event_class_t point_class, dnp3_analog_config_t config);
3884 
3889 bool dnp3_database_remove_analog(dnp3_database_t* db, uint16_t index);
3890 
3897 
3904 
3907 {
3917 
3922 {
3923  switch (value)
3924  {
3929  default: return "UnknownStaticAnalogOutputStatusVariation";
3930  }
3931 }
3932 
3935 {
3953 
3958 {
3959  switch (value)
3960  {
3961  case DNP3_EVENT_ANALOG_OUTPUT_STATUS_VARIATION_GROUP42_VAR1: return "Group42Var1";
3962  case DNP3_EVENT_ANALOG_OUTPUT_STATUS_VARIATION_GROUP42_VAR2: return "Group42Var2";
3963  case DNP3_EVENT_ANALOG_OUTPUT_STATUS_VARIATION_GROUP42_VAR3: return "Group42Var3";
3964  case DNP3_EVENT_ANALOG_OUTPUT_STATUS_VARIATION_GROUP42_VAR4: return "Group42Var4";
3965  case DNP3_EVENT_ANALOG_OUTPUT_STATUS_VARIATION_GROUP42_VAR5: return "Group42Var5";
3966  case DNP3_EVENT_ANALOG_OUTPUT_STATUS_VARIATION_GROUP42_VAR6: return "Group42Var6";
3967  case DNP3_EVENT_ANALOG_OUTPUT_STATUS_VARIATION_GROUP42_VAR7: return "Group42Var7";
3968  case DNP3_EVENT_ANALOG_OUTPUT_STATUS_VARIATION_GROUP42_VAR8: return "Group42Var8";
3969  default: return "UnknownEventAnalogOutputStatusVariation";
3970  }
3971 }
3972 
3974 
3977 {
3986  double deadband;
3988 
3992 {
3994  {
3997  .deadband = 0,
3998  };
3999 }
4000 
4008 
4014 
4021 
4028 
4031 
4035 
4039 
4043 void dnp3_octet_string_add(dnp3_octet_string_value_t* octet_string, uint8_t value);
4044 
4045 
4051 bool dnp3_database_add_octet_string(dnp3_database_t* db, uint16_t index, dnp3_event_class_t point_class);
4052 
4057 bool dnp3_database_remove_octet_string(dnp3_database_t* db, uint16_t index);
4058 
4066 
4067 
4069 
4072 {
4075  bool binary;
4084  bool counter;
4090  bool analog;
4100 
4104 {
4105  return (dnp3_class_zero_config_t)
4106  {
4107  .binary = true,
4108  .double_bit_binary = true,
4109  .binary_output_status = true,
4110  .counter = true,
4111  .frozen_counter = true,
4112  .analog = true,
4113  .analog_output_status = true,
4114  .octet_strings = false,
4115  };
4116 }
4117 
4119 
4122 {
4133 
4137 {
4139  {
4140  .self_address = false,
4141  .broadcast = true,
4142  .unsolicited = true,
4143  };
4144 }
4145 
4147 
4150 {
4154  uint16_t master_address;
4169  uint16_t rx_buffer_size;
4179  uint64_t select_timeout;
4206 
4211 static dnp3_outstation_config_t dnp3_outstation_config_init(uint16_t outstation_address, uint16_t master_address)
4212 {
4213  return (dnp3_outstation_config_t)
4214  {
4215  .outstation_address = outstation_address,
4216  .master_address = master_address,
4217  .solicited_buffer_size = 2048,
4218  .unsolicited_buffer_size = 2048,
4219  .rx_buffer_size = 2048,
4220  .decode_level = dnp3_decode_level_init(),
4221  .confirm_timeout = 5000,
4222  .select_timeout = 5000,
4223  .features = dnp3_outstation_features_init(),
4224  .max_unsolicited_retries = 4294967295,
4225  .unsolicited_retry_delay = 5000,
4226  .keep_alive_timeout = 60000,
4227  .max_read_request_headers = 64,
4228  .max_controls_per_request = 64,
4229  .class_zero = dnp3_class_zero_config_init(),
4230  };
4231 }
4232 
4234 
4239 {
4241  uint16_t max_binary;
4247  uint16_t max_counter;
4251  uint16_t max_analog;
4257 
4268 static dnp3_event_buffer_config_t dnp3_event_buffer_config_init(uint16_t max_binary, uint16_t max_double_bit_binary, uint16_t max_binary_output_status, uint16_t max_counter, uint16_t max_frozen_counter, uint16_t max_analog, uint16_t max_analog_output_status, uint16_t max_octet_string)
4269 {
4271  {
4272  .max_binary = max_binary,
4273  .max_double_bit_binary = max_double_bit_binary,
4274  .max_binary_output_status = max_binary_output_status,
4275  .max_counter = max_counter,
4276  .max_frozen_counter = max_frozen_counter,
4277  .max_analog = max_analog,
4278  .max_analog_output_status = max_analog_output_status,
4279  .max_octet_string = max_octet_string,
4280  };
4281 }
4282 
4287 
4291 
4292 
4295 {
4303 
4308 {
4309  switch (value)
4310  {
4311  case DNP3_RESTART_DELAY_TYPE_NOT_SUPPORTED: return "NotSupported";
4312  case DNP3_RESTART_DELAY_TYPE_SECONDS: return "Seconds";
4313  case DNP3_RESTART_DELAY_TYPE_MILLISECONDS: return "Milliseconds";
4314  default: return "UnknownRestartDelayType";
4315  }
4316 }
4317 
4319 
4322 {
4336 
4340 {
4341  return (dnp3_application_iin_t)
4342  {
4343  .need_time = false,
4344  .local_control = false,
4345  .device_trouble = false,
4346  .config_corrupt = false,
4347  };
4348 }
4349 
4351 
4355 typedef struct dnp3_restart_delay_t
4356 {
4360  uint16_t value;
4362 
4368 {
4369  return (dnp3_restart_delay_t)
4370  {
4371  .restart_type = restart_type,
4372  .value = value,
4373  };
4374 }
4375 
4379 
4384 
4389 
4390 
4393 {
4401 
4406 {
4407  switch (value)
4408  {
4409  case DNP3_WRITE_TIME_RESULT_NOT_SUPPORTED: return "NotSupported";
4410  case DNP3_WRITE_TIME_RESULT_INVALID_VALUE: return "InvalidValue";
4411  case DNP3_WRITE_TIME_RESULT_OK: return "Ok";
4412  default: return "UnknownWriteTimeResult";
4413  }
4414 }
4415 
4418 {
4424 
4429 {
4430  switch (value)
4431  {
4432  case DNP3_FREEZE_TYPE_IMMEDIATE_FREEZE: return "ImmediateFreeze";
4433  case DNP3_FREEZE_TYPE_FREEZE_AND_CLEAR: return "FreezeAndClear";
4434  default: return "UnknownFreezeType";
4435  }
4436 }
4437 
4440 {
4448 
4453 {
4454  switch (value)
4455  {
4456  case DNP3_FREEZE_RESULT_SUCCESS: return "Success";
4457  case DNP3_FREEZE_RESULT_PARAMETER_ERROR: return "ParameterError";
4458  case DNP3_FREEZE_RESULT_NOT_SUPPORTED: return "NotSupported";
4459  default: return "UnknownFreezeResult";
4460  }
4461 }
4462 
4465 {
4466 
4476  uint16_t (*get_processing_delay_ms)(void*);
4477 
4483 
4488 
4495 
4502 
4509 
4520  void (*on_destroy)(void* arg);
4522  void* ctx;
4524 
4536  uint16_t (*get_processing_delay_ms)(void*),
4537  dnp3_write_time_result_t (*write_absolute_time)(uint64_t, void*),
4538  dnp3_application_iin_t (*get_application_iin)(void*),
4539  dnp3_restart_delay_t (*cold_restart)(void*),
4540  dnp3_restart_delay_t (*warm_restart)(void*),
4541  dnp3_freeze_result_t (*freeze_counters_all)(dnp3_freeze_type_t, dnp3_database_t*, void*),
4542  dnp3_freeze_result_t (*freeze_counters_range)(uint16_t, uint16_t, dnp3_freeze_type_t, dnp3_database_t*, void*),
4543  void (*on_destroy)(void* arg),
4544  void* ctx
4545 )
4546 {
4548  {
4549  .get_processing_delay_ms = get_processing_delay_ms,
4550  .write_absolute_time = write_absolute_time,
4551  .get_application_iin = get_application_iin,
4552  .cold_restart = cold_restart,
4553  .warm_restart = warm_restart,
4554  .freeze_counters_all = freeze_counters_all,
4555  .freeze_counters_range = freeze_counters_range,
4556  .on_destroy = on_destroy,
4557  .ctx = ctx,
4558  };
4559  return result;
4560 }
4561 
4564 {
4632 
4637 {
4638  switch (value)
4639  {
4640  case DNP3_FUNCTION_CODE_CONFIRM: return "Confirm";
4641  case DNP3_FUNCTION_CODE_READ: return "Read";
4642  case DNP3_FUNCTION_CODE_WRITE: return "Write";
4643  case DNP3_FUNCTION_CODE_SELECT: return "Select";
4644  case DNP3_FUNCTION_CODE_OPERATE: return "Operate";
4645  case DNP3_FUNCTION_CODE_DIRECT_OPERATE: return "DirectOperate";
4646  case DNP3_FUNCTION_CODE_DIRECT_OPERATE_NO_RESPONSE: return "DirectOperateNoResponse";
4647  case DNP3_FUNCTION_CODE_IMMEDIATE_FREEZE: return "ImmediateFreeze";
4648  case DNP3_FUNCTION_CODE_IMMEDIATE_FREEZE_NO_RESPONSE: return "ImmediateFreezeNoResponse";
4649  case DNP3_FUNCTION_CODE_FREEZE_CLEAR: return "FreezeClear";
4650  case DNP3_FUNCTION_CODE_FREEZE_CLEAR_NO_RESPONSE: return "FreezeClearNoResponse";
4651  case DNP3_FUNCTION_CODE_FREEZE_AT_TIME: return "FreezeAtTime";
4652  case DNP3_FUNCTION_CODE_FREEZE_AT_TIME_NO_RESPONSE: return "FreezeAtTimeNoResponse";
4653  case DNP3_FUNCTION_CODE_COLD_RESTART: return "ColdRestart";
4654  case DNP3_FUNCTION_CODE_WARM_RESTART: return "WarmRestart";
4655  case DNP3_FUNCTION_CODE_INITIALIZE_DATA: return "InitializeData";
4656  case DNP3_FUNCTION_CODE_INITIALIZE_APPLICATION: return "InitializeApplication";
4657  case DNP3_FUNCTION_CODE_START_APPLICATION: return "StartApplication";
4658  case DNP3_FUNCTION_CODE_STOP_APPLICATION: return "StopApplication";
4659  case DNP3_FUNCTION_CODE_SAVE_CONFIGURATION: return "SaveConfiguration";
4660  case DNP3_FUNCTION_CODE_ENABLE_UNSOLICITED: return "EnableUnsolicited";
4661  case DNP3_FUNCTION_CODE_DISABLE_UNSOLICITED: return "DisableUnsolicited";
4662  case DNP3_FUNCTION_CODE_ASSIGN_CLASS: return "AssignClass";
4663  case DNP3_FUNCTION_CODE_DELAY_MEASURE: return "DelayMeasure";
4664  case DNP3_FUNCTION_CODE_RECORD_CURRENT_TIME: return "RecordCurrentTime";
4665  case DNP3_FUNCTION_CODE_OPEN_FILE: return "OpenFile";
4666  case DNP3_FUNCTION_CODE_CLOSE_FILE: return "CloseFile";
4667  case DNP3_FUNCTION_CODE_DELETE_FILE: return "DeleteFile";
4668  case DNP3_FUNCTION_CODE_GET_FILE_INFO: return "GetFileInfo";
4669  case DNP3_FUNCTION_CODE_AUTHENTICATE_FILE: return "AuthenticateFile";
4670  case DNP3_FUNCTION_CODE_ABORT_FILE: return "AbortFile";
4671  case DNP3_FUNCTION_CODE_RESPONSE: return "Response";
4672  case DNP3_FUNCTION_CODE_UNSOLICITED_RESPONSE: return "UnsolicitedResponse";
4673  default: return "UnknownFunctionCode";
4674  }
4675 }
4676 
4678 
4681 {
4687 
4693 {
4694  return (dnp3_request_header_t)
4695  {
4696  .control = control,
4697  .function = function,
4698  };
4699 }
4700 
4703 {
4713 
4718 {
4719  switch (value)
4720  {
4721  case DNP3_BROADCAST_ACTION_PROCESSED: return "Processed";
4722  case DNP3_BROADCAST_ACTION_IGNORED_BY_CONFIGURATION: return "IgnoredByConfiguration";
4723  case DNP3_BROADCAST_ACTION_BAD_OBJECT_HEADERS: return "BadObjectHeaders";
4724  case DNP3_BROADCAST_ACTION_UNSUPPORTED_FUNCTION: return "UnsupportedFunction";
4725  default: return "UnknownBroadcastAction";
4726  }
4727 }
4728 
4733 {
4734 
4739 
4745 
4749  void (*enter_solicited_confirm_wait)(uint8_t, void*);
4750 
4754  void (*solicited_confirm_timeout)(uint8_t, void*);
4755 
4759  void (*solicited_confirm_received)(uint8_t, void*);
4760 
4764 
4769  void (*wrong_solicited_confirm_seq)(uint8_t, uint8_t, void*);
4770 
4775  void (*unexpected_confirm)(bool, uint8_t, void*);
4776 
4780  void (*enter_unsolicited_confirm_wait)(uint8_t, void*);
4781 
4786  void (*unsolicited_confirm_timeout)(uint8_t, bool, void*);
4787 
4791  void (*unsolicited_confirmed)(uint8_t, void*);
4792 
4795  void (*clear_restart_iin)(void*);
4798  void (*on_destroy)(void* arg);
4800  void* ctx;
4802 
4819  void (*process_request_from_idle)(dnp3_request_header_t, void*),
4820  void (*broadcast_received)(dnp3_function_code_t, dnp3_broadcast_action_t, void*),
4821  void (*enter_solicited_confirm_wait)(uint8_t, void*),
4822  void (*solicited_confirm_timeout)(uint8_t, void*),
4823  void (*solicited_confirm_received)(uint8_t, void*),
4824  void (*solicited_confirm_wait_new_request)(void*),
4825  void (*wrong_solicited_confirm_seq)(uint8_t, uint8_t, void*),
4826  void (*unexpected_confirm)(bool, uint8_t, void*),
4827  void (*enter_unsolicited_confirm_wait)(uint8_t, void*),
4828  void (*unsolicited_confirm_timeout)(uint8_t, bool, void*),
4829  void (*unsolicited_confirmed)(uint8_t, void*),
4830  void (*clear_restart_iin)(void*),
4831  void (*on_destroy)(void* arg),
4832  void* ctx
4833 )
4834 {
4836  {
4837  .process_request_from_idle = process_request_from_idle,
4838  .broadcast_received = broadcast_received,
4839  .enter_solicited_confirm_wait = enter_solicited_confirm_wait,
4840  .solicited_confirm_timeout = solicited_confirm_timeout,
4841  .solicited_confirm_received = solicited_confirm_received,
4842  .solicited_confirm_wait_new_request = solicited_confirm_wait_new_request,
4843  .wrong_solicited_confirm_seq = wrong_solicited_confirm_seq,
4844  .unexpected_confirm = unexpected_confirm,
4845  .enter_unsolicited_confirm_wait = enter_unsolicited_confirm_wait,
4846  .unsolicited_confirm_timeout = unsolicited_confirm_timeout,
4847  .unsolicited_confirmed = unsolicited_confirmed,
4848  .clear_restart_iin = clear_restart_iin,
4849  .on_destroy = on_destroy,
4850  .ctx = ctx,
4851  };
4852  return result;
4853 }
4854 
4857 {
4901 
4906 {
4907  switch (value)
4908  {
4909  case DNP3_COMMAND_STATUS_SUCCESS: return "Success";
4910  case DNP3_COMMAND_STATUS_TIMEOUT: return "Timeout";
4911  case DNP3_COMMAND_STATUS_NO_SELECT: return "NoSelect";
4912  case DNP3_COMMAND_STATUS_FORMAT_ERROR: return "FormatError";
4913  case DNP3_COMMAND_STATUS_NOT_SUPPORTED: return "NotSupported";
4914  case DNP3_COMMAND_STATUS_ALREADY_ACTIVE: return "AlreadyActive";
4915  case DNP3_COMMAND_STATUS_HARDWARE_ERROR: return "HardwareError";
4916  case DNP3_COMMAND_STATUS_LOCAL: return "Local";
4917  case DNP3_COMMAND_STATUS_TOO_MANY_OPS: return "TooManyOps";
4918  case DNP3_COMMAND_STATUS_NOT_AUTHORIZED: return "NotAuthorized";
4919  case DNP3_COMMAND_STATUS_AUTOMATION_INHIBIT: return "AutomationInhibit";
4920  case DNP3_COMMAND_STATUS_PROCESSING_LIMITED: return "ProcessingLimited";
4921  case DNP3_COMMAND_STATUS_OUT_OF_RANGE: return "OutOfRange";
4922  case DNP3_COMMAND_STATUS_DOWNSTREAM_LOCAL: return "DownstreamLocal";
4923  case DNP3_COMMAND_STATUS_ALREADY_COMPLETE: return "AlreadyComplete";
4924  case DNP3_COMMAND_STATUS_BLOCKED: return "Blocked";
4925  case DNP3_COMMAND_STATUS_CANCELED: return "Canceled";
4926  case DNP3_COMMAND_STATUS_BLOCKED_OTHER_MASTER: return "BlockedOtherMaster";
4927  case DNP3_COMMAND_STATUS_DOWNSTREAM_FAIL: return "DownstreamFail";
4928  case DNP3_COMMAND_STATUS_NON_PARTICIPATING: return "NonParticipating";
4929  case DNP3_COMMAND_STATUS_UNKNOWN: return "Unknown";
4930  default: return "UnknownCommandStatus";
4931  }
4932 }
4933 
4936 {
4944 
4949 {
4950  switch (value)
4951  {
4952  case DNP3_OPERATE_TYPE_SELECT_BEFORE_OPERATE: return "SelectBeforeOperate";
4953  case DNP3_OPERATE_TYPE_DIRECT_OPERATE: return "DirectOperate";
4954  case DNP3_OPERATE_TYPE_DIRECT_OPERATE_NO_ACK: return "DirectOperateNoAck";
4955  default: return "UnknownOperateType";
4956  }
4957 }
4958 
4961 {
4962 
4965  void (*begin_fragment)(void*);
4966 
4969  void (*end_fragment)(void*);
4970 
4982 
4991 
5002  dnp3_command_status_t (*select_g41v1)(int32_t, uint16_t, dnp3_database_t*, void*);
5003 
5012 
5023  dnp3_command_status_t (*select_g41v2)(int16_t, uint16_t, dnp3_database_t*, void*);
5024 
5033 
5045 
5054 
5065  dnp3_command_status_t (*select_g41v4)(double, uint16_t, dnp3_database_t*, void*);
5066 
5077  void (*on_destroy)(void* arg);
5079  void* ctx;
5081 
5098  void (*begin_fragment)(void*),
5099  void (*end_fragment)(void*),
5100  dnp3_command_status_t (*select_g12v1)(dnp3_g12v1_t, uint16_t, dnp3_database_t*, void*),
5101  dnp3_command_status_t (*operate_g12v1)(dnp3_g12v1_t, uint16_t, dnp3_operate_type_t, dnp3_database_t*, void*),
5102  dnp3_command_status_t (*select_g41v1)(int32_t, uint16_t, dnp3_database_t*, void*),
5103  dnp3_command_status_t (*operate_g41v1)(int32_t, uint16_t, dnp3_operate_type_t, dnp3_database_t*, void*),
5104  dnp3_command_status_t (*select_g41v2)(int16_t, uint16_t, dnp3_database_t*, void*),
5105  dnp3_command_status_t (*operate_g41v2)(int16_t, uint16_t, dnp3_operate_type_t, dnp3_database_t*, void*),
5106  dnp3_command_status_t (*select_g41v3)(float, uint16_t, dnp3_database_t*, void*),
5107  dnp3_command_status_t (*operate_g41v3)(float, uint16_t, dnp3_operate_type_t, dnp3_database_t*, void*),
5108  dnp3_command_status_t (*select_g41v4)(double, uint16_t, dnp3_database_t*, void*),
5109  dnp3_command_status_t (*operate_g41v4)(double, uint16_t, dnp3_operate_type_t, dnp3_database_t*, void*),
5110  void (*on_destroy)(void* arg),
5111  void* ctx
5112 )
5113 {
5114  dnp3_control_handler_t result =
5115  {
5116  .begin_fragment = begin_fragment,
5117  .end_fragment = end_fragment,
5118  .select_g12v1 = select_g12v1,
5119  .operate_g12v1 = operate_g12v1,
5120  .select_g41v1 = select_g41v1,
5121  .operate_g41v1 = operate_g41v1,
5122  .select_g41v2 = select_g41v2,
5123  .operate_g41v2 = operate_g41v2,
5124  .select_g41v3 = select_g41v3,
5125  .operate_g41v3 = operate_g41v3,
5126  .select_g41v4 = select_g41v4,
5127  .operate_g41v4 = operate_g41v4,
5128  .on_destroy = on_destroy,
5129  .ctx = ctx,
5130  };
5131  return result;
5132 }
5133 
5136 {
5142 
5147 {
5148  switch (value)
5149  {
5150  case DNP3_CONNECTION_STATE_CONNECTED: return "Connected";
5151  case DNP3_CONNECTION_STATE_DISCONNECTED: return "Disconnected";
5152  default: return "UnknownConnectionState";
5153  }
5154 }
5155 
5158 {
5159 
5166  void (*on_destroy)(void* arg);
5168  void* ctx;
5170 
5176  void (*on_change)(dnp3_connection_state_t, void*),
5177  void (*on_destroy)(void* arg),
5178  void* ctx
5179 )
5180 {
5182  {
5183  .on_change = on_change,
5184  .on_destroy = on_destroy,
5185  .ctx = ctx,
5186  };
5187  return result;
5188 }
5189 
5192 {
5193 
5197  void (*execute)(dnp3_database_t*, void*);
5200  void (*on_destroy)(void* arg);
5202  void* ctx;
5204 
5210  void (*execute)(dnp3_database_t*, void*),
5211  void (*on_destroy)(void* arg),
5212  void* ctx
5213 )
5214 {
5216  {
5217  .execute = execute,
5218  .on_destroy = on_destroy,
5219  .ctx = ctx,
5220  };
5221  return result;
5222 }
5223 
5228 
5241 
5246 void dnp3_outstation_destroy(dnp3_outstation_t* outstation);
5247 
5252 
5258 
5259 
5262 
5266 
5272 
5277 dnp3_param_error_t dnp3_address_filter_add(dnp3_address_filter_t* address_filter, const char* address);
5278 
5282 
5283 
5290 
5299 dnp3_param_error_t dnp3_tcpserver_new(dnp3_runtime_t* runtime, dnp3_link_error_mode_t link_error_mode, const char* address, dnp3_tcp_server_t** out);
5300 
5304 
5321 
5326 
5327 
5328 #ifdef __cplusplus
5329 }
5330 #endif
dnp3_event_classes_t::class2
bool class2
Class 2 events.
Definition: dnp3.h:2262
dnp3_time_format_to_string
static const char * dnp3_time_format_to_string(dnp3_time_format_t value)
Converts a dnp3_time_format_t to a string.
Definition: dnp3.h:157
DNP3_BROADCAST_ACTION_UNSUPPORTED_FUNCTION
Outstation ignore the broadcast message b/c the function is not supported via Broadcast.
Definition: dnp3.h:4711
DNP3_IIN2_FLAG_NO_FUNC_CODE_SUPPORT
Function code is not supported by the outstation.
Definition: dnp3.h:1723
DNP3_STOP_BITS_TWO
Two stop bits.
Definition: dnp3.h:1536
dnp3_binary_t::value
bool value
Point value.
Definition: dnp3.h:726
dnp3_header_info_init
static dnp3_header_info_t dnp3_header_info_init(dnp3_variation_t variation, dnp3_qualifier_code_t qualifier)
Initialize dnp3_header_info_t to default values.
Definition: dnp3.h:1867
dnp3_outstation_information_t::ctx
void * ctx
Context data.
Definition: dnp3.h:4800
dnp3_restart_result_t::error
dnp3_restart_error_t error
Success/failure of the restart task.
Definition: dnp3.h:3031
dnp3_database_get_binary
dnp3_param_error_t dnp3_database_get_binary(dnp3_database_t *db, uint16_t index, dnp3_binary_t *out)
Get a Binary Input point.
dnp3_analog_config_t::event_variation
dnp3_event_analog_variation_t event_variation
Default event variation.
Definition: dnp3.h:3859
DNP3_FUNCTION_CODE_DELAY_MEASURE
Outstation shall report the time it takes to process and initiate the transmission of its response (v...
Definition: dnp3.h:4612
dnp3_database_remove_binary_output_status
bool dnp3_database_remove_binary_output_status(dnp3_database_t *db, uint16_t index)
Remove a Binary Output Status point.
DNP3_FREEZE_RESULT_NOT_SUPPORTED
The demanded freeze operation is not supported by this device.
Definition: dnp3.h:4446
DNP3_RESTART_ERROR_WRITE_ERROR
insufficient buffer space to serialize the request
Definition: dnp3.h:2997
dnp3_connection_state_listener_t::on_destroy
void(* on_destroy)(void *arg)
Callback when the underlying owner doesn't need the interface anymore.
Definition: dnp3.h:5166
DNP3_TIME_QUALITY_SYNCHRONIZED
The timestamp is UTC synchronized at the remote device.
Definition: dnp3.h:630
dnp3_counter_config_t::event_variation
dnp3_event_counter_variation_t event_variation
Default event variation.
Definition: dnp3.h:3611
DNP3_VARIATION_GROUP22_VAR1
Counter Event - 32-bit with flags.
Definition: dnp3.h:1203
DNP3_FUNCTION_CODE_STOP_APPLICATION
Outstation shall stop running the applications specified by the objects in the request (value == 18)
Definition: dnp3.h:4602
dnp3_auto_time_sync_t
dnp3_auto_time_sync_t
Automatic time synchronization configuration.
Definition: dnp3.h:2333
DNP3_PARAM_ERROR_NULL_PARAMETER
Null parameter.
Definition: dnp3.h:32
dnp3_database_remove_counter
bool dnp3_database_remove_counter(dnp3_database_t *db, uint16_t index)
Remove a Counter point.
DNP3_TRANSPORT_DECODE_LEVEL_HEADER
Decode the header.
Definition: dnp3.h:306
dnp3_binary_init
static dnp3_binary_t dnp3_binary_init(uint16_t index, bool value, dnp3_flags_t flags, dnp3_timestamp_t time)
Initialize dnp3_binary_t to default values.
Definition: dnp3.h:739
DNP3_FUNCTION_CODE_FREEZE_AT_TIME_NO_RESPONSE
Same as FreezeAtTime but outstation shall not send a response (value == 12)
Definition: dnp3.h:4590
dnp3_binary_config_t::static_variation
dnp3_static_binary_variation_t static_variation
Default static variation.
Definition: dnp3.h:3305
dnp3_restart_task_callback_t::ctx
void * ctx
Context data.
Definition: dnp3.h:3062
dnp3_analog_init
static dnp3_analog_t dnp3_analog_init(uint16_t index, double value, dnp3_flags_t flags, dnp3_timestamp_t time)
Initialize dnp3_analog_t to default values.
Definition: dnp3.h:944
dnp3_event_analog_output_status_variation_t
dnp3_event_analog_output_status_variation_t
Event analog output status variation.
Definition: dnp3.h:3934
dnp3_counter_config_t
struct dnp3_counter_config_t dnp3_counter_config_t
Counter configuration.
Definition: dnp3.h:3601
dnp3_logger_t::on_destroy
void(* on_destroy)(void *arg)
Callback when the underlying owner doesn't need the interface anymore.
Definition: dnp3.h:237
dnp3_binaryoutputstatus_next
dnp3_binary_output_status_t * dnp3_binaryoutputstatus_next(dnp3_binary_output_status_iterator_t *it)
Get the next value of the iterator.
dnp3_event_classes_all
dnp3_event_classes_t dnp3_event_classes_all()
Initialize all three event classes to true.
dnp3_frozen_counter_t
FrozenCounter point.
Definition: dnp3.h:885
dnp3_octet_string_init
static dnp3_octet_string_t dnp3_octet_string_init(uint16_t index, dnp3_byte_iterator_t *value)
Initialize dnp3_octet_string_t to default values.
Definition: dnp3.h:1049
DNP3_TIME_SYNC_RESULT_ASSOCIATION_REMOVED
association was removed mid-task
Definition: dnp3.h:2914
dnp3_binary_iterator_t
struct dnp3_binary_iterator_t dnp3_binary_iterator_t
Iterator of dnp3_binary_t. See dnp3_binary_next.
Definition: dnp3.h:751
dnp3_outstation_information_t::clear_restart_iin
void(* clear_restart_iin)(void *)
Master cleared the restart IIN bit.
Definition: dnp3.h:4795
dnp3_association_config_t::auto_tasks_retry_strategy
dnp3_retry_strategy_t auto_tasks_retry_strategy
Automatic tasks retry strategy.
Definition: dnp3.h:2374
dnp3_connect_strategy_t::reconnect_delay
uint64_t reconnect_delay
Delay before attempting a connection after a disconnect.
Definition: dnp3.h:2177
dnp3_commands_t
struct dnp3_commands_t dnp3_commands_t
Builder type used to construct command requests.
Definition: dnp3.h:2674
dnp3_tcpserver_destroy
void dnp3_tcpserver_destroy(dnp3_tcp_server_t *server)
Gracefully shutdown all the outstations associated to this server, stops the server and release resou...
DNP3_COMMAND_RESULT_BAD_RESPONSE
response was malformed or contained object headers
Definition: dnp3.h:2783
dnp3_static_analog_output_status_variation_t
dnp3_static_analog_output_status_variation_t
Static analog output status variation.
Definition: dnp3.h:3906
dnp3_log_level_to_string
static const char * dnp3_log_level_to_string(dnp3_log_level_t value)
Converts a dnp3_log_level_t to a string.
Definition: dnp3.h:130
DNP3_CLIENT_STATE_DISABLED
Client is disabled and idle until disabled.
Definition: dnp3.h:2090
DNP3_PARAM_ERROR_MASTER_ALREADY_SHUTDOWN
Master was already shutdown.
Definition: dnp3.h:50
dnp3_outstation_application_init
static dnp3_outstation_application_t dnp3_outstation_application_init(uint16_t(*get_processing_delay_ms)(void *), dnp3_write_time_result_t(*write_absolute_time)(uint64_t, void *), dnp3_application_iin_t(*get_application_iin)(void *), dnp3_restart_delay_t(*cold_restart)(void *), dnp3_restart_delay_t(*warm_restart)(void *), dnp3_freeze_result_t(*freeze_counters_all)(dnp3_freeze_type_t, dnp3_database_t *, void *), dnp3_freeze_result_t(*freeze_counters_range)(uint16_t, uint16_t, dnp3_freeze_type_t, dnp3_database_t *, void *), void(*on_destroy)(void *arg), void *ctx)
Initialize a dnp3_outstation_application_t interface.
Definition: dnp3.h:4535
dnp3_class_zero_config_t::binary
bool binary
Include Binary Inputs in Class 0 reads.
Definition: dnp3.h:4075
dnp3_port_state_listener_t::on_change
void(* on_change)(dnp3_port_state_t, void *)
Invoked when the serial port changes state.
Definition: dnp3.h:1102
DNP3_FUNCTION_CODE_UNSOLICITED_RESPONSE
Master shall interpret this fragment as an unsolicited response that was not prompted by an explicit ...
Definition: dnp3.h:4630
dnp3_retry_strategy_t::min_delay
uint64_t min_delay
Minimum delay between two retries.
Definition: dnp3.h:1434
dnp3_master_channel_demand_poll
dnp3_param_error_t dnp3_master_channel_demand_poll(dnp3_master_channel_t *channel, dnp3_poll_id_t poll_id)
Demand the immediate execution of a poll previously created with dnp3_master_channel_add_poll.
dnp3_event_analog_output_status_variation_to_string
static const char * dnp3_event_analog_output_status_variation_to_string(dnp3_event_analog_output_status_variation_t value)
Converts a dnp3_event_analog_output_status_variation_t to a string.
Definition: dnp3.h:3957
dnp3_double_bit_binary_t
DoubleBitBinary point.
Definition: dnp3.h:762
dnp3_logging_config_t
struct dnp3_logging_config_t dnp3_logging_config_t
Logging configuration options.
Definition: dnp3.h:190
dnp3_link_status_result_t
dnp3_link_status_result_t
Result of a link status check. See dnp3_master_channel_check_link_status.
Definition: dnp3.h:3099
DNP3_LINK_DECODE_LEVEL_PAYLOAD
Decode the header and the raw payload as hexadecimal.
Definition: dnp3.h:333
dnp3_op_type_to_string
static const char * dnp3_op_type_to_string(dnp3_op_type_t value)
Converts a dnp3_op_type_t to a string.
Definition: dnp3.h:529
dnp3_analog_output_status_t
struct dnp3_analog_output_status_t dnp3_analog_output_status_t
AnalogOutputStatus point.
Definition: dnp3.h:964
DNP3_LOG_LEVEL_WARN
Warning log level.
Definition: dnp3.h:118
dnp3_retry_strategy_init
static dnp3_retry_strategy_t dnp3_retry_strategy_init()
Initialize dnp3_retry_strategy_t to default values.
Definition: dnp3.h:1443
dnp3_analog_output_status_t::time
dnp3_timestamp_t time
Point timestamp.
Definition: dnp3.h:976
DNP3_APP_DECODE_LEVEL_NOTHING
Decode nothing.
Definition: dnp3.h:276
dnp3_request_new_class
dnp3_request_t * dnp3_request_new_class(bool class0, bool class1, bool class2, bool class3)
Create a new request asking for classes.
DNP3_VARIATION_GROUP23_VAR1
Frozen Counter Event - 32-bit with flags.
Definition: dnp3.h:1213
dnp3_association_handler_init
static dnp3_association_handler_t dnp3_association_handler_init(dnp3_timestamp_utc_t(*get_current_time)(void *), void(*on_destroy)(void *arg), void *ctx)
Initialize a dnp3_association_handler_t interface.
Definition: dnp3.h:2474
dnp3_read_task_callback_t::on_complete
void(* on_complete)(dnp3_read_result_t, void *)
Called when the read task reached completion or failed.
Definition: dnp3.h:2636
DNP3_LOG_LEVEL_TRACE
Trace log level.
Definition: dnp3.h:124
DNP3_RESTART_ERROR_ASSOCIATION_REMOVED
association was removed mid-task
Definition: dnp3.h:3003
dnp3_request_t
struct dnp3_request_t dnp3_request_t
Custom request.
Definition: dnp3.h:2492
dnp3_connection_state_listener_init
static dnp3_connection_state_listener_t dnp3_connection_state_listener_init(void(*on_change)(dnp3_connection_state_t, void *), void(*on_destroy)(void *arg), void *ctx)
Initialize a dnp3_connection_state_listener_t interface.
Definition: dnp3.h:5175
DNP3_VARIATION_GROUP50_VAR1
Time and Date - Absolute time.
Definition: dnp3.h:1291
dnp3_commands_add_g41v2_u8
void dnp3_commands_add_g41v2_u8(dnp3_commands_t *command, uint8_t idx, int16_t value)
Add a Analog Output command (signed 16-bit integer) with 1-byte prefix index.
dnp3_outstation_application_t
Dynamic information required by the outstation from the user application.
Definition: dnp3.h:4464
DNP3_FUNCTION_CODE_CLOSE_FILE
Outstation shall close a file (value == 26)
Definition: dnp3.h:4618
dnp3_commands_add_g41v4_u16
void dnp3_commands_add_g41v4_u16(dnp3_commands_t *commands, uint16_t idx, double value)
Add a Analog Output command (double-precision float) with 2-byte prefix index.
DNP3_VARIATION_GROUP1_VAR2
Binary Input - With flags.
Definition: dnp3.h:1137
DNP3_COMMAND_STATUS_DOWNSTREAM_FAIL
command not accepted because the outstation is forwarding the request to another downstream device wh...
Definition: dnp3.h:4895
DNP3_QUALIFIER_CODE_COUNT16
16-bit count (0x08)
Definition: dnp3.h:1824
DNP3_VARIATION_GROUP2_VAR3
Binary Input Event - With relative time.
Definition: dnp3.h:1145
DNP3_PHYS_DECODE_LEVEL_LENGTH
Log only the length of data that is sent and received.
Definition: dnp3.h:356
DNP3_VARIATION_GROUP30_VAR5
Analog Input - Single-precision floating point with flags.
Definition: dnp3.h:1231
dnp3_octet_string_t
Octet String point.
Definition: dnp3.h:1037
DNP3_PARAM_ERROR_INVALID_SOCKET_ADDRESS
Invalid socket address.
Definition: dnp3.h:38
dnp3_client_state_t
dnp3_client_state_t
State of the client connection.
Definition: dnp3.h:2087
DNP3_VARIATION_GROUP22_VAR2
Counter Event - 16-bit with flags.
Definition: dnp3.h:1205
dnp3_address_filter_add
dnp3_param_error_t dnp3_address_filter_add(dnp3_address_filter_t *address_filter, const char *address)
Add an accepted IP address to the filter.
dnp3_connection_state_listener_t
Callback interface for connection state events.
Definition: dnp3.h:5157
DNP3_TIME_FORMAT_RFC3339
Format the time using RFC 3339.
Definition: dnp3.h:149
dnp3_connect_strategy_t::max_connect_delay
uint64_t max_connect_delay
Maximum delay between two connection attempts.
Definition: dnp3.h:2173
dnp3_outstation_config_t::solicited_buffer_size
uint16_t solicited_buffer_size
Solicited response buffer size.
Definition: dnp3.h:4159
dnp3_database_remove_frozen_counter
bool dnp3_database_remove_frozen_counter(dnp3_database_t *db, uint16_t index)
Remove a Frozen Counter point.
DNP3_OP_TYPE_PULSE_OFF
PULSE_OFF (2)
Definition: dnp3.h:519
dnp3_commands_add_g41v4_u8
void dnp3_commands_add_g41v4_u8(dnp3_commands_t *commands, uint8_t idx, double value)
Add a Analog Output command (double-precision float) with 1-byte prefix index.
dnp3_class_zero_config_init
static dnp3_class_zero_config_t dnp3_class_zero_config_init()
Initialize dnp3_class_zero_config_t to default values.
Definition: dnp3.h:4103
DNP3_DATA_BITS_FIVE
5 bits per character
Definition: dnp3.h:1456
DNP3_VARIATION_GROUP42_VAR0
Analog Output Event - Default variation.
Definition: dnp3.h:1273
dnp3_control_handler_t::operate_g41v3
dnp3_command_status_t(* operate_g41v3)(float, uint16_t, dnp3_operate_type_t, dnp3_database_t *, void *)
Operate a control point.
Definition: dnp3.h:5053
dnp3_event_counter_variation_t
dnp3_event_counter_variation_t
Event counter variation.
Definition: dnp3.h:3574
DNP3_READ_RESULT_BAD_RESPONSE
response was malformed or contained object headers
Definition: dnp3.h:2597
DNP3_CONNECTION_STATE_DISCONNECTED
Disconnected from the master.
Definition: dnp3.h:5140
dnp3_class_zero_config_t::frozen_counter
bool frozen_counter
Include Frozen Counters in Class 0 reads.
Definition: dnp3.h:4087
dnp3_classes_t
Class 0, 1, 2 and 3 config.
Definition: dnp3.h:2294
DNP3_VARIATION_GROUP10_VAR0
Binary Output - Default variation.
Definition: dnp3.h:1161
DNP3_STATIC_BINARY_VARIATION_GROUP1_VAR1
Binary input - packed format.
Definition: dnp3.h:3255
dnp3_analog_config_t
Analog configuration.
Definition: dnp3.h:3852
dnp3_poll_id_t
Poll identifier.
Definition: dnp3.h:2246
dnp3_outstation_config_t::class_zero
dnp3_class_zero_config_t class_zero
Controls responses to Class 0 reads.
Definition: dnp3.h:4204
dnp3_event_buffer_config_t::max_binary_output_status
uint16_t max_binary_output_status
Maximum number of Binary Output Status events (g11)
Definition: dnp3.h:4245
DNP3_VARIATION_GROUP21_VAR5
Frozen Counter - 32-bit with flags and time.
Definition: dnp3.h:1193
dnp3_byte_t::value
uint8_t value
Byte value.
Definition: dnp3.h:1011
dnp3_outstation_application_t::freeze_counters_all
dnp3_freeze_result_t(* freeze_counters_all)(dnp3_freeze_type_t, dnp3_database_t *, void *)
Freeze all the counters.
Definition: dnp3.h:4508
dnp3_read_task_callback_t
Handler for read tasks.
Definition: dnp3.h:2630
DNP3_FUNCTION_CODE_START_APPLICATION
Outstation shall start running the applications specified by the objects in the request (value == 17)
Definition: dnp3.h:4600
dnp3_time_quality_t
dnp3_time_quality_t
Timestamp quality.
Definition: dnp3.h:627
dnp3_master_channel_check_link_status
dnp3_param_error_t dnp3_master_channel_check_link_status(dnp3_master_channel_t *channel, dnp3_association_id_t association, dnp3_link_status_callback_t callback)
Asynchronously perform a link status check.
DNP3_QUALIFIER_CODE_COUNT_AND_PREFIX8
8-bit count and prefix (0x17)
Definition: dnp3.h:1826
DNP3_VARIATION_GROUP22_VAR0
Counter Event - Default variation.
Definition: dnp3.h:1201
dnp3_analog_output_status_t::flags
dnp3_flags_t flags
Point flags.
Definition: dnp3.h:974
dnp3_g12v1_t::on_time
uint32_t on_time
Duration the output drive remains active (in milliseconds)
Definition: dnp3.h:584
dnp3_freeze_type_to_string
static const char * dnp3_freeze_type_to_string(dnp3_freeze_type_t value)
Converts a dnp3_freeze_type_t to a string.
Definition: dnp3.h:4428
dnp3_database_add_binary
bool dnp3_database_add_binary(dnp3_database_t *db, uint16_t index, dnp3_event_class_t point_class, dnp3_binary_config_t config)
Add a new Binary Input point.
dnp3_association_handler_t::on_destroy
void(* on_destroy)(void *arg)
Callback when the underlying owner doesn't need the interface anymore.
Definition: dnp3.h:2465
dnp3_byte_t
struct dnp3_byte_t dnp3_byte_t
Single byte struct.
Definition: dnp3.h:1005
dnp3_runtime_config_t
struct dnp3_runtime_config_t dnp3_runtime_config_t
Runtime configuration.
Definition: dnp3.h:410
dnp3_classes_t::class2
bool class2
Class 2 events.
Definition: dnp3.h:2301
dnp3_flags_t::value
uint8_t value
bit-mask representing a set of individual flag bits
Definition: dnp3.h:612
DNP3_COMMAND_STATUS_ALREADY_ACTIVE
command is all ready in progress or its all ready in that mode (value == 5)
Definition: dnp3.h:4869
dnp3_log_output_format_to_string
static const char * dnp3_log_output_format_to_string(dnp3_log_output_format_t value)
Converts a dnp3_log_output_format_t to a string.
Definition: dnp3.h:180
dnp3_logging_config_t
Logging configuration options.
Definition: dnp3.h:193
dnp3_address_filter_new
dnp3_param_error_t dnp3_address_filter_new(const char *address, dnp3_address_filter_t **out)
Create an address filter that accepts any IP address.
dnp3_iin1_flag_to_string
static const char * dnp3_iin1_flag_to_string(dnp3_iin1_flag_t value)
Converts a dnp3_iin1_flag_t to a string.
Definition: dnp3.h:1676
dnp3_analog_iterator_t
struct dnp3_analog_iterator_t dnp3_analog_iterator_t
Iterator of dnp3_analog_t. See dnp3_analog_next.
Definition: dnp3.h:956
DNP3_VARIATION_GROUP32_VAR2
Analog Input Event - 16-bit without time.
Definition: dnp3.h:1239
DNP3_EVENT_MODE_DETECT
Detect events in a type dependent fashion.
Definition: dnp3.h:3204
dnp3_restart_task_callback_init
static dnp3_restart_task_callback_t dnp3_restart_task_callback_init(void(*on_complete)(dnp3_restart_result_t, void *), void(*on_destroy)(void *arg), void *ctx)
Initialize a dnp3_restart_task_callback_t interface.
Definition: dnp3.h:3069
dnp3_stop_bits_to_string
static const char * dnp3_stop_bits_to_string(dnp3_stop_bits_t value)
Converts a dnp3_stop_bits_t to a string.
Definition: dnp3.h:1542
dnp3_binary_output_status_config_t
Binary Output Status configuration.
Definition: dnp3.h:3496
DNP3_VARIATION_GROUP12_VAR1
Binary Output Command - Pattern Control Block.
Definition: dnp3.h:1175
DNP3_TIME_FORMAT_NONE
Don't format the timestamp as part of the message.
Definition: dnp3.h:147
dnp3_serial_port_settings_t
Serial port settings.
Definition: dnp3.h:1555
DNP3_LINK_ERROR_MODE_DISCARD
Framing errors are discarded. The link-layer parser is reset on any error, and the parser begins scan...
Definition: dnp3.h:1592
dnp3_binary_config_t
Binary Input configuration.
Definition: dnp3.h:3301
dnp3_read_handler_t::handle_counter
void(* handle_counter)(dnp3_header_info_t, dnp3_counter_iterator_t *, void *)
Handle counter data.
Definition: dnp3.h:1942
DNP3_VARIATION_GROUP1_VAR0
Binary Input - Default variation.
Definition: dnp3.h:1133
DNP3_FUNCTION_CODE_WARM_RESTART
Outstation shall reset only portions of the device (value == 14)
Definition: dnp3.h:4594
DNP3_STATIC_FROZEN_COUNTER_VARIATION_GROUP21_VAR6
Frozen Counter - 16-bit with flag and time.
Definition: dnp3.h:3667
DNP3_VARIATION_GROUP32_VAR1
Analog Input Event - 32-bit without time.
Definition: dnp3.h:1237
dnp3_outstation_transaction_t::on_destroy
void(* on_destroy)(void *arg)
Callback when the underlying owner doesn't need the interface anymore.
Definition: dnp3.h:5200
DNP3_PARAM_ERROR_RUNTIME_CANNOT_BLOCK_WITHIN_ASYNC
Runtime cannot execute blocking call within asynchronous context.
Definition: dnp3.h:56
dnp3_commands_add_g12v1_u8
void dnp3_commands_add_g12v1_u8(dnp3_commands_t *command, uint8_t idx, dnp3_g12v1_t header)
Add a CROB with 1-byte prefix index.
dnp3_static_counter_variation_t
dnp3_static_counter_variation_t
Static counter variation.
Definition: dnp3.h:3546
dnp3_iin1_flag_t
dnp3_iin1_flag_t
First IIN bit flags.
Definition: dnp3.h:1653
dnp3_header_info_t::qualifier
dnp3_qualifier_code_t qualifier
Qualitifer used in the response.
Definition: dnp3.h:1860
DNP3_VARIATION_GROUP41_VAR2
Analog Output - 16-bit.
Definition: dnp3.h:1267
dnp3_read_handler_t::on_destroy
void(* on_destroy)(void *arg)
Callback when the underlying owner doesn't need the interface anymore.
Definition: dnp3.h:1969
DNP3_STATIC_ANALOG_OUTPUT_STATUS_VARIATION_GROUP40_VAR2
Analog output status - 16-bit with flag.
Definition: dnp3.h:3911
DNP3_AUTO_TIME_SYNC_NONE
Do not perform automatic time sync.
Definition: dnp3.h:2336
DNP3_COMMAND_MODE_DIRECT_OPERATE
Perform a Direct Operate (0x05)
Definition: dnp3.h:2753
DNP3_TIME_SYNC_MODE_LAN
Perform a LAN time sync with Record Current Time (0x18) function code.
Definition: dnp3.h:2864
DNP3_COMMAND_STATUS_TOO_MANY_OPS
the command has been done too often and has been throttled (value == 8)
Definition: dnp3.h:4875
dnp3_master_channel_remove_association
dnp3_param_error_t dnp3_master_channel_remove_association(dnp3_master_channel_t *channel, dnp3_association_id_t id)
Remove an association from the channel.
dnp3_iin2_is_set
bool dnp3_iin2_is_set(dnp3_iin2_t *iin2, dnp3_iin2_flag_t flag)
Check if a particular flag is set in the IIN2 byte.
DNP3_EVENT_CLASS_CLASS2
Class 2 event.
Definition: dnp3.h:3178
dnp3_param_error_t
dnp3_param_error_t
Error type used throughout the library.
Definition: dnp3.h:27
DNP3_DOUBLE_BIT_DETERMINED_OFF
Determined to be OFF.
Definition: dnp3.h:696
DNP3_COMMAND_RESULT_WRITE_ERROR
insufficient buffer space to serialize the request
Definition: dnp3.h:2787
DNP3_RESTART_ERROR_TOO_MANY_REQUESTS
too many user requests queued
Definition: dnp3.h:2991
dnp3_database_remove_octet_string
bool dnp3_database_remove_octet_string(dnp3_database_t *db, uint16_t index)
Remove an Octet String point.
dnp3_master_channel_warm_restart
dnp3_param_error_t dnp3_master_channel_warm_restart(dnp3_master_channel_t *channel, dnp3_association_id_t association, dnp3_restart_task_callback_t callback)
Asynchronously perform a warm restart operation to the association.
dnp3_connect_strategy_t
struct dnp3_connect_strategy_t dnp3_connect_strategy_t
Timing parameters for connection attempts.
Definition: dnp3.h:2161
dnp3_event_binary_output_status_variation_t
dnp3_event_binary_output_status_variation_t
Event binary output status variation.
Definition: dnp3.h:3472
dnp3_static_frozen_counter_variation_to_string
static const char * dnp3_static_frozen_counter_variation_to_string(dnp3_static_frozen_counter_variation_t value)
Converts a dnp3_static_frozen_counter_variation_t to a string.
Definition: dnp3.h:3677
dnp3_analog_output_status_iterator_t
struct dnp3_analog_output_status_iterator_t dnp3_analog_output_status_iterator_t
Iterator of dnp3_analog_output_status_t. See dnp3_analogoutputstatus_next.
Definition: dnp3.h:997
dnp3_binary_output_status_t
BinaryOutputStatus point.
Definition: dnp3.h:803
DNP3_CONNECTION_STATE_CONNECTED
Connected to the master.
Definition: dnp3.h:5138
dnp3_database_update_counter
bool dnp3_database_update_counter(dnp3_database_t *db, dnp3_counter_t value, dnp3_update_options_t options)
Update a Counter point.
dnp3_retry_strategy_t
struct dnp3_retry_strategy_t dnp3_retry_strategy_t
Retry strategy configuration.
Definition: dnp3.h:1424
dnp3_database_add_binary_output_status
bool dnp3_database_add_binary_output_status(dnp3_database_t *db, uint16_t index, dnp3_event_class_t point_class, dnp3_binary_output_status_config_t config)
Add a new Binary Output Status point.
dnp3_analog_output_status_t
AnalogOutputStatus point.
Definition: dnp3.h:967
dnp3_class_zero_config_t::octet_strings
bool octet_strings
Include Binary Inputs in Class 0 reads.
Definition: dnp3.h:4098
DNP3_STATIC_FROZEN_COUNTER_VARIATION_GROUP21_VAR5
Frozen Counter - 32-bit with flag and time.
Definition: dnp3.h:3665
dnp3_trip_close_code_t
dnp3_trip_close_code_t
Trip-Close Code field, used in conjunction with dnp3_op_type_t to specify a control operation.
Definition: dnp3.h:484
dnp3_outstation_transaction
void dnp3_outstation_transaction(dnp3_outstation_t *outstation, dnp3_outstation_transaction_t callback)
Execute transaction to modify the internal database of the outstation.
dnp3_analog_t::time
dnp3_timestamp_t time
Point timestamp.
Definition: dnp3.h:935
dnp3_classes_t::class3
bool class3
Class 3 events.
Definition: dnp3.h:2303
dnp3_master_channel_operate
dnp3_param_error_t dnp3_master_channel_operate(dnp3_master_channel_t *channel, dnp3_association_id_t association, dnp3_command_mode_t mode, dnp3_commands_t *command, dnp3_command_task_callback_t callback)
Asynchronously perform a command operation on the association.
dnp3_outstation_config_t::decode_level
dnp3_decode_level_t decode_level
Decoding level.
Definition: dnp3.h:4171
dnp3_control_handler_t::operate_g41v4
dnp3_command_status_t(* operate_g41v4)(double, uint16_t, dnp3_operate_type_t, dnp3_database_t *, void *)
Operate a control point.
Definition: dnp3.h:5074
DNP3_VARIATION_GROUP10_VAR2
Binary Output - With flags.
Definition: dnp3.h:1165
dnp3_variation_to_string
static const char * dnp3_variation_to_string(dnp3_variation_t value)
Converts a dnp3_variation_t to a string.
Definition: dnp3.h:1323
DNP3_PARAM_ERROR_ADDRESS_FILTER_CONFLICT
Conflict in the address filter specification.
Definition: dnp3.h:44
DNP3_FUNCTION_CODE_OPERATE
Outstation shall activate the output points selected (or armed) by a previous select function code co...
Definition: dnp3.h:4574
dnp3_outstation_information_t::enter_solicited_confirm_wait
void(* enter_solicited_confirm_wait)(uint8_t, void *)
Outstation has begun waiting for a solicited confirm.
Definition: dnp3.h:4749
dnp3_double_bit_binary_t::index
uint16_t index
Point index.
Definition: dnp3.h:765
dnp3_read_handler_t::ctx
void * ctx
Context data.
Definition: dnp3.h:1971
dnp3_restart_delay_seconds
dnp3_restart_delay_t dnp3_restart_delay_seconds(uint16_t value)
Creates a restart delay with a value specified in seconds.
dnp3_class_zero_config_t::binary_output_status
bool binary_output_status
Include Binary Output Status in Class 0 reads.
Definition: dnp3.h:4081
DNP3_IIN2_FLAG_ALREADY_EXECUTING
Cannot perform operation because an execution is already in progress.
Definition: dnp3.h:1731
dnp3_event_class_t
dnp3_event_class_t
Event class.
Definition: dnp3.h:3171
DNP3_EVENT_ANALOG_VARIATION_GROUP32_VAR7
Analog input event - single-precision, floating-point with time.
Definition: dnp3.h:3825
DNP3_PARAM_ERROR_RUNTIME_CREATION_FAILURE
Failed to create tokio runtime.
Definition: dnp3.h:52
DNP3_COMMAND_STATUS_BLOCKED_OTHER_MASTER
command not accepted because another master is communicating with the outstation and has exclusive ri...
Definition: dnp3.h:4893
DNP3_READ_RESULT_TOO_MANY_REQUESTS
too many user requests queued
Definition: dnp3.h:2595
DNP3_CLIENT_STATE_CONNECTING
Client is trying to establish a connection to the remote device.
Definition: dnp3.h:2092
DNP3_EVENT_DOUBLE_BIT_BINARY_VARIATION_GROUP4_VAR1
Double-bit binary input event - without time.
Definition: dnp3.h:3376
dnp3_association_id_t::address
uint16_t address
Outstation address of the association.
Definition: dnp3.h:2238
DNP3_IIN2_FLAG_CONFIG_CORRUPT
Outstation reports a configuration corruption.
Definition: dnp3.h:1733
dnp3_flow_control_t
dnp3_flow_control_t
Flow control modes.
Definition: dnp3.h:1481
dnp3_read_handler_t::handle_analog_output_status
void(* handle_analog_output_status)(dnp3_header_info_t, dnp3_analog_output_status_iterator_t *, void *)
Handle analog output status data.
Definition: dnp3.h:1960
DNP3_VARIATION_GROUP4_VAR2
Double-bit Binary Input Event - With absolute time.
Definition: dnp3.h:1157
dnp3_master_channel_config_t::decode_level
dnp3_decode_level_t decode_level
Decoding level for this master. You can modify this later on with dnp3_master_channel_set_decode_leve...
Definition: dnp3.h:2052
DNP3_PARAM_ERROR_OK
Success, i.e. no error occurred.
Definition: dnp3.h:30
dnp3_read_task_callback_t::ctx
void * ctx
Context data.
Definition: dnp3.h:2641
DNP3_STATIC_ANALOG_VARIATION_GROUP30_VAR1
Analog input - 32-bit with flag.
Definition: dnp3.h:3779
dnp3_connection_state_listener_t::on_change
void(* on_change)(dnp3_connection_state_t, void *)
Called when the connection state changes.
Definition: dnp3.h:5163
dnp3_analog_config_t
struct dnp3_analog_config_t dnp3_analog_config_t
Analog configuration.
Definition: dnp3.h:3849
DNP3_FUNCTION_CODE_FREEZE_CLEAR
Outstation shall copy the point data values specified by the objects in the request into a separate f...
Definition: dnp3.h:4584
dnp3_commands_finish_header
void dnp3_commands_finish_header(dnp3_commands_t *commands)
Finish any partially completed header. This allows for the construction of two headers with the same ...
dnp3_broadcast_action_to_string
static const char * dnp3_broadcast_action_to_string(dnp3_broadcast_action_t value)
Converts a dnp3_broadcast_action_t to a string.
Definition: dnp3.h:4717
DNP3_VARIATION_GROUP51_VAR2
Time and date CTO - Absolute time, unsynchronized.
Definition: dnp3.h:1299
dnp3_association_config_init
static dnp3_association_config_t dnp3_association_config_init(dnp3_event_classes_t disable_unsol_classes, dnp3_event_classes_t enable_unsol_classes, dnp3_classes_t startup_integrity_classes, dnp3_event_classes_t event_scan_on_events_available)
Initialize dnp3_association_config_t to default values.
Definition: dnp3.h:2397
DNP3_STATIC_BINARY_OUTPUT_STATUS_VARIATION_GROUP10_VAR2
Binary output - output status with flags.
Definition: dnp3.h:3455
DNP3_BROADCAST_ACTION_PROCESSED
Outstation processed the broadcast.
Definition: dnp3.h:4705
dnp3_counter_t::flags
dnp3_flags_t flags
Point flags.
Definition: dnp3.h:851
dnp3_static_analog_output_status_variation_to_string
static const char * dnp3_static_analog_output_status_variation_to_string(dnp3_static_analog_output_status_variation_t value)
Converts a dnp3_static_analog_output_status_variation_t to a string.
Definition: dnp3.h:3921
DNP3_TIME_SYNC_RESULT_IIN_ERROR
Outstation indicated an error.
Definition: dnp3.h:2900
DNP3_VARIATION_GROUP4_VAR1
Double-bit Binary Input Event - Without time.
Definition: dnp3.h:1155
dnp3_event_class_to_string
static const char * dnp3_event_class_to_string(dnp3_event_class_t value)
Converts a dnp3_event_class_t to a string.
Definition: dnp3.h:3186
dnp3_binary_output_status_t::index
uint16_t index
Point index.
Definition: dnp3.h:806
dnp3_g12v1_t
struct dnp3_g12v1_t dnp3_g12v1_t
Control Relay Output Block.
Definition: dnp3.h:574
DNP3_PARITY_EVEN
Parity bit sets even number of 1 bits.
Definition: dnp3.h:1513
dnp3_decode_level_t::link
dnp3_link_decode_level_t link
Controls link frame decoding.
Definition: dnp3.h:388
dnp3_association_config_t
Association configuration.
Definition: dnp3.h:2360
DNP3_READ_RESULT_ASSOCIATION_REMOVED
association was removed mid-task
Definition: dnp3.h:2607
DNP3_COMMAND_STATUS_SUCCESS
command was accepted, initiated, or queued (value == 0)
Definition: dnp3.h:4859
dnp3_master_channel_enable
dnp3_param_error_t dnp3_master_channel_enable(dnp3_master_channel_t *channel)
start communications
dnp3_association_config_t::disable_unsol_classes
dnp3_event_classes_t disable_unsol_classes
Classes to disable unsolicited responses at startup.
Definition: dnp3.h:2363
DNP3_COMMAND_STATUS_LOCAL
the function governed by the control is in local only control (value == 7)
Definition: dnp3.h:4873
dnp3_control_handler_t::select_g41v3
dnp3_command_status_t(* select_g41v3)(float, uint16_t, dnp3_database_t *, void *)
Select an analog output, but do not operate.
Definition: dnp3.h:5044
dnp3_read_result_to_string
static const char * dnp3_read_result_to_string(dnp3_read_result_t value)
Converts a dnp3_read_result_t to a string.
Definition: dnp3.h:2613
DNP3_VARIATION_GROUP42_VAR6
Analog Output Event - Double-precision floating point without time.
Definition: dnp3.h:1285
dnp3_association_config_t
struct dnp3_association_config_t dnp3_association_config_t
Association configuration.
Definition: dnp3.h:2357
DNP3_VARIATION_GROUP30_VAR2
Analog Input - 16-bit with flags.
Definition: dnp3.h:1225
dnp3_outstation_config_t::outstation_address
uint16_t outstation_address
Link-layer outstation address.
Definition: dnp3.h:4152
DNP3_EVENT_ANALOG_VARIATION_GROUP32_VAR2
Analog input event - 16-bit without time.
Definition: dnp3.h:3815
dnp3_binary_output_status_config_t::static_variation
dnp3_static_binary_output_status_variation_t static_variation
Default static variation.
Definition: dnp3.h:3500
DNP3_EVENT_ANALOG_OUTPUT_STATUS_VARIATION_GROUP42_VAR5
Analog output event - single-precision, floating-point without time.
Definition: dnp3.h:3945
DNP3_OPERATE_TYPE_SELECT_BEFORE_OPERATE
control point was properly selected before the operate request
Definition: dnp3.h:4938
dnp3_class_zero_config_t::counter
bool counter
Include Counters in Class 0 reads.
Definition: dnp3.h:4084
dnp3_timestamp_utc_init
static dnp3_timestamp_utc_t dnp3_timestamp_utc_init(uint64_t value, bool is_valid)
Initialize dnp3_timestamp_utc_t to default values.
Definition: dnp3.h:2432
DNP3_VARIATION_GROUP20_VAR5
Counter - 32-bit without flag.
Definition: dnp3.h:1183
DNP3_OP_TYPE_LATCH_ON
LATCH_ON (3)
Definition: dnp3.h:521
dnp3_control_handler_t::operate_g41v1
dnp3_command_status_t(* operate_g41v1)(int32_t, uint16_t, dnp3_operate_type_t, dnp3_database_t *, void *)
Operate a control point.
Definition: dnp3.h:5011
dnp3_request_header_init
static dnp3_request_header_t dnp3_request_header_init(dnp3_control_t control, dnp3_function_code_t function)
Initialize dnp3_request_header_t to default values.
Definition: dnp3.h:4692
dnp3_iin_t
struct dnp3_iin_t dnp3_iin_t
Pair of IIN bytes.
Definition: dnp3.h:1760
DNP3_FREEZE_RESULT_SUCCESS
Freeze operation was successful.
Definition: dnp3.h:4442
DNP3_PORT_STATE_DISABLED
Disabled until enabled.
Definition: dnp3.h:1071
dnp3_iin_t::iin2
dnp3_iin2_t iin2
Second IIN byte.
Definition: dnp3.h:1768
dnp3_master_channel_create_tcp
dnp3_param_error_t dnp3_master_channel_create_tcp(dnp3_runtime_t *runtime, dnp3_link_error_mode_t link_error_mode, dnp3_master_channel_config_t config, dnp3_endpoint_list_t *endpoints, dnp3_connect_strategy_t connect_strategy, dnp3_client_state_listener_t listener, dnp3_master_channel_t **out)
Create a master channel that connects to the specified TCP endpoint(s)
DNP3_RESTART_ERROR_RESPONSE_TIMEOUT
timeout occurred before receiving a response
Definition: dnp3.h:2995
DNP3_IIN1_FLAG_BROADCAST
Indicate that the message was broadcasted.
Definition: dnp3.h:1656
dnp3_master_channel_add_association
dnp3_param_error_t dnp3_master_channel_add_association(dnp3_master_channel_t *channel, uint16_t address, dnp3_association_config_t config, dnp3_read_handler_t read_handler, dnp3_association_handler_t association_handler, dnp3_association_id_t *out)
Add an association to the channel.
dnp3_serial_port_settings_t::flow_control
dnp3_flow_control_t flow_control
Type of signalling to use for controlling data transfer.
Definition: dnp3.h:1565
dnp3_octet_string_new
dnp3_octet_string_value_t * dnp3_octet_string_new()
Create a new octet string.
dnp3_time_sync_result_to_string
static const char * dnp3_time_sync_result_to_string(dnp3_time_sync_result_t value)
Converts a dnp3_time_sync_result_t to a string.
Definition: dnp3.h:2920
DNP3_IIN1_FLAG_CLASS1_EVENTS
Outstation has Class 1 events not reported yet.
Definition: dnp3.h:1658
DNP3_STATIC_ANALOG_OUTPUT_STATUS_VARIATION_GROUP40_VAR4
Analog output status - double-precision, floating-point with flag.
Definition: dnp3.h:3915
dnp3_read_handler_t::handle_octet_string
void(* handle_octet_string)(dnp3_header_info_t, dnp3_octet_string_iterator_t *, void *)
Handle octet string data.
Definition: dnp3.h:1966
DNP3_FUNCTION_CODE_DIRECT_OPERATE
Outstation shall immediately actuate the output points specified by the objects in the request (value...
Definition: dnp3.h:4576
DNP3_EVENT_ANALOG_OUTPUT_STATUS_VARIATION_GROUP42_VAR2
Analog output event - 16-bit without time.
Definition: dnp3.h:3939
dnp3_function_code_to_string
static const char * dnp3_function_code_to_string(dnp3_function_code_t value)
Converts a dnp3_function_code_t to a string.
Definition: dnp3.h:4636
dnp3_outstation_information_t::solicited_confirm_timeout
void(* solicited_confirm_timeout)(uint8_t, void *)
Failed to receive a solicited confirm before the timeout occurred.
Definition: dnp3.h:4754
dnp3_link_decode_level_t
dnp3_link_decode_level_t
Controls how transmitted and received link frames are decoded at the INFO log level.
Definition: dnp3.h:326
DNP3_VARIATION_GROUP42_VAR3
Analog Output Event - 32-bit with time.
Definition: dnp3.h:1279
dnp3_control_handler_t
Callbacks for handling controls.
Definition: dnp3.h:4960
DNP3_READ_TYPE_PERIODIC_POLL
Periodic poll configured by the user.
Definition: dnp3.h:1886
dnp3_octetstring_next
dnp3_octet_string_t * dnp3_octetstring_next(dnp3_octet_string_iterator_t *it)
Get the next value of the iterator.
dnp3_database_update_analog_output_status
bool dnp3_database_update_analog_output_status(dnp3_database_t *db, dnp3_analog_output_status_t value, dnp3_update_options_t options)
Update a Analog Output Status point.
dnp3_g12v1_t
Control Relay Output Block.
Definition: dnp3.h:577
DNP3_QUALIFIER_CODE_COUNT_AND_PREFIX16
16-bit count and prefix (0x28)
Definition: dnp3.h:1828
dnp3_runtime_config_init
static dnp3_runtime_config_t dnp3_runtime_config_init()
Initialize dnp3_runtime_config_t to default values.
Definition: dnp3.h:424
DNP3_OP_TYPE_NUL
NUL (0)
Definition: dnp3.h:515
dnp3_outstation_transaction_init
static dnp3_outstation_transaction_t dnp3_outstation_transaction_init(void(*execute)(dnp3_database_t *, void *), void(*on_destroy)(void *arg), void *ctx)
Initialize a dnp3_outstation_transaction_t interface.
Definition: dnp3.h:5209
DNP3_TIME_SYNC_RESULT_NO_CONNECTION
no connection
Definition: dnp3.h:2910
dnp3_analog_output_status_init
static dnp3_analog_output_status_t dnp3_analog_output_status_init(uint16_t index, double value, dnp3_flags_t flags, dnp3_timestamp_t time)
Initialize dnp3_analog_output_status_t to default values.
Definition: dnp3.h:985
dnp3_decode_level_t
struct dnp3_decode_level_t dnp3_decode_level_t
Controls the decoding of transmitted and received data at the application, transport,...
Definition: dnp3.h:375
dnp3_event_buffer_config_t::max_double_bit_binary
uint16_t max_double_bit_binary
Maximum number of Double-Bit Binary Input events (g4)
Definition: dnp3.h:4243
DNP3_DATA_BITS_SEVEN
7 bits per character
Definition: dnp3.h:1460
DNP3_COMMAND_STATUS_ALREADY_COMPLETE
command not accepted because the outstation has already completed the requested operation (value == 1...
Definition: dnp3.h:4887
dnp3_outstation_application_t::on_destroy
void(* on_destroy)(void *arg)
Callback when the underlying owner doesn't need the interface anymore.
Definition: dnp3.h:4520
dnp3_master_channel_set_decode_level
dnp3_param_error_t dnp3_master_channel_set_decode_level(dnp3_master_channel_t *channel, dnp3_decode_level_t decode_level)
Set the decoding level for the channel.
dnp3_app_decode_level_t
dnp3_app_decode_level_t
Controls how transmitted and received application-layer fragments are decoded at the INFO log level.
Definition: dnp3.h:273
DNP3_APP_DECODE_LEVEL_HEADER
Decode the header-only.
Definition: dnp3.h:278
DNP3_FUNCTION_CODE_SAVE_CONFIGURATION
This code is deprecated-Do not use for new designs (value == 19)
Definition: dnp3.h:4604
DNP3_EVENT_ANALOG_VARIATION_GROUP32_VAR4
Analog input event - 16-bit with time.
Definition: dnp3.h:3819
dnp3_counter_t::index
uint16_t index
Point index.
Definition: dnp3.h:847
DNP3_TRIP_CLOSE_CODE_TRIP
TRIP (2)
Definition: dnp3.h:491
dnp3_link_error_mode_to_string
static const char * dnp3_link_error_mode_to_string(dnp3_link_error_mode_t value)
Converts a dnp3_link_error_mode_t to a string.
Definition: dnp3.h:1600
dnp3_outstation_information_t
struct dnp3_outstation_information_t dnp3_outstation_information_t
Informational callbacks that the outstation doesn't rely on to function.
dnp3_connect_strategy_t
Timing parameters for connection attempts.
Definition: dnp3.h:2164
dnp3_request_new
dnp3_request_t * dnp3_request_new()
Create a new request.
DNP3_VARIATION_GROUP40_VAR0
Analog Output Status - Default variation.
Definition: dnp3.h:1253
dnp3_tcpserver_add_outstation
dnp3_param_error_t dnp3_tcpserver_add_outstation(dnp3_tcp_server_t *server, dnp3_outstation_config_t config, dnp3_event_buffer_config_t event_config, dnp3_outstation_application_t application, dnp3_outstation_information_t information, dnp3_control_handler_t control_handler, dnp3_connection_state_listener_t listener, dnp3_address_filter_t *filter, dnp3_outstation_t **out)
Add an outstation to the server.
DNP3_EVENT_BINARY_VARIATION_GROUP2_VAR3
Binary input event - with relative time.
Definition: dnp3.h:3281
dnp3_time_format_t
dnp3_time_format_t
Describes if and how the time will be formatted in log messages.
Definition: dnp3.h:144
DNP3_EVENT_COUNTER_VARIATION_GROUP22_VAR5
Counter event - 32-bit with flag and time.
Definition: dnp3.h:3581
dnp3_outstation_information_t
Informational callbacks that the outstation doesn't rely on to function.
Definition: dnp3.h:4732
dnp3_link_status_callback_init
static dnp3_link_status_callback_t dnp3_link_status_callback_init(void(*on_complete)(dnp3_link_status_result_t, void *), void(*on_destroy)(void *arg), void *ctx)
Initialize a dnp3_link_status_callback_t interface.
Definition: dnp3.h:3142
dnp3_timestamp_init
static dnp3_timestamp_t dnp3_timestamp_init(uint64_t value, dnp3_time_quality_t quality)
Initialize dnp3_timestamp_t to default values.
Definition: dnp3.h:666
DNP3_EVENT_ANALOG_VARIATION_GROUP32_VAR6
Analog input event - double-precision, floating-point without time.
Definition: dnp3.h:3823
DNP3_FUNCTION_CODE_DISABLE_UNSOLICITED
Prevents outstation from initiating unsolicited responses from points specified by the objects in the...
Definition: dnp3.h:4608
dnp3_control_t
struct dnp3_control_t dnp3_control_t
APDU Control field.
Definition: dnp3.h:447
dnp3_outstation_application_t::cold_restart
dnp3_restart_delay_t(* cold_restart)(void *)
Request that the outstation perform a cold restart (IEEE-1815 2012, p. 58)
Definition: dnp3.h:4494
dnp3_database_remove_binary
bool dnp3_database_remove_binary(dnp3_database_t *db, uint16_t index)
Remove a Binary Input point.
dnp3_retry_strategy_t
Retry strategy configuration.
Definition: dnp3.h:1429
dnp3_restart_delay_type_t
dnp3_restart_delay_type_t
Type of restart delay value. Used by dnp3_restart_delay_t.
Definition: dnp3.h:4294
dnp3_command_task_callback_t::on_complete
void(* on_complete)(dnp3_command_result_t, void *)
Called when the command task reached completion or failed.
Definition: dnp3.h:2824
dnp3_classes_t::class0
bool class0
Class 0 (static data)
Definition: dnp3.h:2297
dnp3_analog_output_status_config_t
Analog Output Status configuration.
Definition: dnp3.h:3976
DNP3_COMMAND_RESULT_HEADER_MISMATCH
Number of headers or objects in the response didn't match the number in the request.
Definition: dnp3.h:2779
DNP3_APP_DECODE_LEVEL_OBJECT_HEADERS
Decode the header and the object headers.
Definition: dnp3.h:280
DNP3_VARIATION_GROUP21_VAR6
Frozen Counter - 16-bit with flags and time.
Definition: dnp3.h:1195
dnp3_control_t::fir
bool fir
First fragment in the message.
Definition: dnp3.h:453
DNP3_QUALIFIER_CODE_ALL_OBJECTS
All objects (0x06)
Definition: dnp3.h:1820
dnp3_control_t
APDU Control field.
Definition: dnp3.h:450
DNP3_VARIATION_GROUP22_VAR6
Counter Event - 16-bit with flags and time.
Definition: dnp3.h:1209
dnp3_outstation_application_t::get_application_iin
dnp3_application_iin_t(* get_application_iin)(void *)
Returns the application-controlled IIN bits.
Definition: dnp3.h:4487
DNP3_EVENT_ANALOG_OUTPUT_STATUS_VARIATION_GROUP42_VAR3
Analog output event - 32-bit with time.
Definition: dnp3.h:3941
dnp3_control_code_t
CROB (dnp3_g12v1_t) control code.
Definition: dnp3.h:545
DNP3_LINK_STATUS_RESULT_TASK_ERROR
The task failed for some reason (e.g. the master was shutdown)
Definition: dnp3.h:3106
DNP3_VARIATION_GROUP41_VAR3
Analog Output - Single-precision floating point.
Definition: dnp3.h:1269
dnp3_octet_string_t::index
uint16_t index
Point index.
Definition: dnp3.h:1040
DNP3_FUNCTION_CODE_CONFIRM
Master sends this to an outstation to confirm the receipt of an Application Layer fragment (value == ...
Definition: dnp3.h:4566
DNP3_TIME_SYNC_RESULT_SYSTEM_TIME_NOT_UNIX
The system time cannot be converted to a Unix timestamp.
Definition: dnp3.h:2890
DNP3_FLOW_CONTROL_SOFTWARE
Flow control using XON/XOFF bytes.
Definition: dnp3.h:1486
DNP3_IIN1_FLAG_NEED_TIME
Outstation indicates it requires time synchronization from the master.
Definition: dnp3.h:1664
dnp3_connection_state_listener_t::ctx
void * ctx
Context data.
Definition: dnp3.h:5168
dnp3_association_config_t::enable_unsol_classes
dnp3_event_classes_t enable_unsol_classes
Classes to enable unsolicited responses at startup.
Definition: dnp3.h:2365
dnp3_serial_port_settings_t::baud_rate
uint32_t baud_rate
Baud rate (in symbols-per-second)
Definition: dnp3.h:1559
dnp3_double_bit_binary_t::time
dnp3_timestamp_t time
Point timestamp.
Definition: dnp3.h:771
DNP3_TIME_SYNC_RESULT_RESPONSE_TIMEOUT
timeout occurred before receiving a response
Definition: dnp3.h:2906
dnp3_master_channel_config_t::tx_buffer_size
uint16_t tx_buffer_size
TX buffer size.
Definition: dnp3.h:2061
dnp3_timestamp_t
Timestamp value.
Definition: dnp3.h:654
DNP3_VARIATION_GROUP23_VAR6
Frozen Counter Event - 16-bit with flags and time.
Definition: dnp3.h:1219
dnp3_analog_output_status_config_t::event_variation
dnp3_event_analog_output_status_variation_t event_variation
Default event variation.
Definition: dnp3.h:3983
dnp3_static_frozen_counter_variation_t
dnp3_static_frozen_counter_variation_t
Static frozen counter variation.
Definition: dnp3.h:3658
DNP3_WRITE_TIME_RESULT_OK
The write time operation succeeded.
Definition: dnp3.h:4399
dnp3_timestamp_utc_t::is_valid
bool is_valid
True if the timestamp is valid, false otherwise.
Definition: dnp3.h:2425
dnp3_master_channel_config_t::response_timeout
uint64_t response_timeout
Timeout for receiving a response.
Definition: dnp3.h:2056
DNP3_COMMAND_STATUS_TIMEOUT
command timed out before completing (value == 1)
Definition: dnp3.h:4861
dnp3_database_get_analog
dnp3_param_error_t dnp3_database_get_analog(dnp3_database_t *db, uint16_t index, dnp3_analog_t *out)
Get a Analog point.
dnp3_endpoint_list_t
struct dnp3_endpoint_list_t dnp3_endpoint_list_t
List of IP endpoints.
Definition: dnp3.h:2023
DNP3_VARIATION_GROUP4_VAR0
Double-bit Binary Input Event - Default variation.
Definition: dnp3.h:1153
dnp3_frozen_counter_config_t::static_variation
dnp3_static_frozen_counter_variation_t static_variation
Default static variation.
Definition: dnp3.h:3726
dnp3_association_handler_t::get_current_time
dnp3_timestamp_utc_t(* get_current_time)(void *)
Returns the current time or an invalid time if none is available.
Definition: dnp3.h:2462
dnp3_g12v1_init
static dnp3_g12v1_t dnp3_g12v1_init(dnp3_control_code_t code, uint8_t count, uint32_t on_time, uint32_t off_time)
Initialize dnp3_g12v1_t to default values.
Definition: dnp3.h:595
dnp3_update_options_init
static dnp3_update_options_t dnp3_update_options_init()
Initialize dnp3_update_options_t to default values.
Definition: dnp3.h:3242
dnp3_timestamp_utc_t::value
uint64_t value
Value of the timestamp (in milliseconds from UNIX Epoch).
Definition: dnp3.h:2423
DNP3_FREEZE_RESULT_PARAMETER_ERROR
One of the point is invalid.
Definition: dnp3.h:4444
dnp3_binary_t::flags
dnp3_flags_t flags
Point flags.
Definition: dnp3.h:728
dnp3_outstation_information_init
static dnp3_outstation_information_t dnp3_outstation_information_init(void(*process_request_from_idle)(dnp3_request_header_t, void *), void(*broadcast_received)(dnp3_function_code_t, dnp3_broadcast_action_t, void *), void(*enter_solicited_confirm_wait)(uint8_t, void *), void(*solicited_confirm_timeout)(uint8_t, void *), void(*solicited_confirm_received)(uint8_t, void *), void(*solicited_confirm_wait_new_request)(void *), void(*wrong_solicited_confirm_seq)(uint8_t, uint8_t, void *), void(*unexpected_confirm)(bool, uint8_t, void *), void(*enter_unsolicited_confirm_wait)(uint8_t, void *), void(*unsolicited_confirm_timeout)(uint8_t, bool, void *), void(*unsolicited_confirmed)(uint8_t, void *), void(*clear_restart_iin)(void *), void(*on_destroy)(void *arg), void *ctx)
Initialize a dnp3_outstation_information_t interface.
Definition: dnp3.h:4818
dnp3_association_config_t::event_scan_on_events_available
dnp3_event_classes_t event_scan_on_events_available
Classes to automatically send reads when the IIN bit is asserted.
Definition: dnp3.h:2385
DNP3_FUNCTION_CODE_INITIALIZE_DATA
Obsolete-Do not use for new designs (value == 15)
Definition: dnp3.h:4596
dnp3_control_code_init
static dnp3_control_code_t dnp3_control_code_init(dnp3_trip_close_code_t tcc, bool clear, dnp3_op_type_t op_type)
Initialize dnp3_control_code_t to default values.
Definition: dnp3.h:563
dnp3_response_header_t
Response header information.
Definition: dnp3.h:1787
DNP3_CLIENT_STATE_CONNECTED
Client is connected to the remote device.
Definition: dnp3.h:2094
DNP3_EVENT_ANALOG_VARIATION_GROUP32_VAR5
Analog input event - single-precision, floating-point without time.
Definition: dnp3.h:3821
DNP3_VARIATION_GROUP40_VAR4
Analog Output Status - Double-precision floating point with flags.
Definition: dnp3.h:1261
dnp3_master_channel_config_init
static dnp3_master_channel_config_t dnp3_master_channel_config_init(uint16_t address)
Initialize dnp3_master_channel_config_t to default values.
Definition: dnp3.h:2072
dnp3_class_zero_config_t::analog
bool analog
Include Analog Inputs in Class 0 reads.
Definition: dnp3.h:4090
dnp3_logging_config_t::output_format
dnp3_log_output_format_t output_format
output formatting options
Definition: dnp3.h:200
dnp3_outstation_transaction_t::ctx
void * ctx
Context data.
Definition: dnp3.h:5202
dnp3_master_channel_remove_poll
dnp3_param_error_t dnp3_master_channel_remove_poll(dnp3_master_channel_t *channel, dnp3_poll_id_t poll_id)
Add a periodic poll to an association.
dnp3_outstation_config_t::keep_alive_timeout
uint64_t keep_alive_timeout
Delay of inactivity before sending a REQUEST_LINK_STATUS to the master.
Definition: dnp3.h:4194
DNP3_STATIC_COUNTER_VARIATION_GROUP20_VAR2
Counter - 16-bit with flag.
Definition: dnp3.h:3551
dnp3_control_handler_t::begin_fragment
void(* begin_fragment)(void *)
Notifies the start of a command fragment.
Definition: dnp3.h:4965
DNP3_LINK_DECODE_LEVEL_NOTHING
Decode nothing.
Definition: dnp3.h:329
DNP3_TRIP_CLOSE_CODE_CLOSE
CLOSE (1)
Definition: dnp3.h:489
dnp3_octet_string_t
struct dnp3_octet_string_t dnp3_octet_string_t
Octet String point.
Definition: dnp3.h:1034
dnp3_variation_t
dnp3_variation_t
Group/Variation.
Definition: dnp3.h:1130
DNP3_EVENT_CLASS_NONE
Does not generate events.
Definition: dnp3.h:3174
DNP3_TIME_SYNC_RESULT_TOO_MANY_REQUESTS
too many user requests queued
Definition: dnp3.h:2902
dnp3_database_get_analog_output_status
dnp3_param_error_t dnp3_database_get_analog_output_status(dnp3_database_t *db, uint16_t index, dnp3_analog_output_status_t *out)
Get a Analog Output Status point.
dnp3_outstation_config_t::unsolicited_retry_delay
uint64_t unsolicited_retry_delay
Delay to wait before retrying an unsolicited response.
Definition: dnp3.h:4188
dnp3_counter_t
struct dnp3_counter_t dnp3_counter_t
Counter point.
Definition: dnp3.h:841
dnp3_request_destroy
void dnp3_request_destroy(dnp3_request_t *request)
Destroy a request created with dnp3_request_new or dnp3_request_new_class.
dnp3_update_options_t
struct dnp3_update_options_t dnp3_update_options_t
Options that control how the update is performed.
Definition: dnp3.h:3225
dnp3_master_channel_get_decode_level
dnp3_param_error_t dnp3_master_channel_get_decode_level(dnp3_master_channel_t *channel, dnp3_decode_level_t *out)
Get the decoding level for the channel.
dnp3_counter_t
Counter point.
Definition: dnp3.h:844
DNP3_STATIC_FROZEN_COUNTER_VARIATION_GROUP21_VAR2
Frozen Counter - 16-bit with flag.
Definition: dnp3.h:3663
dnp3_tcpserver_bind
dnp3_param_error_t dnp3_tcpserver_bind(dnp3_tcp_server_t *server)
Bind the server to the port and starts listening. Also starts all the outstations associated to it.
dnp3_analog_config_t::static_variation
dnp3_static_analog_variation_t static_variation
Default static variation.
Definition: dnp3.h:3856
dnp3_event_buffer_config_t::max_octet_string
uint16_t max_octet_string
Maximum number of Octet String events (g111)
Definition: dnp3.h:4255
DNP3_STATIC_ANALOG_VARIATION_GROUP30_VAR4
Analog input - 16-bit without flag.
Definition: dnp3.h:3785
dnp3_g12v1_t::code
dnp3_control_code_t code
Control code.
Definition: dnp3.h:580
dnp3_analog_t
Analog point.
Definition: dnp3.h:926
dnp3_frozen_counter_config_t
Frozen Counter configuration.
Definition: dnp3.h:3722
dnp3_read_result_t
dnp3_read_result_t
Result of a read operation.
Definition: dnp3.h:2590
DNP3_COMMAND_STATUS_OUT_OF_RANGE
command not accepted because the value is outside the acceptable range permitted for this point (valu...
Definition: dnp3.h:4883
DNP3_EVENT_ANALOG_VARIATION_GROUP32_VAR1
Analog input event - 32-bit without time.
Definition: dnp3.h:3813
DNP3_FUNCTION_CODE_INITIALIZE_APPLICATION
Outstation shall place the applications specified by the objects in the request into the ready to run...
Definition: dnp3.h:4598
dnp3_outstation_application_t::write_absolute_time
dnp3_write_time_result_t(* write_absolute_time)(uint64_t, void *)
Handle a write of the absolute time during time synchronization procedures.
Definition: dnp3.h:4482
DNP3_VARIATION_GROUP60_VAR3
Class objects - Class 2 data.
Definition: dnp3.h:1309
DNP3_DOUBLE_BIT_INTERMEDIATE
Transition between conditions.
Definition: dnp3.h:694
dnp3_iin_t
Pair of IIN bytes.
Definition: dnp3.h:1763
DNP3_VARIATION_GROUP20_VAR6
Counter - 16-bit without flag.
Definition: dnp3.h:1185
dnp3_connection_state_t
dnp3_connection_state_t
Outstation connection state for connection-oriented transports, e.g. TCP.
Definition: dnp3.h:5135
DNP3_DATA_BITS_SIX
6 bits per character
Definition: dnp3.h:1458
DNP3_VARIATION_GROUP52_VAR1
Time delay - Coarse.
Definition: dnp3.h:1301
DNP3_EVENT_ANALOG_OUTPUT_STATUS_VARIATION_GROUP42_VAR4
Analog output event - 16-bit with time.
Definition: dnp3.h:3943
dnp3_static_double_bit_binary_variation_to_string
static const char * dnp3_static_double_bit_binary_variation_to_string(dnp3_static_double_bit_binary_variation_t value)
Converts a dnp3_static_double_bit_binary_variation_t to a string.
Definition: dnp3.h:3362
dnp3_request_add_all_objects_header
void dnp3_request_add_all_objects_header(dnp3_request_t *request, dnp3_variation_t variation)
Add an all objects variation interrogation.
dnp3_binary_next
dnp3_binary_t * dnp3_binary_next(dnp3_binary_iterator_t *it)
Get the next value of the iterator.
dnp3_response_header_t::func
dnp3_response_function_t func
Response type.
Definition: dnp3.h:1792
DNP3_READ_RESULT_WRITE_ERROR
insufficient buffer space to serialize the request
Definition: dnp3.h:2601
dnp3_master_channel_cold_restart
dnp3_param_error_t dnp3_master_channel_cold_restart(dnp3_master_channel_t *channel, dnp3_association_id_t association, dnp3_restart_task_callback_t callback)
Asynchronously perform a cold restart operation to the association.
dnp3_flags_init
static dnp3_flags_t dnp3_flags_init(uint8_t value)
Initialize dnp3_flags_t to default values.
Definition: dnp3.h:618
dnp3_outstation_set_decode_level
dnp3_param_error_t dnp3_outstation_set_decode_level(dnp3_outstation_t *outstation, dnp3_decode_level_t level)
Set decoding log level.
dnp3_request_add_two_byte_header
void dnp3_request_add_two_byte_header(dnp3_request_t *request, dnp3_variation_t variation, uint16_t start, uint16_t stop)
Add a two-byte start/stop variation interrogation.
dnp3_restart_delay_t::restart_type
dnp3_restart_delay_type_t restart_type
Indicates what dnp3_restart_delay_t::value is.
Definition: dnp3.h:4358
dnp3_command_task_callback_t::on_destroy
void(* on_destroy)(void *arg)
Callback when the underlying owner doesn't need the interface anymore.
Definition: dnp3.h:2827
dnp3_binary_config_init
static dnp3_binary_config_t dnp3_binary_config_init()
Initialize dnp3_binary_config_t to default values.
Definition: dnp3.h:3313
dnp3_endpoint_list_add
void dnp3_endpoint_list_add(dnp3_endpoint_list_t *list, const char *endpoint)
Add an IP endpoint to the list.
DNP3_COMMAND_STATUS_AUTOMATION_INHIBIT
command not accepted because it was prevented or inhibited by a local automation process,...
Definition: dnp3.h:4879
dnp3_control_t::seq
uint8_t seq
Sequence number.
Definition: dnp3.h:461
DNP3_VARIATION_GROUP41_VAR1
Analog Output - 32-bit.
Definition: dnp3.h:1265
dnp3_broadcast_action_t
dnp3_broadcast_action_t
Enumeration describing how the outstation processed a broadcast request.
Definition: dnp3.h:4702
DNP3_VARIATION_GROUP32_VAR0
Analog Input Event - Default variation.
Definition: dnp3.h:1235
dnp3_time_sync_task_callback_t
Handler for time synchronization tasks.
Definition: dnp3.h:2944
dnp3_restart_task_callback_t
struct dnp3_restart_task_callback_t dnp3_restart_task_callback_t
Handler for restart tasks.
dnp3_port_state_t
dnp3_port_state_t
State of the serial port.
Definition: dnp3.h:1068
DNP3_VARIATION_GROUP60_VAR4
Class objects - Class 3 data.
Definition: dnp3.h:1311
dnp3_response_header_t::control
dnp3_control_t control
Application control field.
Definition: dnp3.h:1790
dnp3_binary_t::time
dnp3_timestamp_t time
Point timestamp.
Definition: dnp3.h:730
dnp3_tcp_server_t
struct dnp3_tcp_server_t dnp3_tcp_server_t
TCP server that listens for connections and routes the messages to outstations.
Definition: dnp3.h:5289
dnp3_database_update_binary
bool dnp3_database_update_binary(dnp3_database_t *db, dnp3_binary_t value, dnp3_update_options_t options)
Update a Binary Input point.
DNP3_FUNCTION_CODE_FREEZE_AT_TIME
Outstation shall copy the point data values specified by the objects in the request to a separate fre...
Definition: dnp3.h:4588
DNP3_COMMAND_STATUS_NOT_AUTHORIZED
the command was rejected because the device denied it or an RTU intercepted it (value == 9)
Definition: dnp3.h:4877
dnp3_restart_delay_type_to_string
static const char * dnp3_restart_delay_type_to_string(dnp3_restart_delay_type_t value)
Converts a dnp3_restart_delay_type_t to a string.
Definition: dnp3.h:4307
DNP3_READ_RESULT_SUCCESS
Read was perform successfully.
Definition: dnp3.h:2593
DNP3_VARIATION_GROUP111
Octet String Event.
Definition: dnp3.h:1317
dnp3_double_bit_binary_iterator_t
struct dnp3_double_bit_binary_iterator_t dnp3_double_bit_binary_iterator_t
Iterator of dnp3_double_bit_binary_t. See dnp3_doublebitbinary_next.
Definition: dnp3.h:792
dnp3_decode_level_t::physical
dnp3_phys_decode_level_t physical
Controls the logging of physical layer read/write.
Definition: dnp3.h:391
dnp3_control_handler_init
static dnp3_control_handler_t dnp3_control_handler_init(void(*begin_fragment)(void *), void(*end_fragment)(void *), dnp3_command_status_t(*select_g12v1)(dnp3_g12v1_t, uint16_t, dnp3_database_t *, void *), dnp3_command_status_t(*operate_g12v1)(dnp3_g12v1_t, uint16_t, dnp3_operate_type_t, dnp3_database_t *, void *), dnp3_command_status_t(*select_g41v1)(int32_t, uint16_t, dnp3_database_t *, void *), dnp3_command_status_t(*operate_g41v1)(int32_t, uint16_t, dnp3_operate_type_t, dnp3_database_t *, void *), dnp3_command_status_t(*select_g41v2)(int16_t, uint16_t, dnp3_database_t *, void *), dnp3_command_status_t(*operate_g41v2)(int16_t, uint16_t, dnp3_operate_type_t, dnp3_database_t *, void *), dnp3_command_status_t(*select_g41v3)(float, uint16_t, dnp3_database_t *, void *), dnp3_command_status_t(*operate_g41v3)(float, uint16_t, dnp3_operate_type_t, dnp3_database_t *, void *), dnp3_command_status_t(*select_g41v4)(double, uint16_t, dnp3_database_t *, void *), dnp3_command_status_t(*operate_g41v4)(double, uint16_t, dnp3_operate_type_t, dnp3_database_t *, void *), void(*on_destroy)(void *arg), void *ctx)
Initialize a dnp3_control_handler_t interface.
Definition: dnp3.h:5097
DNP3_QUALIFIER_CODE_RANGE16
16-bit start stop (0x01)
Definition: dnp3.h:1818
dnp3_timestamp_t::quality
dnp3_time_quality_t quality
Timestamp quality.
Definition: dnp3.h:659
dnp3_time_sync_task_callback_t::on_destroy
void(* on_destroy)(void *arg)
Callback when the underlying owner doesn't need the interface anymore.
Definition: dnp3.h:2953
dnp3_outstation_features_t::self_address
bool self_address
Respond to the self address.
Definition: dnp3.h:4125
dnp3_class_zero_config_t::analog_output_status
bool analog_output_status
Include Analog Output Status in Class 0 reads.
Definition: dnp3.h:4093
DNP3_OP_TYPE_PULSE_ON
PULSE_ON (1)
Definition: dnp3.h:517
dnp3_time_quality_to_string
static const char * dnp3_time_quality_to_string(dnp3_time_quality_t value)
Converts a dnp3_time_quality_t to a string.
Definition: dnp3.h:640
dnp3_restart_delay_t
Restart delay used by dnp3_outstation_application_t::cold_restart and dnp3_outstation_application_t::...
Definition: dnp3.h:4355
dnp3_octet_string_add
void dnp3_octet_string_add(dnp3_octet_string_value_t *octet_string, uint8_t value)
Create a new octet string.
DNP3_EVENT_BINARY_VARIATION_GROUP2_VAR1
Binary input event - without time.
Definition: dnp3.h:3277
DNP3_VARIATION_GROUP80_VAR1
Internal Indications - Packed format.
Definition: dnp3.h:1313
DNP3_VARIATION_GROUP32_VAR4
Analog Input Event - 16-bit with time.
Definition: dnp3.h:1243
DNP3_CLIENT_STATE_WAIT_AFTER_DISCONNECT
Client was disconnected, waiting before retrying.
Definition: dnp3.h:2098
dnp3_outstation_transaction_t::execute
void(* execute)(dnp3_database_t *, void *)
Execute the transaction with the provided database.
Definition: dnp3.h:5197
DNP3_VARIATION_GROUP40_VAR3
Analog Output Status - Single-precision floating point with flags.
Definition: dnp3.h:1259
DNP3_TIME_QUALITY_INVALID
Timestamp is not valid, ignore the value and use a local timestamp.
Definition: dnp3.h:634
dnp3_frozen_counter_t::flags
dnp3_flags_t flags
Point flags.
Definition: dnp3.h:892
dnp3_binary_t::index
uint16_t index
Point index.
Definition: dnp3.h:724
dnp3_iin_init
static dnp3_iin_t dnp3_iin_init(dnp3_iin1_t iin1, dnp3_iin2_t iin2)
Initialize dnp3_iin_t to default values.
Definition: dnp3.h:1775
dnp3_logging_config_t::time_format
dnp3_time_format_t time_format
optional time format
Definition: dnp3.h:203
DNP3_EVENT_FROZEN_COUNTER_VARIATION_GROUP23_VAR5
Frozen Counter event - 32-bit with flag and time.
Definition: dnp3.h:3699
dnp3_counter_iterator_t
struct dnp3_counter_iterator_t dnp3_counter_iterator_t
Iterator of dnp3_counter_t. See dnp3_counter_next.
Definition: dnp3.h:874
dnp3_logger_t
Logging interface that receives the log messages and writes them somewhere.
Definition: dnp3.h:227
DNP3_LINK_STATUS_RESULT_SUCCESS
The outstation responded with a valid LINK_STATUS.
Definition: dnp3.h:3102
dnp3_double_bit_to_string
static const char * dnp3_double_bit_to_string(dnp3_double_bit_t value)
Converts a dnp3_double_bit_t to a string.
Definition: dnp3.h:706
DNP3_READ_TYPE_SINGLE_POLL
Single poll requested by the user.
Definition: dnp3.h:1884
dnp3_response_function_t
dnp3_response_function_t
Type of response.
Definition: dnp3.h:1611
dnp3_association_id_t
struct dnp3_association_id_t dnp3_association_id_t
Association identifier.
Definition: dnp3.h:2230
DNP3_COMMAND_STATUS_NOT_SUPPORTED
command is not implemented (value == 4)
Definition: dnp3.h:4867
dnp3_control_t::fin
bool fin
Final fragment of the message.
Definition: dnp3.h:455
DNP3_COMMAND_STATUS_NON_PARTICIPATING
(deprecated) indicates the outstation shall not issue or perform the control operation (value == 126)
Definition: dnp3.h:4897
DNP3_FLOW_CONTROL_HARDWARE
Flow control using RTS/CTS signals.
Definition: dnp3.h:1488
DNP3_LOG_LEVEL_ERROR
Error log level.
Definition: dnp3.h:116
dnp3_application_iin_t::config_corrupt
bool config_corrupt
IIN2.5 - Configuration corrupt.
Definition: dnp3.h:4334
DNP3_EVENT_COUNTER_VARIATION_GROUP22_VAR1
Counter event - 32-bit with flag.
Definition: dnp3.h:3577
dnp3_read_handler_t
struct dnp3_read_handler_t dnp3_read_handler_t
General handler that will receive all values read from the outstation.
DNP3_LINK_ERROR_MODE_CLOSE
Framing errors are bubbled up to calling code, closing the session. Suitable for physical layers that...
Definition: dnp3.h:1594
dnp3_event_buffer_config_no_events
dnp3_event_buffer_config_t dnp3_event_buffer_config_no_events()
Initialize an event buffer configuration to support no events.
dnp3_function_code_t
dnp3_function_code_t
Application layer function code.
Definition: dnp3.h:4563
dnp3_runtime_config_t
Runtime configuration.
Definition: dnp3.h:413
dnp3_double_bit_binary_t
struct dnp3_double_bit_binary_t dnp3_double_bit_binary_t
DoubleBitBinary point.
Definition: dnp3.h:759
dnp3_double_bit_binary_t::value
dnp3_double_bit_t value
Point value.
Definition: dnp3.h:767
DNP3_QUALIFIER_CODE_FREE_FORMAT16
16-bit free format (0x5B)
Definition: dnp3.h:1830
dnp3_event_buffer_config_t::max_analog_output_status
uint16_t max_analog_output_status
Maximum number of Analog Output Status events (g42)
Definition: dnp3.h:4253
DNP3_TIME_SYNC_RESULT_SHUTDOWN
master was shutdown
Definition: dnp3.h:2912
dnp3_control_handler_t::operate_g12v1
dnp3_command_status_t(* operate_g12v1)(dnp3_g12v1_t, uint16_t, dnp3_operate_type_t, dnp3_database_t *, void *)
Operate a control point.
Definition: dnp3.h:4990
DNP3_VARIATION_GROUP20_VAR1
Counter - 32-bit with flags.
Definition: dnp3.h:1179
DNP3_FUNCTION_CODE_ENABLE_UNSOLICITED
Enables outstation to initiate unsolicited responses from points specified by the objects in the requ...
Definition: dnp3.h:4606
dnp3_outstation_features_t::unsolicited
bool unsolicited
Respond to enable/disable unsolicited response and produce unsolicited responses.
Definition: dnp3.h:4131
dnp3_control_handler_t::select_g12v1
dnp3_command_status_t(* select_g12v1)(dnp3_g12v1_t, uint16_t, dnp3_database_t *, void *)
Select a CROB, but do not operate.
Definition: dnp3.h:4981
DNP3_VARIATION_GROUP21_VAR0
Frozen Counter - Default variation.
Definition: dnp3.h:1187
DNP3_VARIATION_GROUP32_VAR5
Analog Input Event - Single-precision floating point without time.
Definition: dnp3.h:1245
DNP3_TIME_SYNC_MODE_NON_LAN
Perform a non-LAN time sync with Delay Measurement (0x17) function code.
Definition: dnp3.h:2866
DNP3_STATIC_DOUBLE_BIT_BINARY_VARIATION_GROUP3_VAR2
Double-bit binary input - with flags.
Definition: dnp3.h:3356
dnp3_association_handler_t
struct dnp3_association_handler_t dnp3_association_handler_t
Callbacks for a particular outstation association.
dnp3_request_add_one_byte_header
void dnp3_request_add_one_byte_header(dnp3_request_t *request, dnp3_variation_t variation, uint8_t start, uint8_t stop)
Add a one-byte start/stop variation interrogation.
DNP3_FUNCTION_CODE_GET_FILE_INFO
Outstation shall retrieve information about a file (value == 28)
Definition: dnp3.h:4622
dnp3_control_handler_t::ctx
void * ctx
Context data.
Definition: dnp3.h:5079
dnp3_freeze_result_to_string
static const char * dnp3_freeze_result_to_string(dnp3_freeze_result_t value)
Converts a dnp3_freeze_result_t to a string.
Definition: dnp3.h:4452
dnp3_address_filter_destroy
void dnp3_address_filter_destroy(dnp3_address_filter_t *address_filter)
Destroy an address filter.
DNP3_VARIATION_GROUP50_VAR4
Time and Date - Indexed absolute time and long interval.
Definition: dnp3.h:1295
DNP3_VARIATION_GROUP23_VAR2
Frozen Counter Event - 16-bit with flags.
Definition: dnp3.h:1215
DNP3_VARIATION_GROUP4_VAR3
Double-bit Binary Input Event - With relative time.
Definition: dnp3.h:1159
dnp3_logging_config_t::level
dnp3_log_level_t level
logging level
Definition: dnp3.h:197
dnp3_outstation_information_t::solicited_confirm_wait_new_request
void(* solicited_confirm_wait_new_request)(void *)
Received a new request while waiting for a solicited confirm, aborting the response series.
Definition: dnp3.h:4763
dnp3_trip_close_code_to_string
static const char * dnp3_trip_close_code_to_string(dnp3_trip_close_code_t value)
Converts a dnp3_trip_close_code_t to a string.
Definition: dnp3.h:499
dnp3_iin1_init
static dnp3_iin1_t dnp3_iin1_init(uint8_t value)
Initialize dnp3_iin1_t to default values.
Definition: dnp3.h:1644
dnp3_classes_init
static dnp3_classes_t dnp3_classes_init(bool class0, bool class1, bool class2, bool class3)
Initialize dnp3_classes_t to default values.
Definition: dnp3.h:2312
dnp3_restart_task_callback_t::on_complete
void(* on_complete)(dnp3_restart_result_t, void *)
Called when the restart task reached completion or failed.
Definition: dnp3.h:3057
dnp3_static_binary_variation_t
dnp3_static_binary_variation_t
Static binary input variation.
Definition: dnp3.h:3252
dnp3_endpoint_list_new
dnp3_endpoint_list_t * dnp3_endpoint_list_new(const char *main_endpoint)
Create a new list of IP endpoints.
DNP3_VARIATION_GROUP10_VAR1
Binary Output - Packed format.
Definition: dnp3.h:1163
dnp3_iin1_is_set
bool dnp3_iin1_is_set(dnp3_iin1_t *iin1, dnp3_iin1_flag_t flag)
Check if a particular flag is set in the IIN1 byte.
dnp3_master_channel_config_t::address
uint16_t address
Local DNP3 data-link address.
Definition: dnp3.h:2050
dnp3_master_channel_read
dnp3_param_error_t dnp3_master_channel_read(dnp3_master_channel_t *channel, dnp3_association_id_t association, dnp3_request_t *request, dnp3_read_task_callback_t callback)
Perform a read on the association.
dnp3_read_handler_t
General handler that will receive all values read from the outstation.
Definition: dnp3.h:1905
dnp3_runtime_t
struct dnp3_runtime_t dnp3_runtime_t
Handle to the underlying runtime.
Definition: dnp3.h:408
dnp3_phys_decode_level_t
dnp3_phys_decode_level_t
Controls how data transmitted at the physical layer (TCP, serial, etc) is logged.
Definition: dnp3.h:351
dnp3_response_header_t::iin
dnp3_iin_t iin
IIN bytes.
Definition: dnp3.h:1794
dnp3_serial_port_settings_t::parity
dnp3_parity_t parity
Type of parity to use for error checking.
Definition: dnp3.h:1568
dnp3_event_buffer_config_t::max_binary
uint16_t max_binary
Maximum number of Binary Input events (g2)
Definition: dnp3.h:4241
dnp3_database_remove_double_bit_binary
bool dnp3_database_remove_double_bit_binary(dnp3_database_t *db, uint16_t index)
Remove a Double-Bit Binary Input point.
dnp3_frozen_counter_t::index
uint16_t index
Point index.
Definition: dnp3.h:888
DNP3_VARIATION_GROUP2_VAR1
Binary Input Event - Without time.
Definition: dnp3.h:1141
DNP3_TIME_SYNC_RESULT_SUCCESS
Time synchronization operation was a success.
Definition: dnp3.h:2886
dnp3_event_classes_t
struct dnp3_event_classes_t dnp3_event_classes_t
Event classes.
Definition: dnp3.h:2254
dnp3_timestamp_utc_t
Timestamp value returned by dnp3_association_handler_t::get_current_time.
Definition: dnp3.h:2418
DNP3_EVENT_DOUBLE_BIT_BINARY_VARIATION_GROUP4_VAR3
Double-bit binary input event - with relative time.
Definition: dnp3.h:3380
DNP3_FREEZE_TYPE_FREEZE_AND_CLEAR
Copy the current value of a counter to the associated point and clear the current value to 0.
Definition: dnp3.h:4422
dnp3_transport_decode_level_t
dnp3_transport_decode_level_t
Controls how transmitted and received transport segments are decoded at the INFO log level.
Definition: dnp3.h:301
DNP3_READ_RESULT_NO_CONNECTION
no connection
Definition: dnp3.h:2603
dnp3_g12v1_t::count
uint8_t count
Count.
Definition: dnp3.h:582
DNP3_TRIP_CLOSE_CODE_NUL
NUL (0)
Definition: dnp3.h:487
DNP3_DATA_BITS_EIGHT
8 bits per character
Definition: dnp3.h:1462
dnp3_classes_all
dnp3_classes_t dnp3_classes_all()
Class 1230.
dnp3_timestamp_t::value
uint64_t value
Timestamp value.
Definition: dnp3.h:657
DNP3_VARIATION_GROUP11_VAR0
Binary Output Event - Default variation.
Definition: dnp3.h:1167
dnp3_client_state_listener_t::on_destroy
void(* on_destroy)(void *arg)
Callback when the underlying owner doesn't need the interface anymore.
Definition: dnp3.h:2130
dnp3_analog_output_status_config_t
struct dnp3_analog_output_status_config_t dnp3_analog_output_status_config_t
Analog Output Status configuration.
Definition: dnp3.h:3973
dnp3_restart_task_callback_t
Handler for restart tasks.
Definition: dnp3.h:3051
dnp3_logger_init
static dnp3_logger_t dnp3_logger_init(void(*on_message)(dnp3_log_level_t, const char *, void *), void(*on_destroy)(void *arg), void *ctx)
Initialize a dnp3_logger_t interface.
Definition: dnp3.h:246
dnp3_parity_t
dnp3_parity_t
Parity checking modes.
Definition: dnp3.h:1506
dnp3_command_task_callback_t
Handler for command tasks.
Definition: dnp3.h:2818
DNP3_STATIC_COUNTER_VARIATION_GROUP20_VAR5
Counter - 32-bit without flag.
Definition: dnp3.h:3553
dnp3_g12v1_t::off_time
uint32_t off_time
Duration the output drive remains non-active (in milliseconds)
Definition: dnp3.h:586
dnp3_event_buffer_config_init
static dnp3_event_buffer_config_t dnp3_event_buffer_config_init(uint16_t max_binary, uint16_t max_double_bit_binary, uint16_t max_binary_output_status, uint16_t max_counter, uint16_t max_frozen_counter, uint16_t max_analog, uint16_t max_analog_output_status, uint16_t max_octet_string)
Initialize dnp3_event_buffer_config_t to default values.
Definition: dnp3.h:4268
dnp3_outstation_application_t::warm_restart
dnp3_restart_delay_t(* warm_restart)(void *)
Request that the outstation perform a warm restart (IEEE-1815 2012, p. 58)
Definition: dnp3.h:4501
dnp3_tcpserver_new
dnp3_param_error_t dnp3_tcpserver_new(dnp3_runtime_t *runtime, dnp3_link_error_mode_t link_error_mode, const char *address, dnp3_tcp_server_t **out)
Create a new TCP server.
dnp3_iin1_t
struct dnp3_iin1_t dnp3_iin1_t
First IIN byte.
Definition: dnp3.h:1632
dnp3_read_handler_init
static dnp3_read_handler_t dnp3_read_handler_init(void(*begin_fragment)(dnp3_read_type_t, dnp3_response_header_t, void *), void(*end_fragment)(dnp3_read_type_t, dnp3_response_header_t, void *), void(*handle_binary)(dnp3_header_info_t, dnp3_binary_iterator_t *, void *), void(*handle_double_bit_binary)(dnp3_header_info_t, dnp3_double_bit_binary_iterator_t *, void *), void(*handle_binary_output_status)(dnp3_header_info_t, dnp3_binary_output_status_iterator_t *, void *), void(*handle_counter)(dnp3_header_info_t, dnp3_counter_iterator_t *, void *), void(*handle_frozen_counter)(dnp3_header_info_t, dnp3_frozen_counter_iterator_t *, void *), void(*handle_analog)(dnp3_header_info_t, dnp3_analog_iterator_t *, void *), void(*handle_analog_output_status)(dnp3_header_info_t, dnp3_analog_output_status_iterator_t *, void *), void(*handle_octet_string)(dnp3_header_info_t, dnp3_octet_string_iterator_t *, void *), void(*on_destroy)(void *arg), void *ctx)
Initialize a dnp3_read_handler_t interface.
Definition: dnp3.h:1987
dnp3_association_config_t::max_queued_user_requests
uint16_t max_queued_user_requests
maximum number of user requests (e.g. commands, adhoc reads, etc) that will be queued before back-pre...
Definition: dnp3.h:2388
DNP3_STATIC_ANALOG_VARIATION_GROUP30_VAR2
Analog input - 16-bit with flag.
Definition: dnp3.h:3781
DNP3_FUNCTION_CODE_DELETE_FILE
Outstation shall delete a file (value == 27)
Definition: dnp3.h:4620
dnp3_header_info_t
Object header information.
Definition: dnp3.h:1855
DNP3_FUNCTION_CODE_SELECT
Outstation shall select (or arm) the output points specified by the objects in the request in prepara...
Definition: dnp3.h:4572
dnp3_outstation_config_t::confirm_timeout
uint64_t confirm_timeout
Confirmation timeout.
Definition: dnp3.h:4175
dnp3_analog_output_status_config_init
static dnp3_analog_output_status_config_t dnp3_analog_output_status_config_init()
Initialize dnp3_analog_output_status_config_t to default values.
Definition: dnp3.h:3991
DNP3_PORT_STATE_OPEN
Port is open.
Definition: dnp3.h:1075
dnp3_header_info_t
struct dnp3_header_info_t dnp3_header_info_t
Object header information.
Definition: dnp3.h:1852
dnp3_classes_t::class1
bool class1
Class 1 events.
Definition: dnp3.h:2299
dnp3_database_add_octet_string
bool dnp3_database_add_octet_string(dnp3_database_t *db, uint16_t index, dnp3_event_class_t point_class)
Add a new Octet String point.
DNP3_QUALIFIER_CODE_RANGE8
8-bit start stop (0x00)
Definition: dnp3.h:1816
DNP3_PARAM_ERROR_INVALID_DNP3_ADDRESS
Invalid link-layer DNP3 address.
Definition: dnp3.h:40
dnp3_outstation_application_t
struct dnp3_outstation_application_t dnp3_outstation_application_t
Dynamic information required by the outstation from the user application.
DNP3_VARIATION_GROUP60_VAR1
Class objects - Class 0 data.
Definition: dnp3.h:1305
dnp3_counter_t::time
dnp3_timestamp_t time
Point timestamp.
Definition: dnp3.h:853
dnp3_read_task_callback_t::on_destroy
void(* on_destroy)(void *arg)
Callback when the underlying owner doesn't need the interface anymore.
Definition: dnp3.h:2639
dnp3_client_state_to_string
static const char * dnp3_client_state_to_string(dnp3_client_state_t value)
Converts a dnp3_client_state_t to a string.
Definition: dnp3.h:2106
DNP3_IIN1_FLAG_DEVICE_TROUBLE
Outstation reports abnormal condition.
Definition: dnp3.h:1668
DNP3_RESTART_ERROR_BAD_RESPONSE
response was malformed or contained object headers
Definition: dnp3.h:2993
dnp3_event_mode_to_string
static const char * dnp3_event_mode_to_string(dnp3_event_mode_t value)
Converts a dnp3_event_mode_t to a string.
Definition: dnp3.h:3214
DNP3_RESTART_ERROR_SHUTDOWN
master was shutdown
Definition: dnp3.h:3001
DNP3_EVENT_FROZEN_COUNTER_VARIATION_GROUP23_VAR6
Frozen Counter event - 16-bit with flag and time.
Definition: dnp3.h:3701
dnp3_qualifier_code_t
dnp3_qualifier_code_t
Qualifier code used in the response.
Definition: dnp3.h:1813
DNP3_STATIC_COUNTER_VARIATION_GROUP20_VAR1
Counter - 32-bit with flag.
Definition: dnp3.h:3549
dnp3_database_update_octet_string
bool dnp3_database_update_octet_string(dnp3_database_t *db, uint16_t index, dnp3_octet_string_value_t *value, dnp3_update_options_t options)
Update an Octet String point.
dnp3_response_header_t
struct dnp3_response_header_t dnp3_response_header_t
Response header information.
Definition: dnp3.h:1784
DNP3_VARIATION_GROUP20_VAR0
Counter - Default variation.
Definition: dnp3.h:1177
dnp3_frozen_counter_iterator_t
struct dnp3_frozen_counter_iterator_t dnp3_frozen_counter_iterator_t
Iterator of dnp3_frozen_counter_t. See dnp3_frozencounter_next.
Definition: dnp3.h:915
DNP3_EVENT_CLASS_CLASS1
Class 1 event.
Definition: dnp3.h:3176
dnp3_command_task_callback_init
static dnp3_command_task_callback_t dnp3_command_task_callback_init(void(*on_complete)(dnp3_command_result_t, void *), void(*on_destroy)(void *arg), void *ctx)
Initialize a dnp3_command_task_callback_t interface.
Definition: dnp3.h:2836
dnp3_control_handler_t::operate_g41v2
dnp3_command_status_t(* operate_g41v2)(int16_t, uint16_t, dnp3_operate_type_t, dnp3_database_t *, void *)
Operate a control point.
Definition: dnp3.h:5032
dnp3_command_result_t
dnp3_command_result_t
Result of a command.
Definition: dnp3.h:2772
dnp3_binary_output_status_iterator_t
struct dnp3_binary_output_status_iterator_t dnp3_binary_output_status_iterator_t
Iterator of dnp3_binary_output_status_t. See dnp3_binaryoutputstatus_next.
Definition: dnp3.h:833
dnp3_commands_add_g41v1_u8
void dnp3_commands_add_g41v1_u8(dnp3_commands_t *command, uint8_t idx, int32_t value)
Add a Analog Output command (signed 32-bit integer) with 1-byte prefix index.
DNP3_VARIATION_GROUP21_VAR1
Frozen Counter - 32-bit with flags.
Definition: dnp3.h:1189
dnp3_decode_level_init
static dnp3_decode_level_t dnp3_decode_level_init()
Initialize dnp3_decode_level_t to default values.
Definition: dnp3.h:396
dnp3_application_iin_t::device_trouble
bool device_trouble
IIN1.6 - Device trouble.
Definition: dnp3.h:4331
dnp3_iin1_t
First IIN byte.
Definition: dnp3.h:1635
dnp3_command_task_callback_t
struct dnp3_command_task_callback_t dnp3_command_task_callback_t
Handler for command tasks.
DNP3_TIME_SYNC_RESULT_WRITE_ERROR
insufficient buffer space to serialize the request
Definition: dnp3.h:2908
DNP3_PHYS_DECODE_LEVEL_NOTHING
Log nothing.
Definition: dnp3.h:354
dnp3_frozen_counter_t
struct dnp3_frozen_counter_t dnp3_frozen_counter_t
FrozenCounter point.
Definition: dnp3.h:882
dnp3_master_channel_disable
dnp3_param_error_t dnp3_master_channel_disable(dnp3_master_channel_t *channel)
stop communications
dnp3_logger_t::on_message
void(* on_message)(dnp3_log_level_t, const char *, void *)
Called when a log message was received and should be logged.
Definition: dnp3.h:234
dnp3_commands_new
dnp3_commands_t * dnp3_commands_new()
Create a new set of commands.
dnp3_database_add_frozen_counter
bool dnp3_database_add_frozen_counter(dnp3_database_t *db, uint16_t index, dnp3_event_class_t point_class, dnp3_frozen_counter_config_t config)
Add a new Frozen Counter point.
dnp3_restart_task_callback_t::on_destroy
void(* on_destroy)(void *arg)
Callback when the underlying owner doesn't need the interface anymore.
Definition: dnp3.h:3060
dnp3_decode_level_t::transport
dnp3_transport_decode_level_t transport
Controls transport segment layer decoding.
Definition: dnp3.h:385
dnp3_application_iin_t::local_control
bool local_control
IIN1.5 - Some output points are in local mode.
Definition: dnp3.h:4328
DNP3_VARIATION_GROUP23_VAR5
Frozen Counter Event - 32-bit with flags and time.
Definition: dnp3.h:1217
dnp3_commands_add_g41v2_u16
void dnp3_commands_add_g41v2_u16(dnp3_commands_t *command, uint16_t idx, int16_t value)
Add a Analog Output command (signed 16-bit integer) with 2-byte prefix index.
DNP3_COMMAND_STATUS_CANCELED
command not accepted because the operation was cancelled (value == 16)
Definition: dnp3.h:4891
dnp3_event_double_bit_binary_variation_t
dnp3_event_double_bit_binary_variation_t
Event double-bit binary input variation.
Definition: dnp3.h:3373
dnp3_binary_t
Binary point.
Definition: dnp3.h:721
dnp3_serial_port_settings_t::data_bits
dnp3_data_bits_t data_bits
Number of bits used to represent a character sent on the line.
Definition: dnp3.h:1562
dnp3_double_bit_binary_init
static dnp3_double_bit_binary_t dnp3_double_bit_binary_init(uint16_t index, dnp3_double_bit_t value, dnp3_flags_t flags, dnp3_timestamp_t time)
Initialize dnp3_double_bit_binary_t to default values.
Definition: dnp3.h:780
dnp3_application_iin_init
static dnp3_application_iin_t dnp3_application_iin_init()
Initialize dnp3_application_iin_t to default values.
Definition: dnp3.h:4339
dnp3_read_handler_t::begin_fragment
void(* begin_fragment)(dnp3_read_type_t, dnp3_response_header_t, void *)
Marks the beginning of a fragment.
Definition: dnp3.h:1912
DNP3_RESTART_ERROR_NO_CONNECTION
no connection
Definition: dnp3.h:2999
DNP3_EVENT_BINARY_OUTPUT_STATUS_VARIATION_GROUP11_VAR1
Binary output event - status without time.
Definition: dnp3.h:3475
DNP3_COMMAND_RESULT_NO_CONNECTION
no connection
Definition: dnp3.h:2789
dnp3_database_get_binary_output_status
dnp3_param_error_t dnp3_database_get_binary_output_status(dnp3_database_t *db, uint16_t index, dnp3_binary_output_status_t *out)
Get a Binary Output Status point.
dnp3_read_task_callback_t
struct dnp3_read_task_callback_t dnp3_read_task_callback_t
Handler for read tasks.
dnp3_database_add_analog
bool dnp3_database_add_analog(dnp3_database_t *db, uint16_t index, dnp3_event_class_t point_class, dnp3_analog_config_t config)
Add a new Analog point.
dnp3_freeze_type_t
dnp3_freeze_type_t
Freeze operation type.
Definition: dnp3.h:4417
dnp3_control_code_t
struct dnp3_control_code_t dnp3_control_code_t
CROB (dnp3_g12v1_t) control code.
Definition: dnp3.h:542
DNP3_COMMAND_RESULT_BAD_STATUS
Outstation indicated that a command was not SUCCESS.
Definition: dnp3.h:2777
dnp3_counter_config_t::static_variation
dnp3_static_counter_variation_t static_variation
Default static variation.
Definition: dnp3.h:3608
dnp3_analogoutputstatus_next
dnp3_analog_output_status_t * dnp3_analogoutputstatus_next(dnp3_analog_output_status_iterator_t *it)
Get the next value of the iterator.
dnp3_logger_t
struct dnp3_logger_t dnp3_logger_t
Logging interface that receives the log messages and writes them somewhere.
DNP3_READ_TYPE_STARTUP_INTEGRITY
Startup integrity poll.
Definition: dnp3.h:1880
dnp3_control_t::uns
bool uns
Unsolicited response.
Definition: dnp3.h:459
DNP3_PARAM_ERROR_RUNTIME_DESTROYED
Runtime was already disposed of.
Definition: dnp3.h:54
dnp3_event_binary_variation_t
dnp3_event_binary_variation_t
Event binary input variation.
Definition: dnp3.h:3274
dnp3_static_double_bit_binary_variation_t
dnp3_static_double_bit_binary_variation_t
Static double-bit binary input variation.
Definition: dnp3.h:3351
dnp3_outstation_t
struct dnp3_outstation_t dnp3_outstation_t
Outstation handle.
Definition: dnp3.h:5227
dnp3_outstation_config_t::features
dnp3_outstation_features_t features
Optional features.
Definition: dnp3.h:4181
dnp3_outstation_application_t::get_processing_delay_ms
uint16_t(* get_processing_delay_ms)(void *)
Returns the DELAY_MEASUREMENT delay.
Definition: dnp3.h:4476
dnp3_event_frozen_counter_variation_t
dnp3_event_frozen_counter_variation_t
Event frozen counter variation.
Definition: dnp3.h:3692
dnp3_outstation_information_t::on_destroy
void(* on_destroy)(void *arg)
Callback when the underlying owner doesn't need the interface anymore.
Definition: dnp3.h:4798
DNP3_FUNCTION_CODE_IMMEDIATE_FREEZE_NO_RESPONSE
Same as ImmediateFreeze but outstation shall not send a response (value == 8)
Definition: dnp3.h:4582
dnp3_logging_config_init
static dnp3_logging_config_t dnp3_logging_config_init()
Initialize dnp3_logging_config_t to default values.
Definition: dnp3.h:214
dnp3_data_bits_to_string
static const char * dnp3_data_bits_to_string(dnp3_data_bits_t value)
Converts a dnp3_data_bits_t to a string.
Definition: dnp3.h:1468
DNP3_LOG_LEVEL_INFO
Information log level.
Definition: dnp3.h:120
dnp3_octet_string_value_t
struct dnp3_octet_string_value_t dnp3_octet_string_value_t
Collection of uint8_t. See dnp3_octet_string_add and dnp3_octet_string_destroy.
Definition: dnp3.h:4030
DNP3_VARIATION_GROUP12_VAR0
Binary Output Command - Control Relay Output Block.
Definition: dnp3.h:1173
dnp3_outstation_config_t::master_address
uint16_t master_address
Link-layer master address.
Definition: dnp3.h:4154
dnp3_outstation_information_t::process_request_from_idle
void(* process_request_from_idle)(dnp3_request_header_t, void *)
Called when a request is processed from the IDLE state.
Definition: dnp3.h:4738
DNP3_VARIATION_GROUP110
Octet String.
Definition: dnp3.h:1315
DNP3_TRANSPORT_DECODE_LEVEL_PAYLOAD
Decode the header and the raw payload as hexadecimal.
Definition: dnp3.h:308
dnp3_double_bit_binary_config_t
struct dnp3_double_bit_binary_config_t dnp3_double_bit_binary_config_t
Double-Bit Binary Input configuration.
Definition: dnp3.h:3397
dnp3_database_remove_analog
bool dnp3_database_remove_analog(dnp3_database_t *db, uint16_t index)
Remove an Analog point.
DNP3_CLIENT_STATE_WAIT_AFTER_FAILED_CONNECT
Failed to establish a connection, waiting before retrying.
Definition: dnp3.h:2096
dnp3_event_analog_variation_to_string
static const char * dnp3_event_analog_variation_to_string(dnp3_event_analog_variation_t value)
Converts a dnp3_event_analog_variation_t to a string.
Definition: dnp3.h:3833
dnp3_association_id_t
Association identifier.
Definition: dnp3.h:2235
DNP3_VARIATION_GROUP30_VAR1
Analog Input - 32-bit with flags.
Definition: dnp3.h:1223
DNP3_DOUBLE_BIT_INDETERMINATE
Abnormal or custom condition.
Definition: dnp3.h:700
DNP3_COMMAND_STATUS_FORMAT_ERROR
bad control code or timing values (value == 3)
Definition: dnp3.h:4865
DNP3_APP_DECODE_LEVEL_OBJECT_VALUES
Decode the header, the object headers, and the object values.
Definition: dnp3.h:282
dnp3_database_update_analog
bool dnp3_database_update_analog(dnp3_database_t *db, dnp3_analog_t value, dnp3_update_options_t options)
Update a Analog point.
DNP3_COMMAND_RESULT_TOO_MANY_REQUESTS
too many user requests queued
Definition: dnp3.h:2781
dnp3_class_zero_config_t
Controls which types are reported during a Class 0 read.
Definition: dnp3.h:4071
dnp3_double_bit_binary_t::flags
dnp3_flags_t flags
Point flags.
Definition: dnp3.h:769
dnp3_logger_t::ctx
void * ctx
Context data.
Definition: dnp3.h:239
dnp3_double_bit_binary_config_t::static_variation
dnp3_static_double_bit_binary_variation_t static_variation
Default static variation.
Definition: dnp3.h:3404
dnp3_control_handler_t::end_fragment
void(* end_fragment)(void *)
Notifies the end of a command fragment.
Definition: dnp3.h:4969
dnp3_analog_output_status_t::index
uint16_t index
Point index.
Definition: dnp3.h:970
dnp3_link_error_mode_t
dnp3_link_error_mode_t
Controls how errors in parsed link-layer frames are handled. This behavior is configurable for physic...
Definition: dnp3.h:1589
dnp3_param_error_to_string
static const char * dnp3_param_error_to_string(dnp3_param_error_t value)
Converts a dnp3_param_error_t to a string.
Definition: dnp3.h:66
dnp3_class_zero_config_t::double_bit_binary
bool double_bit_binary
Include Double-Bit Binary Inputs in Class 0 reads.
Definition: dnp3.h:4078
dnp3_time_sync_task_callback_init
static dnp3_time_sync_task_callback_t dnp3_time_sync_task_callback_init(void(*on_complete)(dnp3_time_sync_result_t, void *), void(*on_destroy)(void *arg), void *ctx)
Initialize a dnp3_time_sync_task_callback_t interface.
Definition: dnp3.h:2962
dnp3_commands_add_g41v1_u16
void dnp3_commands_add_g41v1_u16(dnp3_commands_t *command, uint16_t idx, int32_t value)
Add a Analog Output command (signed 32-bit integer) with 2-byte prefix index.
DNP3_VARIATION_GROUP21_VAR2
Frozen Counter - 16-bit with flags.
Definition: dnp3.h:1191
dnp3_retry_strategy_t::max_delay
uint64_t max_delay
Maximum delay between two retries.
Definition: dnp3.h:1438
DNP3_IIN1_FLAG_LOCAL_CONTROL
At least one point of the outstation is in the local operation mode.
Definition: dnp3.h:1666
DNP3_COMMAND_RESULT_SUCCESS
Command was a success.
Definition: dnp3.h:2775
dnp3_event_mode_t
dnp3_event_mode_t
Controls how events are processed when updating values in the database.
Definition: dnp3.h:3199
dnp3_binary_output_status_config_init
static dnp3_binary_output_status_config_t dnp3_binary_output_status_config_init()
Initialize dnp3_binary_output_status_config_t to default values.
Definition: dnp3.h:3508
dnp3_outstation_config_t
struct dnp3_outstation_config_t dnp3_outstation_config_t
Outstation configuration.
Definition: dnp3.h:4146
DNP3_FUNCTION_CODE_RESPONSE
Master shall interpret this fragment as an Application Layer response to an ApplicationLayer request ...
Definition: dnp3.h:4628
DNP3_STOP_BITS_ONE
One stop bit.
Definition: dnp3.h:1534
dnp3_event_classes_t::class3
bool class3
Class 3 events.
Definition: dnp3.h:2264
dnp3_database_update_double_bit_binary
bool dnp3_database_update_double_bit_binary(dnp3_database_t *db, dnp3_double_bit_binary_t value, dnp3_update_options_t options)
Update a Double-Bit Binary Input point.
dnp3_command_result_to_string
static const char * dnp3_command_result_to_string(dnp3_command_result_t value)
Converts a dnp3_command_result_t to a string.
Definition: dnp3.h:2799
DNP3_VARIATION_GROUP32_VAR8
Analog Input Event - Double-precision floating point with time.
Definition: dnp3.h:1251
dnp3_command_status_t
dnp3_command_status_t
Enumeration received from an outstation in response to command request.
Definition: dnp3.h:4856
DNP3_FLOW_CONTROL_NONE
No flow control.
Definition: dnp3.h:1484
DNP3_PHYS_DECODE_LEVEL_DATA
Log the length and the actual data that is sent and received.
Definition: dnp3.h:358
DNP3_PARAM_ERROR_ASSOCIATION_DUPLICATE_ADDRESS
Duplicate association address.
Definition: dnp3.h:36
DNP3_VARIATION_GROUP32_VAR3
Analog Input Event - 32-bit with time.
Definition: dnp3.h:1241
DNP3_EVENT_ANALOG_OUTPUT_STATUS_VARIATION_GROUP42_VAR1
Analog output event - 32-bit without time.
Definition: dnp3.h:3937
dnp3_octet_string_iterator_t
struct dnp3_octet_string_iterator_t dnp3_octet_string_iterator_t
Iterator of dnp3_octet_string_t. See dnp3_octetstring_next.
Definition: dnp3.h:1059
dnp3_double_bit_t
dnp3_double_bit_t
Double-bit binary input value.
Definition: dnp3.h:691
dnp3_control_init
static dnp3_control_t dnp3_control_init(bool fir, bool fin, bool con, bool uns, uint8_t seq)
Initialize dnp3_control_t to default values.
Definition: dnp3.h:471
dnp3_restart_delay_millis
dnp3_restart_delay_t dnp3_restart_delay_millis(uint16_t value)
Creates a restart delay with a value specified in milliseconds.
DNP3_READ_RESULT_SHUTDOWN
master was shutdown
Definition: dnp3.h:2605
DNP3_FUNCTION_CODE_ABORT_FILE
Outstation shall abort a file transfer operation (value == 30)
Definition: dnp3.h:4626
dnp3_client_state_listener_t
Callback for monitoring the client TCP connection state.
Definition: dnp3.h:2121
dnp3_event_counter_variation_to_string
static const char * dnp3_event_counter_variation_to_string(dnp3_event_counter_variation_t value)
Converts a dnp3_event_counter_variation_t to a string.
Definition: dnp3.h:3589
dnp3_double_bit_binary_config_t
Double-Bit Binary Input configuration.
Definition: dnp3.h:3400
DNP3_IIN1_FLAG_CLASS3_EVENTS
Outstation has Class 3 events not reported yet.
Definition: dnp3.h:1662
dnp3_classes_none
dnp3_classes_t dnp3_classes_none()
No class.
dnp3_client_state_listener_init
static dnp3_client_state_listener_t dnp3_client_state_listener_init(void(*on_change)(dnp3_client_state_t, void *), void(*on_destroy)(void *arg), void *ctx)
Initialize a dnp3_client_state_listener_t interface.
Definition: dnp3.h:2139
dnp3_analog_t::index
uint16_t index
Point index.
Definition: dnp3.h:929
DNP3_COMMAND_RESULT_ASSOCIATION_REMOVED
association was removed mid-task
Definition: dnp3.h:2793
DNP3_STATIC_COUNTER_VARIATION_GROUP20_VAR6
Counter - 16-bit without flag.
Definition: dnp3.h:3555
DNP3_PARAM_ERROR_ASSOCIATION_DOES_NOT_EXIST
The specified association does not exist.
Definition: dnp3.h:34
dnp3_poll_id_t::association_id
uint16_t association_id
Outstation address of the association.
Definition: dnp3.h:2249
dnp3_counter_config_init
static dnp3_counter_config_t dnp3_counter_config_init()
Initialize dnp3_counter_config_t to default values.
Definition: dnp3.h:3619
DNP3_VARIATION_GROUP51_VAR1
Time and date CTO - Absolute time, synchronized.
Definition: dnp3.h:1297
dnp3_runtime_config_t::num_core_threads
uint16_t num_core_threads
Number of runtime threads to spawn. For a guess of the number of CPU cores, use 0.
Definition: dnp3.h:419
DNP3_FUNCTION_CODE_RECORD_CURRENT_TIME
Outstation shall save the time when the last octet of this message is received (value == 24)
Definition: dnp3.h:4614
dnp3_outstation_config_t
Outstation configuration.
Definition: dnp3.h:4149
dnp3_timestamp_t
struct dnp3_timestamp_t dnp3_timestamp_t
Timestamp value.
Definition: dnp3.h:651
DNP3_EVENT_BINARY_OUTPUT_STATUS_VARIATION_GROUP11_VAR2
Binary output event - status with time.
Definition: dnp3.h:3477
dnp3_read_type_t
dnp3_read_type_t
Describes the source of a read event.
Definition: dnp3.h:1877
dnp3_outstation_information_t::unsolicited_confirm_timeout
void(* unsolicited_confirm_timeout)(uint8_t, bool, void *)
Failed to receive an unsolicited confirm before the timeout occurred.
Definition: dnp3.h:4786
DNP3_VARIATION_GROUP50_VAR3
Time and Date - Absolute time at last recorded time.
Definition: dnp3.h:1293
dnp3_byte_t
Single byte struct.
Definition: dnp3.h:1008
dnp3_commands_add_g41v3_u16
void dnp3_commands_add_g41v3_u16(dnp3_commands_t *commands, uint16_t idx, float value)
Add a Analog Output command (single-precision float) with 2-byte prefix index.
dnp3_outstation_config_t::max_controls_per_request
uint16_t max_controls_per_request
Maximum number of controls in a single request.
Definition: dnp3.h:4202
DNP3_VARIATION_GROUP40_VAR1
Analog Output Status - 32-bit with flags.
Definition: dnp3.h:1255
DNP3_STATIC_ANALOG_VARIATION_GROUP30_VAR6
Analog input - double-precision, floating-point with flag.
Definition: dnp3.h:3789
dnp3_link_decode_level_to_string
static const char * dnp3_link_decode_level_to_string(dnp3_link_decode_level_t value)
Converts a dnp3_link_decode_level_t to a string.
Definition: dnp3.h:339
dnp3_connection_state_listener_t
struct dnp3_connection_state_listener_t dnp3_connection_state_listener_t
Callback interface for connection state events.
dnp3_counter_next
dnp3_counter_t * dnp3_counter_next(dnp3_counter_iterator_t *it)
Get the next value of the iterator.
dnp3_log_output_format_t
dnp3_log_output_format_t
Describes how each log event is formatted.
Definition: dnp3.h:169
DNP3_VARIATION_GROUP42_VAR7
Analog Output Event - Single-preicions floating point with time.
Definition: dnp3.h:1287
dnp3_byte_iterator_t
struct dnp3_byte_iterator_t dnp3_byte_iterator_t
Iterator of dnp3_byte_t. See dnp3_byte_next.
Definition: dnp3.h:1026
dnp3_restart_result_init
static dnp3_restart_result_t dnp3_restart_result_init(dnp3_restart_error_t error, uint64_t delay)
Initialize dnp3_restart_result_t to default values.
Definition: dnp3.h:3041
DNP3_COMMAND_STATUS_DOWNSTREAM_LOCAL
command not accepted because the outstation is forwarding the request to another downstream device wh...
Definition: dnp3.h:4885
dnp3_frozen_counter_config_t
struct dnp3_frozen_counter_config_t dnp3_frozen_counter_config_t
Frozen Counter configuration.
Definition: dnp3.h:3719
dnp3_association_handler_t::ctx
void * ctx
Context data.
Definition: dnp3.h:2467
dnp3_outstation_information_t::unexpected_confirm
void(* unexpected_confirm)(bool, uint8_t, void *)
Received a confirm when not expecting one.
Definition: dnp3.h:4775
DNP3_TIME_FORMAT_SYSTEM
Format the time in a human readable format e.g. 'Jun 25 14:27:12.955'.
Definition: dnp3.h:151
DNP3_VARIATION_GROUP11_VAR1
Binary Output Event - Without time.
Definition: dnp3.h:1169
dnp3_iin2_t::value
uint8_t value
Byte value.
Definition: dnp3.h:1705
dnp3_command_mode_to_string
static const char * dnp3_command_mode_to_string(dnp3_command_mode_t value)
Converts a dnp3_command_mode_t to a string.
Definition: dnp3.h:2761
dnp3_outstation_application_t::freeze_counters_range
dnp3_freeze_result_t(* freeze_counters_range)(uint16_t, uint16_t, dnp3_freeze_type_t, dnp3_database_t *, void *)
Freeze a range of counters.
Definition: dnp3.h:4517
dnp3_iin2_t
Second IIN byte.
Definition: dnp3.h:1702
dnp3_read_task_callback_init
static dnp3_read_task_callback_t dnp3_read_task_callback_init(void(*on_complete)(dnp3_read_result_t, void *), void(*on_destroy)(void *arg), void *ctx)
Initialize a dnp3_read_task_callback_t interface.
Definition: dnp3.h:2648
dnp3_master_channel_config_t
Generic configuration for a MasterChannel.
Definition: dnp3.h:2047
dnp3_static_analog_variation_to_string
static const char * dnp3_static_analog_variation_to_string(dnp3_static_analog_variation_t value)
Converts a dnp3_static_analog_variation_t to a string.
Definition: dnp3.h:3795
dnp3_outstation_config_t::rx_buffer_size
uint16_t rx_buffer_size
Receive buffer size.
Definition: dnp3.h:4169
DNP3_RESPONSE_FUNCTION_UNSOLICITED_RESPONSE
Unsolicited response.
Definition: dnp3.h:1616
dnp3_timestamp_invalid
dnp3_timestamp_t dnp3_timestamp_invalid()
Creates an invalid timestamp struct.
dnp3_connect_strategy_t::min_connect_delay
uint64_t min_connect_delay
Minimum delay between two connection attempts, doubles up to the maximum delay.
Definition: dnp3.h:2169
DNP3_FUNCTION_CODE_WRITE
Outstation shall store the data specified by the objects in the request (value == 2)
Definition: dnp3.h:4570
DNP3_PORT_STATE_SHUTDOWN
Task has been shut down.
Definition: dnp3.h:1077
DNP3_IIN2_FLAG_PARAMETER_ERROR
Unable to parse request or invalid qualifier code.
Definition: dnp3.h:1727
dnp3_master_channel_add_poll
dnp3_param_error_t dnp3_master_channel_add_poll(dnp3_master_channel_t *channel, dnp3_association_id_t id, dnp3_request_t *request, uint64_t period, dnp3_poll_id_t *out)
Add a periodic poll to an association.
dnp3_binary_t
struct dnp3_binary_t dnp3_binary_t
Binary point.
Definition: dnp3.h:718
DNP3_PARAM_ERROR_INVALID_BUFFER_SIZE
Invalid buffer size.
Definition: dnp3.h:42
dnp3_master_channel_config_t
struct dnp3_master_channel_config_t dnp3_master_channel_config_t
Generic configuration for a MasterChannel.
Definition: dnp3.h:2044
DNP3_VARIATION_GROUP30_VAR4
Analog Input - 16-bit without flag.
Definition: dnp3.h:1229
DNP3_FUNCTION_CODE_COLD_RESTART
Outstation shall perform a complete reset of all hardware and software in the device (value == 13)
Definition: dnp3.h:4592
dnp3_logging_config_t::print_module_info
bool print_module_info
optionally print the underlying Rust module information to the message string
Definition: dnp3.h:209
dnp3_control_handler_t::select_g41v2
dnp3_command_status_t(* select_g41v2)(int16_t, uint16_t, dnp3_database_t *, void *)
Select an analog output, but do not operate.
Definition: dnp3.h:5023
dnp3_outstation_config_t::select_timeout
uint64_t select_timeout
Select timeout.
Definition: dnp3.h:4179
dnp3_binary_config_t
struct dnp3_binary_config_t dnp3_binary_config_t
Binary Input configuration.
Definition: dnp3.h:3298
DNP3_IIN2_FLAG_EVENT_BUFFER_OVERFLOW
Event buffer overflow, at least one event was lost.
Definition: dnp3.h:1729
dnp3_request_header_t::control
dnp3_control_t control
Control field.
Definition: dnp3.h:4683
DNP3_TIME_SYNC_RESULT_BAD_RESPONSE
response was malformed or contained object headers
Definition: dnp3.h:2904
dnp3_decode_level_t
Controls the decoding of transmitted and received data at the application, transport,...
Definition: dnp3.h:378
dnp3_event_buffer_config_t
struct dnp3_event_buffer_config_t dnp3_event_buffer_config_t
Maximum number of events for each type.
Definition: dnp3.h:4233
DNP3_COMMAND_RESULT_SHUTDOWN
master was shutdown
Definition: dnp3.h:2791
DNP3_RESTART_ERROR_OK
Restart was perform successfully.
Definition: dnp3.h:2989
dnp3_outstation_information_t::broadcast_received
void(* broadcast_received)(dnp3_function_code_t, dnp3_broadcast_action_t, void *)
Called when a broadcast request is received by the outstation.
Definition: dnp3.h:4744
DNP3_STATIC_ANALOG_VARIATION_GROUP30_VAR3
Analog input - 32-bit without flag.
Definition: dnp3.h:3783
DNP3_VARIATION_GROUP3_VAR0
Double-bit Binary Input - Default variation.
Definition: dnp3.h:1147
DNP3_VARIATION_GROUP21_VAR10
Frozen Counter - 16-bit without flag.
Definition: dnp3.h:1199
dnp3_analog_output_status_config_t::deadband
double deadband
Deadband value.
Definition: dnp3.h:3986
dnp3_op_type_t
dnp3_op_type_t
Operation Type field, used in conjunction with dnp3_trip_close_code_t to specify a control operation.
Definition: dnp3.h:512
dnp3_static_binary_output_status_variation_to_string
static const char * dnp3_static_binary_output_status_variation_to_string(dnp3_static_binary_output_status_variation_t value)
Converts a dnp3_static_binary_output_status_variation_t to a string.
Definition: dnp3.h:3461
dnp3_association_config_t::keep_alive_timeout
uint64_t keep_alive_timeout
Delay of inactivity before sending a REQUEST_LINK_STATUS to the outstation.
Definition: dnp3.h:2380
dnp3_restart_delay_not_supported
dnp3_restart_delay_t dnp3_restart_delay_not_supported()
Creates a restart delay that indicates that this operation is not supported.
dnp3_port_state_to_string
static const char * dnp3_port_state_to_string(dnp3_port_state_t value)
Converts a dnp3_port_state_t to a string.
Definition: dnp3.h:1083
DNP3_BROADCAST_ACTION_BAD_OBJECT_HEADERS
Outstation was unable to parse the object headers and ignored the request.
Definition: dnp3.h:4709
dnp3_link_status_result_to_string
static const char * dnp3_link_status_result_to_string(dnp3_link_status_result_t value)
Converts a dnp3_link_status_result_t to a string.
Definition: dnp3.h:3112
dnp3_poll_id_t
struct dnp3_poll_id_t dnp3_poll_id_t
Poll identifier.
Definition: dnp3.h:2241
dnp3_iin2_flag_to_string
static const char * dnp3_iin2_flag_to_string(dnp3_iin2_flag_t value)
Converts a dnp3_iin2_flag_t to a string.
Definition: dnp3.h:1739
DNP3_DOUBLE_BIT_DETERMINED_ON
Determined to be ON.
Definition: dnp3.h:698
DNP3_STATIC_ANALOG_OUTPUT_STATUS_VARIATION_GROUP40_VAR1
Analog output status - 32-bit with flag.
Definition: dnp3.h:3909
DNP3_PARAM_ERROR_SERVER_BIND_ERROR
Server failed to bind to the specified port.
Definition: dnp3.h:48
dnp3_commands_destroy
void dnp3_commands_destroy(dnp3_commands_t *command)
Destroy set of commands.
dnp3_commands_add_g41v3_u8
void dnp3_commands_add_g41v3_u8(dnp3_commands_t *command, uint8_t idx, float value)
Add a Analog Output command (single-precision float) with 1-byte prefix index.
dnp3_iin1_t::value
uint8_t value
Byte value.
Definition: dnp3.h:1638
dnp3_restart_result_t::delay
uint64_t delay
Delay value returned by the outstation. Valid only if dnp3_restart_result_t::error is DNP3_RESTART_ER...
Definition: dnp3.h:3034
dnp3_endpoint_list_destroy
void dnp3_endpoint_list_destroy(dnp3_endpoint_list_t *list)
Delete a previously allocated endpoint list.
dnp3_database_update_binary_output_status
bool dnp3_database_update_binary_output_status(dnp3_database_t *db, dnp3_binary_output_status_t value, dnp3_update_options_t options)
Update a Binary Output Status point.
DNP3_PARAM_ERROR_LOGGING_ALREADY_CONFIGURED
Logging can only be configured once.
Definition: dnp3.h:58
dnp3_serial_port_settings_init
static dnp3_serial_port_settings_t dnp3_serial_port_settings_init()
Initialize dnp3_serial_port_settings_t to default values.
Definition: dnp3.h:1576
dnp3_association_config_t::auto_time_sync
dnp3_auto_time_sync_t auto_time_sync
Automatic time synchronization configuration.
Definition: dnp3.h:2372
dnp3_serial_port_settings_t::stop_bits
dnp3_stop_bits_t stop_bits
Number of bits to use to signal the end of a character.
Definition: dnp3.h:1571
dnp3_flags_t
struct dnp3_flags_t dnp3_flags_t
Collection of individual flag bits represented by an underlying mask value.
Definition: dnp3.h:606
DNP3_VARIATION_GROUP2_VAR2
Binary Input Event - With absolute time.
Definition: dnp3.h:1143
dnp3_flags_t
Collection of individual flag bits represented by an underlying mask value.
Definition: dnp3.h:609
DNP3_COMMAND_STATUS_BLOCKED
command not accepted because the requested function is specifically blocked at the outstation (value ...
Definition: dnp3.h:4889
dnp3_double_bit_binary_config_t::event_variation
dnp3_event_double_bit_binary_variation_t event_variation
Default event variation.
Definition: dnp3.h:3407
dnp3_decode_level_t::application
dnp3_app_decode_level_t application
Controls application fragment decoding.
Definition: dnp3.h:382
DNP3_AUTO_TIME_SYNC_LAN
Perform automatic time sync with Record Current Time (0x18) function code.
Definition: dnp3.h:2338
dnp3_iin2_t
struct dnp3_iin2_t dnp3_iin2_t
Second IIN byte.
Definition: dnp3.h:1699
dnp3_association_handler_t
Callbacks for a particular outstation association.
Definition: dnp3.h:2452
dnp3_update_options_t::update_static
bool update_static
Optionnaly bypass updating the static database (the current value)
Definition: dnp3.h:3234
DNP3_WRITE_TIME_RESULT_INVALID_VALUE
The provided value was invalid (translated to PARAM_ERROR)
Definition: dnp3.h:4397
dnp3_outstation_information_t::enter_unsolicited_confirm_wait
void(* enter_unsolicited_confirm_wait)(uint8_t, void *)
Outstation has begun waiting for an unsolicited confirm.
Definition: dnp3.h:4780
dnp3_commands_add_g12v1_u16
void dnp3_commands_add_g12v1_u16(dnp3_commands_t *command, uint16_t idx, dnp3_g12v1_t header)
Add a CROB with 2-byte prefix index.
dnp3_event_buffer_config_t::max_counter
uint16_t max_counter
Maximum number of Counter events (g22)
Definition: dnp3.h:4247
dnp3_event_classes_init
static dnp3_event_classes_t dnp3_event_classes_init(bool class1, bool class2, bool class3)
Initialize dnp3_event_classes_t to default values.
Definition: dnp3.h:2272
dnp3_time_sync_task_callback_t::on_complete
void(* on_complete)(dnp3_time_sync_result_t, void *)
Called when the timesync task reached completion or failed.
Definition: dnp3.h:2950
dnp3_iin2_flag_t
dnp3_iin2_flag_t
Second IIN bit flags.
Definition: dnp3.h:1720
DNP3_STATIC_BINARY_VARIATION_GROUP1_VAR2
Binary input - with flags.
Definition: dnp3.h:3257
DNP3_VARIATION_GROUP42_VAR1
Analog Output Event - 32-bit without time.
Definition: dnp3.h:1275
DNP3_RESTART_DELAY_TYPE_SECONDS
Value is in seconds (corresponds to g51v1)
Definition: dnp3.h:4299
dnp3_link_status_callback_t
struct dnp3_link_status_callback_t dnp3_link_status_callback_t
Handler for link status check.
dnp3_application_iin_t
struct dnp3_application_iin_t dnp3_application_iin_t
Application-controlled IIN bits.
Definition: dnp3.h:4318
dnp3_restart_delay_init
static dnp3_restart_delay_t dnp3_restart_delay_init(dnp3_restart_delay_type_t restart_type, uint16_t value)
Initialize dnp3_restart_delay_t to default values.
Definition: dnp3.h:4367
dnp3_runtime_new
dnp3_param_error_t dnp3_runtime_new(dnp3_runtime_config_t config, dnp3_runtime_t **out)
Creates a new runtime for running the protocol stack.
dnp3_time_sync_result_t
dnp3_time_sync_result_t
Result of a time sync operation.
Definition: dnp3.h:2883
dnp3_app_decode_level_to_string
static const char * dnp3_app_decode_level_to_string(dnp3_app_decode_level_t value)
Converts a dnp3_app_decode_level_t to a string.
Definition: dnp3.h:288
dnp3_master_channel_config_t::rx_buffer_size
uint16_t rx_buffer_size
RX buffer size.
Definition: dnp3.h:2066
dnp3_outstation_application_t::ctx
void * ctx
Context data.
Definition: dnp3.h:4522
DNP3_FUNCTION_CODE_ASSIGN_CLASS
Outstation shall assign the events generated by the points specified by the objects in the request to...
Definition: dnp3.h:4610
dnp3_binary_output_status_t::flags
dnp3_flags_t flags
Point flags.
Definition: dnp3.h:810
dnp3_timestamp_utc_t
struct dnp3_timestamp_utc_t dnp3_timestamp_utc_t
Timestamp value returned by dnp3_association_handler_t::get_current_time.
Definition: dnp3.h:2413
DNP3_VARIATION_GROUP42_VAR8
Analog Output Event - Double-preicions floating point with time.
Definition: dnp3.h:1289
dnp3_request_header_t
struct dnp3_request_header_t dnp3_request_header_t
Application-layer header for requests.
Definition: dnp3.h:4677
dnp3_analog_t::value
double value
Point value.
Definition: dnp3.h:931
DNP3_FUNCTION_CODE_AUTHENTICATE_FILE
Outstation shall return a file authentication key (value == 29)
Definition: dnp3.h:4624
DNP3_READ_RESULT_RESPONSE_TIMEOUT
timeout occurred before receiving a response
Definition: dnp3.h:2599
dnp3_control_handler_t::select_g41v4
dnp3_command_status_t(* select_g41v4)(double, uint16_t, dnp3_database_t *, void *)
Select an analog output, but do not operate.
Definition: dnp3.h:5065
DNP3_OPERATE_TYPE_DIRECT_OPERATE
operate the control via a DirectOperate request
Definition: dnp3.h:4940
dnp3_log_level_t
dnp3_log_level_t
Log level.
Definition: dnp3.h:113
dnp3_event_double_bit_binary_variation_to_string
static const char * dnp3_event_double_bit_binary_variation_to_string(dnp3_event_double_bit_binary_variation_t value)
Converts a dnp3_event_double_bit_binary_variation_t to a string.
Definition: dnp3.h:3386
dnp3_event_buffer_config_t::max_analog
uint16_t max_analog
Maximum number of Analog Input events (g32)
Definition: dnp3.h:4251
dnp3_control_t::con
bool con
Requires confirmation.
Definition: dnp3.h:457
DNP3_EVENT_FROZEN_COUNTER_VARIATION_GROUP23_VAR1
Frozen Counter event - 32-bit with flag.
Definition: dnp3.h:3695
dnp3_request_header_t
Application-layer header for requests.
Definition: dnp3.h:4680
dnp3_port_state_listener_t::ctx
void * ctx
Context data.
Definition: dnp3.h:1107
dnp3_configure_logging
dnp3_param_error_t dnp3_configure_logging(dnp3_logging_config_t config, dnp3_logger_t logger)
Set the callback that will receive all the log messages.
dnp3_database_t
struct dnp3_database_t dnp3_database_t
Internal database access.
Definition: dnp3.h:3168
dnp3_operate_type_t
dnp3_operate_type_t
Enumeration describing how the master requested the control operation.
Definition: dnp3.h:4935
dnp3_master_channel_create_serial
dnp3_param_error_t dnp3_master_channel_create_serial(dnp3_runtime_t *runtime, dnp3_master_channel_config_t config, const char *path, dnp3_serial_port_settings_t serial_params, uint64_t open_retry_delay, dnp3_port_state_listener_t listener, dnp3_master_channel_t **out)
Create a master channel on the specified serial port.
DNP3_VARIATION_GROUP30_VAR6
Analog Input - Double-precision floating point with flags.
Definition: dnp3.h:1233
dnp3_database_get_frozen_counter
dnp3_param_error_t dnp3_database_get_frozen_counter(dnp3_database_t *db, uint16_t index, dnp3_frozen_counter_t *out)
Get a Frozen Counter point.
DNP3_VARIATION_GROUP32_VAR6
Analog Input Event - Double-precision floating point without time.
Definition: dnp3.h:1247
DNP3_COMMAND_STATUS_HARDWARE_ERROR
something is stopping the command, often a local/remote interlock (value == 6)
Definition: dnp3.h:4871
dnp3_data_bits_t
dnp3_data_bits_t
Number of bits per character.
Definition: dnp3.h:1453
DNP3_EVENT_FROZEN_COUNTER_VARIATION_GROUP23_VAR2
Frozen Counter event - 16-bit with flag.
Definition: dnp3.h:3697
dnp3_frozen_counter_init
static dnp3_frozen_counter_t dnp3_frozen_counter_init(uint16_t index, uint32_t value, dnp3_flags_t flags, dnp3_timestamp_t time)
Initialize dnp3_frozen_counter_t to default values.
Definition: dnp3.h:903
dnp3_control_handler_t
struct dnp3_control_handler_t dnp3_control_handler_t
Callbacks for handling controls.
dnp3_freeze_result_t
dnp3_freeze_result_t
Result of a freeze operation.
Definition: dnp3.h:4439
dnp3_read_type_to_string
static const char * dnp3_read_type_to_string(dnp3_read_type_t value)
Converts a dnp3_read_type_t to a string.
Definition: dnp3.h:1892
dnp3_analog_output_status_t::value
double value
Point value.
Definition: dnp3.h:972
DNP3_COMMAND_STATUS_NO_SELECT
command requires being selected before operate, configuration issue (value == 2)
Definition: dnp3.h:4863
DNP3_EVENT_BINARY_VARIATION_GROUP2_VAR2
Binary input event - with absolute time.
Definition: dnp3.h:3279
dnp3_client_state_listener_t::on_change
void(* on_change)(dnp3_client_state_t, void *)
Called when the client state changed.
Definition: dnp3.h:2127
DNP3_BROADCAST_ACTION_IGNORED_BY_CONFIGURATION
Outstation ignored the broadcast message b/c it is disabled by configuration.
Definition: dnp3.h:4707
dnp3_runtime_destroy
void dnp3_runtime_destroy(dnp3_runtime_t *runtime)
Destroy a runtime.
dnp3_binary_output_status_t
struct dnp3_binary_output_status_t dnp3_binary_output_status_t
BinaryOutputStatus point.
Definition: dnp3.h:800
dnp3_binary_output_status_init
static dnp3_binary_output_status_t dnp3_binary_output_status_init(uint16_t index, bool value, dnp3_flags_t flags, dnp3_timestamp_t time)
Initialize dnp3_binary_output_status_t to default values.
Definition: dnp3.h:821
dnp3_address_filter_any
dnp3_address_filter_t * dnp3_address_filter_any()
Create an address filter that accepts any IP address.
dnp3_control_code_t::op_type
dnp3_op_type_t op_type
This field is used in conjunction with the tcc field to specify a control operation.
Definition: dnp3.h:555
dnp3_write_time_result_to_string
static const char * dnp3_write_time_result_to_string(dnp3_write_time_result_t value)
Converts a dnp3_write_time_result_t to a string.
Definition: dnp3.h:4405
DNP3_READ_TYPE_UNSOLICITED
Unsolicited message.
Definition: dnp3.h:1882
dnp3_time_sync_task_callback_t
struct dnp3_time_sync_task_callback_t dnp3_time_sync_task_callback_t
Handler for time synchronization tasks.
DNP3_VARIATION_GROUP41_VAR4
Analog Output - Double-precision floating point.
Definition: dnp3.h:1271
dnp3_frozen_counter_config_init
static dnp3_frozen_counter_config_t dnp3_frozen_counter_config_init()
Initialize dnp3_frozen_counter_config_t to default values.
Definition: dnp3.h:3737
dnp3_database_get_double_bit_binary
dnp3_param_error_t dnp3_database_get_double_bit_binary(dnp3_database_t *db, uint16_t index, dnp3_double_bit_binary_t *out)
Get a Double-Bit Binary Input point.
dnp3_port_state_listener_t
Callback interface for receiving updates about the state of a serial port.
Definition: dnp3.h:1096
dnp3_database_add_analog_output_status
bool dnp3_database_add_analog_output_status(dnp3_database_t *db, uint16_t index, dnp3_event_class_t point_class, dnp3_analog_output_status_config_t config)
Add a new Analog Output Status point.
DNP3_VARIATION_GROUP52_VAR2
Time delay - Fine.
Definition: dnp3.h:1303
DNP3_RESTART_DELAY_TYPE_MILLISECONDS
Value is in milliseconds (corresponds to g51v2)
Definition: dnp3.h:4301
DNP3_IIN1_FLAG_DEVICE_RESTART
Outstation has restarted.
Definition: dnp3.h:1670
dnp3_database_add_double_bit_binary
bool dnp3_database_add_double_bit_binary(dnp3_database_t *db, uint16_t index, dnp3_event_class_t point_class, dnp3_double_bit_binary_config_t config)
Add a new Double-Bit Binary Input point.
dnp3_read_handler_t::handle_binary_output_status
void(* handle_binary_output_status)(dnp3_header_info_t, dnp3_binary_output_status_iterator_t *, void *)
Handle binary output status data.
Definition: dnp3.h:1936
dnp3_application_iin_t::need_time
bool need_time
IIN1.4 - Time synchronization is required.
Definition: dnp3.h:4325
DNP3_RESTART_DELAY_TYPE_NOT_SUPPORTED
Restart mode not supported.
Definition: dnp3.h:4297
DNP3_TIME_QUALITY_NOT_SYNCHRONIZED
The device indicates the timestamp may be not be synchronized.
Definition: dnp3.h:632
dnp3_outstation_information_t::unsolicited_confirmed
void(* unsolicited_confirmed)(uint8_t, void *)
Master confirmed an unsolicited message.
Definition: dnp3.h:4791
DNP3_EVENT_CLASS_CLASS3
Class 3 event.
Definition: dnp3.h:3180
dnp3_outstation_transaction_t
Outstation transaction interface.
Definition: dnp3.h:5191
dnp3_event_buffer_config_t
Maximum number of events for each type.
Definition: dnp3.h:4238
dnp3_static_analog_variation_t
dnp3_static_analog_variation_t
Static analog variation.
Definition: dnp3.h:3776
dnp3_outstation_information_t::solicited_confirm_received
void(* solicited_confirm_received)(uint8_t, void *)
Received the expected confirm.
Definition: dnp3.h:4759
dnp3_classes_t
struct dnp3_classes_t dnp3_classes_t
Class 0, 1, 2 and 3 config.
Definition: dnp3.h:2291
dnp3_qualifier_code_to_string
static const char * dnp3_qualifier_code_to_string(dnp3_qualifier_code_t value)
Converts a dnp3_qualifier_code_t to a string.
Definition: dnp3.h:1836
DNP3_COMMAND_STATUS_UNKNOWN
aptures any value not defined in the enumeration
Definition: dnp3.h:4899
DNP3_COMMAND_MODE_SELECT_BEFORE_OPERATE
Perform a Select and Operate (0x03 then 0x04)
Definition: dnp3.h:2755
dnp3_restart_result_t
Result of a restart task.
Definition: dnp3.h:3028
dnp3_counter_config_t
Counter configuration.
Definition: dnp3.h:3604
dnp3_address_filter_t
struct dnp3_address_filter_t dnp3_address_filter_t
Outstation address filter.
Definition: dnp3.h:5261
dnp3_association_config_t::startup_integrity_classes
dnp3_classes_t startup_integrity_classes
Startup integrity classes to ask on master startup and when an outstation restart is detected.
Definition: dnp3.h:2369
dnp3_database_add_counter
bool dnp3_database_add_counter(dnp3_database_t *db, uint16_t index, dnp3_event_class_t point_class, dnp3_counter_config_t config)
Add a new Counter point.
dnp3_counter_init
static dnp3_counter_t dnp3_counter_init(uint16_t index, uint32_t value, dnp3_flags_t flags, dnp3_timestamp_t time)
Initialize dnp3_counter_t to default values.
Definition: dnp3.h:862
DNP3_AUTO_TIME_SYNC_NON_LAN
Perform automatic time sync with Delay Measurement (0x17) function code.
Definition: dnp3.h:2340
dnp3_command_status_to_string
static const char * dnp3_command_status_to_string(dnp3_command_status_t value)
Converts a dnp3_command_status_t to a string.
Definition: dnp3.h:4905
dnp3_master_channel_t
struct dnp3_master_channel_t dnp3_master_channel_t
Represents a communication channel for a master station.
Definition: dnp3.h:2159
dnp3_outstation_destroy
void dnp3_outstation_destroy(dnp3_outstation_t *outstation)
Free resources of the outstation.
dnp3_time_sync_mode_to_string
static const char * dnp3_time_sync_mode_to_string(dnp3_time_sync_mode_t value)
Converts a dnp3_time_sync_mode_t to a string.
Definition: dnp3.h:2872
DNP3_VARIATION_GROUP42_VAR5
Analog Output Event - Single-precision floating point without time.
Definition: dnp3.h:1283
dnp3_octet_string_destroy
void dnp3_octet_string_destroy(dnp3_octet_string_value_t *octet_string)
Deallocate an octet string.
dnp3_iin_t::iin1
dnp3_iin1_t iin1
First IIN byte.
Definition: dnp3.h:1766
dnp3_read_handler_t::end_fragment
void(* end_fragment)(dnp3_read_type_t, dnp3_response_header_t, void *)
Marks the end of a fragment.
Definition: dnp3.h:1918
DNP3_VARIATION_GROUP3_VAR1
Double-bit Binary Input - Packed format.
Definition: dnp3.h:1149
dnp3_binary_output_status_config_t::event_variation
dnp3_event_binary_output_status_variation_t event_variation
Default event variation.
Definition: dnp3.h:3503
dnp3_port_state_listener_t::on_destroy
void(* on_destroy)(void *arg)
Callback when the underlying owner doesn't need the interface anymore.
Definition: dnp3.h:1105
DNP3_FUNCTION_CODE_READ
Outstation shall return the data specified by the objects in the request (value == 1)
Definition: dnp3.h:4568
dnp3_update_options_t::event_mode
dnp3_event_mode_t event_mode
Determines how/if an event is produced.
Definition: dnp3.h:3237
dnp3_event_buffer_config_all_types
dnp3_event_buffer_config_t dnp3_event_buffer_config_all_types(uint16_t max)
Initialize an event buffer configuration with the same maximum values for all types.
dnp3_outstation_config_init
static dnp3_outstation_config_t dnp3_outstation_config_init(uint16_t outstation_address, uint16_t master_address)
Initialize dnp3_outstation_config_t to default values.
Definition: dnp3.h:4211
DNP3_STATIC_FROZEN_COUNTER_VARIATION_GROUP21_VAR1
Frozen Counter - 32-bit with flag.
Definition: dnp3.h:3661
dnp3_read_handler_t::handle_binary
void(* handle_binary)(dnp3_header_info_t, dnp3_binary_iterator_t *, void *)
Handle binary input data.
Definition: dnp3.h:1924
dnp3_database_remove_analog_output_status
bool dnp3_database_remove_analog_output_status(dnp3_database_t *db, uint16_t index)
Remove an Analog Output Status point.
dnp3_connection_state_to_string
static const char * dnp3_connection_state_to_string(dnp3_connection_state_t value)
Converts a dnp3_connection_state_t to a string.
Definition: dnp3.h:5146
dnp3_read_handler_t::handle_frozen_counter
void(* handle_frozen_counter)(dnp3_header_info_t, dnp3_frozen_counter_iterator_t *, void *)
Handle frozen counter input data.
Definition: dnp3.h:1948
DNP3_FUNCTION_CODE_DIRECT_OPERATE_NO_RESPONSE
Same as DirectOperate but outstation shall not send a response (value == 6)
Definition: dnp3.h:4578
dnp3_command_mode_t
dnp3_command_mode_t
Command operation mode.
Definition: dnp3.h:2750
dnp3_restart_delay_t
struct dnp3_restart_delay_t dnp3_restart_delay_t
Restart delay used by dnp3_outstation_application_t::cold_restart and dnp3_outstation_application_t::...
Definition: dnp3.h:4350
dnp3_poll_id_t::id
uint64_t id
Unique poll id assigned by the association.
Definition: dnp3.h:2251
DNP3_VARIATION_GROUP60_VAR2
Class objects - Class 1 data.
Definition: dnp3.h:1307
dnp3_flow_control_to_string
static const char * dnp3_flow_control_to_string(dnp3_flow_control_t value)
Converts a dnp3_flow_control_t to a string.
Definition: dnp3.h:1494
dnp3_counter_config_t::deadband
uint32_t deadband
Deadband value.
Definition: dnp3.h:3614
DNP3_TRIP_CLOSE_CODE_RESERVED
RESERVED (3)
Definition: dnp3.h:493
dnp3_binary_output_status_t::time
dnp3_timestamp_t time
Point timestamp.
Definition: dnp3.h:812
dnp3_client_state_listener_t
struct dnp3_client_state_listener_t dnp3_client_state_listener_t
Callback for monitoring the client TCP connection state.
DNP3_OPERATE_TYPE_DIRECT_OPERATE_NO_ACK
operate the control via a DirectOperateNoAck request
Definition: dnp3.h:4942
DNP3_FUNCTION_CODE_FREEZE_CLEAR_NO_RESPONSE
Same as FreezeClear but outstation shall not send a response (value == 10)
Definition: dnp3.h:4586
dnp3_time_sync_mode_t
dnp3_time_sync_mode_t
Time synchronization mode.
Definition: dnp3.h:2861
dnp3_event_classes_t
Event classes.
Definition: dnp3.h:2257
dnp3_write_time_result_t
dnp3_write_time_result_t
Write time result used by dnp3_outstation_application_t::write_absolute_time.
Definition: dnp3.h:4392
dnp3_event_analog_variation_t
dnp3_event_analog_variation_t
Event analog variation.
Definition: dnp3.h:3810
DNP3_IIN1_FLAG_CLASS2_EVENTS
Outstation has Class 2 events not reported yet.
Definition: dnp3.h:1660
dnp3_update_options_t
Options that control how the update is performed.
Definition: dnp3.h:3230
DNP3_IIN2_FLAG_OBJECT_UNKNOWN
Request contains an unknown point.
Definition: dnp3.h:1725
dnp3_time_sync_task_callback_t::ctx
void * ctx
Context data.
Definition: dnp3.h:2955
dnp3_port_state_listener_t
struct dnp3_port_state_listener_t dnp3_port_state_listener_t
Callback interface for receiving updates about the state of a serial port.
DNP3_QUALIFIER_CODE_COUNT8
8-bit count (0x07)
Definition: dnp3.h:1822
dnp3_database_get_counter
dnp3_param_error_t dnp3_database_get_counter(dnp3_database_t *db, uint16_t index, dnp3_counter_t *out)
Get a Counter point.
dnp3_outstation_features_t
struct dnp3_outstation_features_t dnp3_outstation_features_t
Optional outstation features that can be enabled or disabled.
Definition: dnp3.h:4118
DNP3_PORT_STATE_WAIT
Waiting to perform an open retry.
Definition: dnp3.h:1073
dnp3_port_state_listener_init
static dnp3_port_state_listener_t dnp3_port_state_listener_init(void(*on_change)(dnp3_port_state_t, void *), void(*on_destroy)(void *arg), void *ctx)
Initialize a dnp3_port_state_listener_t interface.
Definition: dnp3.h:1114
DNP3_RESPONSE_FUNCTION_RESPONSE
Solicited response.
Definition: dnp3.h:1614
DNP3_VARIATION_GROUP30_VAR3
Analog Input - 32-bit without flag.
Definition: dnp3.h:1227
dnp3_analog_output_status_config_t::static_variation
dnp3_static_analog_output_status_variation_t static_variation
Default static variation.
Definition: dnp3.h:3980
DNP3_VARIATION_GROUP3_VAR2
Double-bit Binary Input - With flags.
Definition: dnp3.h:1151
dnp3_timestamp_not_synchronized
dnp3_timestamp_t dnp3_timestamp_not_synchronized(uint64_t value)
Creates a not synchronized timestamp struct.
DNP3_LOG_OUTPUT_FORMAT_JSON
Output formatted as JSON.
Definition: dnp3.h:174
dnp3_analog_config_t::deadband
double deadband
Deadband value.
Definition: dnp3.h:3862
dnp3_client_state_listener_t::ctx
void * ctx
Context data.
Definition: dnp3.h:2132
dnp3_outstation_create_serial_session
dnp3_param_error_t dnp3_outstation_create_serial_session(dnp3_runtime_t *runtime, const char *serial_path, dnp3_serial_port_settings_t settings, dnp3_outstation_config_t config, dnp3_event_buffer_config_t event_config, dnp3_outstation_application_t application, dnp3_outstation_information_t information, dnp3_control_handler_t control_handler, dnp3_outstation_t **out)
Create an outstation instance running on a serial port.
DNP3_COMMAND_STATUS_PROCESSING_LIMITED
command not accepted because the device cannot process any more activities than are presently in prog...
Definition: dnp3.h:4881
DNP3_EVENT_ANALOG_VARIATION_GROUP32_VAR8
Analog input event - double-precision, floating-point with time.
Definition: dnp3.h:3827
DNP3_VARIATION_GROUP20_VAR2
Counter - 16-bit with flags.
Definition: dnp3.h:1181
DNP3_CLIENT_STATE_SHUTDOWN
Client is shutting down.
Definition: dnp3.h:2100
dnp3_outstation_config_t::max_unsolicited_retries
uint32_t max_unsolicited_retries
Maximum number of unsolicited retries.
Definition: dnp3.h:4184
dnp3_read_handler_t::handle_double_bit_binary
void(* handle_double_bit_binary)(dnp3_header_info_t, dnp3_double_bit_binary_iterator_t *, void *)
Handle double-bit binary input data.
Definition: dnp3.h:1930
DNP3_VARIATION_GROUP2_VAR0
Binary Input Event - Default variation.
Definition: dnp3.h:1139
DNP3_TIME_SYNC_RESULT_STILL_NEEDS_TIME
Outstation did not clear the NEED_TIME IIN bit.
Definition: dnp3.h:2896
dnp3_class_zero_config_t
struct dnp3_class_zero_config_t dnp3_class_zero_config_t
Controls which types are reported during a Class 0 read.
Definition: dnp3.h:4068
dnp3_response_function_to_string
static const char * dnp3_response_function_to_string(dnp3_response_function_t value)
Converts a dnp3_response_function_t to a string.
Definition: dnp3.h:1622
DNP3_VARIATION_GROUP30_VAR0
Analog Input - Default variation.
Definition: dnp3.h:1221
DNP3_LOG_OUTPUT_FORMAT_TEXT
A simple text-based format.
Definition: dnp3.h:172
DNP3_EVENT_COUNTER_VARIATION_GROUP22_VAR2
Counter event - 16-bit with flag.
Definition: dnp3.h:3579
DNP3_VARIATION_GROUP23_VAR0
Frozen Counter Event - Default variation.
Definition: dnp3.h:1211
DNP3_EVENT_MODE_FORCE
Produce an event whether the value has changed or not.
Definition: dnp3.h:3206
dnp3_byte_next
dnp3_byte_t * dnp3_byte_next(dnp3_byte_iterator_t *it)
Get the next value of the iterator.
DNP3_TIME_SYNC_RESULT_CLOCK_ROLLBACK
Detected a clock rollback.
Definition: dnp3.h:2888
DNP3_LINK_STATUS_RESULT_UNEXPECTED_RESPONSE
There was activity on the link, but it wasn't a LINK_STATUS.
Definition: dnp3.h:3104
DNP3_VARIATION_GROUP42_VAR2
Analog Output Event - 16-bit without time.
Definition: dnp3.h:1277
dnp3_static_binary_variation_to_string
static const char * dnp3_static_binary_variation_to_string(dnp3_static_binary_variation_t value)
Converts a dnp3_static_binary_variation_t to a string.
Definition: dnp3.h:3263
dnp3_outstation_config_t::unsolicited_buffer_size
uint16_t unsolicited_buffer_size
Unsolicited response buffer size.
Definition: dnp3.h:4164
DNP3_STATIC_BINARY_OUTPUT_STATUS_VARIATION_GROUP10_VAR1
Binary output - packed format.
Definition: dnp3.h:3453
dnp3_double_bit_binary_config_init
static dnp3_double_bit_binary_config_t dnp3_double_bit_binary_config_init()
Initialize dnp3_double_bit_binary_config_t to default values.
Definition: dnp3.h:3412
dnp3_binary_config_t::event_variation
dnp3_event_binary_variation_t event_variation
Default event variation.
Definition: dnp3.h:3308
dnp3_master_channel_sync_time
dnp3_param_error_t dnp3_master_channel_sync_time(dnp3_master_channel_t *channel, dnp3_association_id_t association, dnp3_time_sync_mode_t mode, dnp3_time_sync_task_callback_t callback)
Asynchronously perform a time sync operation to the association.
DNP3_FREEZE_TYPE_IMMEDIATE_FREEZE
Copy the current value of a counter to the associated point.
Definition: dnp3.h:4420
dnp3_frozencounter_next
dnp3_frozen_counter_t * dnp3_frozencounter_next(dnp3_frozen_counter_iterator_t *it)
Get the next value of the iterator.
dnp3_timestamp_utc_invalid
dnp3_timestamp_utc_t dnp3_timestamp_utc_invalid()
Create an invalid timestamp value.
dnp3_outstation_transaction_t
struct dnp3_outstation_transaction_t dnp3_outstation_transaction_t
Outstation transaction interface.
DNP3_TIME_SYNC_RESULT_SYSTEM_TIME_NOT_AVAILABLE
System time not available.
Definition: dnp3.h:2898
DNP3_VARIATION_GROUP11_VAR2
Binary Output Event - With time.
Definition: dnp3.h:1171
DNP3_TIME_SYNC_RESULT_OVERFLOW
Overflow in calculation.
Definition: dnp3.h:2894
dnp3_event_binary_variation_to_string
static const char * dnp3_event_binary_variation_to_string(dnp3_event_binary_variation_t value)
Converts a dnp3_event_binary_variation_t to a string.
Definition: dnp3.h:3287
dnp3_analog_next
dnp3_analog_t * dnp3_analog_next(dnp3_analog_iterator_t *it)
Get the next value of the iterator.
dnp3_timestamp_synchronized
dnp3_timestamp_t dnp3_timestamp_synchronized(uint64_t value)
Creates a synchronized timestamp struct.
dnp3_control_handler_t::on_destroy
void(* on_destroy)(void *arg)
Callback when the underlying owner doesn't need the interface anymore.
Definition: dnp3.h:5077
dnp3_application_iin_t
Application-controlled IIN bits.
Definition: dnp3.h:4321
dnp3_database_update_frozen_counter
bool dnp3_database_update_frozen_counter(dnp3_database_t *db, dnp3_frozen_counter_t value, dnp3_update_options_t options)
Update an Frozen Counter point.
DNP3_VARIATION_GROUP1_VAR1
Binary Input - Packed format.
Definition: dnp3.h:1135
dnp3_binary_output_status_t::value
bool value
Point value.
Definition: dnp3.h:808
dnp3_control_code_t::queue
bool queue
This field is obsolete and should always be 0.
Definition: dnp3.h:553
dnp3_static_binary_output_status_variation_t
dnp3_static_binary_output_status_variation_t
Static binary output status variation.
Definition: dnp3.h:3450
DNP3_VARIATION_GROUP40_VAR2
Analog Output Status - 16-bit with flags.
Definition: dnp3.h:1257
dnp3_byte_init
static dnp3_byte_t dnp3_byte_init(uint8_t value)
Initialize dnp3_byte_t to default values.
Definition: dnp3.h:1017
dnp3_control_code_t::tcc
dnp3_trip_close_code_t tcc
This field is used in conjunction with the op_type field to specify a control operation.
Definition: dnp3.h:548
dnp3_restart_error_to_string
static const char * dnp3_restart_error_to_string(dnp3_restart_error_t value)
Converts a dnp3_restart_error_t to a string.
Definition: dnp3.h:3009
DNP3_FUNCTION_CODE_OPEN_FILE
Outstation shall open a file (value == 25)
Definition: dnp3.h:4616
dnp3_event_classes_t::class1
bool class1
Class 1 events.
Definition: dnp3.h:2260
dnp3_master_channel_destroy
void dnp3_master_channel_destroy(dnp3_master_channel_t *channel)
Shutdown a dnp3_master_channel_t and release all resources.
dnp3_outstation_information_t::wrong_solicited_confirm_seq
void(* wrong_solicited_confirm_seq)(uint8_t, uint8_t, void *)
Received a solicited confirm with the wrong sequence number.
Definition: dnp3.h:4769
dnp3_frozen_counter_config_t::deadband
uint32_t deadband
Deadband value.
Definition: dnp3.h:3732
DNP3_WRITE_TIME_RESULT_NOT_SUPPORTED
Writing time is not supported by this outstation (translated to NO_FUNC_CODE_SUPPORT).
Definition: dnp3.h:4395
DNP3_STATIC_FROZEN_COUNTER_VARIATION_GROUP21_VAR9
Frozen Counter - 32-bit without flag.
Definition: dnp3.h:3669
dnp3_event_frozen_counter_variation_to_string
static const char * dnp3_event_frozen_counter_variation_to_string(dnp3_event_frozen_counter_variation_t value)
Converts a dnp3_event_frozen_counter_variation_t to a string.
Definition: dnp3.h:3707
DNP3_EVENT_COUNTER_VARIATION_GROUP22_VAR6
Counter event - 16-bit with flag and time.
Definition: dnp3.h:3583
dnp3_outstation_config_t::max_read_request_headers
uint16_t max_read_request_headers
Maximum number of headers that will be processed in a READ request.
Definition: dnp3.h:4199
DNP3_PARITY_ODD
Parity bit sets odd number of 1 bits.
Definition: dnp3.h:1511
dnp3_doublebitbinary_next
dnp3_double_bit_binary_t * dnp3_doublebitbinary_next(dnp3_double_bit_binary_iterator_t *it)
Get the next value of the iterator.
dnp3_octet_string_t::value
dnp3_byte_iterator_t * value
Point value.
Definition: dnp3.h:1042
dnp3_counter_t::value
uint32_t value
Point value.
Definition: dnp3.h:849
DNP3_OP_TYPE_LATCH_OFF
LATCH_OFF(4)
Definition: dnp3.h:523
dnp3_header_info_t::variation
dnp3_variation_t variation
Group/Variation used in the response.
Definition: dnp3.h:1858
dnp3_analog_t::flags
dnp3_flags_t flags
Point flags.
Definition: dnp3.h:933
DNP3_EVENT_ANALOG_OUTPUT_STATUS_VARIATION_GROUP42_VAR6
Analog output event - double-precision, floating-point without time.
Definition: dnp3.h:3947
dnp3_stop_bits_t
dnp3_stop_bits_t
Number of stop bits.
Definition: dnp3.h:1531
dnp3_control_code_t::clear
bool clear
Support for this field is optional. When the clear bit is set, the device shall remove pending contro...
Definition: dnp3.h:550
dnp3_operate_type_to_string
static const char * dnp3_operate_type_to_string(dnp3_operate_type_t value)
Converts a dnp3_operate_type_t to a string.
Definition: dnp3.h:4948
dnp3_event_buffer_config_t::max_frozen_counter
uint16_t max_frozen_counter
Maximum number of Frozen Counter events (g23)
Definition: dnp3.h:4249
dnp3_control_handler_t::select_g41v1
dnp3_command_status_t(* select_g41v1)(int32_t, uint16_t, dnp3_database_t *, void *)
Select an analog output, but do not operate.
Definition: dnp3.h:5002
DNP3_VARIATION_GROUP32_VAR7
Analog Input Event - Single-precision floating point with time.
Definition: dnp3.h:1249
dnp3_event_classes_none
dnp3_event_classes_t dnp3_event_classes_none()
Initialize all three event classes to false.
dnp3_iin2_init
static dnp3_iin2_t dnp3_iin2_init(uint8_t value)
Initialize dnp3_iin2_t to default values.
Definition: dnp3.h:1711
dnp3_event_binary_output_status_variation_to_string
static const char * dnp3_event_binary_output_status_variation_to_string(dnp3_event_binary_output_status_variation_t value)
Converts a dnp3_event_binary_output_status_variation_t to a string.
Definition: dnp3.h:3483
DNP3_LOG_LEVEL_DEBUG
Debugging log level.
Definition: dnp3.h:122
dnp3_binary_output_status_config_t
struct dnp3_binary_output_status_config_t dnp3_binary_output_status_config_t
Binary Output Status configuration.
Definition: dnp3.h:3493
DNP3_STATIC_ANALOG_OUTPUT_STATUS_VARIATION_GROUP40_VAR3
Analog output status - single-precision, floating-point with flag.
Definition: dnp3.h:3913
DNP3_STATIC_DOUBLE_BIT_BINARY_VARIATION_GROUP3_VAR1
Double-bit binary input - packed format.
Definition: dnp3.h:3354
dnp3_restart_error_t
dnp3_restart_error_t
Result of a restart operation.
Definition: dnp3.h:2986
dnp3_transport_decode_level_to_string
static const char * dnp3_transport_decode_level_to_string(dnp3_transport_decode_level_t value)
Converts a dnp3_transport_decode_level_t to a string.
Definition: dnp3.h:314
DNP3_PARAM_ERROR_SERVER_ALREADY_STARTED
Server already started.
Definition: dnp3.h:46
dnp3_static_counter_variation_to_string
static const char * dnp3_static_counter_variation_to_string(dnp3_static_counter_variation_t value)
Converts a dnp3_static_counter_variation_t to a string.
Definition: dnp3.h:3561
dnp3_auto_time_sync_to_string
static const char * dnp3_auto_time_sync_to_string(dnp3_auto_time_sync_t value)
Converts a dnp3_auto_time_sync_t to a string.
Definition: dnp3.h:2346
DNP3_COMMAND_RESULT_RESPONSE_TIMEOUT
timeout occurred before receiving a response
Definition: dnp3.h:2785
dnp3_outstation_features_t
Optional outstation features that can be enabled or disabled.
Definition: dnp3.h:4121
dnp3_restart_delay_t::value
uint16_t value
Expected delay before the outstation comes back online.
Definition: dnp3.h:4360
dnp3_connect_strategy_init
static dnp3_connect_strategy_t dnp3_connect_strategy_init()
Initialize dnp3_connect_strategy_t to default values.
Definition: dnp3.h:2182
DNP3_EVENT_DOUBLE_BIT_BINARY_VARIATION_GROUP4_VAR2
Double-bit binary input event - with absolute time.
Definition: dnp3.h:3378
dnp3_read_handler_t::handle_analog
void(* handle_analog)(dnp3_header_info_t, dnp3_analog_iterator_t *, void *)
Handle analog input data.
Definition: dnp3.h:1954
DNP3_FUNCTION_CODE_IMMEDIATE_FREEZE
Outstation shall copy the point data values specified by the objects in the request to a separate fre...
Definition: dnp3.h:4580
DNP3_STATIC_FROZEN_COUNTER_VARIATION_GROUP21_VAR10
Frozen Counter - 16-bit without flag.
Definition: dnp3.h:3671
dnp3_analog_t
struct dnp3_analog_t dnp3_analog_t
Analog point.
Definition: dnp3.h:923
dnp3_frozen_counter_t::value
uint32_t value
Point value.
Definition: dnp3.h:890
dnp3_phys_decode_level_to_string
static const char * dnp3_phys_decode_level_to_string(dnp3_phys_decode_level_t value)
Converts a dnp3_phys_decode_level_t to a string.
Definition: dnp3.h:364
dnp3_frozen_counter_config_t::event_variation
dnp3_event_frozen_counter_variation_t event_variation
Default event variation.
Definition: dnp3.h:3729
DNP3_VARIATION_GROUP42_VAR4
Analog Output Event - 16-bit with time.
Definition: dnp3.h:1281
dnp3_command_task_callback_t::ctx
void * ctx
Context data.
Definition: dnp3.h:2829
dnp3_timestamp_utc_valid
dnp3_timestamp_utc_t dnp3_timestamp_utc_valid(uint64_t value)
Create a valid timestamp value.
dnp3_analog_config_init
static dnp3_analog_config_t dnp3_analog_config_init()
Initialize dnp3_analog_config_t to default values.
Definition: dnp3.h:3867
DNP3_PARITY_NONE
No parity bit.
Definition: dnp3.h:1509
dnp3_restart_result_t
struct dnp3_restart_result_t dnp3_restart_result_t
Result of a restart task.
Definition: dnp3.h:3025
DNP3_TIME_SYNC_RESULT_BAD_OUTSTATION_TIME_DELAY
Outstation time delay exceeded the response delay.
Definition: dnp3.h:2892
dnp3_parity_to_string
static const char * dnp3_parity_to_string(dnp3_parity_t value)
Converts a dnp3_parity_t to a string.
Definition: dnp3.h:1519
DNP3_VARIATION_GROUP41_VAR0
Analog Output - Default variation.
Definition: dnp3.h:1263
DNP3_EVENT_ANALOG_OUTPUT_STATUS_VARIATION_GROUP42_VAR7
Analog output event - single-precision, floating-point with time.
Definition: dnp3.h:3949
DNP3_EVENT_MODE_SUPPRESS
Never produce an event regardless of change.
Definition: dnp3.h:3208
dnp3_association_config_t::auto_integrity_scan_on_buffer_overflow
bool auto_integrity_scan_on_buffer_overflow
Automatic integrity scan when an EVENT_BUFFER_OVERFLOW is detected.
Definition: dnp3.h:2383
dnp3_serial_port_settings_t
struct dnp3_serial_port_settings_t dnp3_serial_port_settings_t
Serial port settings.
Definition: dnp3.h:1552
DNP3_EVENT_ANALOG_VARIATION_GROUP32_VAR3
Analog input event - 32-bit with time.
Definition: dnp3.h:3817
dnp3_response_header_init
static dnp3_response_header_t dnp3_response_header_init(dnp3_control_t control, dnp3_response_function_t func, dnp3_iin_t iin)
Initialize dnp3_response_header_t to default values.
Definition: dnp3.h:1802
dnp3_outstation_features_t::broadcast
bool broadcast
Process valid broadcast messages.
Definition: dnp3.h:4128
dnp3_outstation_features_init
static dnp3_outstation_features_t dnp3_outstation_features_init()
Initialize dnp3_outstation_features_t to default values.
Definition: dnp3.h:4136
DNP3_TRANSPORT_DECODE_LEVEL_NOTHING
Decode nothing.
Definition: dnp3.h:304
DNP3_EVENT_ANALOG_OUTPUT_STATUS_VARIATION_GROUP42_VAR8
Analog output event - double-precision, floating-point with time.
Definition: dnp3.h:3951
dnp3_frozen_counter_t::time
dnp3_timestamp_t time
Point timestamp.
Definition: dnp3.h:894
dnp3_logging_config_t::print_level
bool print_level
optionally print the log level as part to the message string
Definition: dnp3.h:206
DNP3_PARAM_ERROR_POINT_DOES_NOT_EXIST
Point does not exist.
Definition: dnp3.h:60
DNP3_VARIATION_GROUP21_VAR9
Frozen Counter - 32-bit without flag.
Definition: dnp3.h:1197
DNP3_LINK_DECODE_LEVEL_HEADER
Decode the header.
Definition: dnp3.h:331
DNP3_VARIATION_GROUP22_VAR5
Counter Event - 32-bit with flags and time.
Definition: dnp3.h:1207
DNP3_STATIC_ANALOG_VARIATION_GROUP30_VAR5
Analog input - single-precision, floating-point with flag.
Definition: dnp3.h:3787