dnp3 (C API) 1.6.0
Loading...
Searching...
No Matches
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
13extern "C" {
14#endif
15
16#define DNP3_VERSION_MAJOR 1
17#define DNP3_VERSION_MINOR 6
18#define DNP3_VERSION_PATCH 0
19#define DNP3_VERSION_STRING "1.6.0"
20
21#include <stdbool.h>
22#include <stdint.h>
23
43
50
57
58
61{
115
120{
121 switch (value)
122 {
123 case DNP3_PARAM_ERROR_OK: return "ok";
124 case DNP3_PARAM_ERROR_INVALID_TIMEOUT: return "invalid_timeout";
125 case DNP3_PARAM_ERROR_NULL_PARAMETER: return "null_parameter";
126 case DNP3_PARAM_ERROR_STRING_NOT_UTF8: return "string_not_utf8";
127 case DNP3_PARAM_ERROR_NO_SUPPORT: return "no_support";
128 case DNP3_PARAM_ERROR_ASSOCIATION_DOES_NOT_EXIST: return "association_does_not_exist";
129 case DNP3_PARAM_ERROR_ASSOCIATION_DUPLICATE_ADDRESS: return "association_duplicate_address";
130 case DNP3_PARAM_ERROR_INVALID_SOCKET_ADDRESS: return "invalid_socket_address";
131 case DNP3_PARAM_ERROR_INVALID_DNP3_ADDRESS: return "invalid_dnp3_address";
132 case DNP3_PARAM_ERROR_INVALID_BUFFER_SIZE: return "invalid_buffer_size";
133 case DNP3_PARAM_ERROR_ADDRESS_FILTER_CONFLICT: return "address_filter_conflict";
134 case DNP3_PARAM_ERROR_SERVER_ALREADY_STARTED: return "server_already_started";
135 case DNP3_PARAM_ERROR_SERVER_BIND_ERROR: return "server_bind_error";
136 case DNP3_PARAM_ERROR_MASTER_ALREADY_SHUTDOWN: return "master_already_shutdown";
137 case DNP3_PARAM_ERROR_RUNTIME_CREATION_FAILURE: return "runtime_creation_failure";
138 case DNP3_PARAM_ERROR_RUNTIME_DESTROYED: return "runtime_destroyed";
139 case DNP3_PARAM_ERROR_RUNTIME_CANNOT_BLOCK_WITHIN_ASYNC: return "runtime_cannot_block_within_async";
140 case DNP3_PARAM_ERROR_LOGGING_ALREADY_CONFIGURED: return "logging_already_configured";
141 case DNP3_PARAM_ERROR_POINT_DOES_NOT_EXIST: return "point_does_not_exist";
142 case DNP3_PARAM_ERROR_INVALID_PEER_CERTIFICATE: return "invalid_peer_certificate";
143 case DNP3_PARAM_ERROR_INVALID_LOCAL_CERTIFICATE: return "invalid_local_certificate";
144 case DNP3_PARAM_ERROR_INVALID_PRIVATE_KEY: return "invalid_private_key";
145 case DNP3_PARAM_ERROR_INVALID_DNS_NAME: return "invalid_dns_name";
146 case DNP3_PARAM_ERROR_OTHER_TLS_ERROR: return "other_tls_error";
147 case DNP3_PARAM_ERROR_WRONG_CHANNEL_TYPE: return "wrong_channel_type";
148 case DNP3_PARAM_ERROR_CONSUMED: return "consumed";
149 default: return "unknown param_error value";
150 }
151}
152
153
156{
200
205{
206 switch (value)
207 {
208 case DNP3_COMMAND_STATUS_SUCCESS: return "success";
209 case DNP3_COMMAND_STATUS_TIMEOUT: return "timeout";
210 case DNP3_COMMAND_STATUS_NO_SELECT: return "no_select";
211 case DNP3_COMMAND_STATUS_FORMAT_ERROR: return "format_error";
212 case DNP3_COMMAND_STATUS_NOT_SUPPORTED: return "not_supported";
213 case DNP3_COMMAND_STATUS_ALREADY_ACTIVE: return "already_active";
214 case DNP3_COMMAND_STATUS_HARDWARE_ERROR: return "hardware_error";
215 case DNP3_COMMAND_STATUS_LOCAL: return "local";
216 case DNP3_COMMAND_STATUS_TOO_MANY_OPS: return "too_many_ops";
217 case DNP3_COMMAND_STATUS_NOT_AUTHORIZED: return "not_authorized";
218 case DNP3_COMMAND_STATUS_AUTOMATION_INHIBIT: return "automation_inhibit";
219 case DNP3_COMMAND_STATUS_PROCESSING_LIMITED: return "processing_limited";
220 case DNP3_COMMAND_STATUS_OUT_OF_RANGE: return "out_of_range";
221 case DNP3_COMMAND_STATUS_DOWNSTREAM_LOCAL: return "downstream_local";
222 case DNP3_COMMAND_STATUS_ALREADY_COMPLETE: return "already_complete";
223 case DNP3_COMMAND_STATUS_BLOCKED: return "blocked";
224 case DNP3_COMMAND_STATUS_CANCELED: return "canceled";
225 case DNP3_COMMAND_STATUS_BLOCKED_OTHER_MASTER: return "blocked_other_master";
226 case DNP3_COMMAND_STATUS_DOWNSTREAM_FAIL: return "downstream_fail";
227 case DNP3_COMMAND_STATUS_NON_PARTICIPATING: return "non_participating";
228 case DNP3_COMMAND_STATUS_UNKNOWN: return "unknown";
229 default: return "unknown command_status value";
230 }
231}
232
234#define DNP3_FLAG_ONLINE 0x01
236#define DNP3_FLAG_RESTART 0x02
238#define DNP3_FLAG_COMM_LOST 0x04
240#define DNP3_FLAG_REMOTE_FORCED 0x08
242#define DNP3_FLAG_LOCAL_FORCED 0x10
244#define DNP3_FLAG_CHATTER_FILTER 0x20
246#define DNP3_FLAG_OVER_RANGE 0x20
248#define DNP3_FLAG_DISCONTINUITY 0x40
250#define DNP3_FLAG_REFERENCE_ERR 0x40
251
254{
264
269{
270 switch (value)
271 {
272 case DNP3_APP_DECODE_LEVEL_NOTHING: return "nothing";
273 case DNP3_APP_DECODE_LEVEL_HEADER: return "header";
274 case DNP3_APP_DECODE_LEVEL_OBJECT_HEADERS: return "object_headers";
275 case DNP3_APP_DECODE_LEVEL_OBJECT_VALUES: return "object_values";
276 default: return "unknown app_decode_level value";
277 }
278}
279
282{
290
295{
296 switch (value)
297 {
298 case DNP3_TRANSPORT_DECODE_LEVEL_NOTHING: return "nothing";
299 case DNP3_TRANSPORT_DECODE_LEVEL_HEADER: return "header";
300 case DNP3_TRANSPORT_DECODE_LEVEL_PAYLOAD: return "payload";
301 default: return "unknown transport_decode_level value";
302 }
303}
304
307{
315
320{
321 switch (value)
322 {
323 case DNP3_LINK_DECODE_LEVEL_NOTHING: return "nothing";
324 case DNP3_LINK_DECODE_LEVEL_HEADER: return "header";
325 case DNP3_LINK_DECODE_LEVEL_PAYLOAD: return "payload";
326 default: return "unknown link_decode_level value";
327 }
328}
329
332{
340
345{
346 switch (value)
347 {
348 case DNP3_PHYS_DECODE_LEVEL_NOTHING: return "nothing";
349 case DNP3_PHYS_DECODE_LEVEL_LENGTH: return "length";
350 case DNP3_PHYS_DECODE_LEVEL_DATA: return "data";
351 default: return "unknown phys_decode_level value";
352 }
353}
354
356
359{
369
380{
381 dnp3_decode_level_t _return_value = {
386 };
387 return _return_value;
388}
389
400{
401 dnp3_decode_level_t _return_value = {
406 };
407 return _return_value;
408}
409
410
413
415
418{
424
432{
433 dnp3_runtime_config_t _return_value = {
434 0
435 };
436 return _return_value;
437}
438
439
447
453
461void dnp3_runtime_set_shutdown_timeout(dnp3_runtime_t* instance, uint64_t timeout);
462
463
465
468{
470 bool fir;
472 bool fin;
474 bool con;
476 bool uns;
478 uint8_t seq;
480
481
484{
494
499{
500 switch (value)
501 {
502 case DNP3_TRIP_CLOSE_CODE_NUL: return "nul";
503 case DNP3_TRIP_CLOSE_CODE_CLOSE: return "close";
504 case DNP3_TRIP_CLOSE_CODE_TRIP: return "trip";
505 case DNP3_TRIP_CLOSE_CODE_RESERVED: return "reserved";
506 default: return "unknown trip_close_code value";
507 }
508}
509
511typedef enum dnp3_op_type_t
512{
524
528static const char* dnp3_op_type_to_string(dnp3_op_type_t value)
529{
530 switch (value)
531 {
532 case DNP3_OP_TYPE_NUL: return "nul";
533 case DNP3_OP_TYPE_PULSE_ON: return "pulse_on";
534 case DNP3_OP_TYPE_PULSE_OFF: return "pulse_off";
535 case DNP3_OP_TYPE_LATCH_ON: return "latch_on";
536 case DNP3_OP_TYPE_LATCH_OFF: return "latch_off";
537 default: return "unknown op_type value";
538 }
539}
540
542
545{
549 bool clear;
551 bool queue;
555
566{
567 dnp3_control_code_t _return_value = {
568 tcc,
569 clear,
570 false,
571 op_type
572 };
573 return _return_value;
574}
575
586{
587 dnp3_control_code_t _return_value = {
589 false,
590 false,
591 op_type
592 };
593 return _return_value;
594}
595
606{
607 dnp3_control_code_t _return_value = {
608 tcc,
609 false,
610 false,
611 op_type
612 };
613 return _return_value;
614}
615
616
618
621{
625 uint8_t count;
627 uint32_t on_time;
629 uint32_t off_time;
631
638static dnp3_group12_var1_t dnp3_group12_var1_init(dnp3_control_code_t code, uint8_t count, uint32_t on_time, uint32_t off_time)
639{
640 dnp3_group12_var1_t _return_value = {
641 code,
642 count,
643 on_time,
644 off_time
645 };
646 return _return_value;
647}
648
659{
660 dnp3_group12_var1_t _return_value = {
661 code,
662 1,
663 1000,
664 1000
665 };
666 return _return_value;
667}
668
669
670typedef struct dnp3_flags_t dnp3_flags_t;
671
673typedef struct dnp3_flags_t
674{
676 uint8_t value;
678
682static dnp3_flags_t dnp3_flags_init(uint8_t value)
683{
684 dnp3_flags_t _return_value = {
685 value
686 };
687 return _return_value;
688}
689
690
693{
701
706{
707 switch (value)
708 {
709 case DNP3_TIME_QUALITY_SYNCHRONIZED_TIME: return "synchronized_time";
710 case DNP3_TIME_QUALITY_UNSYNCHRONIZED_TIME: return "unsynchronized_time";
711 case DNP3_TIME_QUALITY_INVALID_TIME: return "invalid_time";
712 default: return "unknown time_quality value";
713 }
714}
715
717
719typedef struct dnp3_timestamp_t
720{
724 uint64_t value;
728
737{
738 dnp3_timestamp_t _return_value = {
739 0,
741 };
742 return _return_value;
743}
744
753{
754 dnp3_timestamp_t _return_value = {
755 value,
757 };
758 return _return_value;
759}
760
769{
770 dnp3_timestamp_t _return_value = {
771 value,
773 };
774 return _return_value;
775}
776
777
780{
790
795{
796 switch (value)
797 {
798 case DNP3_DOUBLE_BIT_INTERMEDIATE: return "intermediate";
799 case DNP3_DOUBLE_BIT_DETERMINED_OFF: return "determined_off";
800 case DNP3_DOUBLE_BIT_DETERMINED_ON: return "determined_on";
801 case DNP3_DOUBLE_BIT_INDETERMINATE: return "indeterminate";
802 default: return "unknown double_bit value";
803 }
804}
805
807
810{
812 uint16_t index;
814 bool value;
820
827static dnp3_binary_input_t dnp3_binary_input_init(uint16_t index, bool value, dnp3_flags_t flags, dnp3_timestamp_t time)
828{
829 dnp3_binary_input_t _return_value = {
830 index,
831 value,
832 flags,
833 time
834 };
835 return _return_value;
836}
837
838
841
846
847
849
852{
854 uint16_t index;
862
870{
871 dnp3_double_bit_binary_input_t _return_value = {
872 index,
873 value,
874 flags,
875 time
876 };
877 return _return_value;
878}
879
880
883
888
889
891
894{
896 uint16_t index;
898 bool value;
904
912{
913 dnp3_binary_output_status_t _return_value = {
914 index,
915 value,
916 flags,
917 time
918 };
919 return _return_value;
920}
921
922
925
930
931
932typedef struct dnp3_counter_t dnp3_counter_t;
933
935typedef struct dnp3_counter_t
936{
938 uint16_t index;
940 uint32_t value;
946
953static dnp3_counter_t dnp3_counter_init(uint16_t index, uint32_t value, dnp3_flags_t flags, dnp3_timestamp_t time)
954{
955 dnp3_counter_t _return_value = {
956 index,
957 value,
958 flags,
959 time
960 };
961 return _return_value;
962}
963
964
967
972
973
975
978{
980 uint16_t index;
982 uint32_t value;
988
995static dnp3_frozen_counter_t dnp3_frozen_counter_init(uint16_t index, uint32_t value, dnp3_flags_t flags, dnp3_timestamp_t time)
996{
997 dnp3_frozen_counter_t _return_value = {
998 index,
999 value,
1000 flags,
1001 time
1002 };
1003 return _return_value;
1004}
1005
1006
1009
1014
1015
1017
1020{
1022 uint16_t index;
1024 double value;
1030
1037static dnp3_analog_input_t dnp3_analog_input_init(uint16_t index, double value, dnp3_flags_t flags, dnp3_timestamp_t time)
1038{
1039 dnp3_analog_input_t _return_value = {
1040 index,
1041 value,
1042 flags,
1043 time
1044 };
1045 return _return_value;
1046}
1047
1048
1051
1056
1057
1059
1062{
1064 uint16_t index;
1066 double value;
1072
1080{
1081 dnp3_frozen_analog_input_t _return_value = {
1082 index,
1083 value,
1084 flags,
1085 time
1086 };
1087 return _return_value;
1088}
1089
1090
1093
1098
1099
1101
1104{
1106 uint16_t index;
1108 double value;
1114
1122{
1123 dnp3_analog_output_status_t _return_value = {
1124 index,
1125 value,
1126 flags,
1127 time
1128 };
1129 return _return_value;
1130}
1131
1132
1135
1140
1141
1143
1150{
1152 uint16_t index;
1162
1170{
1171 dnp3_binary_output_command_event_t _return_value = {
1172 index,
1173 status,
1174 commanded_state,
1175 time
1176 };
1177 return _return_value;
1178}
1179
1180
1183
1188
1189
1192{
1202
1207{
1208 switch (value)
1209 {
1210 case DNP3_ANALOG_COMMAND_TYPE_I16: return "i16";
1211 case DNP3_ANALOG_COMMAND_TYPE_I32: return "i32";
1212 case DNP3_ANALOG_COMMAND_TYPE_F32: return "f32";
1213 case DNP3_ANALOG_COMMAND_TYPE_F64: return "f64";
1214 default: return "unknown analog_command_type value";
1215 }
1216}
1217
1219
1226{
1228 uint16_t index;
1240
1249{
1250 dnp3_analog_output_command_event_t _return_value = {
1251 index,
1252 status,
1253 commanded_value,
1254 command_type,
1255 time
1256 };
1257 return _return_value;
1258}
1259
1260
1263
1268
1269
1271
1276{
1278 uint16_t index;
1280 uint8_t value;
1282
1287static dnp3_unsigned_integer_t dnp3_unsigned_integer_init(uint16_t index, uint8_t value)
1288{
1289 dnp3_unsigned_integer_t _return_value = {
1290 index,
1291 value
1292 };
1293 return _return_value;
1294}
1295
1296
1299
1304
1305
1308
1313
1314
1316
1319{
1321 uint16_t index;
1325
1326
1329
1334
1335
1338
1342
1346
1351
1359
1360
1365
1372
1376
1382void dnp3_endpoint_list_add(dnp3_endpoint_list_t* instance, const char* endpoint);
1383
1384
1386
1389{
1400
1410{
1411 dnp3_connect_strategy_t _return_value = {
1412 1000,
1413 10000,
1414 1000
1415 };
1416 return _return_value;
1417}
1418
1419
1422{
1428
1433{
1434 switch (value)
1435 {
1436 case DNP3_MIN_TLS_VERSION_V12: return "v12";
1437 case DNP3_MIN_TLS_VERSION_V13: return "v13";
1438 default: return "unknown min_tls_version value";
1439 }
1440}
1441
1446{
1458
1463{
1464 switch (value)
1465 {
1466 case DNP3_CERTIFICATE_MODE_AUTHORITY_BASED: return "authority_based";
1467 case DNP3_CERTIFICATE_MODE_SELF_SIGNED: return "self_signed";
1468 default: return "unknown certificate_mode value";
1469 }
1470}
1471
1473
1476{
1480 const char* dns_name;
1482 const char* peer_cert_path;
1484 const char* local_cert_path;
1486 const char* private_key_path;
1492 const char* password;
1500
1514static dnp3_tls_client_config_t dnp3_tls_client_config_init(const char* dns_name, const char* peer_cert_path, const char* local_cert_path, const char* private_key_path, const char* password)
1515{
1516 dnp3_tls_client_config_t _return_value = {
1517 dns_name,
1518 peer_cert_path,
1519 local_cert_path,
1520 private_key_path,
1521 password,
1524 false
1525 };
1526 return _return_value;
1527}
1528
1529
1531#define DNP3_ATTRIBUTE_VARIATIONS_CONFIG_ID 0xC4
1533#define DNP3_ATTRIBUTE_VARIATIONS_CONFIG_VERSION 0xC5
1535#define DNP3_ATTRIBUTE_VARIATIONS_CONFIG_BUILD_DATE 0xC6
1537#define DNP3_ATTRIBUTE_VARIATIONS_CONFIG_LAST_CHANGE_DATE 0xC7
1539#define DNP3_ATTRIBUTE_VARIATIONS_CONFIG_DIGEST 0xC8
1541#define DNP3_ATTRIBUTE_VARIATIONS_CONFIG_DIGEST_ALGORITHM 0xC9
1543#define DNP3_ATTRIBUTE_VARIATIONS_MASTER_RESOURCE_ID 0xCA
1545#define DNP3_ATTRIBUTE_VARIATIONS_DEVICE_LOCATION_ALTITUDE 0xCB
1547#define DNP3_ATTRIBUTE_VARIATIONS_DEVICE_LOCATION_LONGITUDE 0xCC
1549#define DNP3_ATTRIBUTE_VARIATIONS_DEVICE_LOCATION_LATITUDE 0xCD
1551#define DNP3_ATTRIBUTE_VARIATIONS_USER_ASSIGNED_SECONDARY_OPERATOR_NAME 0xCE
1553#define DNP3_ATTRIBUTE_VARIATIONS_USER_ASSIGNED_PRIMARY_OPERATOR_NAME 0xCF
1555#define DNP3_ATTRIBUTE_VARIATIONS_USER_ASSIGNED_SYSTEM_NAME 0xD0
1557#define DNP3_ATTRIBUTE_VARIATIONS_SECURE_AUTH_VERSION 0xD1
1559#define DNP3_ATTRIBUTE_VARIATIONS_NUM_SECURITY_STATS_PER_ASSOC 0xD2
1561#define DNP3_ATTRIBUTE_VARIATIONS_USER_SPECIFIC_ATTRIBUTES 0xD3
1563#define DNP3_ATTRIBUTE_VARIATIONS_NUM_MASTER_DEFINED_DATA_SET_PROTO 0xD4
1565#define DNP3_ATTRIBUTE_VARIATIONS_NUM_OUTSTATION_DEFINED_DATA_SET_PROTO 0xD5
1567#define DNP3_ATTRIBUTE_VARIATIONS_NUM_MASTER_DEFINED_DATA_SETS 0xD6
1569#define DNP3_ATTRIBUTE_VARIATIONS_NUM_OUTSTATION_DEFINED_DATA_SETS 0xD7
1571#define DNP3_ATTRIBUTE_VARIATIONS_MAX_BINARY_OUTPUT_PER_REQUEST 0xD8
1573#define DNP3_ATTRIBUTE_VARIATIONS_LOCAL_TIMING_ACCURACY 0xD9
1575#define DNP3_ATTRIBUTE_VARIATIONS_DURATION_OF_TIME_ACCURACY 0xDA
1577#define DNP3_ATTRIBUTE_VARIATIONS_SUPPORTS_ANALOG_OUTPUT_EVENTS 0xDB
1579#define DNP3_ATTRIBUTE_VARIATIONS_MAX_ANALOG_OUTPUT_INDEX 0xDC
1581#define DNP3_ATTRIBUTE_VARIATIONS_NUM_ANALOG_OUTPUTS 0xDD
1583#define DNP3_ATTRIBUTE_VARIATIONS_SUPPORTS_BINARY_OUTPUT_EVENTS 0xDE
1585#define DNP3_ATTRIBUTE_VARIATIONS_MAX_BINARY_OUTPUT_INDEX 0xDF
1587#define DNP3_ATTRIBUTE_VARIATIONS_NUM_BINARY_OUTPUTS 0xE0
1589#define DNP3_ATTRIBUTE_VARIATIONS_SUPPORTS_FROZEN_COUNTER_EVENTS 0xE1
1591#define DNP3_ATTRIBUTE_VARIATIONS_SUPPORTS_FROZEN_COUNTERS 0xE2
1593#define DNP3_ATTRIBUTE_VARIATIONS_SUPPORTS_COUNTER_EVENTS 0xE3
1595#define DNP3_ATTRIBUTE_VARIATIONS_MAX_COUNTER_INDEX 0xE4
1597#define DNP3_ATTRIBUTE_VARIATIONS_NUM_COUNTER 0xE5
1599#define DNP3_ATTRIBUTE_VARIATIONS_SUPPORTS_FROZEN_ANALOG_INPUTS 0xE6
1601#define DNP3_ATTRIBUTE_VARIATIONS_SUPPORTS_ANALOG_INPUT_EVENTS 0xE7
1603#define DNP3_ATTRIBUTE_VARIATIONS_MAX_ANALOG_INPUT_INDEX 0xE8
1605#define DNP3_ATTRIBUTE_VARIATIONS_NUM_ANALOG_INPUT 0xE9
1607#define DNP3_ATTRIBUTE_VARIATIONS_SUPPORTS_DOUBLE_BIT_BINARY_INPUT_EVENTS 0xEA
1609#define DNP3_ATTRIBUTE_VARIATIONS_MAX_DOUBLE_BIT_BINARY_INPUT_INDEX 0xEB
1611#define DNP3_ATTRIBUTE_VARIATIONS_NUM_DOUBLE_BIT_BINARY_INPUT 0xEC
1613#define DNP3_ATTRIBUTE_VARIATIONS_SUPPORTS_BINARY_INPUT_EVENTS 0xED
1615#define DNP3_ATTRIBUTE_VARIATIONS_MAX_BINARY_INPUT_INDEX 0xEE
1617#define DNP3_ATTRIBUTE_VARIATIONS_NUM_BINARY_INPUT 0xEF
1619#define DNP3_ATTRIBUTE_VARIATIONS_MAX_TX_FRAGMENT_SIZE 0xF0
1621#define DNP3_ATTRIBUTE_VARIATIONS_MAX_RX_FRAGMENT_SIZE 0xF1
1623#define DNP3_ATTRIBUTE_VARIATIONS_DEVICE_MANUFACTURER_SOFTWARE_VERSION 0xF2
1625#define DNP3_ATTRIBUTE_VARIATIONS_DEVICE_MANUFACTURER_HARDWARE_VERSION 0xF3
1627#define DNP3_ATTRIBUTE_VARIATIONS_USER_ASSIGNED_OWNER_NAME 0xF4
1629#define DNP3_ATTRIBUTE_VARIATIONS_USER_ASSIGNED_LOCATION 0xF5
1631#define DNP3_ATTRIBUTE_VARIATIONS_USER_ASSIGNED_ID 0xF6
1633#define DNP3_ATTRIBUTE_VARIATIONS_USER_ASSIGNED_DEVICE_NAME 0xF7
1635#define DNP3_ATTRIBUTE_VARIATIONS_DEVICE_SERIAL_NUMBER 0xF8
1637#define DNP3_ATTRIBUTE_VARIATIONS_DEVICE_SUBSET_AND_CONFORMANCE 0xF9
1639#define DNP3_ATTRIBUTE_VARIATIONS_PRODUCT_NAME_AND_MODEL 0xFA
1641#define DNP3_ATTRIBUTE_VARIATIONS_DEVICE_MANUFACTURERS_NAME 0xFC
1643#define DNP3_ATTRIBUTE_VARIATIONS_ALL_ATTRIBUTES_REQUEST 0xFE
1645#define DNP3_ATTRIBUTE_VARIATIONS_LIST_OF_VARIATIONS 0xFF
1646
1649{
1655
1660{
1661 switch (value)
1662 {
1663 case DNP3_VARIATION_LIST_ATTR_UNKNOWN: return "unknown";
1664 case DNP3_VARIATION_LIST_ATTR_LIST_OF_VARIATIONS: return "list_of_variations";
1665 default: return "unknown variation_list_attr value";
1666 }
1667}
1668
1671{
1711
1716{
1717 switch (value)
1718 {
1719 case DNP3_STRING_ATTR_UNKNOWN: return "unknown";
1720 case DNP3_STRING_ATTR_CONFIG_ID: return "config_id";
1721 case DNP3_STRING_ATTR_CONFIG_VERSION: return "config_version";
1722 case DNP3_STRING_ATTR_CONFIG_DIGEST_ALGORITHM: return "config_digest_algorithm";
1723 case DNP3_STRING_ATTR_MASTER_RESOURCE_ID: return "master_resource_id";
1724 case DNP3_STRING_ATTR_USER_ASSIGNED_SECONDARY_OPERATOR_NAME: return "user_assigned_secondary_operator_name";
1725 case DNP3_STRING_ATTR_USER_ASSIGNED_PRIMARY_OPERATOR_NAME: return "user_assigned_primary_operator_name";
1726 case DNP3_STRING_ATTR_USER_ASSIGNED_SYSTEM_NAME: return "user_assigned_system_name";
1727 case DNP3_STRING_ATTR_USER_SPECIFIC_ATTRIBUTES: return "user_specific_attributes";
1728 case DNP3_STRING_ATTR_DEVICE_MANUFACTURER_SOFTWARE_VERSION: return "device_manufacturer_software_version";
1729 case DNP3_STRING_ATTR_DEVICE_MANUFACTURER_HARDWARE_VERSION: return "device_manufacturer_hardware_version";
1730 case DNP3_STRING_ATTR_USER_ASSIGNED_OWNER_NAME: return "user_assigned_owner_name";
1731 case DNP3_STRING_ATTR_USER_ASSIGNED_LOCATION: return "user_assigned_location";
1732 case DNP3_STRING_ATTR_USER_ASSIGNED_ID: return "user_assigned_id";
1733 case DNP3_STRING_ATTR_USER_ASSIGNED_DEVICE_NAME: return "user_assigned_device_name";
1734 case DNP3_STRING_ATTR_DEVICE_SERIAL_NUMBER: return "device_serial_number";
1735 case DNP3_STRING_ATTR_DEVICE_SUBSET_AND_CONFORMANCE: return "device_subset_and_conformance";
1736 case DNP3_STRING_ATTR_PRODUCT_NAME_AND_MODEL: return "product_name_and_model";
1737 case DNP3_STRING_ATTR_DEVICE_MANUFACTURERS_NAME: return "device_manufacturers_name";
1738 default: return "unknown string_attr value";
1739 }
1740}
1741
1744{
1794
1799{
1800 switch (value)
1801 {
1802 case DNP3_UINT_ATTR_UNKNOWN: return "unknown";
1803 case DNP3_UINT_ATTR_SECURE_AUTH_VERSION: return "secure_auth_version";
1804 case DNP3_UINT_ATTR_NUM_SECURITY_STATS_PER_ASSOC: return "num_security_stats_per_assoc";
1805 case DNP3_UINT_ATTR_NUM_MASTER_DEFINED_DATA_SET_PROTO: return "num_master_defined_data_set_proto";
1806 case DNP3_UINT_ATTR_NUM_OUTSTATION_DEFINED_DATA_SET_PROTO: return "num_outstation_defined_data_set_proto";
1807 case DNP3_UINT_ATTR_NUM_MASTER_DEFINED_DATA_SETS: return "num_master_defined_data_sets";
1808 case DNP3_UINT_ATTR_NUM_OUTSTATION_DEFINED_DATA_SETS: return "num_outstation_defined_data_sets";
1809 case DNP3_UINT_ATTR_MAX_BINARY_OUTPUT_PER_REQUEST: return "max_binary_output_per_request";
1810 case DNP3_UINT_ATTR_LOCAL_TIMING_ACCURACY: return "local_timing_accuracy";
1811 case DNP3_UINT_ATTR_DURATION_OF_TIME_ACCURACY: return "duration_of_time_accuracy";
1812 case DNP3_UINT_ATTR_MAX_ANALOG_OUTPUT_INDEX: return "max_analog_output_index";
1813 case DNP3_UINT_ATTR_NUM_ANALOG_OUTPUTS: return "num_analog_outputs";
1814 case DNP3_UINT_ATTR_MAX_BINARY_OUTPUT_INDEX: return "max_binary_output_index";
1815 case DNP3_UINT_ATTR_NUM_BINARY_OUTPUTS: return "num_binary_outputs";
1816 case DNP3_UINT_ATTR_MAX_COUNTER_INDEX: return "max_counter_index";
1817 case DNP3_UINT_ATTR_NUM_COUNTER: return "num_counter";
1818 case DNP3_UINT_ATTR_MAX_ANALOG_INPUT_INDEX: return "max_analog_input_index";
1819 case DNP3_UINT_ATTR_NUM_ANALOG_INPUT: return "num_analog_input";
1820 case DNP3_UINT_ATTR_MAX_DOUBLE_BIT_BINARY_INPUT_INDEX: return "max_double_bit_binary_input_index";
1821 case DNP3_UINT_ATTR_NUM_DOUBLE_BIT_BINARY_INPUT: return "num_double_bit_binary_input";
1822 case DNP3_UINT_ATTR_MAX_BINARY_INPUT_INDEX: return "max_binary_input_index";
1823 case DNP3_UINT_ATTR_NUM_BINARY_INPUT: return "num_binary_input";
1824 case DNP3_UINT_ATTR_MAX_TX_FRAGMENT_SIZE: return "max_tx_fragment_size";
1825 case DNP3_UINT_ATTR_MAX_RX_FRAGMENT_SIZE: return "max_rx_fragment_size";
1826 default: return "unknown uint_attr value";
1827 }
1828}
1829
1834{
1838
1843{
1844 switch (value)
1845 {
1846 case DNP3_INT_ATTR_UNKNOWN: return "unknown";
1847 default: return "unknown int_attr value";
1848 }
1849}
1850
1855{
1877
1882{
1883 switch (value)
1884 {
1885 case DNP3_BOOL_ATTR_UNKNOWN: return "unknown";
1886 case DNP3_BOOL_ATTR_SUPPORTS_ANALOG_OUTPUT_EVENTS: return "supports_analog_output_events";
1887 case DNP3_BOOL_ATTR_SUPPORTS_BINARY_OUTPUT_EVENTS: return "supports_binary_output_events";
1888 case DNP3_BOOL_ATTR_SUPPORTS_FROZEN_COUNTER_EVENTS: return "supports_frozen_counter_events";
1889 case DNP3_BOOL_ATTR_SUPPORTS_FROZEN_COUNTERS: return "supports_frozen_counters";
1890 case DNP3_BOOL_ATTR_SUPPORTS_COUNTER_EVENTS: return "supports_counter_events";
1891 case DNP3_BOOL_ATTR_SUPPORTS_FROZEN_ANALOG_INPUTS: return "supports_frozen_analog_inputs";
1892 case DNP3_BOOL_ATTR_SUPPORTS_ANALOG_INPUT_EVENTS: return "supports_analog_input_events";
1893 case DNP3_BOOL_ATTR_SUPPORTS_DOUBLE_BIT_BINARY_INPUT_EVENTS: return "supports_double_bit_binary_input_events";
1894 case DNP3_BOOL_ATTR_SUPPORTS_BINARY_INPUT_EVENTS: return "supports_binary_input_events";
1895 default: return "unknown bool_attr value";
1896 }
1897}
1898
1901{
1909
1914{
1915 switch (value)
1916 {
1917 case DNP3_TIME_ATTR_UNKNOWN: return "unknown";
1918 case DNP3_TIME_ATTR_CONFIG_BUILD_DATE: return "config_build_date";
1919 case DNP3_TIME_ATTR_CONFIG_LAST_CHANGE_DATE: return "config_last_change_date";
1920 default: return "unknown time_attr value";
1921 }
1922}
1923
1926{
1932
1937{
1938 switch (value)
1939 {
1940 case DNP3_OCTET_STRING_ATTR_UNKNOWN: return "unknown";
1941 case DNP3_OCTET_STRING_ATTR_CONFIG_DIGEST: return "config_digest";
1942 default: return "unknown octet_string_attr value";
1943 }
1944}
1945
1948{
1952
1957{
1958 switch (value)
1959 {
1960 case DNP3_BIT_STRING_ATTR_UNKNOWN: return "unknown";
1961 default: return "unknown bit_string_attr value";
1962 }
1963}
1964
1967{
1977
1982{
1983 switch (value)
1984 {
1985 case DNP3_FLOAT_ATTR_UNKNOWN: return "unknown";
1986 case DNP3_FLOAT_ATTR_DEVICE_LOCATION_ALTITUDE: return "device_location_altitude";
1987 case DNP3_FLOAT_ATTR_DEVICE_LOCATION_LONGITUDE: return "device_location_longitude";
1988 case DNP3_FLOAT_ATTR_DEVICE_LOCATION_LATITUDE: return "device_location_latitude";
1989 default: return "unknown float_attr value";
1990 }
1991}
1992
1993typedef struct dnp3_attr_prop_t dnp3_attr_prop_t;
1994
1998typedef struct dnp3_attr_prop_t
1999{
2003
2004
2005typedef struct dnp3_attr_item_t dnp3_attr_item_t;
2006
2008typedef struct dnp3_attr_item_t
2009{
2011 uint8_t variation;
2015
2016
2019
2024
2025
2027typedef enum dnp3_nothing_t
2028{
2032
2037{
2038 switch (value)
2039 {
2040 case DNP3_NOTHING_NOTHING: return "nothing";
2041 default: return "unknown nothing value";
2042 }
2043}
2044
2047
2052
2056
2061
2062
2065{
2075
2080{
2081 switch (value)
2082 {
2083 case DNP3_PORT_STATE_DISABLED: return "disabled";
2084 case DNP3_PORT_STATE_WAIT: return "wait";
2085 case DNP3_PORT_STATE_OPEN: return "open";
2086 case DNP3_PORT_STATE_SHUTDOWN: return "shutdown";
2087 default: return "unknown port_state value";
2088 }
2089}
2090
2093{
2094
2101 void (*on_destroy)(void* arg);
2103 void* ctx;
2105
2110{
2124
2129{
2130 switch (value)
2131 {
2132 case DNP3_CLIENT_STATE_DISABLED: return "disabled";
2133 case DNP3_CLIENT_STATE_CONNECTING: return "connecting";
2134 case DNP3_CLIENT_STATE_CONNECTED: return "connected";
2135 case DNP3_CLIENT_STATE_WAIT_AFTER_FAILED_CONNECT: return "wait_after_failed_connect";
2136 case DNP3_CLIENT_STATE_WAIT_AFTER_DISCONNECT: return "wait_after_disconnect";
2137 case DNP3_CLIENT_STATE_SHUTDOWN: return "shutdown";
2138 default: return "unknown client_state value";
2139 }
2140}
2141
2144{
2145
2152 void (*on_destroy)(void* arg);
2154 void* ctx;
2156
2159{
2431
2436{
2437 switch (value)
2438 {
2439 case DNP3_VARIATION_GROUP0: return "group0";
2440 case DNP3_VARIATION_GROUP0_VAR254: return "group0_var254";
2441 case DNP3_VARIATION_GROUP1_VAR0: return "group1_var0";
2442 case DNP3_VARIATION_GROUP1_VAR1: return "group1_var1";
2443 case DNP3_VARIATION_GROUP1_VAR2: return "group1_var2";
2444 case DNP3_VARIATION_GROUP2_VAR0: return "group2_var0";
2445 case DNP3_VARIATION_GROUP2_VAR1: return "group2_var1";
2446 case DNP3_VARIATION_GROUP2_VAR2: return "group2_var2";
2447 case DNP3_VARIATION_GROUP2_VAR3: return "group2_var3";
2448 case DNP3_VARIATION_GROUP3_VAR0: return "group3_var0";
2449 case DNP3_VARIATION_GROUP3_VAR1: return "group3_var1";
2450 case DNP3_VARIATION_GROUP3_VAR2: return "group3_var2";
2451 case DNP3_VARIATION_GROUP4_VAR0: return "group4_var0";
2452 case DNP3_VARIATION_GROUP4_VAR1: return "group4_var1";
2453 case DNP3_VARIATION_GROUP4_VAR2: return "group4_var2";
2454 case DNP3_VARIATION_GROUP4_VAR3: return "group4_var3";
2455 case DNP3_VARIATION_GROUP10_VAR0: return "group10_var0";
2456 case DNP3_VARIATION_GROUP10_VAR1: return "group10_var1";
2457 case DNP3_VARIATION_GROUP10_VAR2: return "group10_var2";
2458 case DNP3_VARIATION_GROUP11_VAR0: return "group11_var0";
2459 case DNP3_VARIATION_GROUP11_VAR1: return "group11_var1";
2460 case DNP3_VARIATION_GROUP11_VAR2: return "group11_var2";
2461 case DNP3_VARIATION_GROUP12_VAR1: return "group12_var1";
2462 case DNP3_VARIATION_GROUP13_VAR1: return "group13_var1";
2463 case DNP3_VARIATION_GROUP13_VAR2: return "group13_var2";
2464 case DNP3_VARIATION_GROUP20_VAR0: return "group20_var0";
2465 case DNP3_VARIATION_GROUP20_VAR1: return "group20_var1";
2466 case DNP3_VARIATION_GROUP20_VAR2: return "group20_var2";
2467 case DNP3_VARIATION_GROUP20_VAR5: return "group20_var5";
2468 case DNP3_VARIATION_GROUP20_VAR6: return "group20_var6";
2469 case DNP3_VARIATION_GROUP21_VAR0: return "group21_var0";
2470 case DNP3_VARIATION_GROUP21_VAR1: return "group21_var1";
2471 case DNP3_VARIATION_GROUP21_VAR2: return "group21_var2";
2472 case DNP3_VARIATION_GROUP21_VAR5: return "group21_var5";
2473 case DNP3_VARIATION_GROUP21_VAR6: return "group21_var6";
2474 case DNP3_VARIATION_GROUP21_VAR9: return "group21_var9";
2475 case DNP3_VARIATION_GROUP21_VAR10: return "group21_var10";
2476 case DNP3_VARIATION_GROUP22_VAR0: return "group22_var0";
2477 case DNP3_VARIATION_GROUP22_VAR1: return "group22_var1";
2478 case DNP3_VARIATION_GROUP22_VAR2: return "group22_var2";
2479 case DNP3_VARIATION_GROUP22_VAR5: return "group22_var5";
2480 case DNP3_VARIATION_GROUP22_VAR6: return "group22_var6";
2481 case DNP3_VARIATION_GROUP23_VAR0: return "group23_var0";
2482 case DNP3_VARIATION_GROUP23_VAR1: return "group23_var1";
2483 case DNP3_VARIATION_GROUP23_VAR2: return "group23_var2";
2484 case DNP3_VARIATION_GROUP23_VAR5: return "group23_var5";
2485 case DNP3_VARIATION_GROUP23_VAR6: return "group23_var6";
2486 case DNP3_VARIATION_GROUP30_VAR0: return "group30_var0";
2487 case DNP3_VARIATION_GROUP30_VAR1: return "group30_var1";
2488 case DNP3_VARIATION_GROUP30_VAR2: return "group30_var2";
2489 case DNP3_VARIATION_GROUP30_VAR3: return "group30_var3";
2490 case DNP3_VARIATION_GROUP30_VAR4: return "group30_var4";
2491 case DNP3_VARIATION_GROUP30_VAR5: return "group30_var5";
2492 case DNP3_VARIATION_GROUP30_VAR6: return "group30_var6";
2493 case DNP3_VARIATION_GROUP31_VAR0: return "group31_var0";
2494 case DNP3_VARIATION_GROUP31_VAR1: return "group31_var1";
2495 case DNP3_VARIATION_GROUP31_VAR2: return "group31_var2";
2496 case DNP3_VARIATION_GROUP31_VAR3: return "group31_var3";
2497 case DNP3_VARIATION_GROUP31_VAR4: return "group31_var4";
2498 case DNP3_VARIATION_GROUP31_VAR5: return "group31_var5";
2499 case DNP3_VARIATION_GROUP31_VAR6: return "group31_var6";
2500 case DNP3_VARIATION_GROUP31_VAR7: return "group31_var7";
2501 case DNP3_VARIATION_GROUP31_VAR8: return "group31_var8";
2502 case DNP3_VARIATION_GROUP32_VAR0: return "group32_var0";
2503 case DNP3_VARIATION_GROUP32_VAR1: return "group32_var1";
2504 case DNP3_VARIATION_GROUP32_VAR2: return "group32_var2";
2505 case DNP3_VARIATION_GROUP32_VAR3: return "group32_var3";
2506 case DNP3_VARIATION_GROUP32_VAR4: return "group32_var4";
2507 case DNP3_VARIATION_GROUP32_VAR5: return "group32_var5";
2508 case DNP3_VARIATION_GROUP32_VAR6: return "group32_var6";
2509 case DNP3_VARIATION_GROUP32_VAR7: return "group32_var7";
2510 case DNP3_VARIATION_GROUP32_VAR8: return "group32_var8";
2511 case DNP3_VARIATION_GROUP33_VAR0: return "group33_var0";
2512 case DNP3_VARIATION_GROUP33_VAR1: return "group33_var1";
2513 case DNP3_VARIATION_GROUP33_VAR2: return "group33_var2";
2514 case DNP3_VARIATION_GROUP33_VAR3: return "group33_var3";
2515 case DNP3_VARIATION_GROUP33_VAR4: return "group33_var4";
2516 case DNP3_VARIATION_GROUP33_VAR5: return "group33_var5";
2517 case DNP3_VARIATION_GROUP33_VAR6: return "group33_var6";
2518 case DNP3_VARIATION_GROUP33_VAR7: return "group33_var7";
2519 case DNP3_VARIATION_GROUP33_VAR8: return "group33_var8";
2520 case DNP3_VARIATION_GROUP34_VAR0: return "group34_var0";
2521 case DNP3_VARIATION_GROUP34_VAR1: return "group34_var1";
2522 case DNP3_VARIATION_GROUP34_VAR2: return "group34_var2";
2523 case DNP3_VARIATION_GROUP34_VAR3: return "group34_var3";
2524 case DNP3_VARIATION_GROUP40_VAR0: return "group40_var0";
2525 case DNP3_VARIATION_GROUP40_VAR1: return "group40_var1";
2526 case DNP3_VARIATION_GROUP40_VAR2: return "group40_var2";
2527 case DNP3_VARIATION_GROUP40_VAR3: return "group40_var3";
2528 case DNP3_VARIATION_GROUP40_VAR4: return "group40_var4";
2529 case DNP3_VARIATION_GROUP41_VAR1: return "group41_var1";
2530 case DNP3_VARIATION_GROUP41_VAR2: return "group41_var2";
2531 case DNP3_VARIATION_GROUP41_VAR3: return "group41_var3";
2532 case DNP3_VARIATION_GROUP41_VAR4: return "group41_var4";
2533 case DNP3_VARIATION_GROUP42_VAR0: return "group42_var0";
2534 case DNP3_VARIATION_GROUP42_VAR1: return "group42_var1";
2535 case DNP3_VARIATION_GROUP42_VAR2: return "group42_var2";
2536 case DNP3_VARIATION_GROUP42_VAR3: return "group42_var3";
2537 case DNP3_VARIATION_GROUP42_VAR4: return "group42_var4";
2538 case DNP3_VARIATION_GROUP42_VAR5: return "group42_var5";
2539 case DNP3_VARIATION_GROUP42_VAR6: return "group42_var6";
2540 case DNP3_VARIATION_GROUP42_VAR7: return "group42_var7";
2541 case DNP3_VARIATION_GROUP42_VAR8: return "group42_var8";
2542 case DNP3_VARIATION_GROUP43_VAR1: return "group43_var1";
2543 case DNP3_VARIATION_GROUP43_VAR2: return "group43_var2";
2544 case DNP3_VARIATION_GROUP43_VAR3: return "group43_var3";
2545 case DNP3_VARIATION_GROUP43_VAR4: return "group43_var4";
2546 case DNP3_VARIATION_GROUP43_VAR5: return "group43_var5";
2547 case DNP3_VARIATION_GROUP43_VAR6: return "group43_var6";
2548 case DNP3_VARIATION_GROUP43_VAR7: return "group43_var7";
2549 case DNP3_VARIATION_GROUP43_VAR8: return "group43_var8";
2550 case DNP3_VARIATION_GROUP50_VAR1: return "group50_var1";
2551 case DNP3_VARIATION_GROUP50_VAR2: return "group50_var2";
2552 case DNP3_VARIATION_GROUP50_VAR3: return "group50_var3";
2553 case DNP3_VARIATION_GROUP50_VAR4: return "group50_var4";
2554 case DNP3_VARIATION_GROUP51_VAR1: return "group51_var1";
2555 case DNP3_VARIATION_GROUP51_VAR2: return "group51_var2";
2556 case DNP3_VARIATION_GROUP52_VAR1: return "group52_var1";
2557 case DNP3_VARIATION_GROUP52_VAR2: return "group52_var2";
2558 case DNP3_VARIATION_GROUP60_VAR1: return "group60_var1";
2559 case DNP3_VARIATION_GROUP60_VAR2: return "group60_var2";
2560 case DNP3_VARIATION_GROUP60_VAR3: return "group60_var3";
2561 case DNP3_VARIATION_GROUP60_VAR4: return "group60_var4";
2562 case DNP3_VARIATION_GROUP70_VAR2: return "group70_var2";
2563 case DNP3_VARIATION_GROUP70_VAR3: return "group70_var3";
2564 case DNP3_VARIATION_GROUP70_VAR4: return "group70_var4";
2565 case DNP3_VARIATION_GROUP70_VAR5: return "group70_var5";
2566 case DNP3_VARIATION_GROUP70_VAR6: return "group70_var6";
2567 case DNP3_VARIATION_GROUP70_VAR7: return "group70_var7";
2568 case DNP3_VARIATION_GROUP70_VAR8: return "group70_var8";
2569 case DNP3_VARIATION_GROUP80_VAR1: return "group80_var1";
2570 case DNP3_VARIATION_GROUP102_VAR0: return "group102_var0";
2571 case DNP3_VARIATION_GROUP102_VAR1: return "group102_var1";
2572 case DNP3_VARIATION_GROUP110: return "group110";
2573 case DNP3_VARIATION_GROUP111: return "group111";
2574 default: return "unknown variation value";
2575 }
2576}
2577
2579
2584{
2587 uint64_t min_delay;
2590 uint64_t max_delay;
2592
2601{
2602 dnp3_retry_strategy_t _return_value = {
2603 1000,
2604 10000
2605 };
2606 return _return_value;
2607}
2608
2609
2612{
2622
2627{
2628 switch (value)
2629 {
2630 case DNP3_DATA_BITS_FIVE: return "five";
2631 case DNP3_DATA_BITS_SIX: return "six";
2632 case DNP3_DATA_BITS_SEVEN: return "seven";
2633 case DNP3_DATA_BITS_EIGHT: return "eight";
2634 default: return "unknown data_bits value";
2635 }
2636}
2637
2640{
2648
2653{
2654 switch (value)
2655 {
2656 case DNP3_FLOW_CONTROL_NONE: return "none";
2657 case DNP3_FLOW_CONTROL_SOFTWARE: return "software";
2658 case DNP3_FLOW_CONTROL_HARDWARE: return "hardware";
2659 default: return "unknown flow_control value";
2660 }
2661}
2662
2664typedef enum dnp3_parity_t
2665{
2673
2677static const char* dnp3_parity_to_string(dnp3_parity_t value)
2678{
2679 switch (value)
2680 {
2681 case DNP3_PARITY_NONE: return "none";
2682 case DNP3_PARITY_ODD: return "odd";
2683 case DNP3_PARITY_EVEN: return "even";
2684 default: return "unknown parity value";
2685 }
2686}
2687
2690{
2696
2701{
2702 switch (value)
2703 {
2704 case DNP3_STOP_BITS_ONE: return "one";
2705 case DNP3_STOP_BITS_TWO: return "two";
2706 default: return "unknown stop_bits value";
2707 }
2708}
2709
2711
2714{
2716 uint32_t baud_rate;
2726
2738{
2739 dnp3_serial_settings_t _return_value = {
2740 9600,
2745 };
2746 return _return_value;
2747}
2748
2749
2752{
2758
2763{
2764 switch (value)
2765 {
2766 case DNP3_LINK_ERROR_MODE_DISCARD: return "discard";
2767 case DNP3_LINK_ERROR_MODE_CLOSE: return "close";
2768 default: return "unknown link_error_mode value";
2769 }
2770}
2771
2774{
2842
2847{
2848 switch (value)
2849 {
2850 case DNP3_FUNCTION_CODE_CONFIRM: return "confirm";
2851 case DNP3_FUNCTION_CODE_READ: return "read";
2852 case DNP3_FUNCTION_CODE_WRITE: return "write";
2853 case DNP3_FUNCTION_CODE_SELECT: return "select";
2854 case DNP3_FUNCTION_CODE_OPERATE: return "operate";
2855 case DNP3_FUNCTION_CODE_DIRECT_OPERATE: return "direct_operate";
2856 case DNP3_FUNCTION_CODE_DIRECT_OPERATE_NO_RESPONSE: return "direct_operate_no_response";
2857 case DNP3_FUNCTION_CODE_IMMEDIATE_FREEZE: return "immediate_freeze";
2858 case DNP3_FUNCTION_CODE_IMMEDIATE_FREEZE_NO_RESPONSE: return "immediate_freeze_no_response";
2859 case DNP3_FUNCTION_CODE_FREEZE_CLEAR: return "freeze_clear";
2860 case DNP3_FUNCTION_CODE_FREEZE_CLEAR_NO_RESPONSE: return "freeze_clear_no_response";
2861 case DNP3_FUNCTION_CODE_FREEZE_AT_TIME: return "freeze_at_time";
2862 case DNP3_FUNCTION_CODE_FREEZE_AT_TIME_NO_RESPONSE: return "freeze_at_time_no_response";
2863 case DNP3_FUNCTION_CODE_COLD_RESTART: return "cold_restart";
2864 case DNP3_FUNCTION_CODE_WARM_RESTART: return "warm_restart";
2865 case DNP3_FUNCTION_CODE_INITIALIZE_DATA: return "initialize_data";
2866 case DNP3_FUNCTION_CODE_INITIALIZE_APPLICATION: return "initialize_application";
2867 case DNP3_FUNCTION_CODE_START_APPLICATION: return "start_application";
2868 case DNP3_FUNCTION_CODE_STOP_APPLICATION: return "stop_application";
2869 case DNP3_FUNCTION_CODE_SAVE_CONFIGURATION: return "save_configuration";
2870 case DNP3_FUNCTION_CODE_ENABLE_UNSOLICITED: return "enable_unsolicited";
2871 case DNP3_FUNCTION_CODE_DISABLE_UNSOLICITED: return "disable_unsolicited";
2872 case DNP3_FUNCTION_CODE_ASSIGN_CLASS: return "assign_class";
2873 case DNP3_FUNCTION_CODE_DELAY_MEASURE: return "delay_measure";
2874 case DNP3_FUNCTION_CODE_RECORD_CURRENT_TIME: return "record_current_time";
2875 case DNP3_FUNCTION_CODE_OPEN_FILE: return "open_file";
2876 case DNP3_FUNCTION_CODE_CLOSE_FILE: return "close_file";
2877 case DNP3_FUNCTION_CODE_DELETE_FILE: return "delete_file";
2878 case DNP3_FUNCTION_CODE_GET_FILE_INFO: return "get_file_info";
2879 case DNP3_FUNCTION_CODE_AUTHENTICATE_FILE: return "authenticate_file";
2880 case DNP3_FUNCTION_CODE_ABORT_FILE: return "abort_file";
2881 case DNP3_FUNCTION_CODE_RESPONSE: return "response";
2882 case DNP3_FUNCTION_CODE_UNSOLICITED_RESPONSE: return "unsolicited_response";
2883 default: return "unknown function_code value";
2884 }
2885}
2886
2889{
2897
2902{
2903 switch (value)
2904 {
2905 case DNP3_FILE_TYPE_DIRECTORY: return "directory";
2906 case DNP3_FILE_TYPE_SIMPLE: return "simple";
2907 case DNP3_FILE_TYPE_OTHER: return "other";
2908 default: return "unknown file_type value";
2909 }
2910}
2911
2913
2916{
2920 bool write;
2922 bool read;
2924
2930static dnp3_permission_set_t dnp3_permission_set_init(bool execute, bool write, bool read)
2931{
2932 dnp3_permission_set_t _return_value = {
2933 execute,
2934 write,
2935 read
2936 };
2937 return _return_value;
2938}
2939
2949{
2950 dnp3_permission_set_t _return_value = {
2951 false,
2952 false,
2953 false
2954 };
2955 return _return_value;
2956}
2957
2958
2960
2963{
2971
2978{
2979 dnp3_permissions_t _return_value = {
2980 world,
2981 group,
2982 owner
2983 };
2984 return _return_value;
2985}
2986
2996{
2997 dnp3_permissions_t _return_value = {
3001 };
3002 return _return_value;
3003}
3004
3005
3006typedef struct dnp3_open_file_t dnp3_open_file_t;
3007
3009typedef struct dnp3_open_file_t
3010{
3014 uint32_t file_handle;
3016 uint32_t file_size;
3022
3023
3026{
3060
3065{
3066 switch (value)
3067 {
3068 case DNP3_FILE_ERROR_OK: return "ok";
3069 case DNP3_FILE_ERROR_BAD_STATUS: return "bad_status";
3070 case DNP3_FILE_ERROR_NO_PERMISSION: return "no_permission";
3071 case DNP3_FILE_ERROR_BAD_BLOCK_NUM: return "bad_block_num";
3072 case DNP3_FILE_ERROR_ABORT_BY_USER: return "abort_by_user";
3073 case DNP3_FILE_ERROR_MAX_LENGTH_EXCEEDED: return "max_length_exceeded";
3074 case DNP3_FILE_ERROR_WRONG_HANDLE: return "wrong_handle";
3075 case DNP3_FILE_ERROR_TOO_MANY_REQUESTS: return "too_many_requests";
3076 case DNP3_FILE_ERROR_IIN_ERROR: return "iin_error";
3077 case DNP3_FILE_ERROR_BAD_RESPONSE: return "bad_response";
3078 case DNP3_FILE_ERROR_RESPONSE_TIMEOUT: return "response_timeout";
3079 case DNP3_FILE_ERROR_WRITE_ERROR: return "write_error";
3080 case DNP3_FILE_ERROR_NO_CONNECTION: return "no_connection";
3081 case DNP3_FILE_ERROR_SHUTDOWN: return "shutdown";
3082 case DNP3_FILE_ERROR_ASSOCIATION_REMOVED: return "association_removed";
3083 case DNP3_FILE_ERROR_BAD_ENCODING: return "bad_encoding";
3084 default: return "unknown file_error value";
3085 }
3086}
3087
3088
3089typedef struct dnp3_file_info_t dnp3_file_info_t;
3090
3094typedef struct dnp3_file_info_t
3095{
3097 const char* file_name;
3103 uint32_t size;
3111
3112
3115{
3116
3121
3128 void (*on_destroy)(void* arg);
3130 void* ctx;
3132
3135{
3136
3141
3148 void (*on_destroy)(void* arg);
3150 void* ctx;
3152
3155{
3156
3160 void (*on_complete)(uint32_t, void*);
3161
3168 void (*on_destroy)(void* arg);
3170 void* ctx;
3172
3175{
3183
3188{
3189 switch (value)
3190 {
3191 case DNP3_FILE_MODE_READ: return "read";
3192 case DNP3_FILE_MODE_WRITE: return "write";
3193 case DNP3_FILE_MODE_APPEND: return "append";
3194 default: return "unknown file_mode value";
3195 }
3196}
3197
3200{
3208
3213{
3214 switch (value)
3215 {
3216 case DNP3_UDP_SOCKET_MODE_ONE_TO_ONE: return "one_to_one";
3217 case DNP3_UDP_SOCKET_MODE_ONE_TO_MANY: return "one_to_many";
3218 default: return "unknown udp_socket_mode value";
3219 }
3220}
3221
3226{
3232
3237{
3238 switch (value)
3239 {
3240 case DNP3_LINK_READ_MODE_STREAM: return "stream";
3241 case DNP3_LINK_READ_MODE_DATAGRAM: return "datagram";
3242 default: return "unknown link_read_mode value";
3243 }
3244}
3245
3250{
3262
3267{
3268 switch (value)
3269 {
3270 case DNP3_LOG_LEVEL_ERROR: return "error";
3271 case DNP3_LOG_LEVEL_WARN: return "warn";
3272 case DNP3_LOG_LEVEL_INFO: return "info";
3273 case DNP3_LOG_LEVEL_DEBUG: return "debug";
3274 case DNP3_LOG_LEVEL_TRACE: return "trace";
3275 default: return "unknown log_level value";
3276 }
3277}
3278
3280
3283{
3289
3294{
3295 switch (value)
3296 {
3297 case DNP3_LOG_OUTPUT_FORMAT_TEXT: return "text";
3298 case DNP3_LOG_OUTPUT_FORMAT_JSON: return "json";
3299 default: return "unknown log_output_format value";
3300 }
3301}
3302
3305{
3313
3318{
3319 switch (value)
3320 {
3321 case DNP3_TIME_FORMAT_NONE: return "none";
3322 case DNP3_TIME_FORMAT_RFC_3339: return "rfc_3339";
3323 case DNP3_TIME_FORMAT_SYSTEM: return "system";
3324 default: return "unknown time_format value";
3325 }
3326}
3327
3330{
3342
3354{
3355 dnp3_logging_config_t _return_value = {
3359 true,
3360 false
3361 };
3362 return _return_value;
3363}
3364
3365
3367typedef struct dnp3_logger_t
3368{
3369
3374 void (*on_message)(dnp3_log_level_t, const char*, void*);
3377 void (*on_destroy)(void* arg);
3379 void* ctx;
3381
3391
3392
3395{
3401
3406{
3407 switch (value)
3408 {
3409 case DNP3_RESPONSE_FUNCTION_RESPONSE: return "response";
3410 case DNP3_RESPONSE_FUNCTION_UNSOLICITED_RESPONSE: return "unsolicited_response";
3411 default: return "unknown response_function value";
3412 }
3413}
3414
3415typedef struct dnp3_iin1_t dnp3_iin1_t;
3416
3418typedef struct dnp3_iin1_t
3419{
3436} dnp3_iin1_t;
3437
3438
3439typedef struct dnp3_iin2_t dnp3_iin2_t;
3440
3442typedef struct dnp3_iin2_t
3443{
3460} dnp3_iin2_t;
3461
3462
3463typedef struct dnp3_iin_t dnp3_iin_t;
3464
3466typedef struct dnp3_iin_t
3467{
3472} dnp3_iin_t;
3473
3474
3476
3479{
3487
3488
3491{
3509
3514{
3515 switch (value)
3516 {
3517 case DNP3_QUALIFIER_CODE_RANGE8: return "range8";
3518 case DNP3_QUALIFIER_CODE_RANGE16: return "range16";
3519 case DNP3_QUALIFIER_CODE_ALL_OBJECTS: return "all_objects";
3520 case DNP3_QUALIFIER_CODE_COUNT8: return "count8";
3521 case DNP3_QUALIFIER_CODE_COUNT16: return "count16";
3522 case DNP3_QUALIFIER_CODE_COUNT_AND_PREFIX_8: return "count_and_prefix_8";
3523 case DNP3_QUALIFIER_CODE_COUNT_AND_PREFIX_16: return "count_and_prefix_16";
3524 case DNP3_QUALIFIER_CODE_FREE_FORMAT_16: return "free_format_16";
3525 default: return "unknown qualifier_code value";
3526 }
3527}
3528
3530
3533{
3543
3544
3547{
3557
3562{
3563 switch (value)
3564 {
3565 case DNP3_READ_TYPE_STARTUP_INTEGRITY: return "startup_integrity";
3566 case DNP3_READ_TYPE_UNSOLICITED: return "unsolicited";
3567 case DNP3_READ_TYPE_SINGLE_POLL: return "single_poll";
3568 case DNP3_READ_TYPE_PERIODIC_POLL: return "periodic_poll";
3569 default: return "unknown read_type value";
3570 }
3571}
3572
3577{
3578
3584
3590
3596
3602
3608
3614
3620
3626
3632
3638
3644
3650
3656
3662
3670 void (*handle_string_attr)(dnp3_header_info_t, dnp3_string_attr_t, uint8_t, uint8_t, const char*, void*);
3671
3680
3688 void (*handle_uint_attr)(dnp3_header_info_t, dnp3_uint_attr_t, uint8_t, uint8_t, uint32_t, void*);
3689
3699 void (*handle_bool_attr)(dnp3_header_info_t, dnp3_bool_attr_t, uint8_t, uint8_t, bool, void*);
3700
3710 void (*handle_int_attr)(dnp3_header_info_t, dnp3_int_attr_t, uint8_t, uint8_t, int32_t, void*);
3711
3719 void (*handle_time_attr)(dnp3_header_info_t, dnp3_time_attr_t, uint8_t, uint8_t, uint64_t, void*);
3720
3728 void (*handle_float_attr)(dnp3_header_info_t, dnp3_float_attr_t, uint8_t, uint8_t, double, void*);
3729
3738
3749 void (*on_destroy)(void* arg);
3751 void* ctx;
3753
3755
3758{
3760 uint16_t address;
3772
3783{
3784 dnp3_master_channel_config_t _return_value = {
3785 address,
3787 2048,
3788 2048
3789 };
3790 return _return_value;
3791}
3792
3793
3800
3803
3807
3811
3818void dnp3_write_dead_band_request_add_g34v1_u8(dnp3_write_dead_band_request_t* instance, uint8_t index, uint16_t dead_band);
3819
3826void dnp3_write_dead_band_request_add_g34v2_u8(dnp3_write_dead_band_request_t* instance, uint8_t index, uint32_t dead_band);
3827
3835
3842void dnp3_write_dead_band_request_add_g34v1_u16(dnp3_write_dead_band_request_t* instance, uint16_t index, uint16_t dead_band);
3843
3850void dnp3_write_dead_band_request_add_g34v2_u16(dnp3_write_dead_band_request_t* instance, uint16_t index, uint32_t dead_band);
3851
3859
3865
3866
3869{
3893
3898{
3899 switch (value)
3900 {
3901 case DNP3_EMPTY_RESPONSE_ERROR_OK: return "ok";
3902 case DNP3_EMPTY_RESPONSE_ERROR_REJECTED_BY_IIN2: return "rejected_by_iin2";
3903 case DNP3_EMPTY_RESPONSE_ERROR_TOO_MANY_REQUESTS: return "too_many_requests";
3904 case DNP3_EMPTY_RESPONSE_ERROR_IIN_ERROR: return "iin_error";
3905 case DNP3_EMPTY_RESPONSE_ERROR_BAD_RESPONSE: return "bad_response";
3906 case DNP3_EMPTY_RESPONSE_ERROR_RESPONSE_TIMEOUT: return "response_timeout";
3907 case DNP3_EMPTY_RESPONSE_ERROR_WRITE_ERROR: return "write_error";
3908 case DNP3_EMPTY_RESPONSE_ERROR_NO_CONNECTION: return "no_connection";
3909 case DNP3_EMPTY_RESPONSE_ERROR_SHUTDOWN: return "shutdown";
3910 case DNP3_EMPTY_RESPONSE_ERROR_ASSOCIATION_REMOVED: return "association_removed";
3911 case DNP3_EMPTY_RESPONSE_ERROR_BAD_ENCODING: return "bad_encoding";
3912 default: return "unknown empty_response_error value";
3913 }
3914}
3915
3916
3919{
3920
3925
3932 void (*on_destroy)(void* arg);
3934 void* ctx;
3936
3947
3961
3974
3985dnp3_param_error_t dnp3_master_channel_create_udp(dnp3_runtime_t* runtime, dnp3_master_channel_config_t config, const char* local_endpoint, dnp3_link_read_mode_t link_read_mode, uint64_t retry_delay, dnp3_master_channel_t** out);
3986
3990
4002
4017
4022
4027
4029
4034{
4036 uint16_t address;
4038
4039typedef struct dnp3_poll_id_t dnp3_poll_id_t;
4040
4044typedef struct dnp3_poll_id_t
4045{
4049 uint64_t id;
4051
4053
4056{
4064
4070static dnp3_event_classes_t dnp3_event_classes_init(bool class1, bool class2, bool class3)
4071{
4072 dnp3_event_classes_t _return_value = {
4073 class1,
4074 class2,
4075 class3
4076 };
4077 return _return_value;
4078}
4079
4089{
4090 dnp3_event_classes_t _return_value = {
4091 true,
4092 true,
4093 true
4094 };
4095 return _return_value;
4096}
4097
4107{
4108 dnp3_event_classes_t _return_value = {
4109 false,
4110 false,
4111 false
4112 };
4113 return _return_value;
4114}
4115
4116
4117typedef struct dnp3_classes_t dnp3_classes_t;
4118
4120typedef struct dnp3_classes_t
4121{
4131
4138static dnp3_classes_t dnp3_classes_init(bool class0, bool class1, bool class2, bool class3)
4139{
4140 dnp3_classes_t _return_value = {
4141 class0,
4142 class1,
4143 class2,
4144 class3
4145 };
4146 return _return_value;
4147}
4148
4159{
4160 dnp3_classes_t _return_value = {
4161 true,
4162 true,
4163 true,
4164 true
4165 };
4166 return _return_value;
4167}
4168
4179{
4180 dnp3_classes_t _return_value = {
4181 false,
4182 false,
4183 false,
4184 false
4185 };
4186 return _return_value;
4187}
4188
4189
4192{
4200
4205{
4206 switch (value)
4207 {
4208 case DNP3_AUTO_TIME_SYNC_NONE: return "none";
4209 case DNP3_AUTO_TIME_SYNC_LAN: return "lan";
4210 case DNP3_AUTO_TIME_SYNC_NON_LAN: return "non_lan";
4211 default: return "unknown auto_time_sync value";
4212 }
4213}
4214
4216
4219{
4247
4263static 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)
4264{
4265 dnp3_association_config_t _return_value = {
4266 5000,
4267 disable_unsol_classes,
4268 enable_unsol_classes,
4269 startup_integrity_classes,
4272 60,
4273 true,
4274 event_scan_on_events_available,
4275 16
4276 };
4277 return _return_value;
4278}
4279
4280
4282
4287{
4291 uint64_t value;
4295
4304{
4305 dnp3_utc_timestamp_t _return_value = {
4306 value,
4307 true
4308 };
4309 return _return_value;
4310}
4311
4320{
4321 dnp3_utc_timestamp_t _return_value = {
4322 0,
4323 false
4324 };
4325 return _return_value;
4326}
4327
4328
4331{
4332
4343 void (*on_destroy)(void* arg);
4345 void* ctx;
4347
4350{
4388
4393{
4394 switch (value)
4395 {
4396 case DNP3_TASK_TYPE_USER_READ: return "user_read";
4397 case DNP3_TASK_TYPE_PERIODIC_POLL: return "periodic_poll";
4398 case DNP3_TASK_TYPE_STARTUP_INTEGRITY: return "startup_integrity";
4399 case DNP3_TASK_TYPE_AUTO_EVENT_SCAN: return "auto_event_scan";
4400 case DNP3_TASK_TYPE_COMMAND: return "command";
4401 case DNP3_TASK_TYPE_CLEAR_RESTART_BIT: return "clear_restart_bit";
4402 case DNP3_TASK_TYPE_ENABLE_UNSOLICITED: return "enable_unsolicited";
4403 case DNP3_TASK_TYPE_DISABLE_UNSOLICITED: return "disable_unsolicited";
4404 case DNP3_TASK_TYPE_TIME_SYNC: return "time_sync";
4405 case DNP3_TASK_TYPE_RESTART: return "restart";
4406 case DNP3_TASK_TYPE_WRITE_DEAD_BANDS: return "write_dead_bands";
4407 case DNP3_TASK_TYPE_GENERIC_EMPTY_RESPONSE: return "generic_empty_response";
4408 case DNP3_TASK_TYPE_FILE_READ: return "file_read";
4409 case DNP3_TASK_TYPE_GET_FILE_INFO: return "get_file_info";
4410 case DNP3_TASK_TYPE_FILE_AUTH: return "file_auth";
4411 case DNP3_TASK_TYPE_FILE_OPEN: return "file_open";
4412 case DNP3_TASK_TYPE_FILE_WRITE_BLOCK: return "file_write_block";
4413 case DNP3_TASK_TYPE_FILE_CLOSE: return "file_close";
4414 default: return "unknown task_type value";
4415 }
4416}
4417
4420{
4440
4445{
4446 switch (value)
4447 {
4448 case DNP3_TASK_ERROR_TOO_MANY_REQUESTS: return "too_many_requests";
4449 case DNP3_TASK_ERROR_IIN_ERROR: return "iin_error";
4450 case DNP3_TASK_ERROR_BAD_RESPONSE: return "bad_response";
4451 case DNP3_TASK_ERROR_RESPONSE_TIMEOUT: return "response_timeout";
4452 case DNP3_TASK_ERROR_WRITE_ERROR: return "write_error";
4453 case DNP3_TASK_ERROR_NO_CONNECTION: return "no_connection";
4454 case DNP3_TASK_ERROR_SHUTDOWN: return "shutdown";
4455 case DNP3_TASK_ERROR_ASSOCIATION_REMOVED: return "association_removed";
4456 case DNP3_TASK_ERROR_BAD_ENCODING: return "bad_encoding";
4457 default: return "unknown task_error value";
4458 }
4459}
4460
4463{
4464
4471
4478
4484
4489 void (*unsolicited_response)(bool, uint8_t, void*);
4492 void (*on_destroy)(void* arg);
4494 void* ctx;
4496
4501
4505
4514dnp3_request_t* dnp3_request_new_class(bool class0, bool class1, bool class2, bool class3);
4515
4522
4530dnp3_request_t* dnp3_request_new_one_byte_range(dnp3_variation_t variation, uint8_t start, uint8_t stop);
4531
4539dnp3_request_t* dnp3_request_new_two_byte_range(dnp3_variation_t variation, uint16_t start, uint16_t stop);
4540
4548
4556
4560
4565void dnp3_request_add_specific_attribute(dnp3_request_t* instance, uint8_t variation, uint8_t set);
4566
4572void dnp3_request_add_string_attribute(dnp3_request_t* instance, uint8_t variation, uint8_t set, const char* value);
4573
4579void dnp3_request_add_uint_attribute(dnp3_request_t* instance, uint8_t variation, uint8_t set, uint32_t value);
4580
4586void dnp3_request_add_one_byte_range_header(dnp3_request_t* instance, dnp3_variation_t variation, uint8_t start, uint8_t stop);
4587
4593void dnp3_request_add_two_byte_range_header(dnp3_request_t* instance, dnp3_variation_t variation, uint16_t start, uint16_t stop);
4594
4599
4605
4611
4618void dnp3_request_add_time_and_interval(dnp3_request_t* instance, uint64_t time, uint32_t interval_ms);
4619
4620
4631
4642dnp3_param_error_t dnp3_master_channel_add_udp_association(dnp3_master_channel_t* instance, uint16_t address, const char* destination, dnp3_association_config_t config, dnp3_read_handler_t read_handler, dnp3_association_handler_t association_handler, dnp3_association_information_t association_information, dnp3_association_id_t* out);
4643
4649
4660
4668
4678
4684
4690
4693{
4715
4720{
4721 switch (value)
4722 {
4723 case DNP3_READ_ERROR_OK: return "ok";
4724 case DNP3_READ_ERROR_TOO_MANY_REQUESTS: return "too_many_requests";
4725 case DNP3_READ_ERROR_IIN_ERROR: return "iin_error";
4726 case DNP3_READ_ERROR_BAD_RESPONSE: return "bad_response";
4727 case DNP3_READ_ERROR_RESPONSE_TIMEOUT: return "response_timeout";
4728 case DNP3_READ_ERROR_WRITE_ERROR: return "write_error";
4729 case DNP3_READ_ERROR_NO_CONNECTION: return "no_connection";
4730 case DNP3_READ_ERROR_SHUTDOWN: return "shutdown";
4731 case DNP3_READ_ERROR_ASSOCIATION_REMOVED: return "association_removed";
4732 case DNP3_READ_ERROR_BAD_ENCODING: return "bad_encoding";
4733 default: return "unknown read_error value";
4734 }
4735}
4736
4737
4740{
4741
4746
4753 void (*on_destroy)(void* arg);
4755 void* ctx;
4757
4767
4775
4788
4799
4802
4806
4810
4814
4820
4826
4831void dnp3_command_set_add_g41_v1_u8(dnp3_command_set_t* instance, uint8_t idx, int32_t value);
4832
4837void dnp3_command_set_add_g41_v1_u16(dnp3_command_set_t* instance, uint16_t idx, int32_t value);
4838
4843void dnp3_command_set_add_g41_v2_u8(dnp3_command_set_t* instance, uint8_t idx, int16_t value);
4844
4849void dnp3_command_set_add_g41_v2_u16(dnp3_command_set_t* instance, uint16_t idx, int16_t value);
4850
4855void dnp3_command_set_add_g41_v3_u8(dnp3_command_set_t* instance, uint8_t idx, float value);
4856
4861void dnp3_command_set_add_g41_v3_u16(dnp3_command_set_t* instance, uint16_t idx, float value);
4862
4867void dnp3_command_set_add_g41_v4_u8(dnp3_command_set_t* instance, uint8_t idx, double value);
4868
4873void dnp3_command_set_add_g41_v4_u16(dnp3_command_set_t* instance, uint16_t idx, double value);
4874
4875
4878{
4884
4889{
4890 switch (value)
4891 {
4892 case DNP3_COMMAND_MODE_DIRECT_OPERATE: return "direct_operate";
4893 case DNP3_COMMAND_MODE_SELECT_BEFORE_OPERATE: return "select_before_operate";
4894 default: return "unknown command_mode value";
4895 }
4896}
4897
4900{
4926
4931{
4932 switch (value)
4933 {
4934 case DNP3_COMMAND_ERROR_OK: return "ok";
4935 case DNP3_COMMAND_ERROR_BAD_STATUS: return "bad_status";
4936 case DNP3_COMMAND_ERROR_HEADER_MISMATCH: return "header_mismatch";
4937 case DNP3_COMMAND_ERROR_TOO_MANY_REQUESTS: return "too_many_requests";
4938 case DNP3_COMMAND_ERROR_IIN_ERROR: return "iin_error";
4939 case DNP3_COMMAND_ERROR_BAD_RESPONSE: return "bad_response";
4940 case DNP3_COMMAND_ERROR_RESPONSE_TIMEOUT: return "response_timeout";
4941 case DNP3_COMMAND_ERROR_WRITE_ERROR: return "write_error";
4942 case DNP3_COMMAND_ERROR_NO_CONNECTION: return "no_connection";
4943 case DNP3_COMMAND_ERROR_SHUTDOWN: return "shutdown";
4944 case DNP3_COMMAND_ERROR_ASSOCIATION_REMOVED: return "association_removed";
4945 case DNP3_COMMAND_ERROR_BAD_ENCODING: return "bad_encoding";
4946 default: return "unknown command_error value";
4947 }
4948}
4949
4950
4953{
4954
4959
4966 void (*on_destroy)(void* arg);
4968 void* ctx;
4970
4979
4982{
4988
4993{
4994 switch (value)
4995 {
4996 case DNP3_TIME_SYNC_MODE_LAN: return "lan";
4997 case DNP3_TIME_SYNC_MODE_NON_LAN: return "non_lan";
4998 default: return "unknown time_sync_mode value";
4999 }
5000}
5001
5004{
5038
5043{
5044 switch (value)
5045 {
5046 case DNP3_TIME_SYNC_ERROR_OK: return "ok";
5047 case DNP3_TIME_SYNC_ERROR_CLOCK_ROLLBACK: return "clock_rollback";
5048 case DNP3_TIME_SYNC_ERROR_SYSTEM_TIME_NOT_UNIX: return "system_time_not_unix";
5049 case DNP3_TIME_SYNC_ERROR_BAD_OUTSTATION_TIME_DELAY: return "bad_outstation_time_delay";
5050 case DNP3_TIME_SYNC_ERROR_OVERFLOW: return "overflow";
5051 case DNP3_TIME_SYNC_ERROR_STILL_NEEDS_TIME: return "still_needs_time";
5052 case DNP3_TIME_SYNC_ERROR_SYSTEM_TIME_NOT_AVAILABLE: return "system_time_not_available";
5053 case DNP3_TIME_SYNC_ERROR_TOO_MANY_REQUESTS: return "too_many_requests";
5054 case DNP3_TIME_SYNC_ERROR_IIN_ERROR: return "iin_error";
5055 case DNP3_TIME_SYNC_ERROR_BAD_RESPONSE: return "bad_response";
5056 case DNP3_TIME_SYNC_ERROR_RESPONSE_TIMEOUT: return "response_timeout";
5057 case DNP3_TIME_SYNC_ERROR_WRITE_ERROR: return "write_error";
5058 case DNP3_TIME_SYNC_ERROR_NO_CONNECTION: return "no_connection";
5059 case DNP3_TIME_SYNC_ERROR_SHUTDOWN: return "shutdown";
5060 case DNP3_TIME_SYNC_ERROR_ASSOCIATION_REMOVED: return "association_removed";
5061 case DNP3_TIME_SYNC_ERROR_BAD_ENCODING: return "bad_encoding";
5062 default: return "unknown time_sync_error value";
5063 }
5064}
5065
5066
5069{
5070
5075
5082 void (*on_destroy)(void* arg);
5084 void* ctx;
5086
5094
5097{
5119
5124{
5125 switch (value)
5126 {
5127 case DNP3_RESTART_ERROR_OK: return "ok";
5128 case DNP3_RESTART_ERROR_TOO_MANY_REQUESTS: return "too_many_requests";
5129 case DNP3_RESTART_ERROR_IIN_ERROR: return "iin_error";
5130 case DNP3_RESTART_ERROR_BAD_RESPONSE: return "bad_response";
5131 case DNP3_RESTART_ERROR_RESPONSE_TIMEOUT: return "response_timeout";
5132 case DNP3_RESTART_ERROR_WRITE_ERROR: return "write_error";
5133 case DNP3_RESTART_ERROR_NO_CONNECTION: return "no_connection";
5134 case DNP3_RESTART_ERROR_SHUTDOWN: return "shutdown";
5135 case DNP3_RESTART_ERROR_ASSOCIATION_REMOVED: return "association_removed";
5136 case DNP3_RESTART_ERROR_BAD_ENCODING: return "bad_encoding";
5137 default: return "unknown restart_error value";
5138 }
5139}
5140
5141
5144{
5145
5149 void (*on_complete)(uint64_t, void*);
5150
5157 void (*on_destroy)(void* arg);
5159 void* ctx;
5161
5168
5175
5178{
5179
5184
5191 void (*on_destroy)(void* arg);
5193 void* ctx;
5195
5198{
5199
5206 bool (*opened)(uint32_t, void*);
5207
5215 bool (*block_received)(uint32_t, dnp3_byte_iterator_t*, void*);
5216
5221
5224 void (*completed)(void*);
5227 void (*on_destroy)(void* arg);
5229 void* ctx;
5231
5233
5236{
5242
5251{
5252 dnp3_file_read_config_t _return_value = {
5253 65535,
5254 4294967295
5255 };
5256 return _return_value;
5257}
5258
5259
5261
5264{
5270
5279{
5280 dnp3_dir_read_config_t _return_value = {
5281 65535,
5282 2048
5283 };
5284 return _return_value;
5285}
5286
5287
5296
5308dnp3_param_error_t dnp3_master_channel_read_file_with_auth(dnp3_master_channel_t* instance, dnp3_association_id_t association, const char* remote_file_path, dnp3_file_read_config_t config, dnp3_file_reader_t reader, const char* user_name, const char* password);
5309
5318
5330dnp3_param_error_t dnp3_master_channel_open_file(dnp3_master_channel_t* instance, dnp3_association_id_t association, const char* file_name, uint32_t auth_key, dnp3_permissions_t permissions, uint32_t file_size, dnp3_file_mode_t file_mode, uint16_t max_block_size, dnp3_file_open_callback_t callback);
5331
5341dnp3_param_error_t dnp3_master_channel_write_file_block(dnp3_master_channel_t* instance, dnp3_association_id_t association, uint32_t handle, uint32_t block_number, bool final_block, dnp3_byte_collection_t* block_data, dnp3_file_operation_callback_t callback);
5342
5350
5358
5361
5366
5367
5370{
5371
5376
5383 void (*on_destroy)(void* arg);
5385 void* ctx;
5387
5396
5406dnp3_param_error_t dnp3_master_channel_read_directory_with_auth(dnp3_master_channel_t* instance, dnp3_association_id_t association, const char* dir_path, dnp3_dir_read_config_t config, const char* user_name, const char* password, dnp3_read_directory_callback_t callback);
5407
5410{
5434
5439{
5440 switch (value)
5441 {
5442 case DNP3_LINK_STATUS_ERROR_OK: return "ok";
5443 case DNP3_LINK_STATUS_ERROR_UNEXPECTED_RESPONSE: return "unexpected_response";
5444 case DNP3_LINK_STATUS_ERROR_TOO_MANY_REQUESTS: return "too_many_requests";
5445 case DNP3_LINK_STATUS_ERROR_IIN_ERROR: return "iin_error";
5446 case DNP3_LINK_STATUS_ERROR_BAD_RESPONSE: return "bad_response";
5447 case DNP3_LINK_STATUS_ERROR_RESPONSE_TIMEOUT: return "response_timeout";
5448 case DNP3_LINK_STATUS_ERROR_WRITE_ERROR: return "write_error";
5449 case DNP3_LINK_STATUS_ERROR_NO_CONNECTION: return "no_connection";
5450 case DNP3_LINK_STATUS_ERROR_SHUTDOWN: return "shutdown";
5451 case DNP3_LINK_STATUS_ERROR_ASSOCIATION_REMOVED: return "association_removed";
5452 case DNP3_LINK_STATUS_ERROR_BAD_ENCODING: return "bad_encoding";
5453 default: return "unknown link_status_error value";
5454 }
5455}
5456
5457
5460{
5461
5466
5473 void (*on_destroy)(void* arg);
5475 void* ctx;
5477
5484
5485
5488
5495
5502
5503
5506
5513
5514
5517{
5518
5523 void (*accept)(const char*, dnp3_accept_handler_t*, void*);
5524
5531 void (*start)(const char*, dnp3_master_channel_t*, void*);
5532
5539 void (*accept_with_link_id)(const char*, uint16_t, uint16_t, dnp3_identified_link_handler_t*, void*);
5540
5549 void (*start_with_link_id)(const char*, uint16_t, uint16_t, dnp3_master_channel_t*, void*);
5552 void (*on_destroy)(void* arg);
5554 void* ctx;
5556
5559
5561
5564{
5566 uint16_t max_tasks;
5569 uint64_t timeout;
5573
5583{
5584 dnp3_link_id_config_t _return_value = {
5585 16,
5586 5000,
5588 };
5589 return _return_value;
5590}
5591
5592
5596
5607
5608
5613
5616{
5626
5631{
5632 switch (value)
5633 {
5634 case DNP3_EVENT_CLASS_NONE: return "none";
5635 case DNP3_EVENT_CLASS_CLASS1: return "class1";
5636 case DNP3_EVENT_CLASS_CLASS2: return "class2";
5637 case DNP3_EVENT_CLASS_CLASS3: return "class3";
5638 default: return "unknown event_class value";
5639 }
5640}
5641
5644{
5654
5659{
5660 switch (value)
5661 {
5662 case DNP3_UPDATE_RESULT_NO_POINT: return "no_point";
5663 case DNP3_UPDATE_RESULT_NO_EVENT: return "no_event";
5664 case DNP3_UPDATE_RESULT_CREATED: return "created";
5665 case DNP3_UPDATE_RESULT_OVERFLOW: return "overflow";
5666 default: return "unknown update_result value";
5667 }
5668}
5669
5671
5674{
5678 uint64_t created;
5680 uint64_t discarded;
5682
5683
5686{
5696
5701{
5702 switch (value)
5703 {
5704 case DNP3_EVENT_MODE_DETECT: return "detect";
5705 case DNP3_EVENT_MODE_FORCE: return "force";
5706 case DNP3_EVENT_MODE_SUPPRESS: return "suppress";
5707 default: return "unknown event_mode value";
5708 }
5709}
5710
5712
5717{
5723
5732{
5733 dnp3_update_options_t _return_value = {
5734 true,
5736 };
5737 return _return_value;
5738}
5739
5748{
5749 dnp3_update_options_t _return_value = {
5750 true,
5752 };
5753 return _return_value;
5754}
5755
5756
5759{
5775
5780{
5781 switch (value)
5782 {
5783 case DNP3_UPDATE_FLAGS_TYPE_BINARY_INPUT: return "binary_input";
5784 case DNP3_UPDATE_FLAGS_TYPE_DOUBLE_BIT_BINARY_INPUT: return "double_bit_binary_input";
5785 case DNP3_UPDATE_FLAGS_TYPE_BINARY_OUTPUT_STATUS: return "binary_output_status";
5786 case DNP3_UPDATE_FLAGS_TYPE_COUNTER: return "counter";
5787 case DNP3_UPDATE_FLAGS_TYPE_FROZEN_COUNTER: return "frozen_counter";
5788 case DNP3_UPDATE_FLAGS_TYPE_ANALOG_INPUT: return "analog_input";
5789 case DNP3_UPDATE_FLAGS_TYPE_ANALOG_OUTPUT_STATUS: return "analog_output_status";
5790 default: return "unknown update_flags_type value";
5791 }
5792}
5793
5805
5808{
5814
5819{
5820 switch (value)
5821 {
5822 case DNP3_STATIC_BINARY_INPUT_VARIATION_GROUP1_VAR1: return "group1_var1";
5823 case DNP3_STATIC_BINARY_INPUT_VARIATION_GROUP1_VAR2: return "group1_var2";
5824 default: return "unknown static_binary_input_variation value";
5825 }
5826}
5827
5830{
5838
5843{
5844 switch (value)
5845 {
5846 case DNP3_EVENT_BINARY_INPUT_VARIATION_GROUP2_VAR1: return "group2_var1";
5847 case DNP3_EVENT_BINARY_INPUT_VARIATION_GROUP2_VAR2: return "group2_var2";
5848 case DNP3_EVENT_BINARY_INPUT_VARIATION_GROUP2_VAR3: return "group2_var3";
5849 default: return "unknown event_binary_input_variation value";
5850 }
5851}
5852
5854
5857{
5863
5869{
5870 dnp3_binary_input_config_t _return_value = {
5871 static_variation,
5872 event_variation
5873 };
5874 return _return_value;
5875}
5876
5885{
5886 dnp3_binary_input_config_t _return_value = {
5889 };
5890 return _return_value;
5891}
5892
5893
5901
5907
5914
5921
5928
5931{
5937
5942{
5943 switch (value)
5944 {
5947 default: return "unknown static_double_bit_binary_input_variation value";
5948 }
5949}
5950
5953{
5961
5966{
5967 switch (value)
5968 {
5972 default: return "unknown event_double_bit_binary_input_variation value";
5973 }
5974}
5975
5977
5980{
5986
5992{
5994 static_variation,
5995 event_variation
5996 };
5997 return _return_value;
5998}
5999
6008{
6012 };
6013 return _return_value;
6014}
6015
6016
6024
6030
6037
6044
6051
6054{
6060
6065{
6066 switch (value)
6067 {
6070 default: return "unknown static_binary_output_status_variation value";
6071 }
6072}
6073
6076{
6082
6087{
6088 switch (value)
6089 {
6092 default: return "unknown event_binary_output_status_variation value";
6093 }
6094}
6095
6097
6100{
6106
6112{
6113 dnp3_binary_output_status_config_t _return_value = {
6114 static_variation,
6115 event_variation
6116 };
6117 return _return_value;
6118}
6119
6128{
6129 dnp3_binary_output_status_config_t _return_value = {
6132 };
6133 return _return_value;
6134}
6135
6136
6144
6150
6157
6164
6171
6174{
6184
6189{
6190 switch (value)
6191 {
6192 case DNP3_STATIC_COUNTER_VARIATION_GROUP20_VAR1: return "group20_var1";
6193 case DNP3_STATIC_COUNTER_VARIATION_GROUP20_VAR2: return "group20_var2";
6194 case DNP3_STATIC_COUNTER_VARIATION_GROUP20_VAR5: return "group20_var5";
6195 case DNP3_STATIC_COUNTER_VARIATION_GROUP20_VAR6: return "group20_var6";
6196 default: return "unknown static_counter_variation value";
6197 }
6198}
6199
6202{
6212
6217{
6218 switch (value)
6219 {
6220 case DNP3_EVENT_COUNTER_VARIATION_GROUP22_VAR1: return "group22_var1";
6221 case DNP3_EVENT_COUNTER_VARIATION_GROUP22_VAR2: return "group22_var2";
6222 case DNP3_EVENT_COUNTER_VARIATION_GROUP22_VAR5: return "group22_var5";
6223 case DNP3_EVENT_COUNTER_VARIATION_GROUP22_VAR6: return "group22_var6";
6224 default: return "unknown event_counter_variation value";
6225 }
6226}
6227
6229
6232{
6238 uint32_t deadband;
6240
6247{
6248 dnp3_counter_config_t _return_value = {
6249 static_variation,
6250 event_variation,
6251 deadband
6252 };
6253 return _return_value;
6254}
6255
6265{
6266 dnp3_counter_config_t _return_value = {
6269 0
6270 };
6271 return _return_value;
6272}
6273
6274
6281bool dnp3_database_add_counter(dnp3_database_t* instance, uint16_t index, dnp3_event_class_t point_class, dnp3_counter_config_t config);
6282
6287bool dnp3_database_remove_counter(dnp3_database_t* instance, uint16_t index);
6288
6295
6302
6309
6312{
6326
6331{
6332 switch (value)
6333 {
6334 case DNP3_STATIC_FROZEN_COUNTER_VARIATION_GROUP21_VAR1: return "group21_var1";
6335 case DNP3_STATIC_FROZEN_COUNTER_VARIATION_GROUP21_VAR2: return "group21_var2";
6336 case DNP3_STATIC_FROZEN_COUNTER_VARIATION_GROUP21_VAR5: return "group21_var5";
6337 case DNP3_STATIC_FROZEN_COUNTER_VARIATION_GROUP21_VAR6: return "group21_var6";
6338 case DNP3_STATIC_FROZEN_COUNTER_VARIATION_GROUP21_VAR9: return "group21_var9";
6339 case DNP3_STATIC_FROZEN_COUNTER_VARIATION_GROUP21_VAR10: return "group21_var10";
6340 default: return "unknown static_frozen_counter_variation value";
6341 }
6342}
6343
6346{
6356
6361{
6362 switch (value)
6363 {
6364 case DNP3_EVENT_FROZEN_COUNTER_VARIATION_GROUP23_VAR1: return "group23_var1";
6365 case DNP3_EVENT_FROZEN_COUNTER_VARIATION_GROUP23_VAR2: return "group23_var2";
6366 case DNP3_EVENT_FROZEN_COUNTER_VARIATION_GROUP23_VAR5: return "group23_var5";
6367 case DNP3_EVENT_FROZEN_COUNTER_VARIATION_GROUP23_VAR6: return "group23_var6";
6368 default: return "unknown event_frozen_counter_variation value";
6369 }
6370}
6371
6373
6376{
6382 uint32_t deadband;
6384
6391{
6392 dnp3_frozen_counter_config_t _return_value = {
6393 static_variation,
6394 event_variation,
6395 deadband
6396 };
6397 return _return_value;
6398}
6399
6409{
6410 dnp3_frozen_counter_config_t _return_value = {
6413 0
6414 };
6415 return _return_value;
6416}
6417
6418
6426
6432
6439
6446
6453
6456{
6470
6475{
6476 switch (value)
6477 {
6478 case DNP3_STATIC_ANALOG_INPUT_VARIATION_GROUP30_VAR1: return "group30_var1";
6479 case DNP3_STATIC_ANALOG_INPUT_VARIATION_GROUP30_VAR2: return "group30_var2";
6480 case DNP3_STATIC_ANALOG_INPUT_VARIATION_GROUP30_VAR3: return "group30_var3";
6481 case DNP3_STATIC_ANALOG_INPUT_VARIATION_GROUP30_VAR4: return "group30_var4";
6482 case DNP3_STATIC_ANALOG_INPUT_VARIATION_GROUP30_VAR5: return "group30_var5";
6483 case DNP3_STATIC_ANALOG_INPUT_VARIATION_GROUP30_VAR6: return "group30_var6";
6484 default: return "unknown static_analog_input_variation value";
6485 }
6486}
6487
6490{
6508
6513{
6514 switch (value)
6515 {
6516 case DNP3_EVENT_ANALOG_INPUT_VARIATION_GROUP32_VAR1: return "group32_var1";
6517 case DNP3_EVENT_ANALOG_INPUT_VARIATION_GROUP32_VAR2: return "group32_var2";
6518 case DNP3_EVENT_ANALOG_INPUT_VARIATION_GROUP32_VAR3: return "group32_var3";
6519 case DNP3_EVENT_ANALOG_INPUT_VARIATION_GROUP32_VAR4: return "group32_var4";
6520 case DNP3_EVENT_ANALOG_INPUT_VARIATION_GROUP32_VAR5: return "group32_var5";
6521 case DNP3_EVENT_ANALOG_INPUT_VARIATION_GROUP32_VAR6: return "group32_var6";
6522 case DNP3_EVENT_ANALOG_INPUT_VARIATION_GROUP32_VAR7: return "group32_var7";
6523 case DNP3_EVENT_ANALOG_INPUT_VARIATION_GROUP32_VAR8: return "group32_var8";
6524 default: return "unknown event_analog_input_variation value";
6525 }
6526}
6527
6529
6532{
6538 double deadband;
6540
6547{
6548 dnp3_analog_input_config_t _return_value = {
6549 static_variation,
6550 event_variation,
6551 deadband
6552 };
6553 return _return_value;
6554}
6555
6565{
6566 dnp3_analog_input_config_t _return_value = {
6569 0
6570 };
6571 return _return_value;
6572}
6573
6574
6582
6588
6595
6602
6609
6612{
6622
6627{
6628 switch (value)
6629 {
6634 default: return "unknown static_analog_output_status_variation value";
6635 }
6636}
6637
6640{
6658
6663{
6664 switch (value)
6665 {
6674 default: return "unknown event_analog_output_status_variation value";
6675 }
6676}
6677
6679
6682{
6688 double deadband;
6690
6697{
6698 dnp3_analog_output_status_config_t _return_value = {
6699 static_variation,
6700 event_variation,
6701 deadband
6702 };
6703 return _return_value;
6704}
6705
6715{
6716 dnp3_analog_output_status_config_t _return_value = {
6719 0
6720 };
6721 return _return_value;
6722}
6723
6724
6732
6738
6745
6752
6759
6762
6766
6770
6775
6776
6782bool dnp3_database_add_octet_string(dnp3_database_t* instance, uint16_t index, dnp3_event_class_t point_class);
6783
6789
6797
6805
6808{
6820
6825{
6826 switch (value)
6827 {
6828 case DNP3_ATTR_DEF_ERROR_OK: return "ok";
6829 case DNP3_ATTR_DEF_ERROR_ALREADY_DEFINED: return "already_defined";
6830 case DNP3_ATTR_DEF_ERROR_RESERVED_VARIATION: return "reserved_variation";
6831 case DNP3_ATTR_DEF_ERROR_BAD_TYPE: return "bad_type";
6832 case DNP3_ATTR_DEF_ERROR_NOT_WRITABLE: return "not_writable";
6833 default: return "unknown attr_def_error value";
6834 }
6835}
6836
6844dnp3_attr_def_error_t dnp3_database_define_string_attr(dnp3_database_t* instance, uint8_t set, bool writable, uint8_t variation, const char* value);
6845
6853dnp3_attr_def_error_t dnp3_database_define_float_attr(dnp3_database_t* instance, uint8_t set, bool writable, uint8_t variation, float value);
6854
6862dnp3_attr_def_error_t dnp3_database_define_double_attr(dnp3_database_t* instance, uint8_t set, bool writable, uint8_t variation, double value);
6863
6871dnp3_attr_def_error_t dnp3_database_define_uint_attr(dnp3_database_t* instance, uint8_t set, bool writable, uint8_t variation, uint32_t value);
6872
6880dnp3_attr_def_error_t dnp3_database_define_int_attr(dnp3_database_t* instance, uint8_t set, bool writable, uint8_t variation, int32_t value);
6881
6889dnp3_attr_def_error_t dnp3_database_define_time_attr(dnp3_database_t* instance, uint8_t set, bool writable, uint8_t variation, uint64_t value);
6890
6898dnp3_attr_def_error_t dnp3_database_define_bool_attr(dnp3_database_t* instance, uint8_t set, bool writable, uint8_t variation, bool value);
6899
6900
6903{
6904
6908 void (*execute)(dnp3_database_t*, void*);
6911 void (*on_destroy)(void* arg);
6913 void* ctx;
6915
6920
6925
6926
6928
6933{
6935 uint16_t max_binary;
6941 uint16_t max_counter;
6945 uint16_t max_analog;
6951
6962static 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)
6963{
6964 dnp3_event_buffer_config_t _return_value = {
6965 max_binary,
6966 max_double_bit_binary,
6967 max_binary_output_status,
6968 max_counter,
6969 max_frozen_counter,
6970 max_analog,
6971 max_analog_output_status,
6972 max_octet_string
6973 };
6974 return _return_value;
6975}
6976
6991{
6992 dnp3_event_buffer_config_t _return_value = {
6993 0,
6994 0,
6995 0,
6996 0,
6997 0,
6998 0,
6999 0,
7000 0
7001 };
7002 return _return_value;
7003}
7004
7005
7007
7010{
7030
7045{
7046 dnp3_class_zero_config_t _return_value = {
7047 true,
7048 true,
7049 true,
7050 true,
7051 true,
7052 true,
7053 true,
7054 false
7055 };
7056 return _return_value;
7057}
7058
7059
7061
7064{
7076
7087{
7088 dnp3_outstation_features_t _return_value = {
7089 false,
7090 true,
7091 true,
7092 false
7093 };
7094 return _return_value;
7095}
7096
7097
7099
7102{
7150
7172static dnp3_outstation_config_t dnp3_outstation_config_init(uint16_t outstation_address, uint16_t master_address, dnp3_event_buffer_config_t event_buffer_config)
7173{
7174 dnp3_outstation_config_t _return_value = {
7175 outstation_address,
7176 master_address,
7177 event_buffer_config,
7178 2048,
7179 2048,
7180 2048,
7182 5000,
7183 5000,
7185 4294967295,
7186 5000,
7187 60000,
7188 64,
7189 65535,
7191 };
7192 return _return_value;
7193}
7194
7195
7198{
7206
7211{
7212 switch (value)
7213 {
7214 case DNP3_RESTART_DELAY_TYPE_NOT_SUPPORTED: return "not_supported";
7215 case DNP3_RESTART_DELAY_TYPE_SECONDS: return "seconds";
7216 case DNP3_RESTART_DELAY_TYPE_MILLI_SECONDS: return "milli_seconds";
7217 default: return "unknown restart_delay_type value";
7218 }
7219}
7220
7222
7227{
7231 uint16_t value;
7233
7242{
7243 dnp3_restart_delay_t _return_value = {
7245 0
7246 };
7247 return _return_value;
7248}
7249
7258{
7259 dnp3_restart_delay_t _return_value = {
7261 value
7262 };
7263 return _return_value;
7264}
7265
7274{
7275 dnp3_restart_delay_t _return_value = {
7277 value
7278 };
7279 return _return_value;
7280}
7281
7282
7285{
7293
7298{
7299 switch (value)
7300 {
7301 case DNP3_WRITE_TIME_RESULT_OK: return "ok";
7302 case DNP3_WRITE_TIME_RESULT_PARAMETER_ERROR: return "parameter_error";
7303 case DNP3_WRITE_TIME_RESULT_NOT_SUPPORTED: return "not_supported";
7304 default: return "unknown write_time_result value";
7305 }
7306}
7307
7310{
7316
7321{
7322 switch (value)
7323 {
7324 case DNP3_FREEZE_TYPE_IMMEDIATE_FREEZE: return "immediate_freeze";
7325 case DNP3_FREEZE_TYPE_FREEZE_AND_CLEAR: return "freeze_and_clear";
7326 default: return "unknown freeze_type value";
7327 }
7328}
7329
7332{
7340
7345{
7346 switch (value)
7347 {
7348 case DNP3_FREEZE_RESULT_OK: return "ok";
7349 case DNP3_FREEZE_RESULT_PARAMETER_ERROR: return "parameter_error";
7350 case DNP3_FREEZE_RESULT_NOT_SUPPORTED: return "not_supported";
7351 default: return "unknown freeze_result value";
7352 }
7353}
7354
7356
7359{
7369
7380{
7381 dnp3_application_iin_t _return_value = {
7382 false,
7383 false,
7384 false,
7385 false
7386 };
7387 return _return_value;
7388}
7389
7390
7392
7395{
7397 uint32_t num_class_1;
7399 uint32_t num_class_2;
7401 uint32_t num_class_3;
7403
7404
7406
7408typedef struct dnp3_type_count_t
7409{
7417 uint32_t num_counter;
7421 uint32_t num_analog;
7427
7428
7430
7433{
7439
7440
7443{
7444
7454 uint16_t (*get_processing_delay_ms)(void*);
7455
7461
7466
7473
7480
7487
7497
7506
7517 dnp3_freeze_result_t (*freeze_counters_range_at_time)(uint16_t, uint16_t, dnp3_database_handle_t*, uint64_t, uint32_t, void*);
7518
7533
7537
7546 void (*write_analog_dead_band)(uint16_t, double, void*);
7547
7553
7561 bool (*write_string_attr)(uint8_t, uint8_t, dnp3_string_attr_t, const char*, void*);
7562
7570 bool (*write_float_attr)(uint8_t, uint8_t, dnp3_float_attr_t, float, void*);
7571
7579 bool (*write_double_attr)(uint8_t, uint8_t, dnp3_float_attr_t, double, void*);
7580
7588 bool (*write_uint_attr)(uint8_t, uint8_t, dnp3_uint_attr_t, uint32_t, void*);
7589
7597 bool (*write_int_attr)(uint8_t, uint8_t, dnp3_int_attr_t, int32_t, void*);
7598
7607
7616
7624 bool (*write_time_attr)(uint8_t, uint8_t, dnp3_time_attr_t, uint64_t, void*);
7625
7628 void (*begin_confirm)(void*);
7629
7633 void (*event_cleared)(uint64_t, void*);
7634
7641 void (*on_destroy)(void* arg);
7643 void* ctx;
7645
7647
7650{
7656
7657
7660{
7670
7675{
7676 switch (value)
7677 {
7678 case DNP3_BROADCAST_ACTION_PROCESSED: return "processed";
7679 case DNP3_BROADCAST_ACTION_IGNORED_BY_CONFIGURATION: return "ignored_by_configuration";
7680 case DNP3_BROADCAST_ACTION_BAD_OBJECT_HEADERS: return "bad_object_headers";
7681 case DNP3_BROADCAST_ACTION_UNSUPPORTED_FUNCTION: return "unsupported_function";
7682 default: return "unknown broadcast_action value";
7683 }
7684}
7685
7690{
7691
7696
7702
7706 void (*enter_solicited_confirm_wait)(uint8_t, void*);
7707
7711 void (*solicited_confirm_timeout)(uint8_t, void*);
7712
7716 void (*solicited_confirm_received)(uint8_t, void*);
7717
7721
7726 void (*wrong_solicited_confirm_seq)(uint8_t, uint8_t, void*);
7727
7732 void (*unexpected_confirm)(bool, uint8_t, void*);
7733
7737 void (*enter_unsolicited_confirm_wait)(uint8_t, void*);
7738
7743 void (*unsolicited_confirm_timeout)(uint8_t, bool, void*);
7744
7748 void (*unsolicited_confirmed)(uint8_t, void*);
7749
7752 void (*clear_restart_iin)(void*);
7755 void (*on_destroy)(void* arg);
7757 void* ctx;
7759
7762{
7770
7775{
7776 switch (value)
7777 {
7778 case DNP3_OPERATE_TYPE_SELECT_BEFORE_OPERATE: return "select_before_operate";
7779 case DNP3_OPERATE_TYPE_DIRECT_OPERATE: return "direct_operate";
7780 case DNP3_OPERATE_TYPE_DIRECT_OPERATE_NO_ACK: return "direct_operate_no_ack";
7781 default: return "unknown operate_type value";
7782 }
7783}
7784
7787{
7788
7791 void (*begin_fragment)(void*);
7792
7797
7809
7818
7830
7839
7851
7860
7872
7881
7893
7904 void (*on_destroy)(void* arg);
7906 void* ctx;
7908
7911{
7917
7922{
7923 switch (value)
7924 {
7925 case DNP3_CONNECTION_STATE_CONNECTED: return "connected";
7926 case DNP3_CONNECTION_STATE_DISCONNECTED: return "disconnected";
7927 default: return "unknown connection_state value";
7928 }
7929}
7930
7933{
7934
7941 void (*on_destroy)(void* arg);
7943 void* ctx;
7945
7950
7965
7981
7997
8010
8024
8026
8029{
8031 const char* local_endpoint;
8033 const char* remote_endpoint;
8040 uint64_t retry_delay;
8042
8053static dnp3_outstation_udp_config_t dnp3_outstation_udp_config_init(const char* local_endpoint, const char* remote_endpoint)
8054{
8055 dnp3_outstation_udp_config_t _return_value = {
8056 local_endpoint,
8057 remote_endpoint,
8060 5000
8061 };
8062 return _return_value;
8063}
8064
8065
8076
8082
8087
8093
8098
8103
8104
8109
8113
8123
8129
8133
8134
8136
8139{
8143 const char* dns_name;
8145 const char* peer_cert_path;
8147 const char* local_cert_path;
8149 const char* private_key_path;
8155 const char* password;
8163
8177static dnp3_tls_server_config_t dnp3_tls_server_config_init(const char* dns_name, const char* peer_cert_path, const char* local_cert_path, const char* private_key_path, const char* password)
8178{
8179 dnp3_tls_server_config_t _return_value = {
8180 dns_name,
8181 peer_cert_path,
8182 local_cert_path,
8183 private_key_path,
8184 password,
8187 false
8188 };
8189 return _return_value;
8190}
8191
8192
8199
8209
8220
8236
8241
8245
8246
8249const char* dnp3_version();
8250
8251#ifdef __cplusplus
8252}
8253#endif
static dnp3_outstation_udp_config_t dnp3_outstation_udp_config_init(const char *local_endpoint, const char *remote_endpoint)
Initialize the configuration with default settings for unspecified parameter.
Definition: dnp3.h:8053
dnp3_param_error_t dnp3_database_get_counter(dnp3_database_t *instance, uint16_t index, dnp3_counter_t *out)
Get a Counter point.
struct dnp3_counter_iterator_t dnp3_counter_iterator_t
Iterator of counter.
Definition: dnp3.h:966
dnp3_double_bit_t
Double-bit binary input value.
Definition: dnp3.h:780
@ DNP3_DOUBLE_BIT_DETERMINED_OFF
Determined to be OFF.
Definition: dnp3.h:784
@ DNP3_DOUBLE_BIT_DETERMINED_ON
Determined to be ON.
Definition: dnp3.h:786
@ DNP3_DOUBLE_BIT_INTERMEDIATE
Transition between conditions.
Definition: dnp3.h:782
@ DNP3_DOUBLE_BIT_INDETERMINATE
Abnormal or custom condition.
Definition: dnp3.h:788
void dnp3_request_add_one_byte_range_header(dnp3_request_t *instance, dnp3_variation_t variation, uint8_t start, uint8_t stop)
Add a one-byte start/stop header for use with a READ request.
static const char * dnp3_static_binary_output_status_variation_to_string(dnp3_static_binary_output_status_variation_t value)
Converts the enum to a string.
Definition: dnp3.h:6064
static const char * dnp3_update_result_to_string(dnp3_update_result_t value)
Converts the enum to a string.
Definition: dnp3.h:5658
static const char * dnp3_update_flags_type_to_string(dnp3_update_flags_type_t value)
Converts the enum to a string.
Definition: dnp3.h:5779
static const char * dnp3_link_status_error_to_string(dnp3_link_status_error_t value)
Converts the enum to a string.
Definition: dnp3.h:5438
dnp3_param_error_t dnp3_outstation_server_add_outstation(dnp3_outstation_server_t *instance, dnp3_outstation_config_t 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_link_status_error_t
Errors that can occur during a manually initiated link status check. See dnp3_master_channel_check_li...
Definition: dnp3.h:5410
@ DNP3_LINK_STATUS_ERROR_TOO_MANY_REQUESTS
too many user requests queued
Definition: dnp3.h:5416
@ DNP3_LINK_STATUS_ERROR_SHUTDOWN
master was shutdown
Definition: dnp3.h:5428
@ DNP3_LINK_STATUS_ERROR_RESPONSE_TIMEOUT
timeout occurred before receiving a response
Definition: dnp3.h:5422
@ DNP3_LINK_STATUS_ERROR_BAD_RESPONSE
response was malformed or contained object headers
Definition: dnp3.h:5420
@ DNP3_LINK_STATUS_ERROR_ASSOCIATION_REMOVED
association was removed mid-task
Definition: dnp3.h:5430
@ DNP3_LINK_STATUS_ERROR_BAD_ENCODING
request data could not be encoded
Definition: dnp3.h:5432
@ DNP3_LINK_STATUS_ERROR_NO_CONNECTION
no connection
Definition: dnp3.h:5426
@ DNP3_LINK_STATUS_ERROR_UNEXPECTED_RESPONSE
There was activity on the link, but it wasn't a LINK_STATUS.
Definition: dnp3.h:5414
@ DNP3_LINK_STATUS_ERROR_OK
Success, i.e. no error occurred.
Definition: dnp3.h:5412
@ DNP3_LINK_STATUS_ERROR_WRITE_ERROR
insufficient buffer space to serialize the request
Definition: dnp3.h:5424
@ DNP3_LINK_STATUS_ERROR_IIN_ERROR
outstation returned an IIN.2 error bit
Definition: dnp3.h:5418
dnp3_param_error_t dnp3_runtime_create(dnp3_runtime_config_t config, dnp3_runtime_t **out)
Creates a new runtime for running the protocol stack.
struct dnp3_request_t dnp3_request_t
Custom request.
Definition: dnp3.h:4500
struct dnp3_file_info_iterator_t dnp3_file_info_iterator_t
Iterator of file_info.
Definition: dnp3.h:5360
static dnp3_permissions_t dnp3_permissions_none()
Permissions with nothing enabled.
Definition: dnp3.h:2995
static const char * dnp3_op_type_to_string(dnp3_op_type_t value)
Converts the enum to a string.
Definition: dnp3.h:528
static const char * dnp3_function_code_to_string(dnp3_function_code_t value)
Converts the enum to a string.
Definition: dnp3.h:2846
dnp3_restart_error_t
Errors that can occur during a cold/warm restart operation.
Definition: dnp3.h:5097
@ DNP3_RESTART_ERROR_OK
Success, i.e. no error occurred.
Definition: dnp3.h:5099
@ DNP3_RESTART_ERROR_NO_CONNECTION
no connection
Definition: dnp3.h:5111
@ DNP3_RESTART_ERROR_IIN_ERROR
outstation returned an IIN.2 error bit
Definition: dnp3.h:5103
@ DNP3_RESTART_ERROR_BAD_ENCODING
request data could not be encoded
Definition: dnp3.h:5117
@ DNP3_RESTART_ERROR_RESPONSE_TIMEOUT
timeout occurred before receiving a response
Definition: dnp3.h:5107
@ DNP3_RESTART_ERROR_WRITE_ERROR
insufficient buffer space to serialize the request
Definition: dnp3.h:5109
@ DNP3_RESTART_ERROR_SHUTDOWN
master was shutdown
Definition: dnp3.h:5113
@ DNP3_RESTART_ERROR_BAD_RESPONSE
response was malformed or contained object headers
Definition: dnp3.h:5105
@ DNP3_RESTART_ERROR_ASSOCIATION_REMOVED
association was removed mid-task
Definition: dnp3.h:5115
@ DNP3_RESTART_ERROR_TOO_MANY_REQUESTS
too many user requests queued
Definition: dnp3.h:5101
dnp3_attr_def_error_t dnp3_database_define_time_attr(dnp3_database_t *instance, uint8_t set, bool writable, uint8_t variation, uint64_t value)
Define a DNP3 time attribute.
dnp3_byte_collection_t * dnp3_byte_collection_create(uint32_t reserve_size)
Creates an instance of the collection.
bool dnp3_database_update_binary_output_status(dnp3_database_t *instance, dnp3_binary_output_status_t value, dnp3_update_options_t options)
Update a Binary Output Status point.
static dnp3_control_code_t dnp3_control_code_from_tcc_and_op_type(dnp3_trip_close_code_t tcc, dnp3_op_type_t op_type)
Initialize a dnp3_control_code_t instance from a dnp3_trip_close_code_t and a dnp3_op_type_t.
Definition: dnp3.h:605
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)
Fully construct dnp3_event_buffer_config_t specifying the value of each field.
Definition: dnp3.h:6962
void dnp3_command_set_add_g41_v2_u8(dnp3_command_set_t *instance, uint8_t idx, int16_t value)
Add a Analog Output command (signed 16-bit integer) with 1-byte prefix index.
struct dnp3_master_channel_t dnp3_master_channel_t
Represents a communication channel for a master station.
Definition: dnp3.h:3799
static const char * dnp3_static_analog_input_variation_to_string(dnp3_static_analog_input_variation_t value)
Converts the enum to a string.
Definition: dnp3.h:6474
static const char * dnp3_double_bit_to_string(dnp3_double_bit_t value)
Converts the enum to a string.
Definition: dnp3.h:794
dnp3_analog_output_status_t * dnp3_analog_output_status_iterator_next(dnp3_analog_output_status_iterator_t *iter)
returns a pointer to the next value or NULL
static const char * dnp3_event_class_to_string(dnp3_event_class_t value)
Converts the enum to a string.
Definition: dnp3.h:5630
static dnp3_outstation_features_t dnp3_outstation_features_init()
Initialize to default values.
Definition: dnp3.h:7086
static const char * dnp3_time_sync_error_to_string(dnp3_time_sync_error_t value)
Converts the enum to a string.
Definition: dnp3.h:5042
struct dnp3_outstation_t dnp3_outstation_t
Outstation handle.
Definition: dnp3.h:7949
bool dnp3_database_add_octet_string(dnp3_database_t *instance, uint16_t index, dnp3_event_class_t point_class)
Add a new Octet String point.
static const char * dnp3_flow_control_to_string(dnp3_flow_control_t value)
Converts the enum to a string.
Definition: dnp3.h:2652
void dnp3_write_dead_band_request_add_g34v2_u8(dnp3_write_dead_band_request_t *instance, uint8_t index, uint32_t dead_band)
Add a g34v2 (unsigned 32-bit) dead-band with 8-bit indexing to the request.
dnp3_variation_t
Group/Variation.
Definition: dnp3.h:2159
@ DNP3_VARIATION_GROUP30_VAR6
Analog Input - Double-precision floating point with flags.
Definition: dnp3.h:2267
@ DNP3_VARIATION_GROUP33_VAR1
Frozen Analog Input Event - 32-bit without time.
Definition: dnp3.h:2307
@ DNP3_VARIATION_GROUP42_VAR4
Analog Output Event - 16-bit with time.
Definition: dnp3.h:2357
@ DNP3_VARIATION_GROUP70_VAR2
File control - authentication.
Definition: dnp3.h:2407
@ DNP3_VARIATION_GROUP11_VAR2
Binary Output Event - With time.
Definition: dnp3.h:2203
@ DNP3_VARIATION_GROUP70_VAR3
File control - file command.
Definition: dnp3.h:2409
@ DNP3_VARIATION_GROUP1_VAR1
Binary Input - Packed format.
Definition: dnp3.h:2167
@ DNP3_VARIATION_GROUP20_VAR6
Counter - 16-bit without flag.
Definition: dnp3.h:2219
@ DNP3_VARIATION_GROUP40_VAR3
Analog Output Status - Single-precision floating point with flags.
Definition: dnp3.h:2337
@ DNP3_VARIATION_GROUP102_VAR0
Unsigned Integer - Default Variation.
Definition: dnp3.h:2423
@ DNP3_VARIATION_GROUP23_VAR0
Frozen Counter Event - Default variation.
Definition: dnp3.h:2245
@ DNP3_VARIATION_GROUP1_VAR2
Binary Input - With flags.
Definition: dnp3.h:2169
@ DNP3_VARIATION_GROUP43_VAR1
Analog Output Command Event - 32-bit without time.
Definition: dnp3.h:2367
@ DNP3_VARIATION_GROUP43_VAR5
Analog Output Command Event - Single-precision floating point without time.
Definition: dnp3.h:2375
@ DNP3_VARIATION_GROUP41_VAR4
Analog Output - Double-precision floating point.
Definition: dnp3.h:2347
@ DNP3_VARIATION_GROUP22_VAR1
Counter Event - 32-bit with flags.
Definition: dnp3.h:2237
@ DNP3_VARIATION_GROUP32_VAR0
Analog Input Event - Default variation.
Definition: dnp3.h:2287
@ DNP3_VARIATION_GROUP3_VAR2
Double-bit Binary Input - With flags.
Definition: dnp3.h:2183
@ DNP3_VARIATION_GROUP111
Octet String Event.
Definition: dnp3.h:2429
@ DNP3_VARIATION_GROUP21_VAR1
Frozen Counter - 32-bit with flags.
Definition: dnp3.h:2223
@ DNP3_VARIATION_GROUP60_VAR2
Class objects - Class 1 data.
Definition: dnp3.h:2401
@ DNP3_VARIATION_GROUP11_VAR1
Binary Output Event - Without time.
Definition: dnp3.h:2201
@ DNP3_VARIATION_GROUP33_VAR2
Frozen Analog Input Event - 16-bit without time.
Definition: dnp3.h:2309
@ DNP3_VARIATION_GROUP2_VAR1
Binary Input Event - Without time.
Definition: dnp3.h:2173
@ DNP3_VARIATION_GROUP70_VAR6
File control - file transport status.
Definition: dnp3.h:2415
@ DNP3_VARIATION_GROUP30_VAR1
Analog Input - 32-bit with flags.
Definition: dnp3.h:2257
@ DNP3_VARIATION_GROUP43_VAR2
Analog Output Command Event - 16-bit without time.
Definition: dnp3.h:2369
@ DNP3_VARIATION_GROUP40_VAR4
Analog Output Status - Double-precision floating point with flags.
Definition: dnp3.h:2339
@ DNP3_VARIATION_GROUP32_VAR8
Analog Input Event - Double-precision floating point with time.
Definition: dnp3.h:2303
@ DNP3_VARIATION_GROUP23_VAR1
Frozen Counter Event - 32-bit with flags.
Definition: dnp3.h:2247
@ DNP3_VARIATION_GROUP11_VAR0
Binary Output Event - Default variation.
Definition: dnp3.h:2199
@ DNP3_VARIATION_GROUP31_VAR1
Frozen Analog Input - 32-bit with flags.
Definition: dnp3.h:2271
@ DNP3_VARIATION_GROUP42_VAR6
Analog Output Event - Double-precision floating point without time.
Definition: dnp3.h:2361
@ DNP3_VARIATION_GROUP3_VAR1
Double-bit Binary Input - Packed format.
Definition: dnp3.h:2181
@ DNP3_VARIATION_GROUP102_VAR1
Unsigned Integer - 8-bit.
Definition: dnp3.h:2425
@ DNP3_VARIATION_GROUP60_VAR1
Class objects - Class 0 data.
Definition: dnp3.h:2399
@ DNP3_VARIATION_GROUP70_VAR7
File control - file descriptor.
Definition: dnp3.h:2417
@ DNP3_VARIATION_GROUP31_VAR7
Frozen Analog Input - Single-precision floating point with flags.
Definition: dnp3.h:2283
@ DNP3_VARIATION_GROUP33_VAR3
Frozen Analog Input Event - 32-bit with time.
Definition: dnp3.h:2311
@ DNP3_VARIATION_GROUP23_VAR2
Frozen Counter Event - 16-bit with flags.
Definition: dnp3.h:2249
@ DNP3_VARIATION_GROUP40_VAR0
Analog Output Status - Default variation.
Definition: dnp3.h:2331
@ DNP3_VARIATION_GROUP52_VAR2
Time delay - Fine.
Definition: dnp3.h:2397
@ DNP3_VARIATION_GROUP42_VAR8
Analog Output Event - Double-precision floating point with time.
Definition: dnp3.h:2365
@ DNP3_VARIATION_GROUP30_VAR5
Analog Input - Single-precision floating point with flags.
Definition: dnp3.h:2265
@ DNP3_VARIATION_GROUP1_VAR0
Binary Input - Default variation.
Definition: dnp3.h:2165
@ DNP3_VARIATION_GROUP31_VAR4
Frozen Analog Input - 16-bit with flags and time-of-freeze.
Definition: dnp3.h:2277
@ DNP3_VARIATION_GROUP40_VAR1
Analog Output Status - 32-bit with flags.
Definition: dnp3.h:2333
@ DNP3_VARIATION_GROUP21_VAR2
Frozen Counter - 16-bit with flags.
Definition: dnp3.h:2225
@ DNP3_VARIATION_GROUP33_VAR0
Frozen Analog Input Event - Default variation.
Definition: dnp3.h:2305
@ DNP3_VARIATION_GROUP34_VAR3
Analog Input Reporting Deadband - Single-precision floating point.
Definition: dnp3.h:2329
@ DNP3_VARIATION_GROUP40_VAR2
Analog Output Status - 16-bit with flags.
Definition: dnp3.h:2335
@ DNP3_VARIATION_GROUP20_VAR0
Counter - Default variation.
Definition: dnp3.h:2211
@ DNP3_VARIATION_GROUP4_VAR3
Double-bit Binary Input Event - With relative time.
Definition: dnp3.h:2191
@ DNP3_VARIATION_GROUP22_VAR2
Counter Event - 16-bit with flags.
Definition: dnp3.h:2239
@ DNP3_VARIATION_GROUP32_VAR6
Analog Input Event - Double-precision floating point without time.
Definition: dnp3.h:2299
@ DNP3_VARIATION_GROUP0_VAR254
Device Attributes - Non-Specific All Attributes Request.
Definition: dnp3.h:2163
@ DNP3_VARIATION_GROUP42_VAR0
Analog Output Event - Default variation.
Definition: dnp3.h:2349
@ DNP3_VARIATION_GROUP42_VAR2
Analog Output Event - 16-bit without time.
Definition: dnp3.h:2353
@ DNP3_VARIATION_GROUP43_VAR8
Analog Output Command Event - Double-precision floating point with time.
Definition: dnp3.h:2381
@ DNP3_VARIATION_GROUP30_VAR2
Analog Input - 16-bit with flags.
Definition: dnp3.h:2259
@ DNP3_VARIATION_GROUP70_VAR4
File control - file command status.
Definition: dnp3.h:2411
@ DNP3_VARIATION_GROUP22_VAR0
Counter Event - Default variation.
Definition: dnp3.h:2235
@ DNP3_VARIATION_GROUP50_VAR2
Time and Date - Absolute time and interval.
Definition: dnp3.h:2385
@ DNP3_VARIATION_GROUP30_VAR3
Analog Input - 32-bit without flag.
Definition: dnp3.h:2261
@ DNP3_VARIATION_GROUP0
Device Attributes - Variations 0 to 253 and 255.
Definition: dnp3.h:2161
@ DNP3_VARIATION_GROUP31_VAR0
Frozen Analog Input - Default variation.
Definition: dnp3.h:2269
@ DNP3_VARIATION_GROUP41_VAR2
Analog Output - 16-bit.
Definition: dnp3.h:2343
@ DNP3_VARIATION_GROUP32_VAR5
Analog Input Event - Single-precision floating point without time.
Definition: dnp3.h:2297
@ DNP3_VARIATION_GROUP34_VAR2
Analog Input Reporting Deadband - 32-bit.
Definition: dnp3.h:2327
@ DNP3_VARIATION_GROUP70_VAR8
File control - file specification string.
Definition: dnp3.h:2419
@ DNP3_VARIATION_GROUP20_VAR2
Counter - 16-bit with flags.
Definition: dnp3.h:2215
@ DNP3_VARIATION_GROUP70_VAR5
File control - file transport.
Definition: dnp3.h:2413
@ DNP3_VARIATION_GROUP12_VAR1
Binary Output Command - Control Relay Output Block.
Definition: dnp3.h:2205
@ DNP3_VARIATION_GROUP41_VAR1
Analog Output - 32-bit.
Definition: dnp3.h:2341
@ DNP3_VARIATION_GROUP43_VAR3
Analog Output Command Event - 32-bit with time.
Definition: dnp3.h:2371
@ DNP3_VARIATION_GROUP43_VAR7
Analog Output Command Event - Single-precision floating point with time.
Definition: dnp3.h:2379
@ DNP3_VARIATION_GROUP33_VAR5
Frozen Analog Input Event - Single-precision floating point without time.
Definition: dnp3.h:2315
@ DNP3_VARIATION_GROUP33_VAR4
Frozen Analog Input Event - 16-bit with time.
Definition: dnp3.h:2313
@ DNP3_VARIATION_GROUP50_VAR1
Time and Date - Absolute time.
Definition: dnp3.h:2383
@ DNP3_VARIATION_GROUP13_VAR2
Binary Output Command Event - command status with time.
Definition: dnp3.h:2209
@ DNP3_VARIATION_GROUP52_VAR1
Time delay - Coarse.
Definition: dnp3.h:2395
@ DNP3_VARIATION_GROUP32_VAR3
Analog Input Event - 32-bit with time.
Definition: dnp3.h:2293
@ DNP3_VARIATION_GROUP4_VAR2
Double-bit Binary Input Event - With absolute time.
Definition: dnp3.h:2189
@ DNP3_VARIATION_GROUP21_VAR0
Frozen Counter - Default variation.
Definition: dnp3.h:2221
@ DNP3_VARIATION_GROUP23_VAR6
Frozen Counter Event - 16-bit with flags and time.
Definition: dnp3.h:2253
@ DNP3_VARIATION_GROUP43_VAR4
Analog Output Command Event - 16-bit with time.
Definition: dnp3.h:2373
@ DNP3_VARIATION_GROUP110
Octet String.
Definition: dnp3.h:2427
@ DNP3_VARIATION_GROUP43_VAR6
Analog Output Command Event - Double-precision floating point without time.
Definition: dnp3.h:2377
@ DNP3_VARIATION_GROUP42_VAR7
Analog Output Event - Single-precision floating point with time.
Definition: dnp3.h:2363
@ DNP3_VARIATION_GROUP42_VAR5
Analog Output Event - Single-precision floating point without time.
Definition: dnp3.h:2359
@ DNP3_VARIATION_GROUP21_VAR5
Frozen Counter - 32-bit with flags and time.
Definition: dnp3.h:2227
@ DNP3_VARIATION_GROUP31_VAR5
Frozen Analog Input - 32-bit without flags.
Definition: dnp3.h:2279
@ DNP3_VARIATION_GROUP22_VAR6
Counter Event - 16-bit with flags and time.
Definition: dnp3.h:2243
@ DNP3_VARIATION_GROUP21_VAR6
Frozen Counter - 16-bit with flags and time.
Definition: dnp3.h:2229
@ DNP3_VARIATION_GROUP10_VAR1
Binary Output - Packed format.
Definition: dnp3.h:2195
@ DNP3_VARIATION_GROUP31_VAR3
Frozen Analog Input - 32-bit with flags and time-of-freeze.
Definition: dnp3.h:2275
@ DNP3_VARIATION_GROUP34_VAR1
Analog Input Reporting Deadband - 16-bit.
Definition: dnp3.h:2325
@ DNP3_VARIATION_GROUP22_VAR5
Counter Event - 32-bit with flags and time.
Definition: dnp3.h:2241
@ DNP3_VARIATION_GROUP2_VAR3
Binary Input Event - With relative time.
Definition: dnp3.h:2177
@ DNP3_VARIATION_GROUP33_VAR6
Frozen Analog Input Event - Double-precision floating point without time.
Definition: dnp3.h:2317
@ DNP3_VARIATION_GROUP32_VAR1
Analog Input Event - 32-bit without time.
Definition: dnp3.h:2289
@ DNP3_VARIATION_GROUP32_VAR4
Analog Input Event - 16-bit with time.
Definition: dnp3.h:2295
@ DNP3_VARIATION_GROUP34_VAR0
Analog Input Reporting Deadband - Default variation.
Definition: dnp3.h:2323
@ DNP3_VARIATION_GROUP2_VAR0
Binary Input Event - Default variation.
Definition: dnp3.h:2171
@ DNP3_VARIATION_GROUP21_VAR10
Frozen Counter - 16-bit without flag.
Definition: dnp3.h:2233
@ DNP3_VARIATION_GROUP51_VAR1
Time and date CTO - Absolute time, synchronized.
Definition: dnp3.h:2391
@ DNP3_VARIATION_GROUP20_VAR5
Counter - 32-bit without flag.
Definition: dnp3.h:2217
@ DNP3_VARIATION_GROUP4_VAR0
Double-bit Binary Input Event - Default variation.
Definition: dnp3.h:2185
@ DNP3_VARIATION_GROUP32_VAR2
Analog Input Event - 16-bit without time.
Definition: dnp3.h:2291
@ DNP3_VARIATION_GROUP10_VAR0
Binary Output - Default variation.
Definition: dnp3.h:2193
@ DNP3_VARIATION_GROUP33_VAR8
Frozen Analog Input Event - Double-precision floating point with time.
Definition: dnp3.h:2321
@ DNP3_VARIATION_GROUP31_VAR2
Frozen Analog Input - 16-bit with flags.
Definition: dnp3.h:2273
@ DNP3_VARIATION_GROUP50_VAR4
Time and Date - Indexed absolute time and long interval.
Definition: dnp3.h:2389
@ DNP3_VARIATION_GROUP60_VAR3
Class objects - Class 2 data.
Definition: dnp3.h:2403
@ DNP3_VARIATION_GROUP80_VAR1
Internal Indications - Packed format.
Definition: dnp3.h:2421
@ DNP3_VARIATION_GROUP30_VAR4
Analog Input - 16-bit without flag.
Definition: dnp3.h:2263
@ DNP3_VARIATION_GROUP51_VAR2
Time and date CTO - Absolute time, unsynchronized.
Definition: dnp3.h:2393
@ DNP3_VARIATION_GROUP32_VAR7
Analog Input Event - Single-precision floating point with time.
Definition: dnp3.h:2301
@ DNP3_VARIATION_GROUP3_VAR0
Double-bit Binary Input - Default variation.
Definition: dnp3.h:2179
@ DNP3_VARIATION_GROUP42_VAR3
Analog Output Event - 32-bit with time.
Definition: dnp3.h:2355
@ DNP3_VARIATION_GROUP20_VAR1
Counter - 32-bit with flags.
Definition: dnp3.h:2213
@ DNP3_VARIATION_GROUP10_VAR2
Binary Output - With flags.
Definition: dnp3.h:2197
@ DNP3_VARIATION_GROUP31_VAR8
Frozen Analog Input - Double-precision floating point with flags.
Definition: dnp3.h:2285
@ DNP3_VARIATION_GROUP31_VAR6
Frozen Analog Input - 16-bit without flags.
Definition: dnp3.h:2281
@ DNP3_VARIATION_GROUP2_VAR2
Binary Input Event - With absolute time.
Definition: dnp3.h:2175
@ DNP3_VARIATION_GROUP23_VAR5
Frozen Counter Event - 32-bit with flags and time.
Definition: dnp3.h:2251
@ DNP3_VARIATION_GROUP41_VAR3
Analog Output - Single-precision floating point.
Definition: dnp3.h:2345
@ DNP3_VARIATION_GROUP33_VAR7
Frozen Analog Input Event - Single-precision floating point with time.
Definition: dnp3.h:2319
@ DNP3_VARIATION_GROUP13_VAR1
Binary Output Command Event - command status without time.
Definition: dnp3.h:2207
@ DNP3_VARIATION_GROUP42_VAR1
Analog Output Event - 32-bit without time.
Definition: dnp3.h:2351
@ DNP3_VARIATION_GROUP21_VAR9
Frozen Counter - 32-bit without flag.
Definition: dnp3.h:2231
@ DNP3_VARIATION_GROUP50_VAR3
Time and Date - Absolute time at last recorded time.
Definition: dnp3.h:2387
@ DNP3_VARIATION_GROUP30_VAR0
Analog Input - Default variation.
Definition: dnp3.h:2255
@ DNP3_VARIATION_GROUP4_VAR1
Double-bit Binary Input Event - Without time.
Definition: dnp3.h:2187
@ DNP3_VARIATION_GROUP60_VAR4
Class objects - Class 3 data.
Definition: dnp3.h:2405
void dnp3_write_dead_band_request_add_g34v2_u16(dnp3_write_dead_band_request_t *instance, uint16_t index, uint32_t dead_band)
Add a g34v2 (unsigned 32-bit) dead-band with 16-bit indexing to the request.
static dnp3_tls_server_config_t dnp3_tls_server_config_init(const char *dns_name, const char *peer_cert_path, const char *local_cert_path, const char *private_key_path, const char *password)
construct the configuration with defaults
Definition: dnp3.h:8177
void dnp3_request_add_two_byte_limited_count_header(dnp3_request_t *instance, dnp3_variation_t variation, uint16_t count)
Add a two-byte limited count variation header for use with a READ request.
static const char * dnp3_event_analog_output_status_variation_to_string(dnp3_event_analog_output_status_variation_t value)
Converts the enum to a string.
Definition: dnp3.h:6662
static const char * dnp3_phys_decode_level_to_string(dnp3_phys_decode_level_t value)
Converts the enum to a string.
Definition: dnp3.h:344
dnp3_param_error_t dnp3_master_channel_get_file_auth_key(dnp3_master_channel_t *instance, dnp3_association_id_t association, const char *username, const char *password, dnp3_file_auth_callback_t callback)
Obtain a file authentication key.
static dnp3_binary_input_config_t dnp3_binary_input_config_create(dnp3_static_binary_input_variation_t static_variation, dnp3_event_binary_input_variation_t event_variation)
Fully construct dnp3_binary_input_config_t specifying the value of each field.
Definition: dnp3.h:5868
dnp3_attr_def_error_t dnp3_database_define_double_attr(dnp3_database_t *instance, uint8_t set, bool writable, uint8_t variation, double value)
Define a 64-bit floating point attribute.
dnp3_param_error_t dnp3_database_get_frozen_counter(dnp3_database_t *instance, uint16_t index, dnp3_frozen_counter_t *out)
Get a Frozen Counter point.
static dnp3_event_classes_t dnp3_event_classes_all()
Initialize all classes to true.
Definition: dnp3.h:4088
static dnp3_timestamp_t dnp3_timestamp_synchronized_timestamp(uint64_t value)
Creates a synchronized timestamp struct.
Definition: dnp3.h:752
static const char * dnp3_float_attr_to_string(dnp3_float_attr_t value)
Converts the enum to a string.
Definition: dnp3.h:1981
bool dnp3_database_update_analog_input(dnp3_database_t *instance, dnp3_analog_input_t value, dnp3_update_options_t options)
Update a AnalogInput point.
dnp3_restart_delay_type_t
Type of restart delay value. Used by dnp3_restart_delay_t.
Definition: dnp3.h:7198
@ DNP3_RESTART_DELAY_TYPE_NOT_SUPPORTED
Restart mode not supported.
Definition: dnp3.h:7200
@ DNP3_RESTART_DELAY_TYPE_MILLI_SECONDS
Value is in milliseconds (corresponds to g51v2)
Definition: dnp3.h:7204
@ DNP3_RESTART_DELAY_TYPE_SECONDS
Value is in seconds (corresponds to g51v1)
Definition: dnp3.h:7202
void dnp3_request_add_string_attribute(dnp3_request_t *instance, uint8_t variation, uint8_t set, const char *value)
Add a one-byte start/stop header containing for use with a WRITE request.
static const char * dnp3_file_type_to_string(dnp3_file_type_t value)
Converts the enum to a string.
Definition: dnp3.h:2901
void dnp3_master_server_destroy(dnp3_master_server_t *instance)
Shutdown down the server.
static dnp3_restart_delay_t dnp3_restart_delay_not_supported()
RestartDelay indicating that the request is not supported.
Definition: dnp3.h:7241
static const char * dnp3_link_error_mode_to_string(dnp3_link_error_mode_t value)
Converts the enum to a string.
Definition: dnp3.h:2762
dnp3_update_info_t dnp3_database_update_binary_output_status_2(dnp3_database_t *instance, dnp3_binary_output_status_t value, dnp3_update_options_t options)
Update a Binary Output Status point.
static dnp3_analog_output_status_config_t dnp3_analog_output_status_config_create(dnp3_static_analog_output_status_variation_t static_variation, dnp3_event_analog_output_status_variation_t event_variation, double deadband)
Fully construct dnp3_analog_output_status_config_t specifying the value of each field.
Definition: dnp3.h:6696
void dnp3_disable_server_tcp_no_delay()
By default, TCP_NODELAY is set to true for all server TCP/TLS connections. This disables Nagle's algo...
struct dnp3_unsigned_integer_iterator_t dnp3_unsigned_integer_iterator_t
Iterator of unsigned_integer.
Definition: dnp3.h:1298
void dnp3_command_set_add_g41_v4_u16(dnp3_command_set_t *instance, uint16_t idx, double value)
Add a Analog Output command (double-precision float) with 2-byte prefix index.
static dnp3_unsigned_integer_t dnp3_unsigned_integer_init(uint16_t index, uint8_t value)
Fully construct dnp3_unsigned_integer_t specifying the value of each field.
Definition: dnp3.h:1287
dnp3_param_error_t dnp3_outstation_create_tcp_client(dnp3_runtime_t *runtime, dnp3_link_error_mode_t link_error_mode, dnp3_endpoint_list_t *endpoints, dnp3_connect_strategy_t connect_strategy, dnp3_connect_options_t *connect_options, dnp3_outstation_config_t config, dnp3_outstation_application_t application, dnp3_outstation_information_t information, dnp3_control_handler_t control_handler, dnp3_client_state_listener_t listener, dnp3_outstation_t **out)
Create an outstation instance running as a TCP client.
static const char * dnp3_event_analog_input_variation_to_string(dnp3_event_analog_input_variation_t value)
Converts the enum to a string.
Definition: dnp3.h:6512
struct dnp3_analog_output_status_iterator_t dnp3_analog_output_status_iterator_t
Iterator of analog_output_status.
Definition: dnp3.h:1134
dnp3_param_error_t dnp3_master_channel_get_file_info(dnp3_master_channel_t *instance, dnp3_association_id_t association, const char *file_name, dnp3_file_info_callback_t callback)
Asynchronously retrieve information on a particular file.
dnp3_octet_string_value_t * dnp3_octet_string_value_create()
Creates an instance of the collection.
void dnp3_outstation_transaction(dnp3_outstation_t *instance, dnp3_database_transaction_t callback)
Acquire a mutex on the underlying database and apply a set of changes as a transaction.
static dnp3_analog_input_t dnp3_analog_input_init(uint16_t index, double value, dnp3_flags_t flags, dnp3_timestamp_t time)
Fully construct dnp3_analog_input_t specifying the value of each field.
Definition: dnp3.h:1037
dnp3_event_binary_output_status_variation_t
Event binary output status variation.
Definition: dnp3.h:6076
@ DNP3_EVENT_BINARY_OUTPUT_STATUS_VARIATION_GROUP11_VAR2
Binary output event - status with time.
Definition: dnp3.h:6080
@ DNP3_EVENT_BINARY_OUTPUT_STATUS_VARIATION_GROUP11_VAR1
Binary output event - status without time.
Definition: dnp3.h:6078
void dnp3_command_set_add_g41_v2_u16(dnp3_command_set_t *instance, uint16_t idx, int16_t value)
Add a Analog Output command (signed 16-bit integer) with 2-byte prefix index.
dnp3_param_error_t dnp3_outstation_disable(dnp3_outstation_t *instance)
disable communications
static dnp3_double_bit_binary_input_t dnp3_double_bit_binary_input_init(uint16_t index, dnp3_double_bit_t value, dnp3_flags_t flags, dnp3_timestamp_t time)
Fully construct dnp3_double_bit_binary_input_t specifying the value of each field.
Definition: dnp3.h:869
dnp3_event_binary_input_variation_t
Event binary input variation.
Definition: dnp3.h:5830
@ DNP3_EVENT_BINARY_INPUT_VARIATION_GROUP2_VAR2
Binary input event - with absolute time.
Definition: dnp3.h:5834
@ DNP3_EVENT_BINARY_INPUT_VARIATION_GROUP2_VAR3
Binary input event - with relative time.
Definition: dnp3.h:5836
@ DNP3_EVENT_BINARY_INPUT_VARIATION_GROUP2_VAR1
Binary input event - without time.
Definition: dnp3.h:5832
const char * dnp3_version()
Get the version of the library as a string.
dnp3_read_type_t
Describes the source of a read event.
Definition: dnp3.h:3547
@ DNP3_READ_TYPE_UNSOLICITED
Unsolicited message.
Definition: dnp3.h:3551
@ DNP3_READ_TYPE_STARTUP_INTEGRITY
Startup integrity poll.
Definition: dnp3.h:3549
@ DNP3_READ_TYPE_SINGLE_POLL
Single poll requested by the user.
Definition: dnp3.h:3553
@ DNP3_READ_TYPE_PERIODIC_POLL
Periodic poll configured by the user.
Definition: dnp3.h:3555
dnp3_param_error_t dnp3_master_channel_add_poll(dnp3_master_channel_t *instance, dnp3_association_id_t id, dnp3_request_t *request, uint64_t period, dnp3_poll_id_t *out)
Add a periodic poll to an association.
static const char * dnp3_min_tls_version_to_string(dnp3_min_tls_version_t value)
Converts the enum to a string.
Definition: dnp3.h:1432
static const char * dnp3_file_mode_to_string(dnp3_file_mode_t value)
Converts the enum to a string.
Definition: dnp3.h:3187
static const char * dnp3_event_double_bit_binary_input_variation_to_string(dnp3_event_double_bit_binary_input_variation_t value)
Converts the enum to a string.
Definition: dnp3.h:5965
dnp3_uint_attr_t
Enumeration of all the default uint attributes.
Definition: dnp3.h:1744
@ DNP3_UINT_ATTR_UNKNOWN
The attribute variation is not defined or is not part of the default set.
Definition: dnp3.h:1746
@ DNP3_UINT_ATTR_MAX_BINARY_INPUT_INDEX
Variation 238 - Maximum binary input point index.
Definition: dnp3.h:1786
@ DNP3_UINT_ATTR_NUM_BINARY_OUTPUTS
Variation 224 - Number of binary outputs.
Definition: dnp3.h:1772
@ DNP3_UINT_ATTR_NUM_MASTER_DEFINED_DATA_SETS
Variation 214 - Number of master defined data-sets.
Definition: dnp3.h:1756
@ DNP3_UINT_ATTR_NUM_BINARY_INPUT
Variation 239 - Number of binary input points.
Definition: dnp3.h:1788
@ DNP3_UINT_ATTR_MAX_COUNTER_INDEX
Variation 228 - Maximum counter point index.
Definition: dnp3.h:1774
@ DNP3_UINT_ATTR_MAX_ANALOG_OUTPUT_INDEX
Variation 220 - Maximum analog output index.
Definition: dnp3.h:1766
@ DNP3_UINT_ATTR_NUM_SECURITY_STATS_PER_ASSOC
Variation 210 - Number of security statistics per association.
Definition: dnp3.h:1750
@ DNP3_UINT_ATTR_SECURE_AUTH_VERSION
Variation 209 - Secure authentication version.
Definition: dnp3.h:1748
@ DNP3_UINT_ATTR_MAX_BINARY_OUTPUT_PER_REQUEST
Variation 216 - Maximum number of binary outputs per request.
Definition: dnp3.h:1760
@ DNP3_UINT_ATTR_NUM_ANALOG_INPUT
Variation 233 - Number of analog input points.
Definition: dnp3.h:1780
@ DNP3_UINT_ATTR_LOCAL_TIMING_ACCURACY
Variation 217 - Local timing accuracy (microseconds)
Definition: dnp3.h:1762
@ DNP3_UINT_ATTR_NUM_DOUBLE_BIT_BINARY_INPUT
Variation 236 - Number of double-bit binary input points.
Definition: dnp3.h:1784
@ DNP3_UINT_ATTR_NUM_OUTSTATION_DEFINED_DATA_SETS
Variation 215 - Number of outstation defined data-sets.
Definition: dnp3.h:1758
@ DNP3_UINT_ATTR_MAX_BINARY_OUTPUT_INDEX
Variation 223 - Maximum binary output index.
Definition: dnp3.h:1770
@ DNP3_UINT_ATTR_MAX_RX_FRAGMENT_SIZE
Variation 241 - Maximum receive fragment size.
Definition: dnp3.h:1792
@ DNP3_UINT_ATTR_DURATION_OF_TIME_ACCURACY
Variation 218 - Duration of time accuracy (seconds)
Definition: dnp3.h:1764
@ DNP3_UINT_ATTR_NUM_COUNTER
Variation 229 - Number of counter points.
Definition: dnp3.h:1776
@ DNP3_UINT_ATTR_NUM_ANALOG_OUTPUTS
Variation 221 - Number of analog outputs.
Definition: dnp3.h:1768
@ DNP3_UINT_ATTR_NUM_MASTER_DEFINED_DATA_SET_PROTO
Variation 212 - Number of master defined data-set prototypes.
Definition: dnp3.h:1752
@ DNP3_UINT_ATTR_MAX_ANALOG_INPUT_INDEX
Variation 232 - Maximum analog input point index.
Definition: dnp3.h:1778
@ DNP3_UINT_ATTR_MAX_TX_FRAGMENT_SIZE
Variation 240 - Maximum transmit fragment size.
Definition: dnp3.h:1790
@ DNP3_UINT_ATTR_NUM_OUTSTATION_DEFINED_DATA_SET_PROTO
Variation 213 - Number of outstation defined data-set prototypes.
Definition: dnp3.h:1754
@ DNP3_UINT_ATTR_MAX_DOUBLE_BIT_BINARY_INPUT_INDEX
Variation 235 - Maximum double-bit binary input point index.
Definition: dnp3.h:1782
struct dnp3_identified_link_handler_t dnp3_identified_link_handler_t
Class used to accept a connection, reject it, or defer it to link identification.
Definition: dnp3.h:5505
struct dnp3_analog_output_command_event_iterator_t dnp3_analog_output_command_event_iterator_t
Iterator of analog_output_command_event.
Definition: dnp3.h:1262
uint8_t * dnp3_byte_iterator_next(dnp3_byte_iterator_t *iter)
returns a pointer to the next value or NULL
static dnp3_application_iin_t dnp3_application_iin_init()
Initialize all fields in dnp3_application_iin_t to false.
Definition: dnp3.h:7379
dnp3_param_error_t dnp3_database_get_analog_output_status(dnp3_database_t *instance, uint16_t index, dnp3_analog_output_status_t *out)
Get a Analog Output Status point.
static dnp3_connect_strategy_t dnp3_connect_strategy_init()
Initialize to default values.
Definition: dnp3.h:1409
dnp3_param_error_t dnp3_outstation_server_create_tls_server(dnp3_runtime_t *runtime, dnp3_link_error_mode_t link_error_mode, const char *address, dnp3_tls_server_config_t tls_config, dnp3_outstation_server_t **out)
Create a new TLS server.
dnp3_min_tls_version_t
Minimum TLS version to allow.
Definition: dnp3.h:1422
@ DNP3_MIN_TLS_VERSION_V12
Allow TLS 1.2 and 1.3.
Definition: dnp3.h:1424
@ DNP3_MIN_TLS_VERSION_V13
Only allow TLS 1.3.
Definition: dnp3.h:1426
dnp3_certificate_mode_t
Determines how the certificate(s) presented by the peer are validated.
Definition: dnp3.h:1446
@ DNP3_CERTIFICATE_MODE_SELF_SIGNED
Validates that the peer presents a single certificate which is a byte-for-byte match against the conf...
Definition: dnp3.h:1456
@ DNP3_CERTIFICATE_MODE_AUTHORITY_BASED
Validates the peer certificate against one or more configured trust anchors.
Definition: dnp3.h:1452
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 the configuration with the specified values.
Definition: dnp3.h:4263
static const char * dnp3_command_error_to_string(dnp3_command_error_t value)
Converts the enum to a string.
Definition: dnp3.h:4930
dnp3_file_mode_t
Different modes in which files may be opened.
Definition: dnp3.h:3175
@ DNP3_FILE_MODE_APPEND
Specifies that the file is to be opened for writing, appending to the end of the file.
Definition: dnp3.h:3181
@ DNP3_FILE_MODE_READ
Specifies that an existing file is to be opened for reading.
Definition: dnp3.h:3177
@ DNP3_FILE_MODE_WRITE
Specifies that the file is to be opened for writing, truncating any existing file to length 0.
Definition: dnp3.h:3179
static const char * dnp3_command_mode_to_string(dnp3_command_mode_t value)
Converts the enum to a string.
Definition: dnp3.h:4888
dnp3_bit_string_attr_t
Enumeration of all known bit-string attributes.
Definition: dnp3.h:1948
@ DNP3_BIT_STRING_ATTR_UNKNOWN
The attribute variation is not defined or is not part of the default set.
Definition: dnp3.h:1950
void dnp3_command_set_add_g41_v1_u8(dnp3_command_set_t *instance, uint8_t idx, int32_t value)
Add a Analog Output command (signed 32-bit integer) with 1-byte prefix index.
void dnp3_request_add_all_objects_header(dnp3_request_t *instance, dnp3_variation_t variation)
Add an all objects variation request.
dnp3_param_error_t dnp3_master_channel_close_file(dnp3_master_channel_t *instance, dnp3_association_id_t association, uint32_t handle, dnp3_file_operation_callback_t callback)
Asynchronously close a file.
dnp3_frozen_analog_input_t * dnp3_frozen_analog_input_iterator_next(dnp3_frozen_analog_input_iterator_t *iter)
returns a pointer to the next value or NULL
static dnp3_frozen_counter_t dnp3_frozen_counter_init(uint16_t index, uint32_t value, dnp3_flags_t flags, dnp3_timestamp_t time)
Fully construct dnp3_frozen_counter_t specifying the value of each field.
Definition: dnp3.h:995
void dnp3_write_dead_band_request_finish_header(dnp3_write_dead_band_request_t *instance)
If a header is currently being written, then this will complete the header so that no new objects may...
dnp3_operate_type_t
Enumeration describing how the master requested the control operation.
Definition: dnp3.h:7762
@ DNP3_OPERATE_TYPE_SELECT_BEFORE_OPERATE
control point was properly selected before the operate request
Definition: dnp3.h:7764
@ DNP3_OPERATE_TYPE_DIRECT_OPERATE
operate the control via a DirectOperate request
Definition: dnp3.h:7766
@ DNP3_OPERATE_TYPE_DIRECT_OPERATE_NO_ACK
operate the control via a DirectOperateNoAck request
Definition: dnp3.h:7768
struct dnp3_octet_string_value_t dnp3_octet_string_value_t
Collection of octet_string_value.
Definition: dnp3.h:6761
dnp3_attr_def_error_t dnp3_database_define_string_attr(dnp3_database_t *instance, uint8_t set, bool writable, uint8_t variation, const char *value)
Define a string attribute.
static const char * dnp3_variation_list_attr_to_string(dnp3_variation_list_attr_t value)
Converts the enum to a string.
Definition: dnp3.h:1659
dnp3_write_time_result_t
Write time result used by dnp3_outstation_application_t::write_absolute_time.
Definition: dnp3.h:7285
@ DNP3_WRITE_TIME_RESULT_OK
The write time operation succeeded.
Definition: dnp3.h:7287
@ DNP3_WRITE_TIME_RESULT_NOT_SUPPORTED
Writing time is not supported by this outstation (translated to NO_FUNC_CODE_SUPPORT).
Definition: dnp3.h:7291
@ DNP3_WRITE_TIME_RESULT_PARAMETER_ERROR
The request parameters are nonsensical.
Definition: dnp3.h:7289
void dnp3_octet_string_value_add(dnp3_octet_string_value_t *instance, uint8_t value)
Add a value to the collection.
void dnp3_request_add_one_byte_limited_count_header(dnp3_request_t *instance, dnp3_variation_t variation, uint8_t count)
Add a one-byte limited count variation header for use with a READ request.
dnp3_param_error_t dnp3_master_channel_read_with_handler(dnp3_master_channel_t *instance, dnp3_association_id_t association, dnp3_request_t *request, dnp3_read_handler_t handler, dnp3_read_task_callback_t callback)
Perform a read on the association.
dnp3_static_binary_output_status_variation_t
Static binary output status variation.
Definition: dnp3.h:6054
@ DNP3_STATIC_BINARY_OUTPUT_STATUS_VARIATION_GROUP10_VAR2
Binary output - output status with flags.
Definition: dnp3.h:6058
@ DNP3_STATIC_BINARY_OUTPUT_STATUS_VARIATION_GROUP10_VAR1
Binary output - packed format.
Definition: dnp3.h:6056
static dnp3_utc_timestamp_t dnp3_utc_timestamp_invalid()
Construct an invalid dnp3_utc_timestamp_t.
Definition: dnp3.h:4319
dnp3_param_error_t dnp3_master_channel_demand_poll(dnp3_master_channel_t *instance, dnp3_poll_id_t poll_id)
Demand the immediate execution of a poll previously created with dnp3_master_channel_add_poll.
struct dnp3_byte_collection_t dnp3_byte_collection_t
Collection of byte_collection.
Definition: dnp3.h:2046
bool dnp3_database_remove_frozen_counter(dnp3_database_t *instance, uint16_t index)
Remove a Frozen Counter point.
void dnp3_command_set_add_g41_v1_u16(dnp3_command_set_t *instance, uint16_t idx, int32_t value)
Add a Analog Output command (signed 32-bit integer) with 2-byte prefix index.
void dnp3_address_filter_destroy(dnp3_address_filter_t *instance)
Destroy an address filter.
dnp3_time_attr_t
Enumeration of all the known DNP3 Time attributes.
Definition: dnp3.h:1901
@ DNP3_TIME_ATTR_CONFIG_LAST_CHANGE_DATE
Variation 199 - Time and date that the outstation's configuration was last modified.
Definition: dnp3.h:1907
@ DNP3_TIME_ATTR_UNKNOWN
The attribute variation is not defined or is not part of the default set.
Definition: dnp3.h:1903
@ DNP3_TIME_ATTR_CONFIG_BUILD_DATE
Variation 198 - Time and date that the outstation's current configuration was built defined.
Definition: dnp3.h:1905
static dnp3_classes_t dnp3_classes_init(bool class0, bool class1, bool class2, bool class3)
Fully construct dnp3_classes_t specifying the value of each field.
Definition: dnp3.h:4138
dnp3_param_error_t dnp3_master_channel_read(dnp3_master_channel_t *instance, dnp3_association_id_t association, dnp3_request_t *request, dnp3_read_task_callback_t callback)
Perform a read on the association.
dnp3_param_error_t dnp3_outstation_create_serial_session_fault_tolerant(dnp3_runtime_t *runtime, const char *serial_path, dnp3_serial_settings_t settings, uint64_t open_retry_delay, dnp3_outstation_config_t config, dnp3_outstation_application_t application, dnp3_outstation_information_t information, dnp3_control_handler_t control_handler, dnp3_outstation_t **out)
This method is implemented in terms of dnp3_outstation_create_serial_session_2 but without a port lis...
dnp3_param_error_t dnp3_master_channel_add_udp_association(dnp3_master_channel_t *instance, uint16_t address, const char *destination, dnp3_association_config_t config, dnp3_read_handler_t read_handler, dnp3_association_handler_t association_handler, dnp3_association_information_t association_information, dnp3_association_id_t *out)
Add a UDP association to the channel.
dnp3_unsigned_integer_t * dnp3_unsigned_integer_iterator_next(dnp3_unsigned_integer_iterator_t *iter)
returns a pointer to the next value or NULL
void dnp3_endpoint_list_add(dnp3_endpoint_list_t *instance, const char *endpoint)
Add an IP endpoint to the list.
static const char * dnp3_bool_attr_to_string(dnp3_bool_attr_t value)
Converts the enum to a string.
Definition: dnp3.h:1881
dnp3_event_mode_t
Controls how events are processed when updating values in the database.
Definition: dnp3.h:5686
@ DNP3_EVENT_MODE_SUPPRESS
Never produce an event regardless of change.
Definition: dnp3.h:5694
@ DNP3_EVENT_MODE_DETECT
Detect events in a type dependent fashion.
Definition: dnp3.h:5690
@ DNP3_EVENT_MODE_FORCE
Produce an event whether the value has changed or not.
Definition: dnp3.h:5692
bool dnp3_database_add_frozen_counter(dnp3_database_t *instance, uint16_t index, dnp3_event_class_t point_class, dnp3_frozen_counter_config_t config)
Add a new Frozen Counter point.
static const char * dnp3_connection_state_to_string(dnp3_connection_state_t value)
Converts the enum to a string.
Definition: dnp3.h:7921
dnp3_param_error_t
Error type used throughout the library.
Definition: dnp3.h:61
@ DNP3_PARAM_ERROR_OK
Success, i.e. no error occurred.
Definition: dnp3.h:63
@ DNP3_PARAM_ERROR_OTHER_TLS_ERROR
Other TLS error.
Definition: dnp3.h:109
@ DNP3_PARAM_ERROR_INVALID_PEER_CERTIFICATE
Invalid peer certificate file.
Definition: dnp3.h:101
@ DNP3_PARAM_ERROR_SERVER_ALREADY_STARTED
Server already started.
Definition: dnp3.h:85
@ DNP3_PARAM_ERROR_INVALID_PRIVATE_KEY
Invalid private key file.
Definition: dnp3.h:105
@ DNP3_PARAM_ERROR_INVALID_TIMEOUT
The supplied timeout value is too small or too large.
Definition: dnp3.h:65
@ DNP3_PARAM_ERROR_STRING_NOT_UTF8
Provided string argument is not UTF-8.
Definition: dnp3.h:69
@ DNP3_PARAM_ERROR_ADDRESS_FILTER_CONFLICT
Conflict in the address filter specification.
Definition: dnp3.h:83
@ DNP3_PARAM_ERROR_WRONG_CHANNEL_TYPE
This operation cannot be performed on this channel type.
Definition: dnp3.h:111
@ DNP3_PARAM_ERROR_LOGGING_ALREADY_CONFIGURED
Logging can only be configured once.
Definition: dnp3.h:97
@ DNP3_PARAM_ERROR_INVALID_BUFFER_SIZE
Invalid buffer size.
Definition: dnp3.h:81
@ DNP3_PARAM_ERROR_CONSUMED
This object is consumed and cannot be used again.
Definition: dnp3.h:113
@ DNP3_PARAM_ERROR_ASSOCIATION_DOES_NOT_EXIST
The specified association does not exist.
Definition: dnp3.h:73
@ DNP3_PARAM_ERROR_POINT_DOES_NOT_EXIST
Point does not exist.
Definition: dnp3.h:99
@ DNP3_PARAM_ERROR_SERVER_BIND_ERROR
Server failed to bind to the specified port.
Definition: dnp3.h:87
@ DNP3_PARAM_ERROR_RUNTIME_CANNOT_BLOCK_WITHIN_ASYNC
Runtime cannot execute blocking call within asynchronous context.
Definition: dnp3.h:95
@ DNP3_PARAM_ERROR_INVALID_SOCKET_ADDRESS
Invalid socket address.
Definition: dnp3.h:77
@ DNP3_PARAM_ERROR_NO_SUPPORT
Native library was compiled without support for this feature.
Definition: dnp3.h:71
@ DNP3_PARAM_ERROR_ASSOCIATION_DUPLICATE_ADDRESS
Duplicate association address.
Definition: dnp3.h:75
@ DNP3_PARAM_ERROR_RUNTIME_CREATION_FAILURE
Failed to create Tokio runtime.
Definition: dnp3.h:91
@ DNP3_PARAM_ERROR_INVALID_DNP3_ADDRESS
Invalid link-layer DNP3 address.
Definition: dnp3.h:79
@ DNP3_PARAM_ERROR_MASTER_ALREADY_SHUTDOWN
Master was already shutdown.
Definition: dnp3.h:89
@ DNP3_PARAM_ERROR_NULL_PARAMETER
Null parameter.
Definition: dnp3.h:67
@ DNP3_PARAM_ERROR_RUNTIME_DESTROYED
Runtime has already been disposed.
Definition: dnp3.h:93
@ DNP3_PARAM_ERROR_INVALID_LOCAL_CERTIFICATE
Invalid local certificate file.
Definition: dnp3.h:103
@ DNP3_PARAM_ERROR_INVALID_DNS_NAME
Invalid DNS name.
Definition: dnp3.h:107
dnp3_freeze_result_t
Result of a freeze operation.
Definition: dnp3.h:7332
@ DNP3_FREEZE_RESULT_OK
Freeze operation was successful.
Definition: dnp3.h:7334
@ DNP3_FREEZE_RESULT_PARAMETER_ERROR
The request parameters are nonsensical.
Definition: dnp3.h:7336
@ DNP3_FREEZE_RESULT_NOT_SUPPORTED
The demanded freeze operation is not supported by this device.
Definition: dnp3.h:7338
dnp3_port_state_t
State of the serial port.
Definition: dnp3.h:2065
@ DNP3_PORT_STATE_SHUTDOWN
Task has been shut down.
Definition: dnp3.h:2073
@ DNP3_PORT_STATE_WAIT
Waiting to perform an open retry.
Definition: dnp3.h:2069
@ DNP3_PORT_STATE_DISABLED
Disabled until enabled.
Definition: dnp3.h:2067
@ DNP3_PORT_STATE_OPEN
Port is open.
Definition: dnp3.h:2071
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_update_info_t dnp3_database_update_flags(dnp3_database_t *instance, uint16_t index, dnp3_update_flags_type_t flags_type, dnp3_flags_t flags, dnp3_timestamp_t time, dnp3_update_options_t options)
Update the flags for the specified point without changing the value.
dnp3_nothing_t
A single value enum which is used as a placeholder for futures that don't return a value.
Definition: dnp3.h:2028
@ DNP3_NOTHING_NOTHING
The value type is meaningless.
Definition: dnp3.h:2030
dnp3_param_error_t dnp3_master_channel_get_decode_level(dnp3_master_channel_t *instance, dnp3_decode_level_t *out)
Get the decoding level for the channel.
dnp3_update_info_t dnp3_database_update_octet_string_2(dnp3_database_t *instance, uint16_t index, dnp3_octet_string_value_t *value, dnp3_update_options_t options)
Update an Octet String point.
dnp3_phys_decode_level_t
Controls how data transmitted at the physical layer (TCP, serial, etc) is logged.
Definition: dnp3.h:332
@ DNP3_PHYS_DECODE_LEVEL_LENGTH
Log only the length of data that is sent and received.
Definition: dnp3.h:336
@ DNP3_PHYS_DECODE_LEVEL_NOTHING
Log nothing.
Definition: dnp3.h:334
@ DNP3_PHYS_DECODE_LEVEL_DATA
Log the length and the actual data that is sent and received.
Definition: dnp3.h:338
static const char * dnp3_static_frozen_counter_variation_to_string(dnp3_static_frozen_counter_variation_t value)
Converts the enum to a string.
Definition: dnp3.h:6330
dnp3_analog_output_command_event_t * dnp3_analog_output_command_event_iterator_next(dnp3_analog_output_command_event_iterator_t *iter)
returns a pointer to the next value or NULL
dnp3_time_format_t
Describes if and how the time will be formatted in log messages.
Definition: dnp3.h:3305
@ DNP3_TIME_FORMAT_NONE
Don't format the timestamp as part of the message.
Definition: dnp3.h:3307
@ DNP3_TIME_FORMAT_SYSTEM
Format the time in a human readable format e.g. 'Jun 25 14:27:12.955'.
Definition: dnp3.h:3311
@ DNP3_TIME_FORMAT_RFC_3339
Format the time using RFC 3339.
Definition: dnp3.h:3309
dnp3_param_error_t dnp3_master_channel_create_serial(dnp3_runtime_t *runtime, dnp3_master_channel_config_t config, const char *path, dnp3_serial_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.
bool dnp3_database_remove_binary_input(dnp3_database_t *instance, uint16_t index)
Remove a BinaryInput point.
void dnp3_write_dead_band_request_add_g34v1_u16(dnp3_write_dead_band_request_t *instance, uint16_t index, uint16_t dead_band)
Add a g34v1 (unsigned 16-bit) dead-band with 16-bit indexing to the request.
static dnp3_decode_level_t dnp3_decode_level_nothing()
Initialize log levels to nothing.
Definition: dnp3.h:399
static dnp3_restart_delay_t dnp3_restart_delay_milliseconds(uint16_t value)
RestartDelay with a count of milliseconds.
Definition: dnp3.h:7273
dnp3_time_quality_t
Timestamp quality.
Definition: dnp3.h:693
@ DNP3_TIME_QUALITY_SYNCHRONIZED_TIME
The timestamp is UTC synchronized at the remote device.
Definition: dnp3.h:695
@ DNP3_TIME_QUALITY_INVALID_TIME
Timestamp is not valid, ignore the value and use a local timestamp.
Definition: dnp3.h:699
@ DNP3_TIME_QUALITY_UNSYNCHRONIZED_TIME
The device indicates the timestamp may be not be synchronized.
Definition: dnp3.h:697
dnp3_double_bit_binary_input_t * dnp3_double_bit_binary_input_iterator_next(dnp3_double_bit_binary_input_iterator_t *iter)
returns a pointer to the next value or NULL
dnp3_param_error_t dnp3_outstation_create_tls_client(dnp3_runtime_t *runtime, dnp3_link_error_mode_t link_error_mode, dnp3_endpoint_list_t *endpoints, dnp3_connect_strategy_t connect_strategy, dnp3_connect_options_t *connect_options, dnp3_outstation_config_t config, dnp3_outstation_application_t application, dnp3_outstation_information_t information, dnp3_control_handler_t control_handler, dnp3_client_state_listener_t listener, dnp3_tls_client_config_t tls_config, dnp3_outstation_t **out)
Create an outstation instance running as a TLS client.
dnp3_parity_t
Parity checking modes.
Definition: dnp3.h:2665
@ DNP3_PARITY_EVEN
Parity bit sets even number of 1 bits.
Definition: dnp3.h:2671
@ DNP3_PARITY_ODD
Parity bit sets odd number of 1 bits.
Definition: dnp3.h:2669
@ DNP3_PARITY_NONE
No parity bit.
Definition: dnp3.h:2667
dnp3_transport_decode_level_t
Controls how transmitted and received transport segments are decoded at the INFO log level.
Definition: dnp3.h:282
@ DNP3_TRANSPORT_DECODE_LEVEL_HEADER
Decode the header.
Definition: dnp3.h:286
@ DNP3_TRANSPORT_DECODE_LEVEL_NOTHING
Decode nothing.
Definition: dnp3.h:284
@ DNP3_TRANSPORT_DECODE_LEVEL_PAYLOAD
Decode the header and the raw payload as hexadecimal.
Definition: dnp3.h:288
static dnp3_counter_config_t dnp3_counter_config_init()
Initialize to defaults.
Definition: dnp3.h:6264
dnp3_param_error_t dnp3_outstation_create_serial_session(dnp3_runtime_t *runtime, const char *serial_path, dnp3_serial_settings_t settings, dnp3_outstation_config_t 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_error_t
Result of a command.
Definition: dnp3.h:4900
@ DNP3_COMMAND_ERROR_ASSOCIATION_REMOVED
association was removed mid-task
Definition: dnp3.h:4922
@ DNP3_COMMAND_ERROR_HEADER_MISMATCH
Number of headers or objects in the response didn't match the number in the request.
Definition: dnp3.h:4906
@ DNP3_COMMAND_ERROR_BAD_ENCODING
request data could not be encoded
Definition: dnp3.h:4924
@ DNP3_COMMAND_ERROR_WRITE_ERROR
insufficient buffer space to serialize the request
Definition: dnp3.h:4916
@ DNP3_COMMAND_ERROR_TOO_MANY_REQUESTS
too many user requests queued
Definition: dnp3.h:4908
@ DNP3_COMMAND_ERROR_IIN_ERROR
outstation returned an IIN.2 error bit
Definition: dnp3.h:4910
@ DNP3_COMMAND_ERROR_BAD_STATUS
Outstation indicated that a command was not SUCCESS.
Definition: dnp3.h:4904
@ DNP3_COMMAND_ERROR_NO_CONNECTION
no connection
Definition: dnp3.h:4918
@ DNP3_COMMAND_ERROR_SHUTDOWN
master was shutdown
Definition: dnp3.h:4920
@ DNP3_COMMAND_ERROR_RESPONSE_TIMEOUT
timeout occurred before receiving a response
Definition: dnp3.h:4914
@ DNP3_COMMAND_ERROR_BAD_RESPONSE
response was malformed or contained object headers
Definition: dnp3.h:4912
@ DNP3_COMMAND_ERROR_OK
Success, i.e. no error occurred.
Definition: dnp3.h:4902
static const char * dnp3_freeze_type_to_string(dnp3_freeze_type_t value)
Converts the enum to a string.
Definition: dnp3.h:7320
static dnp3_binary_input_config_t dnp3_binary_input_config_init()
Initialize to defaults.
Definition: dnp3.h:5884
dnp3_broadcast_action_t
Enumeration describing how the outstation processed a broadcast request.
Definition: dnp3.h:7660
@ DNP3_BROADCAST_ACTION_PROCESSED
Outstation processed the broadcast.
Definition: dnp3.h:7662
@ DNP3_BROADCAST_ACTION_UNSUPPORTED_FUNCTION
Outstation ignore the broadcast message b/c the function is not supported via Broadcast.
Definition: dnp3.h:7668
@ DNP3_BROADCAST_ACTION_IGNORED_BY_CONFIGURATION
Outstation ignored the broadcast message b/c it is disabled by configuration.
Definition: dnp3.h:7664
@ DNP3_BROADCAST_ACTION_BAD_OBJECT_HEADERS
Outstation was unable to parse the object headers and ignored the request.
Definition: dnp3.h:7666
dnp3_param_error_t dnp3_master_channel_write_file_block(dnp3_master_channel_t *instance, dnp3_association_id_t association, uint32_t handle, uint32_t block_number, bool final_block, dnp3_byte_collection_t *block_data, dnp3_file_operation_callback_t callback)
Asynchronously write a block of file data to the outstation.
static const char * dnp3_log_level_to_string(dnp3_log_level_t value)
Converts the enum to a string.
Definition: dnp3.h:3266
dnp3_read_error_t
Errors that can occur during a read operation.
Definition: dnp3.h:4693
@ DNP3_READ_ERROR_ASSOCIATION_REMOVED
association was removed mid-task
Definition: dnp3.h:4711
@ DNP3_READ_ERROR_NO_CONNECTION
no connection
Definition: dnp3.h:4707
@ DNP3_READ_ERROR_RESPONSE_TIMEOUT
timeout occurred before receiving a response
Definition: dnp3.h:4703
@ DNP3_READ_ERROR_WRITE_ERROR
insufficient buffer space to serialize the request
Definition: dnp3.h:4705
@ DNP3_READ_ERROR_OK
Success, i.e. no error occurred.
Definition: dnp3.h:4695
@ DNP3_READ_ERROR_TOO_MANY_REQUESTS
too many user requests queued
Definition: dnp3.h:4697
@ DNP3_READ_ERROR_SHUTDOWN
master was shutdown
Definition: dnp3.h:4709
@ DNP3_READ_ERROR_BAD_ENCODING
request data could not be encoded
Definition: dnp3.h:4713
@ DNP3_READ_ERROR_BAD_RESPONSE
response was malformed or contained object headers
Definition: dnp3.h:4701
@ DNP3_READ_ERROR_IIN_ERROR
outstation returned an IIN.2 error bit
Definition: dnp3.h:4699
bool dnp3_database_add_double_bit_binary_input(dnp3_database_t *instance, uint16_t index, dnp3_event_class_t point_class, dnp3_double_bit_binary_input_config_t config)
Add a new Double-Bit Binary Input point.
struct dnp3_binary_output_command_event_iterator_t dnp3_binary_output_command_event_iterator_t
Iterator of binary_output_command_event.
Definition: dnp3.h:1182
void dnp3_connect_options_destroy(dnp3_connect_options_t *instance)
Destroy an instance.
static const char * dnp3_attr_def_error_to_string(dnp3_attr_def_error_t value)
Converts the enum to a string.
Definition: dnp3.h:6824
static dnp3_class_zero_config_t dnp3_class_zero_config_init()
Initialize to default values.
Definition: dnp3.h:7044
static const char * dnp3_command_status_to_string(dnp3_command_status_t value)
Converts the enum to a string.
Definition: dnp3.h:204
dnp3_param_error_t dnp3_master_channel_set_decode_level(dnp3_master_channel_t *instance, dnp3_decode_level_t decode_level)
Set the decoding level for the channel.
static const char * dnp3_read_error_to_string(dnp3_read_error_t value)
Converts the enum to a string.
Definition: dnp3.h:4719
static const char * dnp3_broadcast_action_to_string(dnp3_broadcast_action_t value)
Converts the enum to a string.
Definition: dnp3.h:7674
struct dnp3_binary_input_iterator_t dnp3_binary_input_iterator_t
Iterator of binary_input.
Definition: dnp3.h:840
static const char * dnp3_task_type_to_string(dnp3_task_type_t value)
Converts the enum to a string.
Definition: dnp3.h:4392
static dnp3_analog_input_config_t dnp3_analog_input_config_init()
Initialize to defaults.
Definition: dnp3.h:6564
static const char * dnp3_analog_command_type_to_string(dnp3_analog_command_type_t value)
Converts the enum to a string.
Definition: dnp3.h:1206
struct dnp3_address_filter_t dnp3_address_filter_t
Filters connecting client by their IP address to associate a connecting master with an outstation on ...
Definition: dnp3.h:8108
void dnp3_command_set_destroy(dnp3_command_set_t *instance)
Destroy a set of commands.
dnp3_auto_time_sync_t
Automatic time synchronization configuration.
Definition: dnp3.h:4192
@ DNP3_AUTO_TIME_SYNC_LAN
Perform automatic time sync with Record Current Time (0x18) function code.
Definition: dnp3.h:4196
@ DNP3_AUTO_TIME_SYNC_NONE
Do not perform automatic time sync.
Definition: dnp3.h:4194
@ DNP3_AUTO_TIME_SYNC_NON_LAN
Perform automatic time sync with Delay Measurement (0x17) function code.
Definition: dnp3.h:4198
void dnp3_byte_collection_destroy(dnp3_byte_collection_t *instance)
Destroys an instance of the collection.
dnp3_empty_response_error_t
Errors that may occur when performing a request that expects a response with zero object headers.
Definition: dnp3.h:3869
@ DNP3_EMPTY_RESPONSE_ERROR_OK
Success, i.e. no error occurred.
Definition: dnp3.h:3871
@ DNP3_EMPTY_RESPONSE_ERROR_BAD_RESPONSE
response was malformed or contained object headers
Definition: dnp3.h:3879
@ DNP3_EMPTY_RESPONSE_ERROR_ASSOCIATION_REMOVED
association was removed mid-task
Definition: dnp3.h:3889
@ DNP3_EMPTY_RESPONSE_ERROR_REJECTED_BY_IIN2
IIN2 indicates request was not completely successful.
Definition: dnp3.h:3873
@ DNP3_EMPTY_RESPONSE_ERROR_TOO_MANY_REQUESTS
too many user requests queued
Definition: dnp3.h:3875
@ DNP3_EMPTY_RESPONSE_ERROR_NO_CONNECTION
no connection
Definition: dnp3.h:3885
@ DNP3_EMPTY_RESPONSE_ERROR_SHUTDOWN
master was shutdown
Definition: dnp3.h:3887
@ DNP3_EMPTY_RESPONSE_ERROR_WRITE_ERROR
insufficient buffer space to serialize the request
Definition: dnp3.h:3883
@ DNP3_EMPTY_RESPONSE_ERROR_IIN_ERROR
outstation returned an IIN.2 error bit
Definition: dnp3.h:3877
@ DNP3_EMPTY_RESPONSE_ERROR_BAD_ENCODING
request data could not be encoded
Definition: dnp3.h:3891
@ DNP3_EMPTY_RESPONSE_ERROR_RESPONSE_TIMEOUT
timeout occurred before receiving a response
Definition: dnp3.h:3881
static const char * dnp3_time_sync_mode_to_string(dnp3_time_sync_mode_t value)
Converts the enum to a string.
Definition: dnp3.h:4992
dnp3_command_status_t
Enumeration received from an outstation in response to command request.
Definition: dnp3.h:156
@ DNP3_COMMAND_STATUS_ALREADY_ACTIVE
command is all ready in progress or its all ready in that mode (value == 5)
Definition: dnp3.h:168
@ DNP3_COMMAND_STATUS_DOWNSTREAM_FAIL
command not accepted because the outstation is forwarding the request to another downstream device wh...
Definition: dnp3.h:194
@ DNP3_COMMAND_STATUS_TOO_MANY_OPS
the command has been done too often and has been throttled (value == 8)
Definition: dnp3.h:174
@ DNP3_COMMAND_STATUS_SUCCESS
command was accepted, initiated, or queued (value == 0)
Definition: dnp3.h:158
@ DNP3_COMMAND_STATUS_CANCELED
command not accepted because the operation was cancelled (value == 16)
Definition: dnp3.h:190
@ DNP3_COMMAND_STATUS_NO_SELECT
command requires being selected before operate, configuration issue (value == 2)
Definition: dnp3.h:162
@ DNP3_COMMAND_STATUS_NON_PARTICIPATING
(deprecated) indicates the outstation shall not issue or perform the control operation (value == 126)
Definition: dnp3.h:196
@ DNP3_COMMAND_STATUS_LOCAL
the function governed by the control is in local only control (value == 7)
Definition: dnp3.h:172
@ DNP3_COMMAND_STATUS_AUTOMATION_INHIBIT
command not accepted because it was prevented or inhibited by a local automation process,...
Definition: dnp3.h:178
@ DNP3_COMMAND_STATUS_DOWNSTREAM_LOCAL
command not accepted because the outstation is forwarding the request to another downstream device wh...
Definition: dnp3.h:184
@ DNP3_COMMAND_STATUS_PROCESSING_LIMITED
command not accepted because the device cannot process any more activities than are presently in prog...
Definition: dnp3.h:180
@ DNP3_COMMAND_STATUS_TIMEOUT
command timed out before completing (value == 1)
Definition: dnp3.h:160
@ 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:182
@ DNP3_COMMAND_STATUS_NOT_AUTHORIZED
the command was rejected because the device denied it or an RTU intercepted it (value == 9)
Definition: dnp3.h:176
@ DNP3_COMMAND_STATUS_UNKNOWN
captures any value not defined in the enumeration
Definition: dnp3.h:198
@ DNP3_COMMAND_STATUS_FORMAT_ERROR
bad control code or timing values (value == 3)
Definition: dnp3.h:164
@ DNP3_COMMAND_STATUS_NOT_SUPPORTED
command is not implemented (value == 4)
Definition: dnp3.h:166
@ DNP3_COMMAND_STATUS_BLOCKED
command not accepted because the requested function is specifically blocked at the outstation (value ...
Definition: dnp3.h:188
@ DNP3_COMMAND_STATUS_HARDWARE_ERROR
something is stopping the command, often a local/remote interlock (value == 6)
Definition: dnp3.h:170
@ DNP3_COMMAND_STATUS_ALREADY_COMPLETE
command not accepted because the outstation has already completed the requested operation (value == 1...
Definition: dnp3.h:186
@ DNP3_COMMAND_STATUS_BLOCKED_OTHER_MASTER
command not accepted because another master is communicating with the outstation and has exclusive ri...
Definition: dnp3.h:192
static dnp3_classes_t dnp3_classes_all()
Initialize all classes to true.
Definition: dnp3.h:4158
static dnp3_restart_delay_t dnp3_restart_delay_seconds(uint16_t value)
RestartDelay with a count of seconds.
Definition: dnp3.h:7257
dnp3_param_error_t dnp3_accept_handler_accept(dnp3_accept_handler_t *instance, dnp3_link_error_mode_t error_mode, dnp3_master_channel_config_t config)
Accept the connection and create a master channel.
static dnp3_timestamp_t dnp3_timestamp_unsynchronized_timestamp(uint64_t value)
Creates an unsynchronized timestamp struct.
Definition: dnp3.h:768
static dnp3_control_code_t dnp3_control_code_init(dnp3_trip_close_code_t tcc, bool clear, dnp3_op_type_t op_type)
Initialize a dnp3_control_code_t instance.
Definition: dnp3.h:565
dnp3_static_analog_input_variation_t
Static analog variation.
Definition: dnp3.h:6456
@ DNP3_STATIC_ANALOG_INPUT_VARIATION_GROUP30_VAR1
Analog input - 32-bit with flag.
Definition: dnp3.h:6458
@ DNP3_STATIC_ANALOG_INPUT_VARIATION_GROUP30_VAR5
Analog input - single-precision, floating-point with flag.
Definition: dnp3.h:6466
@ DNP3_STATIC_ANALOG_INPUT_VARIATION_GROUP30_VAR2
Analog input - 16-bit with flag.
Definition: dnp3.h:6460
@ DNP3_STATIC_ANALOG_INPUT_VARIATION_GROUP30_VAR4
Analog input - 16-bit without flag.
Definition: dnp3.h:6464
@ DNP3_STATIC_ANALOG_INPUT_VARIATION_GROUP30_VAR6
Analog input - double-precision, floating-point with flag.
Definition: dnp3.h:6468
@ DNP3_STATIC_ANALOG_INPUT_VARIATION_GROUP30_VAR3
Analog input - 32-bit without flag.
Definition: dnp3.h:6462
dnp3_binary_output_command_event_t * dnp3_binary_output_command_event_iterator_next(dnp3_binary_output_command_event_iterator_t *iter)
returns a pointer to the next value or NULL
dnp3_request_t * dnp3_request_new_one_byte_range(dnp3_variation_t variation, uint8_t start, uint8_t stop)
Create a new request asking for range of objects (using 8-bit start/stop).
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:3782
static dnp3_binary_output_status_t dnp3_binary_output_status_init(uint16_t index, bool value, dnp3_flags_t flags, dnp3_timestamp_t time)
Fully construct dnp3_binary_output_status_t specifying the value of each field.
Definition: dnp3.h:911
dnp3_bool_attr_t
Enumeration of all the known boolean attributes.
Definition: dnp3.h:1855
@ DNP3_BOOL_ATTR_UNKNOWN
The attribute variation is not defined or is not part of the default set.
Definition: dnp3.h:1857
@ DNP3_BOOL_ATTR_SUPPORTS_ANALOG_OUTPUT_EVENTS
Variation 219 - Supports analog output events.
Definition: dnp3.h:1859
@ DNP3_BOOL_ATTR_SUPPORTS_BINARY_OUTPUT_EVENTS
Variation 222 - Supports binary output events.
Definition: dnp3.h:1861
@ DNP3_BOOL_ATTR_SUPPORTS_FROZEN_ANALOG_INPUTS
Variation 230 - Supports frozen analog input events.
Definition: dnp3.h:1869
@ DNP3_BOOL_ATTR_SUPPORTS_FROZEN_COUNTER_EVENTS
Variation 225 - Supports frozen counter events.
Definition: dnp3.h:1863
@ DNP3_BOOL_ATTR_SUPPORTS_FROZEN_COUNTERS
Variation 226 - Supports frozen counters.
Definition: dnp3.h:1865
@ DNP3_BOOL_ATTR_SUPPORTS_BINARY_INPUT_EVENTS
Variation 237 - Support binary input events.
Definition: dnp3.h:1875
@ DNP3_BOOL_ATTR_SUPPORTS_COUNTER_EVENTS
Variation 227 - Supports counter events.
Definition: dnp3.h:1867
@ DNP3_BOOL_ATTR_SUPPORTS_DOUBLE_BIT_BINARY_INPUT_EVENTS
Variation 234 - Supports double-bit binary input events.
Definition: dnp3.h:1873
@ DNP3_BOOL_ATTR_SUPPORTS_ANALOG_INPUT_EVENTS
Variation 231 - Supports analog input events.
Definition: dnp3.h:1871
dnp3_command_set_t * dnp3_command_set_create()
Create a new set of commands.
dnp3_param_error_t dnp3_outstation_create_serial_session_2(dnp3_runtime_t *runtime, const char *serial_path, dnp3_serial_settings_t settings, uint64_t open_retry_delay, dnp3_outstation_config_t config, dnp3_outstation_application_t application, dnp3_outstation_information_t information, dnp3_control_handler_t control_handler, dnp3_port_state_listener_t port_listener, dnp3_outstation_t **out)
Create an outstation instance running on a serial port which is tolerant to the serial port being add...
dnp3_command_mode_t
Command operation mode.
Definition: dnp3.h:4878
@ DNP3_COMMAND_MODE_SELECT_BEFORE_OPERATE
Perform a Select and Operate (0x03 then 0x04)
Definition: dnp3.h:4882
@ DNP3_COMMAND_MODE_DIRECT_OPERATE
Perform a Direct Operate (0x05)
Definition: dnp3.h:4880
void dnp3_request_destroy(dnp3_request_t *instance)
Destroy a request created with dnp3_request_create or dnp3_request_class_request.
static dnp3_event_buffer_config_t dnp3_event_buffer_config_no_events()
Create a configuration where no events are buffered.
Definition: dnp3.h:6990
static dnp3_frozen_counter_config_t dnp3_frozen_counter_config_create(dnp3_static_frozen_counter_variation_t static_variation, dnp3_event_frozen_counter_variation_t event_variation, uint32_t deadband)
Fully construct dnp3_frozen_counter_config_t specifying the value of each field.
Definition: dnp3.h:6390
dnp3_param_error_t dnp3_master_channel_remove_poll(dnp3_master_channel_t *instance, dnp3_poll_id_t poll_id)
Add a periodic poll to an association.
bool dnp3_database_update_counter(dnp3_database_t *instance, dnp3_counter_t value, dnp3_update_options_t options)
Update a Counter point.
static const char * dnp3_operate_type_to_string(dnp3_operate_type_t value)
Converts the enum to a string.
Definition: dnp3.h:7774
static dnp3_dir_read_config_t dnp3_dir_read_config_defaults()
Initialize the configuration to default values.
Definition: dnp3.h:5278
dnp3_param_error_t dnp3_database_get_analog_input(dnp3_database_t *instance, uint16_t index, dnp3_analog_input_t *out)
Get a AnalogInput point.
void dnp3_request_add_specific_attribute(dnp3_request_t *instance, uint8_t variation, uint8_t set)
Add a one-byte start/stop header for use with a READ request.
static dnp3_frozen_analog_input_t dnp3_frozen_analog_input_init(uint16_t index, double value, dnp3_flags_t flags, dnp3_timestamp_t time)
Fully construct dnp3_frozen_analog_input_t specifying the value of each field.
Definition: dnp3.h:1079
static dnp3_file_read_config_t dnp3_file_read_config_defaults()
Initialize the configuration to default values.
Definition: dnp3.h:5250
dnp3_address_filter_t * dnp3_address_filter_any()
Create an address filter that accepts any IP address.
dnp3_param_error_t dnp3_address_filter_create(const char *address, dnp3_address_filter_t **out)
Create an address filter that matches a specific address or wildcards.
static const char * dnp3_static_binary_input_variation_to_string(dnp3_static_binary_input_variation_t value)
Converts the enum to a string.
Definition: dnp3.h:5818
dnp3_time_sync_mode_t
Time synchronization mode.
Definition: dnp3.h:4982
@ DNP3_TIME_SYNC_MODE_NON_LAN
Perform a non-LAN time sync with Delay Measurement (0x17) function code.
Definition: dnp3.h:4986
@ DNP3_TIME_SYNC_MODE_LAN
Perform a LAN time sync with Record Current Time (0x18) function code.
Definition: dnp3.h:4984
static const char * dnp3_link_read_mode_to_string(dnp3_link_read_mode_t value)
Converts the enum to a string.
Definition: dnp3.h:3236
dnp3_octet_string_attr_t
Enumeration of all known octet-string attributes.
Definition: dnp3.h:1926
@ DNP3_OCTET_STRING_ATTR_CONFIG_DIGEST
Variation 200 - Digest (aka fingerprint) of the configuration using a CRC, HASH, MAC,...
Definition: dnp3.h:1930
@ DNP3_OCTET_STRING_ATTR_UNKNOWN
The attribute variation is not defined or is not part of the default set.
Definition: dnp3.h:1928
dnp3_param_error_t dnp3_address_filter_add(dnp3_address_filter_t *instance, const char *address)
Add an accepted IP address to the filter.
dnp3_param_error_t dnp3_outstation_server_create_tcp_server(dnp3_runtime_t *runtime, dnp3_link_error_mode_t link_error_mode, const char *address, dnp3_outstation_server_t **out)
Create a new TCP server.
static const char * dnp3_task_error_to_string(dnp3_task_error_t value)
Converts the enum to a string.
Definition: dnp3.h:4444
dnp3_param_error_t dnp3_master_channel_synchronize_time(dnp3_master_channel_t *instance, 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_static_double_bit_binary_input_variation_t
Static double-bit binary input variation.
Definition: dnp3.h:5931
@ DNP3_STATIC_DOUBLE_BIT_BINARY_INPUT_VARIATION_GROUP3_VAR1
Double-bit binary input - packed format.
Definition: dnp3.h:5933
@ DNP3_STATIC_DOUBLE_BIT_BINARY_INPUT_VARIATION_GROUP3_VAR2
Double-bit binary input - with flags.
Definition: dnp3.h:5935
void dnp3_connect_options_set_timeout(dnp3_connect_options_t *instance, uint64_t timeout)
Set a timeout for the TCP connection that might be less than the default for the OS.
dnp3_static_binary_input_variation_t
Static binary input variation.
Definition: dnp3.h:5808
@ DNP3_STATIC_BINARY_INPUT_VARIATION_GROUP1_VAR2
Binary input - with flags.
Definition: dnp3.h:5812
@ DNP3_STATIC_BINARY_INPUT_VARIATION_GROUP1_VAR1
Binary input - packed format.
Definition: dnp3.h:5810
static dnp3_permission_set_t dnp3_permission_set_none()
Permission set with nothing enabled.
Definition: dnp3.h:2948
static const char * dnp3_event_mode_to_string(dnp3_event_mode_t value)
Converts the enum to a string.
Definition: dnp3.h:5700
static const char * dnp3_time_attr_to_string(dnp3_time_attr_t value)
Converts the enum to a string.
Definition: dnp3.h:1913
dnp3_update_info_t dnp3_database_update_double_bit_binary_input_2(dnp3_database_t *instance, dnp3_double_bit_binary_input_t value, dnp3_update_options_t options)
Update a Double-Bit Binary Input point.
dnp3_attr_def_error_t dnp3_database_define_float_attr(dnp3_database_t *instance, uint8_t set, bool writable, uint8_t variation, float value)
Define a 32-bit floating point attribute.
dnp3_string_attr_t
Enumeration of all the default string attributes.
Definition: dnp3.h:1671
@ DNP3_STRING_ATTR_DEVICE_MANUFACTURER_SOFTWARE_VERSION
Variation 242 - Device manufacturer software version.
Definition: dnp3.h:1691
@ DNP3_STRING_ATTR_UNKNOWN
The attribute variation is not defined or is not part of the default set.
Definition: dnp3.h:1673
@ DNP3_STRING_ATTR_DEVICE_SERIAL_NUMBER
Variation 248 - Device serial number.
Definition: dnp3.h:1703
@ DNP3_STRING_ATTR_CONFIG_ID
Variation 196 - Configuration id.
Definition: dnp3.h:1675
@ DNP3_STRING_ATTR_USER_ASSIGNED_ID
Variation 246 - User assigned ID code/number.
Definition: dnp3.h:1699
@ DNP3_STRING_ATTR_USER_ASSIGNED_SYSTEM_NAME
Variation 208 - User-assigned system name.
Definition: dnp3.h:1687
@ DNP3_STRING_ATTR_PRODUCT_NAME_AND_MODEL
Variation 250 - Device manufacturer's product name and model.
Definition: dnp3.h:1707
@ DNP3_STRING_ATTR_USER_ASSIGNED_LOCATION
Variation 245 - User assigned location name.
Definition: dnp3.h:1697
@ DNP3_STRING_ATTR_USER_ASSIGNED_PRIMARY_OPERATOR_NAME
Variation 207 - User-assigned primary operator name.
Definition: dnp3.h:1685
@ DNP3_STRING_ATTR_CONFIG_VERSION
Variation 197 - Configuration version.
Definition: dnp3.h:1677
@ DNP3_STRING_ATTR_MASTER_RESOURCE_ID
Variation 202 - Master resource id (mRID)
Definition: dnp3.h:1681
@ DNP3_STRING_ATTR_USER_ASSIGNED_SECONDARY_OPERATOR_NAME
Variation 206 - User-assigned secondary operator name.
Definition: dnp3.h:1683
@ DNP3_STRING_ATTR_CONFIG_DIGEST_ALGORITHM
Variation 201 - Configuration digest algorithm.
Definition: dnp3.h:1679
@ DNP3_STRING_ATTR_DEVICE_SUBSET_AND_CONFORMANCE
Variation 249 - DNP3 subset and conformance.
Definition: dnp3.h:1705
@ DNP3_STRING_ATTR_USER_ASSIGNED_DEVICE_NAME
Variation 247 - User assigned device name.
Definition: dnp3.h:1701
@ DNP3_STRING_ATTR_USER_ASSIGNED_OWNER_NAME
Variation 244 - User-assigned owner name.
Definition: dnp3.h:1695
@ DNP3_STRING_ATTR_DEVICE_MANUFACTURER_HARDWARE_VERSION
Variation 243 - Device manufacturer hardware version.
Definition: dnp3.h:1693
@ DNP3_STRING_ATTR_USER_SPECIFIC_ATTRIBUTES
Variation 211 - Identification of user-specific attributes.
Definition: dnp3.h:1689
@ DNP3_STRING_ATTR_DEVICE_MANUFACTURERS_NAME
Variation 252 - Device manufacturer's name.
Definition: dnp3.h:1709
dnp3_param_error_t dnp3_accept_handler_get_link_identity(dnp3_accept_handler_t *instance)
Request that server attempt to identify the outstation by reading a link-layer header from the physic...
dnp3_event_analog_input_variation_t
Event analog variation.
Definition: dnp3.h:6490
@ DNP3_EVENT_ANALOG_INPUT_VARIATION_GROUP32_VAR4
Analog input event - 16-bit with time.
Definition: dnp3.h:6498
@ DNP3_EVENT_ANALOG_INPUT_VARIATION_GROUP32_VAR8
Analog input event - double-precision, floating-point with time.
Definition: dnp3.h:6506
@ DNP3_EVENT_ANALOG_INPUT_VARIATION_GROUP32_VAR1
Analog input event - 32-bit without time.
Definition: dnp3.h:6492
@ DNP3_EVENT_ANALOG_INPUT_VARIATION_GROUP32_VAR3
Analog input event - 32-bit with time.
Definition: dnp3.h:6496
@ DNP3_EVENT_ANALOG_INPUT_VARIATION_GROUP32_VAR2
Analog input event - 16-bit without time.
Definition: dnp3.h:6494
@ DNP3_EVENT_ANALOG_INPUT_VARIATION_GROUP32_VAR5
Analog input event - single-precision, floating-point without time.
Definition: dnp3.h:6500
@ DNP3_EVENT_ANALOG_INPUT_VARIATION_GROUP32_VAR7
Analog input event - single-precision, floating-point with time.
Definition: dnp3.h:6504
@ DNP3_EVENT_ANALOG_INPUT_VARIATION_GROUP32_VAR6
Analog input event - double-precision, floating-point without time.
Definition: dnp3.h:6502
static const char * dnp3_uint_attr_to_string(dnp3_uint_attr_t value)
Converts the enum to a string.
Definition: dnp3.h:1798
dnp3_param_error_t dnp3_master_channel_disable(dnp3_master_channel_t *instance)
stop communications
bool dnp3_database_update_binary_input(dnp3_database_t *instance, dnp3_binary_input_t value, dnp3_update_options_t options)
Update a BinaryInput point.
struct dnp3_outstation_server_t dnp3_outstation_server_t
TCP server that listens for connections and routes the messages to outstations.
Definition: dnp3.h:8198
void dnp3_command_set_add_g41_v4_u8(dnp3_command_set_t *instance, uint8_t idx, double value)
Add a Analog Output command (double-precision float) with 1-byte prefix index.
dnp3_param_error_t dnp3_master_channel_create_tls_2(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_connect_options_t *connect_options, dnp3_client_state_listener_t listener, dnp3_tls_client_config_t tls_config, dnp3_master_channel_t **out)
Create a master channel that connects to the specified TCP endpoint(s) and establish a TLS session wi...
void dnp3_runtime_set_shutdown_timeout(dnp3_runtime_t *instance, uint64_t timeout)
By default, when the runtime shuts down, it does so without a timeout and waits indefinitely for all ...
dnp3_update_info_t dnp3_database_update_frozen_counter_2(dnp3_database_t *instance, dnp3_frozen_counter_t value, dnp3_update_options_t options)
Update an Frozen Counter point.
void dnp3_command_set_add_g41_v3_u8(dnp3_command_set_t *instance, uint8_t idx, float value)
Add a Analog Output command (single-precision float) with 1-byte prefix index.
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_TRIP_CLOSE_CODE_RESERVED
RESERVED (3)
Definition: dnp3.h:492
@ DNP3_TRIP_CLOSE_CODE_CLOSE
CLOSE (1)
Definition: dnp3.h:488
@ DNP3_TRIP_CLOSE_CODE_TRIP
TRIP (2)
Definition: dnp3.h:490
@ DNP3_TRIP_CLOSE_CODE_NUL
NUL (0)
Definition: dnp3.h:486
dnp3_param_error_t dnp3_database_get_binary_input(dnp3_database_t *instance, uint16_t index, dnp3_binary_input_t *out)
Get a BinaryInput point.
struct dnp3_database_handle_t dnp3_database_handle_t
Handle typed used to perform transactions on the database inside of control and freeze callbacks.
Definition: dnp3.h:6919
void dnp3_byte_collection_add(dnp3_byte_collection_t *instance, uint8_t value)
Add a value to the collection.
void dnp3_runtime_destroy(dnp3_runtime_t *instance)
Destroy a runtime.
dnp3_param_error_t dnp3_master_channel_send_and_expect_empty_response(dnp3_master_channel_t *instance, dnp3_association_id_t association, dnp3_function_code_t function, dnp3_request_t *headers, dnp3_empty_response_callback_t callback)
Send the specified request to the association using the supplied function and collection of request h...
void dnp3_command_set_finish_header(dnp3_command_set_t *instance)
Finish any partially completed header. This allows for the construction of two headers with the same ...
dnp3_connect_options_t * dnp3_connect_options_create()
Initialize to the defaults.
dnp3_request_t * dnp3_request_new_one_byte_limited_count(dnp3_variation_t variation, uint8_t count)
Create a new request asking for a limited count of objects (using 8-bit start/stop).
dnp3_param_error_t dnp3_master_channel_read_directory(dnp3_master_channel_t *instance, dnp3_association_id_t association, const char *dir_path, dnp3_dir_read_config_t config, dnp3_read_directory_callback_t callback)
Asynchronously retrieve a directory listing.
static dnp3_double_bit_binary_input_config_t dnp3_double_bit_binary_input_config_create(dnp3_static_double_bit_binary_input_variation_t static_variation, dnp3_event_double_bit_binary_input_variation_t event_variation)
Fully construct dnp3_double_bit_binary_input_config_t specifying the value of each field.
Definition: dnp3.h:5991
void dnp3_outstation_server_destroy(dnp3_outstation_server_t *instance)
Gracefully shutdown all the outstations associated to this server, stops the server and release resou...
dnp3_update_result_t
Defines what occurred during an update operation and which fields of dnp3_update_info_t are valid.
Definition: dnp3.h:5644
@ DNP3_UPDATE_RESULT_NO_POINT
No point exists for this type and index.
Definition: dnp3.h:5646
@ DNP3_UPDATE_RESULT_CREATED
An event was created with the specified id.
Definition: dnp3.h:5650
@ DNP3_UPDATE_RESULT_OVERFLOW
An event was created with the specified, but inserting it caused an event to be discarded.
Definition: dnp3.h:5652
@ DNP3_UPDATE_RESULT_NO_EVENT
The point exists, but the update did not create an event.
Definition: dnp3.h:5648
dnp3_static_counter_variation_t
Static counter variation.
Definition: dnp3.h:6174
@ DNP3_STATIC_COUNTER_VARIATION_GROUP20_VAR6
Counter - 16-bit without flag.
Definition: dnp3.h:6182
@ DNP3_STATIC_COUNTER_VARIATION_GROUP20_VAR2
Counter - 16-bit with flag.
Definition: dnp3.h:6178
@ DNP3_STATIC_COUNTER_VARIATION_GROUP20_VAR5
Counter - 32-bit without flag.
Definition: dnp3.h:6180
@ DNP3_STATIC_COUNTER_VARIATION_GROUP20_VAR1
Counter - 32-bit with flag.
Definition: dnp3.h:6176
dnp3_function_code_t
Application layer function code.
Definition: dnp3.h:2774
@ DNP3_FUNCTION_CODE_RESPONSE
Master shall interpret this fragment as an Application Layer response to an ApplicationLayer request ...
Definition: dnp3.h:2838
@ DNP3_FUNCTION_CODE_FREEZE_CLEAR_NO_RESPONSE
Same as FreezeClear but outstation shall not send a response (value == 10)
Definition: dnp3.h:2796
@ DNP3_FUNCTION_CODE_UNSOLICITED_RESPONSE
Master shall interpret this fragment as an unsolicited response that was not prompted by an explicit ...
Definition: dnp3.h:2840
@ 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:2794
@ DNP3_FUNCTION_CODE_FREEZE_AT_TIME_NO_RESPONSE
Same as FreezeAtTime but outstation shall not send a response (value == 12)
Definition: dnp3.h:2800
@ 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:2790
@ DNP3_FUNCTION_CODE_STOP_APPLICATION
Outstation shall stop running the applications specified by the objects in the request (value == 18)
Definition: dnp3.h:2812
@ DNP3_FUNCTION_CODE_ENABLE_UNSOLICITED
Enables outstation to initiate unsolicited responses from points specified by the objects in the requ...
Definition: dnp3.h:2816
@ 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:2824
@ DNP3_FUNCTION_CODE_SAVE_CONFIGURATION
This code is deprecated-Do not use for new designs (value == 19)
Definition: dnp3.h:2814
@ DNP3_FUNCTION_CODE_INITIALIZE_DATA
Obsolete-Do not use for new designs (value == 15)
Definition: dnp3.h:2806
@ DNP3_FUNCTION_CODE_CLOSE_FILE
Outstation shall close a file (value == 26)
Definition: dnp3.h:2828
@ DNP3_FUNCTION_CODE_START_APPLICATION
Outstation shall start running the applications specified by the objects in the request (value == 17)
Definition: dnp3.h:2810
@ 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:2798
@ 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:2808
@ DNP3_FUNCTION_CODE_WRITE
Outstation shall store the data specified by the objects in the request (value == 2)
Definition: dnp3.h:2780
@ DNP3_FUNCTION_CODE_OPERATE
Outstation shall activate the output points selected (or armed) by a previous select function code co...
Definition: dnp3.h:2784
@ DNP3_FUNCTION_CODE_WARM_RESTART
Outstation shall reset only portions of the device (value == 14)
Definition: dnp3.h:2804
@ 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:2822
@ DNP3_FUNCTION_CODE_DELETE_FILE
Outstation shall delete a file (value == 27)
Definition: dnp3.h:2830
@ DNP3_FUNCTION_CODE_ABORT_FILE
Outstation shall abort a file transfer operation (value == 30)
Definition: dnp3.h:2836
@ DNP3_FUNCTION_CODE_SELECT
Outstation shall select (or arm) the output points specified by the objects in the request in prepara...
Definition: dnp3.h:2782
@ DNP3_FUNCTION_CODE_COLD_RESTART
Outstation shall perform a complete reset of all hardware and software in the device (value == 13)
Definition: dnp3.h:2802
@ 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:2820
@ DNP3_FUNCTION_CODE_IMMEDIATE_FREEZE_NO_RESPONSE
Same as ImmediateFreeze but outstation shall not send a response (value == 8)
Definition: dnp3.h:2792
@ DNP3_FUNCTION_CODE_GET_FILE_INFO
Outstation shall retrieve information about a file (value == 28)
Definition: dnp3.h:2832
@ DNP3_FUNCTION_CODE_DIRECT_OPERATE_NO_RESPONSE
Same as DirectOperate but outstation shall not send a response (value == 6)
Definition: dnp3.h:2788
@ DNP3_FUNCTION_CODE_READ
Outstation shall return the data specified by the objects in the request (value == 1)
Definition: dnp3.h:2778
@ DNP3_FUNCTION_CODE_AUTHENTICATE_FILE
Outstation shall return a file authentication key (value == 29)
Definition: dnp3.h:2834
@ DNP3_FUNCTION_CODE_DIRECT_OPERATE
Outstation shall immediately actuate the output points specified by the objects in the request (value...
Definition: dnp3.h:2786
@ DNP3_FUNCTION_CODE_OPEN_FILE
Outstation shall open a file (value == 25)
Definition: dnp3.h:2826
@ DNP3_FUNCTION_CODE_CONFIRM
Master sends this to an outstation to confirm the receipt of an Application Layer fragment (value == ...
Definition: dnp3.h:2776
@ DNP3_FUNCTION_CODE_DISABLE_UNSOLICITED
Prevents outstation from initiating unsolicited responses from points specified by the objects in the...
Definition: dnp3.h:2818
dnp3_client_state_t
State of the client connection.
Definition: dnp3.h:2110
@ DNP3_CLIENT_STATE_CONNECTING
Client is trying to establish a connection to the remote device.
Definition: dnp3.h:2114
@ DNP3_CLIENT_STATE_DISABLED
Client is disabled and idle until enabled.
Definition: dnp3.h:2112
@ DNP3_CLIENT_STATE_CONNECTED
Client is connected to the remote device.
Definition: dnp3.h:2116
@ DNP3_CLIENT_STATE_WAIT_AFTER_DISCONNECT
Client was disconnected, waiting before retrying.
Definition: dnp3.h:2120
@ DNP3_CLIENT_STATE_SHUTDOWN
Client is shutting down.
Definition: dnp3.h:2122
@ DNP3_CLIENT_STATE_WAIT_AFTER_FAILED_CONNECT
Failed to establish a connection, waiting before retrying.
Definition: dnp3.h:2118
static const char * dnp3_restart_error_to_string(dnp3_restart_error_t value)
Converts the enum to a string.
Definition: dnp3.h:5123
static dnp3_counter_config_t dnp3_counter_config_create(dnp3_static_counter_variation_t static_variation, dnp3_event_counter_variation_t event_variation, uint32_t deadband)
Fully construct dnp3_counter_config_t specifying the value of each field.
Definition: dnp3.h:6246
static dnp3_retry_strategy_t dnp3_retry_strategy_init()
Initialize to defaults.
Definition: dnp3.h:2600
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_OP_TYPE_PULSE_OFF
PULSE_OFF (2)
Definition: dnp3.h:518
@ DNP3_OP_TYPE_LATCH_ON
LATCH_ON (3)
Definition: dnp3.h:520
@ DNP3_OP_TYPE_NUL
NUL (0)
Definition: dnp3.h:514
@ DNP3_OP_TYPE_PULSE_ON
PULSE_ON (1)
Definition: dnp3.h:516
@ DNP3_OP_TYPE_LATCH_OFF
LATCH_OFF(4)
Definition: dnp3.h:522
static dnp3_serial_settings_t dnp3_serial_settings_init()
Initialize to default values.
Definition: dnp3.h:2737
dnp3_param_error_t dnp3_master_channel_create_tls(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_tls_client_config_t tls_config, dnp3_master_channel_t **out)
Create a master channel that connects to the specified TCP endpoint(s) and establish a TLS session wi...
dnp3_request_t * dnp3_request_new_all_objects(dnp3_variation_t variation)
Create a new request asking for all objects of a particular variation.
dnp3_param_error_t dnp3_master_channel_remove_association(dnp3_master_channel_t *instance, dnp3_association_id_t id)
Remove an association from the channel.
static const char * dnp3_event_binary_input_variation_to_string(dnp3_event_binary_input_variation_t value)
Converts the enum to a string.
Definition: dnp3.h:5842
dnp3_attr_def_error_t
Errors that can occur when defining attributes.
Definition: dnp3.h:6808
@ DNP3_ATTR_DEF_ERROR_RESERVED_VARIATION
Variation is reserved and cannot be defined.
Definition: dnp3.h:6814
@ DNP3_ATTR_DEF_ERROR_NOT_WRITABLE
This attribute cannot be configured as writable.
Definition: dnp3.h:6818
@ DNP3_ATTR_DEF_ERROR_BAD_TYPE
The type does not match the required type in set 0.
Definition: dnp3.h:6816
@ DNP3_ATTR_DEF_ERROR_ALREADY_DEFINED
Attribute has already been defined.
Definition: dnp3.h:6812
@ DNP3_ATTR_DEF_ERROR_OK
attribute defined successfully
Definition: dnp3.h:6810
void dnp3_write_dead_band_request_destroy(dnp3_write_dead_band_request_t *instance)
Destroy a request created with dnp3_write_dead_band_request_create.
void dnp3_disable_client_tcp_no_delay()
By default, TCP_NODELAY is set to true for all client TCP/TLS connections. This disables Nagle's algo...
bool dnp3_database_update_double_bit_binary_input(dnp3_database_t *instance, dnp3_double_bit_binary_input_t value, dnp3_update_options_t options)
Update a Double-Bit Binary Input point.
static const char * dnp3_log_output_format_to_string(dnp3_log_output_format_t value)
Converts the enum to a string.
Definition: dnp3.h:3293
dnp3_attr_def_error_t dnp3_database_define_bool_attr(dnp3_database_t *instance, uint8_t set, bool writable, uint8_t variation, bool value)
Define a boolean attribute which is mapped to an unsigned integer internally.
dnp3_param_error_t dnp3_master_channel_read_file_with_auth(dnp3_master_channel_t *instance, dnp3_association_id_t association, const char *remote_file_path, dnp3_file_read_config_t config, dnp3_file_reader_t reader, const char *user_name, const char *password)
Start an operation to READ a file from the outstation using a dnp3_file_reader_t to receive data.
dnp3_param_error_t dnp3_master_channel_check_link_status(dnp3_master_channel_t *instance, dnp3_association_id_t association, dnp3_link_status_callback_t callback)
Asynchronously perform a link status check.
void dnp3_master_channel_destroy(dnp3_master_channel_t *instance)
Shutdown a dnp3_master_channel_t and release all resources.
dnp3_task_error_t
Task error used in dnp3_association_information_t.
Definition: dnp3.h:4420
@ DNP3_TASK_ERROR_BAD_ENCODING
request data could not be encoded
Definition: dnp3.h:4438
@ DNP3_TASK_ERROR_RESPONSE_TIMEOUT
timeout occurred before receiving a response
Definition: dnp3.h:4428
@ DNP3_TASK_ERROR_ASSOCIATION_REMOVED
association was removed mid-task
Definition: dnp3.h:4436
@ DNP3_TASK_ERROR_TOO_MANY_REQUESTS
too many user requests queued
Definition: dnp3.h:4422
@ DNP3_TASK_ERROR_IIN_ERROR
outstation returned an IIN.2 error bit
Definition: dnp3.h:4424
@ DNP3_TASK_ERROR_SHUTDOWN
master was shutdown
Definition: dnp3.h:4434
@ DNP3_TASK_ERROR_WRITE_ERROR
insufficient buffer space to serialize the request
Definition: dnp3.h:4430
@ DNP3_TASK_ERROR_NO_CONNECTION
no connection
Definition: dnp3.h:4432
@ DNP3_TASK_ERROR_BAD_RESPONSE
response was malformed or contained object headers
Definition: dnp3.h:4426
dnp3_link_decode_level_t
Controls how transmitted and received link frames are decoded at the INFO log level.
Definition: dnp3.h:307
@ DNP3_LINK_DECODE_LEVEL_HEADER
Decode the header.
Definition: dnp3.h:311
@ DNP3_LINK_DECODE_LEVEL_PAYLOAD
Decode the header and the raw payload as hexadecimal.
Definition: dnp3.h:313
@ DNP3_LINK_DECODE_LEVEL_NOTHING
Decode nothing.
Definition: dnp3.h:309
dnp3_update_flags_type_t
Point type on which to update the flags.
Definition: dnp3.h:5759
@ DNP3_UPDATE_FLAGS_TYPE_FROZEN_COUNTER
Frozen counter.
Definition: dnp3.h:5769
@ DNP3_UPDATE_FLAGS_TYPE_COUNTER
Counter.
Definition: dnp3.h:5767
@ DNP3_UPDATE_FLAGS_TYPE_BINARY_INPUT
Binary input.
Definition: dnp3.h:5761
@ DNP3_UPDATE_FLAGS_TYPE_ANALOG_INPUT
Analog input.
Definition: dnp3.h:5771
@ DNP3_UPDATE_FLAGS_TYPE_BINARY_OUTPUT_STATUS
Binary output status.
Definition: dnp3.h:5765
@ DNP3_UPDATE_FLAGS_TYPE_ANALOG_OUTPUT_STATUS
Analog output status.
Definition: dnp3.h:5773
@ DNP3_UPDATE_FLAGS_TYPE_DOUBLE_BIT_BINARY_INPUT
Doubl-bit binary input.
Definition: dnp3.h:5763
static dnp3_link_id_config_t dnp3_link_id_config_init()
Initialize to default values.
Definition: dnp3.h:5582
dnp3_update_info_t dnp3_database_update_counter_2(dnp3_database_t *instance, dnp3_counter_t value, dnp3_update_options_t options)
Update a Counter point.
static const char * dnp3_string_attr_to_string(dnp3_string_attr_t value)
Converts the enum to a string.
Definition: dnp3.h:1715
static dnp3_event_classes_t dnp3_event_classes_init(bool class1, bool class2, bool class3)
Fully construct dnp3_event_classes_t specifying the value of each field.
Definition: dnp3.h:4070
dnp3_event_class_t
Event class.
Definition: dnp3.h:5616
@ DNP3_EVENT_CLASS_CLASS1
Class 1 event.
Definition: dnp3.h:5620
@ DNP3_EVENT_CLASS_CLASS2
Class 2 event.
Definition: dnp3.h:5622
@ DNP3_EVENT_CLASS_CLASS3
Class 3 event.
Definition: dnp3.h:5624
@ DNP3_EVENT_CLASS_NONE
Does not generate events.
Definition: dnp3.h:5618
static const char * dnp3_static_double_bit_binary_input_variation_to_string(dnp3_static_double_bit_binary_input_variation_t value)
Converts the enum to a string.
Definition: dnp3.h:5941
static const char * dnp3_read_type_to_string(dnp3_read_type_t value)
Converts the enum to a string.
Definition: dnp3.h:3561
static const char * dnp3_static_analog_output_status_variation_to_string(dnp3_static_analog_output_status_variation_t value)
Converts the enum to a string.
Definition: dnp3.h:6626
dnp3_param_error_t dnp3_connect_options_set_local_endpoint(dnp3_connect_options_t *instance, const char *endpoint)
Set the local address to which the socket is bound.
static const char * dnp3_time_quality_to_string(dnp3_time_quality_t value)
Converts the enum to a string.
Definition: dnp3.h:705
static const char * dnp3_nothing_to_string(dnp3_nothing_t value)
Converts the enum to a string.
Definition: dnp3.h:2036
dnp3_param_error_t dnp3_database_get_binary_output_status(dnp3_database_t *instance, uint16_t index, dnp3_binary_output_status_t *out)
Get a Binary Output Status point.
void dnp3_request_add_uint_attribute(dnp3_request_t *instance, uint8_t variation, uint8_t set, uint32_t value)
Add a one-byte start/stop header containing for use with a WRITE request.
struct dnp3_runtime_t dnp3_runtime_t
Handle to the underlying runtime.
Definition: dnp3.h:412
static dnp3_logging_config_t dnp3_logging_config_init()
Initialize the configuration to default values.
Definition: dnp3.h:3353
static const char * dnp3_link_decode_level_to_string(dnp3_link_decode_level_t value)
Converts the enum to a string.
Definition: dnp3.h:319
void dnp3_request_add_time_and_interval(dnp3_request_t *instance, uint64_t time, uint32_t interval_ms)
Add a single g51v1 time-and-interval.
static const char * dnp3_param_error_to_string(dnp3_param_error_t value)
Converts the enum to a string.
Definition: dnp3.h:119
struct dnp3_double_bit_binary_input_iterator_t dnp3_double_bit_binary_input_iterator_t
Iterator of double_bit_binary_input.
Definition: dnp3.h:882
dnp3_param_error_t dnp3_outstation_set_decode_level(dnp3_outstation_t *instance, dnp3_decode_level_t level)
Set decoding log level.
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.
static dnp3_permissions_t dnp3_permissions_init(dnp3_permission_set_t world, dnp3_permission_set_t group, dnp3_permission_set_t owner)
Fully construct dnp3_permissions_t specifying the value of each field.
Definition: dnp3.h:2977
static dnp3_control_code_t dnp3_control_code_from_op_type(dnp3_op_type_t op_type)
Initialize a dnp3_control_code_t instance from a dnp3_op_type_t.
Definition: dnp3.h:585
dnp3_endpoint_list_t * dnp3_endpoint_list_create(const char *main_endpoint)
Create a new list of IP endpoints.
static dnp3_classes_t dnp3_classes_none()
Initialize all classes to false.
Definition: dnp3.h:4178
static const char * dnp3_transport_decode_level_to_string(dnp3_transport_decode_level_t value)
Converts the enum to a string.
Definition: dnp3.h:294
dnp3_link_read_mode_t
Controls how the link-layer parser treats frames that span multiple calls to read of the physical lay...
Definition: dnp3.h:3226
@ DNP3_LINK_READ_MODE_DATAGRAM
Reading datagrams (UDP) where link-layer frames MAY NOT span separate calls to read.
Definition: dnp3.h:3230
@ DNP3_LINK_READ_MODE_STREAM
Reading from a stream (TCP, serial, etc.) where link-layer frames MAY span separate calls to read.
Definition: dnp3.h:3228
bool dnp3_database_add_analog_output_status(dnp3_database_t *instance, uint16_t index, dnp3_event_class_t point_class, dnp3_analog_output_status_config_t config)
Add a new Analog Output Status point.
static dnp3_analog_output_command_event_t dnp3_analog_output_command_event_init(uint16_t index, dnp3_command_status_t status, double commanded_value, dnp3_analog_command_type_t command_type, dnp3_timestamp_t time)
Fully construct dnp3_analog_output_command_event_t specifying the value of each field.
Definition: dnp3.h:1248
void dnp3_request_add_two_byte_range_header(dnp3_request_t *instance, dnp3_variation_t variation, uint16_t start, uint16_t stop)
Add a two-byte start/stop header for use with a READ request.
dnp3_udp_socket_mode_t
Describes how the UDP socket reads and writes datagrams from remote endpoint(s)
Definition: dnp3.h:3200
@ DNP3_UDP_SOCKET_MODE_ONE_TO_ONE
The UDP endpoint will only communicate with the specified remote endpoint.
Definition: dnp3.h:3202
@ DNP3_UDP_SOCKET_MODE_ONE_TO_MANY
The UDP endpoint will accept packets any remote endpoint.
Definition: dnp3.h:3206
dnp3_event_counter_variation_t
Event counter variation.
Definition: dnp3.h:6202
@ DNP3_EVENT_COUNTER_VARIATION_GROUP22_VAR5
Counter event - 32-bit with flag and time.
Definition: dnp3.h:6208
@ DNP3_EVENT_COUNTER_VARIATION_GROUP22_VAR2
Counter event - 16-bit with flag.
Definition: dnp3.h:6206
@ DNP3_EVENT_COUNTER_VARIATION_GROUP22_VAR1
Counter event - 32-bit with flag.
Definition: dnp3.h:6204
@ DNP3_EVENT_COUNTER_VARIATION_GROUP22_VAR6
Counter event - 16-bit with flag and time.
Definition: dnp3.h:6210
dnp3_param_error_t dnp3_database_get_double_bit_binary_input(dnp3_database_t *instance, uint16_t index, dnp3_double_bit_binary_input_t *out)
Get a Double-Bit Binary Input point.
void dnp3_endpoint_list_destroy(dnp3_endpoint_list_t *instance)
Destroy a previously allocated endpoint list.
dnp3_static_frozen_counter_variation_t
Static frozen counter variation.
Definition: dnp3.h:6312
@ DNP3_STATIC_FROZEN_COUNTER_VARIATION_GROUP21_VAR9
Frozen Counter - 32-bit without flag.
Definition: dnp3.h:6322
@ DNP3_STATIC_FROZEN_COUNTER_VARIATION_GROUP21_VAR6
Frozen Counter - 16-bit with flag and time.
Definition: dnp3.h:6320
@ DNP3_STATIC_FROZEN_COUNTER_VARIATION_GROUP21_VAR2
Frozen Counter - 16-bit with flag.
Definition: dnp3.h:6316
@ DNP3_STATIC_FROZEN_COUNTER_VARIATION_GROUP21_VAR1
Frozen Counter - 32-bit with flag.
Definition: dnp3.h:6314
@ DNP3_STATIC_FROZEN_COUNTER_VARIATION_GROUP21_VAR10
Frozen Counter - 16-bit without flag.
Definition: dnp3.h:6324
@ DNP3_STATIC_FROZEN_COUNTER_VARIATION_GROUP21_VAR5
Frozen Counter - 32-bit with flag and time.
Definition: dnp3.h:6318
static dnp3_binary_output_status_config_t dnp3_binary_output_status_config_init()
Initialize to defaults.
Definition: dnp3.h:6127
dnp3_param_error_t dnp3_master_channel_enable(dnp3_master_channel_t *instance)
start communications
dnp3_binary_input_t * dnp3_binary_input_iterator_next(dnp3_binary_input_iterator_t *iter)
returns a pointer to the next value or NULL
dnp3_event_double_bit_binary_input_variation_t
Event double-bit binary input variation.
Definition: dnp3.h:5953
@ DNP3_EVENT_DOUBLE_BIT_BINARY_INPUT_VARIATION_GROUP4_VAR3
Double-bit binary input event - with relative time.
Definition: dnp3.h:5959
@ DNP3_EVENT_DOUBLE_BIT_BINARY_INPUT_VARIATION_GROUP4_VAR1
Double-bit binary input event - without time.
Definition: dnp3.h:5955
@ DNP3_EVENT_DOUBLE_BIT_BINARY_INPUT_VARIATION_GROUP4_VAR2
Double-bit binary input event - with absolute time.
Definition: dnp3.h:5957
dnp3_response_function_t
Type of response.
Definition: dnp3.h:3395
@ DNP3_RESPONSE_FUNCTION_UNSOLICITED_RESPONSE
Unsolicited response.
Definition: dnp3.h:3399
@ DNP3_RESPONSE_FUNCTION_RESPONSE
Solicited response.
Definition: dnp3.h:3397
dnp3_counter_t * dnp3_counter_iterator_next(dnp3_counter_iterator_t *iter)
returns a pointer to the next value or NULL
bool dnp3_database_remove_counter(dnp3_database_t *instance, uint16_t index)
Remove a Counter point.
struct dnp3_endpoint_list_t dnp3_endpoint_list_t
List of IP endpoints.
Definition: dnp3.h:1364
dnp3_param_error_t dnp3_master_channel_read_directory_with_auth(dnp3_master_channel_t *instance, dnp3_association_id_t association, const char *dir_path, dnp3_dir_read_config_t config, const char *user_name, const char *password, dnp3_read_directory_callback_t callback)
Asynchronously retrieve a directory listing by first obtaining an authentication key.
dnp3_param_error_t dnp3_outstation_enable(dnp3_outstation_t *instance)
enable communications
dnp3_int_attr_t
Enumeration of all the default integer attributes.
Definition: dnp3.h:1834
@ DNP3_INT_ATTR_UNKNOWN
The attribute variation is not defined or is not part of the default set.
Definition: dnp3.h:1836
static dnp3_analog_input_config_t dnp3_analog_input_config_create(dnp3_static_analog_input_variation_t static_variation, dnp3_event_analog_input_variation_t event_variation, double deadband)
Fully construct dnp3_analog_input_config_t specifying the value of each field.
Definition: dnp3.h:6546
void dnp3_database_handle_transaction(dnp3_database_handle_t *instance, dnp3_database_transaction_t callback)
Acquire a mutex on the underlying database and apply a set of changes as a transaction.
dnp3_request_t * dnp3_request_create()
Create a new request.
dnp3_event_analog_output_status_variation_t
Event analog output status variation.
Definition: dnp3.h:6640
@ DNP3_EVENT_ANALOG_OUTPUT_STATUS_VARIATION_GROUP42_VAR2
Analog output event - 16-bit without time.
Definition: dnp3.h:6644
@ DNP3_EVENT_ANALOG_OUTPUT_STATUS_VARIATION_GROUP42_VAR5
Analog output event - single-precision, floating-point without time.
Definition: dnp3.h:6650
@ DNP3_EVENT_ANALOG_OUTPUT_STATUS_VARIATION_GROUP42_VAR8
Analog output event - double-precision, floating-point with time.
Definition: dnp3.h:6656
@ DNP3_EVENT_ANALOG_OUTPUT_STATUS_VARIATION_GROUP42_VAR7
Analog output event - single-precision, floating-point with time.
Definition: dnp3.h:6654
@ DNP3_EVENT_ANALOG_OUTPUT_STATUS_VARIATION_GROUP42_VAR3
Analog output event - 32-bit with time.
Definition: dnp3.h:6646
@ DNP3_EVENT_ANALOG_OUTPUT_STATUS_VARIATION_GROUP42_VAR4
Analog output event - 16-bit with time.
Definition: dnp3.h:6648
@ DNP3_EVENT_ANALOG_OUTPUT_STATUS_VARIATION_GROUP42_VAR6
Analog output event - double-precision, floating-point without time.
Definition: dnp3.h:6652
@ DNP3_EVENT_ANALOG_OUTPUT_STATUS_VARIATION_GROUP42_VAR1
Analog output event - 32-bit without time.
Definition: dnp3.h:6642
static const char * dnp3_restart_delay_type_to_string(dnp3_restart_delay_type_t value)
Converts the enum to a string.
Definition: dnp3.h:7210
dnp3_attr_def_error_t dnp3_database_define_uint_attr(dnp3_database_t *instance, uint8_t set, bool writable, uint8_t variation, uint32_t value)
Define an unsigned integer attribute.
dnp3_request_t * dnp3_request_new_class(bool class0, bool class1, bool class2, bool class3)
Create a new request asking for classes.
dnp3_time_sync_error_t
Possible errors that can occur during a time synchronization procedure.
Definition: dnp3.h:5004
@ DNP3_TIME_SYNC_ERROR_WRITE_ERROR
insufficient buffer space to serialize the request
Definition: dnp3.h:5028
@ DNP3_TIME_SYNC_ERROR_BAD_ENCODING
request data could not be encoded
Definition: dnp3.h:5036
@ DNP3_TIME_SYNC_ERROR_IIN_ERROR
outstation returned an IIN.2 error bit
Definition: dnp3.h:5022
@ DNP3_TIME_SYNC_ERROR_OVERFLOW
Overflow in calculation.
Definition: dnp3.h:5014
@ DNP3_TIME_SYNC_ERROR_TOO_MANY_REQUESTS
too many user requests queued
Definition: dnp3.h:5020
@ DNP3_TIME_SYNC_ERROR_STILL_NEEDS_TIME
Outstation did not clear the NEED_TIME IIN bit.
Definition: dnp3.h:5016
@ DNP3_TIME_SYNC_ERROR_OK
Success, i.e. no error occurred.
Definition: dnp3.h:5006
@ DNP3_TIME_SYNC_ERROR_SYSTEM_TIME_NOT_UNIX
The system time cannot be converted to a Unix timestamp.
Definition: dnp3.h:5010
@ DNP3_TIME_SYNC_ERROR_BAD_RESPONSE
response was malformed or contained object headers
Definition: dnp3.h:5024
@ DNP3_TIME_SYNC_ERROR_RESPONSE_TIMEOUT
timeout occurred before receiving a response
Definition: dnp3.h:5026
@ DNP3_TIME_SYNC_ERROR_NO_CONNECTION
no connection
Definition: dnp3.h:5030
@ DNP3_TIME_SYNC_ERROR_BAD_OUTSTATION_TIME_DELAY
Outstation time delay exceeded the response delay.
Definition: dnp3.h:5012
@ DNP3_TIME_SYNC_ERROR_SHUTDOWN
master was shutdown
Definition: dnp3.h:5032
@ DNP3_TIME_SYNC_ERROR_ASSOCIATION_REMOVED
association was removed mid-task
Definition: dnp3.h:5034
@ DNP3_TIME_SYNC_ERROR_CLOCK_ROLLBACK
Detected a clock rollback.
Definition: dnp3.h:5008
@ DNP3_TIME_SYNC_ERROR_SYSTEM_TIME_NOT_AVAILABLE
System time not available.
Definition: dnp3.h:5018
static dnp3_binary_input_t dnp3_binary_input_init(uint16_t index, bool value, dnp3_flags_t flags, dnp3_timestamp_t time)
Fully construct dnp3_binary_input_t specifying the value of each field.
Definition: dnp3.h:827
static dnp3_analog_output_status_config_t dnp3_analog_output_status_config_init()
Initialize to defaults.
Definition: dnp3.h:6714
dnp3_app_decode_level_t
Controls how transmitted and received application-layer fragments are decoded at the INFO log level.
Definition: dnp3.h:254
@ DNP3_APP_DECODE_LEVEL_NOTHING
Decode nothing.
Definition: dnp3.h:256
@ DNP3_APP_DECODE_LEVEL_OBJECT_VALUES
Decode the header, the object headers, and the object values.
Definition: dnp3.h:262
@ DNP3_APP_DECODE_LEVEL_OBJECT_HEADERS
Decode the header and the object headers.
Definition: dnp3.h:260
@ DNP3_APP_DECODE_LEVEL_HEADER
Decode the header-only.
Definition: dnp3.h:258
static const char * dnp3_client_state_to_string(dnp3_client_state_t value)
Converts the enum to a string.
Definition: dnp3.h:2128
bool dnp3_database_add_counter(dnp3_database_t *instance, uint16_t index, dnp3_event_class_t point_class, dnp3_counter_config_t config)
Add a new Counter point.
static const char * dnp3_data_bits_to_string(dnp3_data_bits_t value)
Converts the enum to a string.
Definition: dnp3.h:2626
dnp3_request_t * dnp3_request_new_two_byte_range(dnp3_variation_t variation, uint16_t start, uint16_t stop)
Create a new request asking for range of objects (using 16-bit start/stop).
struct dnp3_accept_handler_t dnp3_accept_handler_t
Class used to accept a connection, reject it, or defer it to link identification.
Definition: dnp3.h:5487
dnp3_binary_output_status_t * dnp3_binary_output_status_iterator_next(dnp3_binary_output_status_iterator_t *iter)
returns a pointer to the next value or NULL
static dnp3_utc_timestamp_t dnp3_utc_timestamp_valid(uint64_t value)
Construct a valid dnp3_utc_timestamp_t.
Definition: dnp3.h:4303
dnp3_request_t * dnp3_request_new_two_byte_limited_count(dnp3_variation_t variation, uint16_t count)
Create a new request asking for a limited count of objects (using 16-bit start/stop).
static dnp3_counter_t dnp3_counter_init(uint16_t index, uint32_t value, dnp3_flags_t flags, dnp3_timestamp_t time)
Fully construct dnp3_counter_t specifying the value of each field.
Definition: dnp3.h:953
static const char * dnp3_static_counter_variation_to_string(dnp3_static_counter_variation_t value)
Converts the enum to a string.
Definition: dnp3.h:6188
dnp3_file_error_t
Errors that can occur during file transfer.
Definition: dnp3.h:3026
@ DNP3_FILE_ERROR_BAD_ENCODING
request data could not be encoded
Definition: dnp3.h:3058
@ DNP3_FILE_ERROR_ABORT_BY_USER
File transfer aborted by user.
Definition: dnp3.h:3036
@ DNP3_FILE_ERROR_BAD_STATUS
Outstation returned an error status code.
Definition: dnp3.h:3030
@ DNP3_FILE_ERROR_WRONG_HANDLE
File handle returned by the outstation did not match the request.
Definition: dnp3.h:3040
@ DNP3_FILE_ERROR_OK
Success, i.e. no error occurred.
Definition: dnp3.h:3028
@ DNP3_FILE_ERROR_RESPONSE_TIMEOUT
timeout occurred before receiving a response
Definition: dnp3.h:3048
@ DNP3_FILE_ERROR_MAX_LENGTH_EXCEEDED
Exceeded the maximum length specified by the user.
Definition: dnp3.h:3038
@ DNP3_FILE_ERROR_ASSOCIATION_REMOVED
association was removed mid-task
Definition: dnp3.h:3056
@ DNP3_FILE_ERROR_BAD_RESPONSE
response was malformed or contained object headers
Definition: dnp3.h:3046
@ DNP3_FILE_ERROR_SHUTDOWN
master was shutdown
Definition: dnp3.h:3054
@ DNP3_FILE_ERROR_TOO_MANY_REQUESTS
too many user requests queued
Definition: dnp3.h:3042
@ DNP3_FILE_ERROR_NO_PERMISSION
Outstation indicated no permission to access file.
Definition: dnp3.h:3032
@ DNP3_FILE_ERROR_IIN_ERROR
outstation returned an IIN.2 error bit
Definition: dnp3.h:3044
@ DNP3_FILE_ERROR_NO_CONNECTION
no connection
Definition: dnp3.h:3052
@ DNP3_FILE_ERROR_WRITE_ERROR
insufficient buffer space to serialize the request
Definition: dnp3.h:3050
@ DNP3_FILE_ERROR_BAD_BLOCK_NUM
Received an unexpected block number.
Definition: dnp3.h:3034
static const char * dnp3_empty_response_error_to_string(dnp3_empty_response_error_t value)
Converts the enum to a string.
Definition: dnp3.h:3897
dnp3_octet_string_t * dnp3_octet_string_iterator_next(dnp3_octet_string_iterator_t *iter)
returns a pointer to the next value or NULL
dnp3_param_error_t dnp3_master_channel_read_file(dnp3_master_channel_t *instance, dnp3_association_id_t association, const char *remote_file_path, dnp3_file_read_config_t config, dnp3_file_reader_t reader)
Start an operation to READ a file from the outstation using a dnp3_file_reader_t to receive data.
bool dnp3_database_remove_octet_string(dnp3_database_t *instance, uint16_t index)
Remove an Octet String point.
dnp3_param_error_t dnp3_master_channel_create_tcp_2(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_connect_options_t *connect_options, dnp3_client_state_listener_t listener, dnp3_master_channel_t **out)
Create a master channel that connects to the specified TCP endpoint(s)
void dnp3_outstation_destroy(dnp3_outstation_t *instance)
Free resources of the outstation.
struct dnp3_analog_input_iterator_t dnp3_analog_input_iterator_t
Iterator of analog_input.
Definition: dnp3.h:1050
static const char * dnp3_trip_close_code_to_string(dnp3_trip_close_code_t value)
Converts the enum to a string.
Definition: dnp3.h:498
dnp3_static_analog_output_status_variation_t
Static analog output status variation.
Definition: dnp3.h:6612
@ DNP3_STATIC_ANALOG_OUTPUT_STATUS_VARIATION_GROUP40_VAR2
Analog output status - 16-bit with flag.
Definition: dnp3.h:6616
@ DNP3_STATIC_ANALOG_OUTPUT_STATUS_VARIATION_GROUP40_VAR1
Analog output status - 32-bit with flag.
Definition: dnp3.h:6614
@ DNP3_STATIC_ANALOG_OUTPUT_STATUS_VARIATION_GROUP40_VAR3
Analog output status - single-precision, floating-point with flag.
Definition: dnp3.h:6618
@ DNP3_STATIC_ANALOG_OUTPUT_STATUS_VARIATION_GROUP40_VAR4
Analog output status - double-precision, floating-point with flag.
Definition: dnp3.h:6620
struct dnp3_write_dead_band_request_t dnp3_write_dead_band_request_t
Define a custom request to WRITE analog input dead-bands.
Definition: dnp3.h:3802
dnp3_link_error_mode_t
Controls how errors in parsed link-layer frames are handled. This behavior is configurable for physic...
Definition: dnp3.h:2752
@ 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:2754
@ DNP3_LINK_ERROR_MODE_CLOSE
Framing errors are bubbled up to calling code, closing the session. Suitable for physical layers that...
Definition: dnp3.h:2756
dnp3_stop_bits_t
Number of stop bits.
Definition: dnp3.h:2690
@ DNP3_STOP_BITS_TWO
Two stop bits.
Definition: dnp3.h:2694
@ DNP3_STOP_BITS_ONE
One stop bit.
Definition: dnp3.h:2692
dnp3_update_info_t dnp3_database_update_analog_output_status_2(dnp3_database_t *instance, dnp3_analog_output_status_t value, dnp3_update_options_t options)
Update a Analog Output Status point.
bool dnp3_database_add_analog_input(dnp3_database_t *instance, uint16_t index, dnp3_event_class_t point_class, dnp3_analog_input_config_t config)
Add a new AnalogInput point.
dnp3_event_frozen_counter_variation_t
Event frozen counter variation.
Definition: dnp3.h:6346
@ DNP3_EVENT_FROZEN_COUNTER_VARIATION_GROUP23_VAR5
Frozen Counter event - 32-bit with flag and time.
Definition: dnp3.h:6352
@ DNP3_EVENT_FROZEN_COUNTER_VARIATION_GROUP23_VAR2
Frozen Counter event - 16-bit with flag.
Definition: dnp3.h:6350
@ DNP3_EVENT_FROZEN_COUNTER_VARIATION_GROUP23_VAR6
Frozen Counter event - 16-bit with flag and time.
Definition: dnp3.h:6354
@ DNP3_EVENT_FROZEN_COUNTER_VARIATION_GROUP23_VAR1
Frozen Counter event - 32-bit with flag.
Definition: dnp3.h:6348
dnp3_param_error_t dnp3_outstation_server_bind(dnp3_outstation_server_t *instance)
Bind the server to the port and starts listening. Also starts all the outstations associated to it.
static const char * dnp3_write_time_result_to_string(dnp3_write_time_result_t value)
Converts the enum to a string.
Definition: dnp3.h:7297
static const char * dnp3_stop_bits_to_string(dnp3_stop_bits_t value)
Converts the enum to a string.
Definition: dnp3.h:2700
dnp3_param_error_t dnp3_master_channel_open_file(dnp3_master_channel_t *instance, dnp3_association_id_t association, const char *file_name, uint32_t auth_key, dnp3_permissions_t permissions, uint32_t file_size, dnp3_file_mode_t file_mode, uint16_t max_block_size, dnp3_file_open_callback_t callback)
Asynchronously open a file.
static const char * dnp3_event_binary_output_status_variation_to_string(dnp3_event_binary_output_status_variation_t value)
Converts the enum to a string.
Definition: dnp3.h:6086
dnp3_param_error_t dnp3_master_channel_create_udp(dnp3_runtime_t *runtime, dnp3_master_channel_config_t config, const char *local_endpoint, dnp3_link_read_mode_t link_read_mode, uint64_t retry_delay, dnp3_master_channel_t **out)
Create a UDP master channel on the local endpoint.
dnp3_param_error_t dnp3_create_master_tcp_server(dnp3_runtime_t *runtime, const char *local_addr, dnp3_link_id_config_t link_id_config, dnp3_connection_handler_t connection_handler, dnp3_master_server_t **out)
Spawn a TCP server that accepts connections from outstations.
dnp3_frozen_counter_t * dnp3_frozen_counter_iterator_next(dnp3_frozen_counter_iterator_t *iter)
returns a pointer to the next value or NULL
void dnp3_octet_string_value_destroy(dnp3_octet_string_value_t *instance)
Destroys an instance of the collection.
void dnp3_command_set_add_g12_v1_u16(dnp3_command_set_t *instance, uint16_t idx, dnp3_group12_var1_t header)
Add a CROB with 2-byte prefix index.
dnp3_param_error_t dnp3_identified_link_handler_accept(dnp3_identified_link_handler_t *instance, dnp3_link_error_mode_t error_mode, dnp3_master_channel_config_t config)
Accept the connection and create a master channel.
dnp3_attr_def_error_t dnp3_database_define_int_attr(dnp3_database_t *instance, uint8_t set, bool writable, uint8_t variation, int32_t value)
Define a signed integer attribute.
dnp3_file_type_t
File type enumeration used in Group 70 objects.
Definition: dnp3.h:2889
@ DNP3_FILE_TYPE_SIMPLE
File is a simple file type suitable for sequential file transfer.
Definition: dnp3.h:2893
@ DNP3_FILE_TYPE_DIRECTORY
File is a directory.
Definition: dnp3.h:2891
@ DNP3_FILE_TYPE_OTHER
Some other unspecified value.
Definition: dnp3.h:2895
void dnp3_write_dead_band_request_add_g34v3_u8(dnp3_write_dead_band_request_t *instance, uint8_t index, float dead_band)
Add a g34v3 (single-precision floating point) dead-band with 8-bit indexing to the request.
static const char * dnp3_bit_string_attr_to_string(dnp3_bit_string_attr_t value)
Converts the enum to a string.
Definition: dnp3.h:1956
dnp3_write_dead_band_request_t * dnp3_write_dead_band_request_create()
A builder class to create one or more headers of analog input dead-bands.
bool dnp3_database_update_octet_string(dnp3_database_t *instance, uint16_t index, dnp3_octet_string_value_t *value, dnp3_update_options_t options)
Update an Octet String point.
dnp3_param_error_t dnp3_outstation_create_udp(dnp3_runtime_t *runtime, dnp3_outstation_udp_config_t udp_config, dnp3_outstation_config_t 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 which is tolerant to the serial port being add...
static const char * dnp3_qualifier_code_to_string(dnp3_qualifier_code_t value)
Converts the enum to a string.
Definition: dnp3.h:3513
static dnp3_binary_output_status_config_t dnp3_binary_output_status_config_create(dnp3_static_binary_output_status_variation_t static_variation, dnp3_event_binary_output_status_variation_t event_variation)
Fully construct dnp3_binary_output_status_config_t specifying the value of each field.
Definition: dnp3.h:6111
struct dnp3_database_t dnp3_database_t
Internal database access.
Definition: dnp3.h:5612
bool dnp3_database_update_frozen_counter(dnp3_database_t *instance, dnp3_frozen_counter_t value, dnp3_update_options_t options)
Update an Frozen Counter point.
static dnp3_tls_client_config_t dnp3_tls_client_config_init(const char *dns_name, const char *peer_cert_path, const char *local_cert_path, const char *private_key_path, const char *password)
construct the configuration with defaults
Definition: dnp3.h:1514
static const char * dnp3_time_format_to_string(dnp3_time_format_t value)
Converts the enum to a string.
Definition: dnp3.h:3317
dnp3_freeze_type_t
Freeze operation type.
Definition: dnp3.h:7310
@ 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:7314
@ DNP3_FREEZE_TYPE_IMMEDIATE_FREEZE
Copy the current value of a counter to the associated point.
Definition: dnp3.h:7312
static dnp3_runtime_config_t dnp3_runtime_config_init()
Initialize the configuration to default values.
Definition: dnp3.h:431
bool dnp3_database_update_analog_output_status(dnp3_database_t *instance, dnp3_analog_output_status_t value, dnp3_update_options_t options)
Update a Analog Output Status point.
static const char * dnp3_parity_to_string(dnp3_parity_t value)
Converts the enum to a string.
Definition: dnp3.h:2677
dnp3_data_bits_t
Number of bits per character.
Definition: dnp3.h:2612
@ DNP3_DATA_BITS_FIVE
5 bits per character
Definition: dnp3.h:2614
@ DNP3_DATA_BITS_SEVEN
7 bits per character
Definition: dnp3.h:2618
@ DNP3_DATA_BITS_EIGHT
8 bits per character
Definition: dnp3.h:2620
@ DNP3_DATA_BITS_SIX
6 bits per character
Definition: dnp3.h:2616
void dnp3_command_set_add_g12_v1_u8(dnp3_command_set_t *instance, uint8_t idx, dnp3_group12_var1_t header)
Add a CROB with 1-byte prefix index.
struct dnp3_frozen_analog_input_iterator_t dnp3_frozen_analog_input_iterator_t
Iterator of frozen_analog_input.
Definition: dnp3.h:1092
static const char * dnp3_int_attr_to_string(dnp3_int_attr_t value)
Converts the enum to a string.
Definition: dnp3.h:1842
static const char * dnp3_port_state_to_string(dnp3_port_state_t value)
Converts the enum to a string.
Definition: dnp3.h:2079
dnp3_attr_item_t * dnp3_attr_item_iter_next(dnp3_attr_item_iter_t *iter)
returns a pointer to the next value or NULL
static dnp3_event_classes_t dnp3_event_classes_none()
Initialize all classes to false.
Definition: dnp3.h:4106
struct dnp3_master_server_t dnp3_master_server_t
Class with methods used to spawn servers.
Definition: dnp3.h:5558
static dnp3_double_bit_binary_input_config_t dnp3_double_bit_binary_input_config_init()
Initialize to defaults.
Definition: dnp3.h:6007
static const char * dnp3_octet_string_attr_to_string(dnp3_octet_string_attr_t value)
Converts the enum to a string.
Definition: dnp3.h:1936
dnp3_connection_state_t
Outstation connection state for connection-oriented transports, e.g. TCP.
Definition: dnp3.h:7911
@ DNP3_CONNECTION_STATE_CONNECTED
Connected to the master.
Definition: dnp3.h:7913
@ DNP3_CONNECTION_STATE_DISCONNECTED
Disconnected from the master.
Definition: dnp3.h:7915
dnp3_param_error_t dnp3_master_channel_warm_restart(dnp3_master_channel_t *instance, dnp3_association_id_t association, dnp3_restart_task_callback_t callback)
Asynchronously perform a warm restart operation to the association.
static dnp3_update_options_t dnp3_update_options_detect_event()
Default event detection mode. Updates the static value and automatically detects event.
Definition: dnp3.h:5731
dnp3_analog_input_t * dnp3_analog_input_iterator_next(dnp3_analog_input_iterator_t *iter)
returns a pointer to the next value or NULL
dnp3_analog_command_type_t
Describes the encoding of the commanded value.
Definition: dnp3.h:1192
@ DNP3_ANALOG_COMMAND_TYPE_I32
16-bit integer
Definition: dnp3.h:1196
@ DNP3_ANALOG_COMMAND_TYPE_I16
16-bit integer
Definition: dnp3.h:1194
@ DNP3_ANALOG_COMMAND_TYPE_F64
double-precision floating point
Definition: dnp3.h:1200
@ DNP3_ANALOG_COMMAND_TYPE_F32
single-precision floating point
Definition: dnp3.h:1198
bool dnp3_database_remove_binary_output_status(dnp3_database_t *instance, uint16_t index)
Remove a Binary Output Status point.
static dnp3_update_options_t dnp3_update_options_no_event()
Only update the static value. Usefull during initialization of the database.
Definition: dnp3.h:5747
dnp3_qualifier_code_t
Qualifier code used in the response.
Definition: dnp3.h:3491
@ DNP3_QUALIFIER_CODE_RANGE16
16-bit start stop (0x01)
Definition: dnp3.h:3495
@ DNP3_QUALIFIER_CODE_COUNT16
16-bit count (0x08)
Definition: dnp3.h:3501
@ DNP3_QUALIFIER_CODE_COUNT_AND_PREFIX_16
16-bit count and prefix (0x28)
Definition: dnp3.h:3505
@ DNP3_QUALIFIER_CODE_ALL_OBJECTS
All objects (0x06)
Definition: dnp3.h:3497
@ DNP3_QUALIFIER_CODE_RANGE8
8-bit start stop (0x00)
Definition: dnp3.h:3493
@ DNP3_QUALIFIER_CODE_COUNT_AND_PREFIX_8
8-bit count and prefix (0x17)
Definition: dnp3.h:3503
@ DNP3_QUALIFIER_CODE_FREE_FORMAT_16
16-bit free format (0x5B)
Definition: dnp3.h:3507
@ DNP3_QUALIFIER_CODE_COUNT8
8-bit count (0x07)
Definition: dnp3.h:3499
static dnp3_outstation_config_t dnp3_outstation_config_init(uint16_t outstation_address, uint16_t master_address, dnp3_event_buffer_config_t event_buffer_config)
Initialize to defaults.
Definition: dnp3.h:7172
static const char * dnp3_event_counter_variation_to_string(dnp3_event_counter_variation_t value)
Converts the enum to a string.
Definition: dnp3.h:6216
static const char * dnp3_certificate_mode_to_string(dnp3_certificate_mode_t value)
Converts the enum to a string.
Definition: dnp3.h:1462
struct dnp3_frozen_counter_iterator_t dnp3_frozen_counter_iterator_t
Iterator of frozen_counter.
Definition: dnp3.h:1008
static const char * dnp3_app_decode_level_to_string(dnp3_app_decode_level_t value)
Converts the enum to a string.
Definition: dnp3.h:268
struct dnp3_byte_iterator_t dnp3_byte_iterator_t
Iterator of uint8_t.
Definition: dnp3.h:1307
static dnp3_frozen_counter_config_t dnp3_frozen_counter_config_init()
Initialize to defaults.
Definition: dnp3.h:6408
dnp3_param_error_t dnp3_master_channel_cold_restart(dnp3_master_channel_t *instance, dnp3_association_id_t association, dnp3_restart_task_callback_t callback)
Asynchronously perform a cold restart operation to the association.
struct dnp3_binary_output_status_iterator_t dnp3_binary_output_status_iterator_t
Iterator of binary_output_status.
Definition: dnp3.h:924
dnp3_param_error_t dnp3_master_channel_add_association(dnp3_master_channel_t *instance, uint16_t address, dnp3_association_config_t config, dnp3_read_handler_t read_handler, dnp3_association_handler_t association_handler, dnp3_association_information_t association_information, dnp3_association_id_t *out)
Add an association to the channel.
dnp3_update_info_t dnp3_database_update_analog_input_2(dnp3_database_t *instance, dnp3_analog_input_t value, dnp3_update_options_t options)
Update a AnalogInput point.
dnp3_float_attr_t
Enumeration of all known float attributes.
Definition: dnp3.h:1967
@ DNP3_FLOAT_ATTR_DEVICE_LOCATION_LATITUDE
Variation 205 - Latitude of the device from the equator (90.0 to -90.0 deg)
Definition: dnp3.h:1975
@ DNP3_FLOAT_ATTR_DEVICE_LOCATION_LONGITUDE
Variation 204 - Longitude of the device from reference meridian (-180.0 to 180.0 deg)
Definition: dnp3.h:1973
@ DNP3_FLOAT_ATTR_DEVICE_LOCATION_ALTITUDE
Variation 203 - Altitude of the device.
Definition: dnp3.h:1971
@ DNP3_FLOAT_ATTR_UNKNOWN
The attribute variation is not defined or is not part of the default set.
Definition: dnp3.h:1969
static const char * dnp3_auto_time_sync_to_string(dnp3_auto_time_sync_t value)
Converts the enum to a string.
Definition: dnp3.h:4204
dnp3_task_type_t
Task type used in dnp3_association_information_t.
Definition: dnp3.h:4350
@ DNP3_TASK_TYPE_USER_READ
User-defined read request.
Definition: dnp3.h:4352
@ DNP3_TASK_TYPE_FILE_WRITE_BLOCK
Write a file block to the outstation.
Definition: dnp3.h:4384
@ DNP3_TASK_TYPE_GENERIC_EMPTY_RESPONSE
Generic request that expects an empty response.
Definition: dnp3.h:4374
@ DNP3_TASK_TYPE_DISABLE_UNSOLICITED
Disable unsolicited startup request.
Definition: dnp3.h:4366
@ DNP3_TASK_TYPE_PERIODIC_POLL
Periodic poll task.
Definition: dnp3.h:4354
@ DNP3_TASK_TYPE_FILE_READ
Read a file from the outstation.
Definition: dnp3.h:4376
@ DNP3_TASK_TYPE_ENABLE_UNSOLICITED
Enable unsolicited startup request.
Definition: dnp3.h:4364
@ DNP3_TASK_TYPE_RESTART
Cold or warm restart task.
Definition: dnp3.h:4370
@ DNP3_TASK_TYPE_COMMAND
Command request.
Definition: dnp3.h:4360
@ DNP3_TASK_TYPE_FILE_OPEN
Open a file on the outstation.
Definition: dnp3.h:4382
@ DNP3_TASK_TYPE_CLEAR_RESTART_BIT
Clear RESTART IIN bit.
Definition: dnp3.h:4362
@ DNP3_TASK_TYPE_STARTUP_INTEGRITY
Startup integrity scan.
Definition: dnp3.h:4356
@ DNP3_TASK_TYPE_AUTO_EVENT_SCAN
Automatic event scan caused by RESTART IIN bit detection.
Definition: dnp3.h:4358
@ DNP3_TASK_TYPE_FILE_CLOSE
Close a file on the outstation.
Definition: dnp3.h:4386
@ DNP3_TASK_TYPE_WRITE_DEAD_BANDS
Write analog input dead-bands.
Definition: dnp3.h:4372
@ DNP3_TASK_TYPE_FILE_AUTH
Send username and password and get back an auth key from the outstation.
Definition: dnp3.h:4380
@ DNP3_TASK_TYPE_TIME_SYNC
Time synchronisation task.
Definition: dnp3.h:4368
@ DNP3_TASK_TYPE_GET_FILE_INFO
Get information about a file.
Definition: dnp3.h:4378
dnp3_param_error_t dnp3_master_channel_operate(dnp3_master_channel_t *instance, dnp3_association_id_t association, dnp3_command_mode_t mode, dnp3_command_set_t *command, dnp3_command_task_callback_t callback)
Asynchronously perform a command operation on the association.
static dnp3_group12_var1_t dnp3_group12_var1_init(dnp3_control_code_t code, uint8_t count, uint32_t on_time, uint32_t off_time)
Fully construct dnp3_group12_var1_t specifying the value of each field.
Definition: dnp3.h:638
struct dnp3_attr_item_iter_t dnp3_attr_item_iter_t
Iterator of attr_item.
Definition: dnp3.h:2018
struct dnp3_octet_string_iterator_t dnp3_octet_string_iterator_t
Iterator of octet_string.
Definition: dnp3.h:1328
static const char * dnp3_response_function_to_string(dnp3_response_function_t value)
Converts the enum to a string.
Definition: dnp3.h:3405
void dnp3_write_dead_band_request_add_g34v3_u16(dnp3_write_dead_band_request_t *instance, uint16_t index, float dead_band)
Add a g34v3 (single-precision floating point) dead-band with 16-bit indexing to the request.
dnp3_log_output_format_t
Describes how each log event is formatted.
Definition: dnp3.h:3283
@ DNP3_LOG_OUTPUT_FORMAT_JSON
Output formatted as JSON.
Definition: dnp3.h:3287
@ DNP3_LOG_OUTPUT_FORMAT_TEXT
A simple text-based format.
Definition: dnp3.h:3285
static const char * dnp3_variation_to_string(dnp3_variation_t value)
Converts the enum to a string.
Definition: dnp3.h:2435
dnp3_log_level_t
Log level.
Definition: dnp3.h:3250
@ DNP3_LOG_LEVEL_DEBUG
Debugging log level.
Definition: dnp3.h:3258
@ DNP3_LOG_LEVEL_TRACE
Trace log level.
Definition: dnp3.h:3260
@ DNP3_LOG_LEVEL_WARN
Warning log level.
Definition: dnp3.h:3254
@ DNP3_LOG_LEVEL_ERROR
Error log level.
Definition: dnp3.h:3252
@ DNP3_LOG_LEVEL_INFO
Information log level.
Definition: dnp3.h:3256
static dnp3_analog_output_status_t dnp3_analog_output_status_init(uint16_t index, double value, dnp3_flags_t flags, dnp3_timestamp_t time)
Fully construct dnp3_analog_output_status_t specifying the value of each field.
Definition: dnp3.h:1121
static const char * dnp3_udp_socket_mode_to_string(dnp3_udp_socket_mode_t value)
Converts the enum to a string.
Definition: dnp3.h:3212
static const char * dnp3_freeze_result_to_string(dnp3_freeze_result_t value)
Converts the enum to a string.
Definition: dnp3.h:7344
bool dnp3_database_add_binary_input(dnp3_database_t *instance, uint16_t index, dnp3_event_class_t point_class, dnp3_binary_input_config_t config)
Add a new BinaryInput point.
dnp3_param_error_t dnp3_master_channel_write_dead_bands(dnp3_master_channel_t *instance, dnp3_association_id_t association, dnp3_write_dead_band_request_t *request, dnp3_empty_response_callback_t callback)
Perform a WRITE on the association using the supplied collection of dead-band headers.
void dnp3_command_set_add_g41_v3_u16(dnp3_command_set_t *instance, uint16_t idx, float value)
Add a Analog Output command (single-precision float) with 2-byte prefix index.
struct dnp3_connect_options_t dnp3_connect_options_t
Options that control how TCP connections are established.
Definition: dnp3.h:1337
static dnp3_binary_output_command_event_t dnp3_binary_output_command_event_init(uint16_t index, dnp3_command_status_t status, bool commanded_state, dnp3_timestamp_t time)
Fully construct dnp3_binary_output_command_event_t specifying the value of each field.
Definition: dnp3.h:1169
bool dnp3_database_add_binary_output_status(dnp3_database_t *instance, uint16_t index, dnp3_event_class_t point_class, dnp3_binary_output_status_config_t config)
Add a new Binary Output Status point.
void dnp3_write_dead_band_request_add_g34v1_u8(dnp3_write_dead_band_request_t *instance, uint8_t index, uint16_t dead_band)
Add a g34v1 (unsigned 16-bit) dead-band with 8-bit indexing to the request.
static dnp3_timestamp_t dnp3_timestamp_invalid_timestamp()
Creates an invalid timestamp struct.
Definition: dnp3.h:736
struct dnp3_command_set_t dnp3_command_set_t
Builder type used to construct command requests.
Definition: dnp3.h:4801
dnp3_flow_control_t
Flow control modes.
Definition: dnp3.h:2640
@ DNP3_FLOW_CONTROL_HARDWARE
Flow control using RTS/CTS signals.
Definition: dnp3.h:2646
@ DNP3_FLOW_CONTROL_SOFTWARE
Flow control using XON/XOFF bytes.
Definition: dnp3.h:2644
@ DNP3_FLOW_CONTROL_NONE
No flow control.
Definition: dnp3.h:2642
static dnp3_permission_set_t dnp3_permission_set_init(bool execute, bool write, bool read)
Fully construct dnp3_permission_set_t specifying the value of each field.
Definition: dnp3.h:2930
static const char * dnp3_file_error_to_string(dnp3_file_error_t value)
Converts the enum to a string.
Definition: dnp3.h:3064
static const char * dnp3_event_frozen_counter_variation_to_string(dnp3_event_frozen_counter_variation_t value)
Converts the enum to a string.
Definition: dnp3.h:6360
static dnp3_flags_t dnp3_flags_init(uint8_t value)
Fully construct dnp3_flags_t specifying the value of each field.
Definition: dnp3.h:682
bool dnp3_database_remove_analog_input(dnp3_database_t *instance, uint16_t index)
Remove an AnalogInput point.
bool dnp3_database_remove_analog_output_status(dnp3_database_t *instance, uint16_t index)
Remove an Analog Output Status point.
static dnp3_decode_level_t dnp3_decode_level_init()
Initialize log levels to defaults.
Definition: dnp3.h:379
dnp3_file_info_t * dnp3_file_info_iterator_next(dnp3_file_info_iterator_t *iter)
returns a pointer to the next value or NULL
dnp3_update_info_t dnp3_database_update_binary_input_2(dnp3_database_t *instance, dnp3_binary_input_t value, dnp3_update_options_t options)
Update a BinaryInput point.
dnp3_variation_list_attr_t
Enumeration of all the variation list attributes.
Definition: dnp3.h:1649
@ DNP3_VARIATION_LIST_ATTR_LIST_OF_VARIATIONS
Variation 255 - List of attribute variations.
Definition: dnp3.h:1653
@ DNP3_VARIATION_LIST_ATTR_UNKNOWN
The attribute variation is not defined or is not part of the default set.
Definition: dnp3.h:1651
static dnp3_group12_var1_t dnp3_group12_var1_from_code(dnp3_control_code_t code)
Construct a dnp3_group12_var1_t from a dnp3_control_code_t.
Definition: dnp3.h:658
bool dnp3_database_remove_double_bit_binary_input(dnp3_database_t *instance, uint16_t index)
Remove a Double-Bit Binary Input point.
Analog configuration.
Definition: dnp3.h:6532
double deadband
Deadband value.
Definition: dnp3.h:6538
dnp3_static_analog_input_variation_t static_variation
Default static variation.
Definition: dnp3.h:6534
dnp3_event_analog_input_variation_t event_variation
Default event variation.
Definition: dnp3.h:6536
analog_input point
Definition: dnp3.h:1020
dnp3_timestamp_t time
Point timestamp.
Definition: dnp3.h:1028
uint16_t index
Point index.
Definition: dnp3.h:1022
dnp3_flags_t flags
Point flags.
Definition: dnp3.h:1026
double value
Point value.
Definition: dnp3.h:1024
Event transferred from master to outstation when the outstation receives a corresponding command.
Definition: dnp3.h:1226
uint16_t index
Index of the command event.
Definition: dnp3.h:1228
dnp3_analog_command_type_t command_type
Describes how the value was encoded in the protocol.
Definition: dnp3.h:1236
double commanded_value
Commanded state of the binary output.
Definition: dnp3.h:1234
dnp3_timestamp_t time
Associated timestamp.
Definition: dnp3.h:1238
dnp3_command_status_t status
Status from processing the command that triggered this event.
Definition: dnp3.h:1230
Analog Output Status configuration.
Definition: dnp3.h:6682
double deadband
Deadband value.
Definition: dnp3.h:6688
dnp3_static_analog_output_status_variation_t static_variation
Default static variation.
Definition: dnp3.h:6684
dnp3_event_analog_output_status_variation_t event_variation
Default event variation.
Definition: dnp3.h:6686
analog_output_status point
Definition: dnp3.h:1104
dnp3_timestamp_t time
Point timestamp.
Definition: dnp3.h:1112
uint16_t index
Point index.
Definition: dnp3.h:1106
double value
Point value.
Definition: dnp3.h:1108
dnp3_flags_t flags
Point flags.
Definition: dnp3.h:1110
Application-controlled IIN bits.
Definition: dnp3.h:7359
bool local_control
IIN1.5 - Some output points are in local mode.
Definition: dnp3.h:7363
bool device_trouble
IIN1.6 - Device trouble.
Definition: dnp3.h:7365
bool config_corrupt
IIN2.5 - Configuration corrupt.
Definition: dnp3.h:7367
bool need_time
IIN1.4 - Time synchronization is required.
Definition: dnp3.h:7361
Association configuration.
Definition: dnp3.h:4219
dnp3_event_classes_t disable_unsol_classes
Classes to disable unsolicited responses at startup.
Definition: dnp3.h:4224
bool auto_integrity_scan_on_buffer_overflow
Automatic integrity scan when an EVENT_BUFFER_OVERFLOW is detected.
Definition: dnp3.h:4241
uint64_t response_timeout
Timeout for receiving a response on this association.
Definition: dnp3.h:4222
dnp3_auto_time_sync_t auto_time_sync
Automatic time synchronization configuration.
Definition: dnp3.h:4232
uint64_t keep_alive_timeout
Delay of inactivity before sending a REQUEST_LINK_STATUS to the outstation.
Definition: dnp3.h:4239
dnp3_event_classes_t enable_unsol_classes
Classes to enable unsolicited responses at startup.
Definition: dnp3.h:4226
dnp3_event_classes_t event_scan_on_events_available
Classes to automatically send reads when the IIN bit is asserted.
Definition: dnp3.h:4243
dnp3_retry_strategy_t auto_tasks_retry_strategy
Automatic tasks retry strategy.
Definition: dnp3.h:4234
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:4245
dnp3_classes_t startup_integrity_classes
Startup integrity classes to ask on master startup and when an outstation restart is detected.
Definition: dnp3.h:4230
Callbacks for a particular outstation association.
Definition: dnp3.h:4331
void(* on_destroy)(void *arg)
Callback when the underlying owner doesn't need the interface anymore.
Definition: dnp3.h:4343
dnp3_utc_timestamp_t(* get_current_time)(void *)
Returns the current time or an invalid time if none is available.
Definition: dnp3.h:4340
void * ctx
Context data.
Definition: dnp3.h:4345
Association identifier.
Definition: dnp3.h:4034
uint16_t address
Outstation address of the association.
Definition: dnp3.h:4036
Informational callbacks about the current state of an outstation association.
Definition: dnp3.h:4463
void(* unsolicited_response)(bool, uint8_t, void *)
Called when an unsolicited response is received.
Definition: dnp3.h:4489
void(* on_destroy)(void *arg)
Callback when the underlying owner doesn't need the interface anymore.
Definition: dnp3.h:4492
void(* task_success)(dnp3_task_type_t, dnp3_function_code_t, uint8_t, void *)
Called when a task successfully completes.
Definition: dnp3.h:4477
void * ctx
Context data.
Definition: dnp3.h:4494
void(* task_start)(dnp3_task_type_t, dnp3_function_code_t, uint8_t, void *)
Called when a new task is started.
Definition: dnp3.h:4470
void(* task_fail)(dnp3_task_type_t, dnp3_task_error_t, void *)
Called when a task fails.
Definition: dnp3.h:4483
An attribute variation and properties pair returned in Group0Var255.
Definition: dnp3.h:2009
dnp3_attr_prop_t properties
Properties of the attribute.
Definition: dnp3.h:2013
uint8_t variation
Variation of the attribute.
Definition: dnp3.h:2011
Attribute properties returned in Group0Var255.
Definition: dnp3.h:1999
bool is_writable
Indicate if the property can be used in a WRITE operation.
Definition: dnp3.h:2001
Binary Input configuration.
Definition: dnp3.h:5857
dnp3_static_binary_input_variation_t static_variation
Default static variation.
Definition: dnp3.h:5859
dnp3_event_binary_input_variation_t event_variation
Default event variation.
Definition: dnp3.h:5861
binary_input point
Definition: dnp3.h:810
uint16_t index
Point index.
Definition: dnp3.h:812
dnp3_flags_t flags
Point flags.
Definition: dnp3.h:816
bool value
Point value.
Definition: dnp3.h:814
dnp3_timestamp_t time
Point timestamp.
Definition: dnp3.h:818
Event transferred from master to outstation when the outstation receives a corresponding command.
Definition: dnp3.h:1150
bool commanded_state
Commanded state of the binary output.
Definition: dnp3.h:1158
dnp3_command_status_t status
Status from processing the command that triggered this event.
Definition: dnp3.h:1154
dnp3_timestamp_t time
Associated timestamp.
Definition: dnp3.h:1160
uint16_t index
Index of the binary command event.
Definition: dnp3.h:1152
Binary Output Status configuration.
Definition: dnp3.h:6100
dnp3_event_binary_output_status_variation_t event_variation
Default event variation.
Definition: dnp3.h:6104
dnp3_static_binary_output_status_variation_t static_variation
Default static variation.
Definition: dnp3.h:6102
binary_output_status point
Definition: dnp3.h:894
bool value
Point value.
Definition: dnp3.h:898
dnp3_flags_t flags
Point flags.
Definition: dnp3.h:900
dnp3_timestamp_t time
Point timestamp.
Definition: dnp3.h:902
uint16_t index
Point index.
Definition: dnp3.h:896
Information about the state of buffer after a CONFIRM has been processed.
Definition: dnp3.h:7433
dnp3_class_count_t classes
Remaining number of events in the buffer on a per-class basis.
Definition: dnp3.h:7435
dnp3_type_count_t types
Remaining number of events in the buffer on a per-type basis.
Definition: dnp3.h:7437
Remaining number of events in the buffer after a confirm on a per-class basis.
Definition: dnp3.h:7395
uint32_t num_class_1
Number of class 1 events remaining in the buffer.
Definition: dnp3.h:7397
uint32_t num_class_2
Number of class 2 events remaining in the buffer.
Definition: dnp3.h:7399
uint32_t num_class_3
Number of class 3 events remaining in the buffer.
Definition: dnp3.h:7401
Controls which types are reported during a Class 0 read.
Definition: dnp3.h:7010
bool frozen_counter
Include Frozen Counters in Class 0 reads.
Definition: dnp3.h:7020
bool analog_output_status
Include Analog Output Status in Class 0 reads.
Definition: dnp3.h:7024
bool counter
Include Counters in Class 0 reads.
Definition: dnp3.h:7018
bool analog
Include Analog Inputs in Class 0 reads.
Definition: dnp3.h:7022
bool octet_string
Include Octet Strings in Class 0 reads.
Definition: dnp3.h:7028
bool binary_output_status
Include Binary Output Status in Class 0 reads.
Definition: dnp3.h:7016
bool binary
Include Binary Inputs in Class 0 reads.
Definition: dnp3.h:7012
bool double_bit_binary
Include Double-Bit Binary Inputs in Class 0 reads.
Definition: dnp3.h:7014
Class 0, 1, 2 and 3 config.
Definition: dnp3.h:4121
bool class3
Class 3 events.
Definition: dnp3.h:4129
bool class1
Class 1 events.
Definition: dnp3.h:4125
bool class2
Class 2 events.
Definition: dnp3.h:4127
bool class0
Class 0 (static data)
Definition: dnp3.h:4123
Callback for monitoring the client TCP connection state.
Definition: dnp3.h:2144
void(* on_destroy)(void *arg)
Callback when the underlying owner doesn't need the interface anymore.
Definition: dnp3.h:2152
void(* on_change)(dnp3_client_state_t, void *)
Called when the client state changed.
Definition: dnp3.h:2149
void * ctx
Context data.
Definition: dnp3.h:2154
Handler for command tasks.
Definition: dnp3.h:4953
void(* on_failure)(dnp3_command_error_t, void *)
Invoked when the asynchronous operation fails.
Definition: dnp3.h:4963
void * ctx
Context data.
Definition: dnp3.h:4968
void(* on_destroy)(void *arg)
Callback when the underlying owner doesn't need the interface anymore.
Definition: dnp3.h:4966
void(* on_complete)(dnp3_nothing_t, void *)
Invoked when the asynchronous operation completes successfully.
Definition: dnp3.h:4958
Timing parameters for connection attempts.
Definition: dnp3.h:1389
uint64_t max_connect_delay
Maximum delay between two connection attempts.
Definition: dnp3.h:1395
uint64_t min_connect_delay
Minimum delay between two connection attempts, doubles up to the maximum delay.
Definition: dnp3.h:1392
uint64_t reconnect_delay
Delay before attempting a connection after a disconnect.
Definition: dnp3.h:1398
Callbacks to user code that determine how the server processes connections.
Definition: dnp3.h:5517
void(* accept_with_link_id)(const char *, uint16_t, uint16_t, dnp3_identified_link_handler_t *, void *)
Filter the connection based on the source and destination of the first link-layer frame.
Definition: dnp3.h:5539
void(* accept)(const char *, dnp3_accept_handler_t *, void *)
Filter the connection solely based on the remote address.
Definition: dnp3.h:5523
void * ctx
Context data.
Definition: dnp3.h:5554
void(* on_destroy)(void *arg)
Callback when the underlying owner doesn't need the interface anymore.
Definition: dnp3.h:5552
void(* start)(const char *, dnp3_master_channel_t *, void *)
Start a communication session that was previously accepted using only the socket address.
Definition: dnp3.h:5531
void(* start_with_link_id)(const char *, uint16_t, uint16_t, dnp3_master_channel_t *, void *)
Start a communication session that was previously accepted using link identity information.
Definition: dnp3.h:5549
Callback interface for connection state events.
Definition: dnp3.h:7933
void(* on_change)(dnp3_connection_state_t, void *)
Called when the connection state changes.
Definition: dnp3.h:7938
void * ctx
Context data.
Definition: dnp3.h:7943
void(* on_destroy)(void *arg)
Callback when the underlying owner doesn't need the interface anymore.
Definition: dnp3.h:7941
CROB (dnp3_group12_var1_t) control code.
Definition: dnp3.h:545
dnp3_op_type_t op_type
This field is used in conjunction with the dnp3_control_code_t::tcc field to specify a control operat...
Definition: dnp3.h:553
bool queue
This field is obsolete and should always be 0.
Definition: dnp3.h:551
dnp3_trip_close_code_t tcc
This field is used in conjunction with dnp3_control_code_t::op_type to specify a control operation.
Definition: dnp3.h:547
bool clear
Support for this field is optional. When the clear bit is set, the device shall remove pending contro...
Definition: dnp3.h:549
APDU Control field.
Definition: dnp3.h:468
bool fin
Final fragment of the message.
Definition: dnp3.h:472
bool uns
Unsolicited response.
Definition: dnp3.h:476
uint8_t seq
Sequence number.
Definition: dnp3.h:478
bool fir
First fragment in the message.
Definition: dnp3.h:470
bool con
Requires confirmation.
Definition: dnp3.h:474
Callbacks for handling controls.
Definition: dnp3.h:7787
dnp3_command_status_t(* operate_g41v2)(int16_t, uint16_t, dnp3_operate_type_t, dnp3_database_handle_t *, void *)
Operate a control point.
Definition: dnp3.h:7859
dnp3_command_status_t(* select_g41v3)(float, uint16_t, dnp3_database_handle_t *, void *)
Select an analog output, but do not operate.
Definition: dnp3.h:7871
void * ctx
Context data.
Definition: dnp3.h:7906
dnp3_command_status_t(* operate_g12v1)(dnp3_group12_var1_t, uint16_t, dnp3_operate_type_t, dnp3_database_handle_t *, void *)
Operate a control point.
Definition: dnp3.h:7817
dnp3_command_status_t(* select_g41v1)(int32_t, uint16_t, dnp3_database_handle_t *, void *)
Select an analog output, but do not operate.
Definition: dnp3.h:7829
void(* on_destroy)(void *arg)
Callback when the underlying owner doesn't need the interface anymore.
Definition: dnp3.h:7904
dnp3_command_status_t(* select_g41v4)(double, uint16_t, dnp3_database_handle_t *, void *)
Select an analog output, but do not operate.
Definition: dnp3.h:7892
void(* end_fragment)(dnp3_database_handle_t *, void *)
Notifies the end of a command fragment.
Definition: dnp3.h:7796
dnp3_command_status_t(* operate_g41v4)(double, uint16_t, dnp3_operate_type_t, dnp3_database_handle_t *, void *)
Operate a control point.
Definition: dnp3.h:7901
void(* begin_fragment)(void *)
Notifies the start of a command fragment.
Definition: dnp3.h:7791
dnp3_command_status_t(* operate_g41v3)(float, uint16_t, dnp3_operate_type_t, dnp3_database_handle_t *, void *)
Operate a control point.
Definition: dnp3.h:7880
dnp3_command_status_t(* select_g41v2)(int16_t, uint16_t, dnp3_database_handle_t *, void *)
Select an analog output, but do not operate.
Definition: dnp3.h:7850
dnp3_command_status_t(* select_g12v1)(dnp3_group12_var1_t, uint16_t, dnp3_database_handle_t *, void *)
Select a CROB, but do not operate.
Definition: dnp3.h:7808
dnp3_command_status_t(* operate_g41v1)(int32_t, uint16_t, dnp3_operate_type_t, dnp3_database_handle_t *, void *)
Operate a control point.
Definition: dnp3.h:7838
Counter configuration.
Definition: dnp3.h:6232
dnp3_static_counter_variation_t static_variation
Default static variation.
Definition: dnp3.h:6234
dnp3_event_counter_variation_t event_variation
Default event variation.
Definition: dnp3.h:6236
uint32_t deadband
Deadband value.
Definition: dnp3.h:6238
counter point
Definition: dnp3.h:936
uint16_t index
Point index.
Definition: dnp3.h:938
uint32_t value
Point value.
Definition: dnp3.h:940
dnp3_flags_t flags
Point flags.
Definition: dnp3.h:942
dnp3_timestamp_t time
Point timestamp.
Definition: dnp3.h:944
Database transaction interface.
Definition: dnp3.h:6903
void(* execute)(dnp3_database_t *, void *)
Execute a transaction on the provided database.
Definition: dnp3.h:6908
void(* on_destroy)(void *arg)
Callback when the underlying owner doesn't need the interface anymore.
Definition: dnp3.h:6911
void * ctx
Context data.
Definition: dnp3.h:6913
Controls the decoding of transmitted and received data at the application, transport,...
Definition: dnp3.h:359
dnp3_transport_decode_level_t transport
Controls transport segment layer decoding.
Definition: dnp3.h:363
dnp3_phys_decode_level_t physical
Controls the logging of physical layer read/write.
Definition: dnp3.h:367
dnp3_link_decode_level_t link
Controls link frame decoding.
Definition: dnp3.h:365
dnp3_app_decode_level_t application
Controls application fragment decoding.
Definition: dnp3.h:361
Configuration related to reading a file.
Definition: dnp3.h:5264
uint32_t max_file_size
Maximum number of bytes that may be accumulated while reading directory information.
Definition: dnp3.h:5268
uint16_t max_block_size
Maximum block size requested by the master during the file open.
Definition: dnp3.h:5266
Double-Bit Binary Input configuration.
Definition: dnp3.h:5980
dnp3_static_double_bit_binary_input_variation_t static_variation
Default static variation.
Definition: dnp3.h:5982
dnp3_event_double_bit_binary_input_variation_t event_variation
Default event variation.
Definition: dnp3.h:5984
double_bit_binary_input point
Definition: dnp3.h:852
dnp3_double_bit_t value
Point value.
Definition: dnp3.h:856
uint16_t index
Point index.
Definition: dnp3.h:854
dnp3_timestamp_t time
Point timestamp.
Definition: dnp3.h:860
dnp3_flags_t flags
Point flags.
Definition: dnp3.h:858
Callback interface for any task that expects an empty response.
Definition: dnp3.h:3919
void(* on_failure)(dnp3_empty_response_error_t, void *)
Invoked when the asynchronous operation fails.
Definition: dnp3.h:3929
void(* on_destroy)(void *arg)
Callback when the underlying owner doesn't need the interface anymore.
Definition: dnp3.h:3932
void(* on_complete)(dnp3_nothing_t, void *)
Invoked when the asynchronous operation completes successfully.
Definition: dnp3.h:3924
void * ctx
Context data.
Definition: dnp3.h:3934
Maximum number of events for each type.
Definition: dnp3.h:6933
uint16_t max_counter
Maximum number of Counter events (g22)
Definition: dnp3.h:6941
uint16_t max_analog
Maximum number of Analog Input events (g32)
Definition: dnp3.h:6945
uint16_t max_binary
Maximum number of Binary Input events (g2)
Definition: dnp3.h:6935
uint16_t max_binary_output_status
Maximum number of Binary Output Status events (g11)
Definition: dnp3.h:6939
uint16_t max_octet_string
Maximum number of Octet String events (g111)
Definition: dnp3.h:6949
uint16_t max_analog_output_status
Maximum number of Analog Output Status events (g42)
Definition: dnp3.h:6947
uint16_t max_double_bit_binary
Maximum number of Double-Bit Binary Input events (g4)
Definition: dnp3.h:6937
uint16_t max_frozen_counter
Maximum number of Frozen Counter events (g23)
Definition: dnp3.h:6943
Event classes.
Definition: dnp3.h:4056
bool class3
Class 3 events.
Definition: dnp3.h:4062
bool class1
Class 1 events.
Definition: dnp3.h:4058
bool class2
Class 2 events.
Definition: dnp3.h:4060
Callback interface used when obtaining an authentication key.
Definition: dnp3.h:3155
void(* on_failure)(dnp3_file_error_t, void *)
Invoked when the asynchronous operation fails.
Definition: dnp3.h:3165
void(* on_destroy)(void *arg)
Callback when the underlying owner doesn't need the interface anymore.
Definition: dnp3.h:3168
void(* on_complete)(uint32_t, void *)
Invoked when the asynchronous operation completes successfully.
Definition: dnp3.h:3160
void * ctx
Context data.
Definition: dnp3.h:3170
Callback interface for retrieving file info asynchronously.
Definition: dnp3.h:5178
void(* on_complete)(dnp3_file_info_t, void *)
Invoked when the asynchronous operation completes successfully.
Definition: dnp3.h:5183
void * ctx
Context data.
Definition: dnp3.h:5193
void(* on_destroy)(void *arg)
Callback when the underlying owner doesn't need the interface anymore.
Definition: dnp3.h:5191
void(* on_failure)(dnp3_file_error_t, void *)
Invoked when the asynchronous operation fails.
Definition: dnp3.h:5188
Information about a file or directory returned from the outstation.
Definition: dnp3.h:3095
uint32_t size
Size of the file in bytes.
Definition: dnp3.h:3103
dnp3_file_type_t file_type
Simple file or directory.
Definition: dnp3.h:3099
const char * file_name
Name of the file or directory.
Definition: dnp3.h:3097
dnp3_permissions_t permissions
Outstation permissions for the file.
Definition: dnp3.h:3109
uint64_t time_created
DNP3 timestamp.
Definition: dnp3.h:3107
Callback interface used when opening a file.
Definition: dnp3.h:3115
void(* on_complete)(dnp3_open_file_t, void *)
Invoked when the asynchronous operation completes successfully.
Definition: dnp3.h:3120
void(* on_destroy)(void *arg)
Callback when the underlying owner doesn't need the interface anymore.
Definition: dnp3.h:3128
void(* on_failure)(dnp3_file_error_t, void *)
Invoked when the asynchronous operation fails.
Definition: dnp3.h:3125
void * ctx
Context data.
Definition: dnp3.h:3130
Callback interface used when closing a file or writing a block of file data.
Definition: dnp3.h:3135
void(* on_destroy)(void *arg)
Callback when the underlying owner doesn't need the interface anymore.
Definition: dnp3.h:3148
void(* on_complete)(dnp3_nothing_t, void *)
Invoked when the asynchronous operation completes successfully.
Definition: dnp3.h:3140
void(* on_failure)(dnp3_file_error_t, void *)
Invoked when the asynchronous operation fails.
Definition: dnp3.h:3145
void * ctx
Context data.
Definition: dnp3.h:3150
Configuration related to reading a file.
Definition: dnp3.h:5236
uint32_t max_file_size
Maximum file size accepted by the master.
Definition: dnp3.h:5240
uint16_t max_block_size
Maximum block size requested by the master during the file open.
Definition: dnp3.h:5238
Callbacks for reading a file from the outstation asynchronously.
Definition: dnp3.h:5198
void(* aborted)(dnp3_file_error_t, void *)
Called when the transfer is aborted before completion due to an error or user request.
Definition: dnp3.h:5220
bool(* opened)(uint32_t, void *)
Called when the file is successfully opened.
Definition: dnp3.h:5206
bool(* block_received)(uint32_t, dnp3_byte_iterator_t *, void *)
Called when the next block is received.
Definition: dnp3.h:5215
void(* completed)(void *)
Called when the transfer completes successfully.
Definition: dnp3.h:5224
void(* on_destroy)(void *arg)
Callback when the underlying owner doesn't need the interface anymore.
Definition: dnp3.h:5227
void * ctx
Context data.
Definition: dnp3.h:5229
Collection of individual flag bits represented by an underlying mask value.
Definition: dnp3.h:674
uint8_t value
bit-mask representing a set of individual flag bits
Definition: dnp3.h:676
frozen_analog_input point
Definition: dnp3.h:1062
dnp3_timestamp_t time
Point timestamp.
Definition: dnp3.h:1070
uint16_t index
Point index.
Definition: dnp3.h:1064
dnp3_flags_t flags
Point flags.
Definition: dnp3.h:1068
double value
Point value.
Definition: dnp3.h:1066
Frozen Counter configuration.
Definition: dnp3.h:6376
uint32_t deadband
Deadband value.
Definition: dnp3.h:6382
dnp3_event_frozen_counter_variation_t event_variation
Default event variation.
Definition: dnp3.h:6380
dnp3_static_frozen_counter_variation_t static_variation
Default static variation.
Definition: dnp3.h:6378
frozen_counter point
Definition: dnp3.h:978
dnp3_timestamp_t time
Point timestamp.
Definition: dnp3.h:986
dnp3_flags_t flags
Point flags.
Definition: dnp3.h:984
uint16_t index
Point index.
Definition: dnp3.h:980
uint32_t value
Point value.
Definition: dnp3.h:982
Control Relay Output Block.
Definition: dnp3.h:621
uint32_t on_time
Duration the output drive remains active (in milliseconds)
Definition: dnp3.h:627
uint32_t off_time
Duration the output drive remains non-active (in milliseconds)
Definition: dnp3.h:629
uint8_t count
Count.
Definition: dnp3.h:625
dnp3_control_code_t code
Control code.
Definition: dnp3.h:623
Information about the object header and specific variation.
Definition: dnp3.h:3533
dnp3_qualifier_code_t qualifier
Qualifier code used in the response.
Definition: dnp3.h:3537
bool is_event
true if the received variation is an event type, false otherwise
Definition: dnp3.h:3539
bool has_flags
true if a flags byte is present on the underlying variation, false otherwise
Definition: dnp3.h:3541
dnp3_variation_t variation
underlying variation in the response
Definition: dnp3.h:3535
First IIN byte.
Definition: dnp3.h:3419
bool class_2_events
Outstation has unreported Class 2 events.
Definition: dnp3.h:3425
bool class_1_events
Outstation has unreported Class 1 events.
Definition: dnp3.h:3423
bool class_3_events
Outstation has unreported Class 3 events.
Definition: dnp3.h:3427
bool broadcast
Broadcast message was received.
Definition: dnp3.h:3421
bool local_control
One or more of the outstation’s points are in local control mode.
Definition: dnp3.h:3431
bool need_time
Outstation requires time synchronization.
Definition: dnp3.h:3429
bool device_trouble
An abnormal, device-specific condition exists in the outstation.
Definition: dnp3.h:3433
bool device_restart
Outstation restarted.
Definition: dnp3.h:3435
Second IIN byte.
Definition: dnp3.h:3443
bool parameter_error
Outstation does not support requested operation for objects in the request.
Definition: dnp3.h:3449
bool object_unknown
Outstation does not support requested operation for objects in the request.
Definition: dnp3.h:3447
bool config_corrupt
The outstation detected corrupt configuration (optional support)
Definition: dnp3.h:3455
bool reserved_1
Reserved for future use - should always be set to 0.
Definition: dnp3.h:3459
bool already_executing
The operation requested is already executing (optional support)
Definition: dnp3.h:3453
bool no_func_code_support
Outstation does not support this function code.
Definition: dnp3.h:3445
bool reserved_2
Reserved for future use - should always be set to 0.
Definition: dnp3.h:3457
bool event_buffer_overflow
An event buffer overflow condition exists in the outstation, and at least one unconfirmed event was l...
Definition: dnp3.h:3451
Pair of IIN bytes.
Definition: dnp3.h:3467
dnp3_iin2_t iin2
Second IIN byte.
Definition: dnp3.h:3471
dnp3_iin1_t iin1
First IIN byte.
Definition: dnp3.h:3469
Logging interface that receives the log messages and writes them somewhere.
Definition: dnp3.h:3368
void * ctx
Context data.
Definition: dnp3.h:3379
void(* on_message)(dnp3_log_level_t, const char *, void *)
Called when a log message was received and should be logged.
Definition: dnp3.h:3374
void(* on_destroy)(void *arg)
Callback when the underlying owner doesn't need the interface anymore.
Definition: dnp3.h:3377
Logging configuration options.
Definition: dnp3.h:3330
dnp3_time_format_t time_format
optional time format
Definition: dnp3.h:3336
bool print_module_info
optionally print the underlying Rust module information to the message string
Definition: dnp3.h:3340
dnp3_log_output_format_t output_format
output formatting options
Definition: dnp3.h:3334
bool print_level
optionally print the log level as part to the message string
Definition: dnp3.h:3338
dnp3_log_level_t level
logging level
Definition: dnp3.h:3332
Configuration for a MasterChannel that is independent of the physical layer.
Definition: dnp3.h:3758
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:3762
uint16_t address
Local DNP3 data-link address.
Definition: dnp3.h:3760
uint16_t rx_buffer_size
RX buffer size.
Definition: dnp3.h:3770
uint16_t tx_buffer_size
TX buffer size.
Definition: dnp3.h:3766
Octet String point.
Definition: dnp3.h:1319
uint16_t index
Point index.
Definition: dnp3.h:1321
dnp3_byte_iterator_t * value
Point value.
Definition: dnp3.h:1323
The result of opening a file on the outstation.
Definition: dnp3.h:3010
uint32_t file_handle
The handle assigned to the file by the outstation.
Definition: dnp3.h:3014
uint16_t max_block_size
Maximum block size returned by the outstation.
Definition: dnp3.h:3020
uint32_t file_size
Size of the file returned by the outstation.
Definition: dnp3.h:3016
Dynamic information required by the outstation from the user application.
Definition: dnp3.h:7443
bool(* write_string_attr)(uint8_t, uint8_t, dnp3_string_attr_t, const char *, void *)
Write a string attribute. This method is only called if the corresponding attribute has been configur...
Definition: dnp3.h:7561
uint16_t(* get_processing_delay_ms)(void *)
Returns the DELAY_MEASUREMENT delay.
Definition: dnp3.h:7454
void(* write_analog_dead_band)(uint16_t, double, void *)
Called when the outstation begins processing a header to write analog dead-bands.
Definition: dnp3.h:7546
dnp3_restart_delay_t(* cold_restart)(void *)
Request that the outstation perform a cold restart (IEEE-1815 2012, p. 58)
Definition: dnp3.h:7472
bool(* write_octet_string_attr)(uint8_t, uint8_t, dnp3_octet_string_attr_t, dnp3_byte_iterator_t *, void *)
Write an octet-string attribute. This method is only called if the corresponding attribute has been c...
Definition: dnp3.h:7606
void * ctx
Context data.
Definition: dnp3.h:7643
void(* begin_write_analog_dead_bands)(void *)
Called when the outstation begins processing a header to write analog dead-bands.
Definition: dnp3.h:7536
bool(* write_bit_string_attr)(uint8_t, uint8_t, dnp3_bit_string_attr_t, dnp3_byte_iterator_t *, void *)
Write a bit-string attribute. This method is only called if the corresponding attribute has been conf...
Definition: dnp3.h:7615
bool(* write_double_attr)(uint8_t, uint8_t, dnp3_float_attr_t, double, void *)
Write a 64-bit floating point attribute. This method is only called if the corresponding attribute ha...
Definition: dnp3.h:7579
void(* begin_confirm)(void *)
Called when a CONFIRM is received to a response or unsolicited response, but before any previously tr...
Definition: dnp3.h:7628
dnp3_restart_delay_t(* warm_restart)(void *)
Request that the outstation perform a warm restart (IEEE-1815 2012, p. 58)
Definition: dnp3.h:7479
bool(* write_uint_attr)(uint8_t, uint8_t, dnp3_uint_attr_t, uint32_t, void *)
Write an unsigned integer attribute. This method is only called if the corresponding attribute has be...
Definition: dnp3.h:7588
void(* end_confirm)(dnp3_buffer_state_t, void *)
Called when all relevant events have been cleared.
Definition: dnp3.h:7638
bool(* write_time_attr)(uint8_t, uint8_t, dnp3_time_attr_t, uint64_t, void *)
Write a DNP3 time attribute. This method is only called if the corresponding attribute has been confi...
Definition: dnp3.h:7624
bool(* write_float_attr)(uint8_t, uint8_t, dnp3_float_attr_t, float, void *)
Write a 32-bit floating point attribute. This method is only called if the corresponding attribute ha...
Definition: dnp3.h:7570
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:7460
dnp3_freeze_result_t(* freeze_counters_range_at_time)(uint16_t, uint16_t, dnp3_database_handle_t *, uint64_t, uint32_t, void *)
Freeze a range of counters at a requested time and interval.
Definition: dnp3.h:7517
void(* on_destroy)(void *arg)
Callback when the underlying owner doesn't need the interface anymore.
Definition: dnp3.h:7641
void(* end_write_analog_dead_bands)(void *)
Called when the outstation completes processing a header to write analog dead-bands.
Definition: dnp3.h:7552
bool(* support_write_analog_dead_bands)(void *)
Controls outstation support for writing group 34, analog input dead-bands.
Definition: dnp3.h:7532
dnp3_application_iin_t(* get_application_iin)(void *)
Returns the application-controlled IIN bits.
Definition: dnp3.h:7465
bool(* write_int_attr)(uint8_t, uint8_t, dnp3_int_attr_t, int32_t, void *)
Write a signed integer attribute. This method is only called if the corresponding attribute has been ...
Definition: dnp3.h:7597
dnp3_freeze_result_t(* freeze_counters_all)(dnp3_freeze_type_t, dnp3_database_handle_t *, void *)
Freeze all the counters.
Definition: dnp3.h:7486
void(* event_cleared)(uint64_t, void *)
Called when an event is cleared from the buffer due to master acknowledgement.
Definition: dnp3.h:7633
dnp3_freeze_result_t(* freeze_counters_all_at_time)(dnp3_database_handle_t *, uint64_t, uint32_t, void *)
Freeze all the counters at a requested time and interval.
Definition: dnp3.h:7496
dnp3_freeze_result_t(* freeze_counters_range)(uint16_t, uint16_t, dnp3_freeze_type_t, dnp3_database_handle_t *, void *)
Freeze a range of counters.
Definition: dnp3.h:7505
Outstation configuration.
Definition: dnp3.h:7102
dnp3_decode_level_t decode_level
Decoding level.
Definition: dnp3.h:7122
uint16_t max_controls_per_request
Maximum number of controls in a single request.
Definition: dnp3.h:7146
uint16_t rx_buffer_size
Receive buffer size.
Definition: dnp3.h:7120
uint32_t max_unsolicited_retries
Maximum number of unsolicited retries.
Definition: dnp3.h:7132
uint16_t master_address
Link-layer master address.
Definition: dnp3.h:7106
uint16_t solicited_buffer_size
Solicited response buffer size.
Definition: dnp3.h:7112
uint16_t outstation_address
Link-layer outstation address.
Definition: dnp3.h:7104
dnp3_outstation_features_t features
Optional features.
Definition: dnp3.h:7130
uint64_t confirm_timeout
Confirmation timeout.
Definition: dnp3.h:7125
uint64_t keep_alive_timeout
Delay of inactivity before sending a REQUEST_LINK_STATUS to the master.
Definition: dnp3.h:7140
uint64_t unsolicited_retry_delay
Delay to wait before retrying an unsolicited response.
Definition: dnp3.h:7135
dnp3_class_zero_config_t class_zero
Controls responses to Class 0 reads.
Definition: dnp3.h:7148
uint16_t unsolicited_buffer_size
Unsolicited response buffer size.
Definition: dnp3.h:7116
dnp3_event_buffer_config_t event_buffer_config
Event buffer sizes configuration.
Definition: dnp3.h:7108
uint64_t select_timeout
Select timeout.
Definition: dnp3.h:7128
uint16_t max_read_request_headers
Maximum number of headers that will be processed in a READ request.
Definition: dnp3.h:7144
Optional outstation features that can be enabled or disabled.
Definition: dnp3.h:7064
bool self_address
Respond to the self address.
Definition: dnp3.h:7066
bool respond_to_any_master
Outstation will process every request as if it came from the configured master address.
Definition: dnp3.h:7074
bool unsolicited
Respond to enable/disable unsolicited response and produce unsolicited responses.
Definition: dnp3.h:7070
bool broadcast
Process valid broadcast messages.
Definition: dnp3.h:7068
Informational callbacks that the outstation doesn't rely on to function.
Definition: dnp3.h:7690
void(* clear_restart_iin)(void *)
Master cleared the restart IIN bit.
Definition: dnp3.h:7752
void * ctx
Context data.
Definition: dnp3.h:7757
void(* enter_solicited_confirm_wait)(uint8_t, void *)
Outstation has begun waiting for a solicited confirm.
Definition: dnp3.h:7706
void(* solicited_confirm_timeout)(uint8_t, void *)
Failed to receive a solicited confirm before the timeout occurred.
Definition: dnp3.h:7711
void(* on_destroy)(void *arg)
Callback when the underlying owner doesn't need the interface anymore.
Definition: dnp3.h:7755
void(* enter_unsolicited_confirm_wait)(uint8_t, void *)
Outstation has begun waiting for an unsolicited confirm.
Definition: dnp3.h:7737
void(* wrong_solicited_confirm_seq)(uint8_t, uint8_t, void *)
Received a solicited confirm with the wrong sequence number.
Definition: dnp3.h:7726
void(* unexpected_confirm)(bool, uint8_t, void *)
Received a confirm when not expecting one.
Definition: dnp3.h:7732
void(* solicited_confirm_received)(uint8_t, void *)
Received the expected confirm.
Definition: dnp3.h:7716
void(* solicited_confirm_wait_new_request)(void *)
Received a new request while waiting for a solicited confirm, aborting the response series.
Definition: dnp3.h:7720
void(* process_request_from_idle)(dnp3_request_header_t, void *)
Called when a request is processed from the IDLE state.
Definition: dnp3.h:7695
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:7701
void(* unsolicited_confirm_timeout)(uint8_t, bool, void *)
Failed to receive an unsolicited confirm before the timeout occurred.
Definition: dnp3.h:7743
void(* unsolicited_confirmed)(uint8_t, void *)
Master confirmed an unsolicited message.
Definition: dnp3.h:7748
UDP outstation configuration.
Definition: dnp3.h:8029
const char * local_endpoint
Local endpoint to which the UDP socket is bound. Must be a socket address (ip:port)
Definition: dnp3.h:8031
const char * remote_endpoint
Remote endpoint where outbound requests are sent. Must be a socket address (ip:port)
Definition: dnp3.h:8033
uint64_t retry_delay
Period to wait before retrying after a failure to bind or connect the UDP socket.
Definition: dnp3.h:8040
dnp3_link_read_mode_t link_read_mode
Read mode to use, this should typically be set to DNP3_LINK_READ_MODE_DATAGRAM.
Definition: dnp3.h:8037
dnp3_udp_socket_mode_t socket_mode
UDP socket mode to use.
Definition: dnp3.h:8035
Defines read, write, execute permissions for particular group or user.
Definition: dnp3.h:2916
bool read
Permission to read.
Definition: dnp3.h:2922
bool write
Permission to write.
Definition: dnp3.h:2920
bool execute
Permission to execute.
Definition: dnp3.h:2918
Permissions for world, group, and owner.
Definition: dnp3.h:2963
dnp3_permission_set_t group
Group permissions.
Definition: dnp3.h:2967
dnp3_permission_set_t owner
Owner permissions.
Definition: dnp3.h:2969
dnp3_permission_set_t world
World permissions.
Definition: dnp3.h:2965
Poll identifier.
Definition: dnp3.h:4045
uint64_t id
Unique poll id assigned by the association.
Definition: dnp3.h:4049
uint16_t association_id
Outstation address of the association.
Definition: dnp3.h:4047
Callback interface for receiving updates about the state of a serial port.
Definition: dnp3.h:2093
void(* on_change)(dnp3_port_state_t, void *)
Invoked when the serial port changes state.
Definition: dnp3.h:2098
void(* on_destroy)(void *arg)
Callback when the underlying owner doesn't need the interface anymore.
Definition: dnp3.h:2101
void * ctx
Context data.
Definition: dnp3.h:2103
Callback interface for retrieving a directory list.
Definition: dnp3.h:5370
void(* on_destroy)(void *arg)
Callback when the underlying owner doesn't need the interface anymore.
Definition: dnp3.h:5383
void(* on_complete)(dnp3_file_info_iterator_t *, void *)
Invoked when the asynchronous operation completes successfully.
Definition: dnp3.h:5375
void(* on_failure)(dnp3_file_error_t, void *)
Invoked when the asynchronous operation fails.
Definition: dnp3.h:5380
void * ctx
Context data.
Definition: dnp3.h:5385
Callback interface used to received measurement values received from the outstation.
Definition: dnp3.h:3577
void(* handle_counter)(dnp3_header_info_t, dnp3_counter_iterator_t *, void *)
Handle counter data.
Definition: dnp3.h:3613
void(* handle_analog_input)(dnp3_header_info_t, dnp3_analog_input_iterator_t *, void *)
Handle analog input data.
Definition: dnp3.h:3625
void(* handle_binary_output_command_event)(dnp3_header_info_t, dnp3_binary_output_command_event_iterator_t *, void *)
Handle binary output command events.
Definition: dnp3.h:3643
void * ctx
Context data.
Definition: dnp3.h:3751
void(* handle_variation_list_attr)(dnp3_header_info_t, dnp3_variation_list_attr_t, uint8_t, uint8_t, dnp3_attr_item_iter_t *, void *)
Handle a known or unknown list of attribute variations.
Definition: dnp3.h:3679
void(* handle_uint_attr)(dnp3_header_info_t, dnp3_uint_attr_t, uint8_t, uint8_t, uint32_t, void *)
Handle an unsigned integer device attribute.
Definition: dnp3.h:3688
void(* handle_unsigned_integer)(dnp3_header_info_t, dnp3_unsigned_integer_iterator_t *, void *)
Handle unsigned integer values (g102)
Definition: dnp3.h:3655
void(* handle_analog_output_status)(dnp3_header_info_t, dnp3_analog_output_status_iterator_t *, void *)
Handle analog output status data.
Definition: dnp3.h:3637
void(* handle_frozen_counter)(dnp3_header_info_t, dnp3_frozen_counter_iterator_t *, void *)
Handle frozen counter input data.
Definition: dnp3.h:3619
void(* handle_binary_output_status)(dnp3_header_info_t, dnp3_binary_output_status_iterator_t *, void *)
Handle binary output status data.
Definition: dnp3.h:3607
void(* handle_octet_string_attr)(dnp3_header_info_t, dnp3_octet_string_attr_t, uint8_t, uint8_t, dnp3_byte_iterator_t *, void *)
Handle an octet string device attribute.
Definition: dnp3.h:3737
void(* begin_fragment)(dnp3_read_type_t, dnp3_response_header_t, void *)
Called when a valid response fragment is received, but before any measurements are processed.
Definition: dnp3.h:3583
void(* on_destroy)(void *arg)
Callback when the underlying owner doesn't need the interface anymore.
Definition: dnp3.h:3749
void(* handle_bool_attr)(dnp3_header_info_t, dnp3_bool_attr_t, uint8_t, uint8_t, bool, void *)
Handle a boolean device attribute.
Definition: dnp3.h:3699
void(* handle_frozen_analog_input)(dnp3_header_info_t, dnp3_frozen_analog_input_iterator_t *, void *)
Handle frozen analog input data.
Definition: dnp3.h:3631
void(* handle_binary_input)(dnp3_header_info_t, dnp3_binary_input_iterator_t *, void *)
Handle binary input data.
Definition: dnp3.h:3595
void(* handle_float_attr)(dnp3_header_info_t, dnp3_float_attr_t, uint8_t, uint8_t, double, void *)
Handle a floating point device attribute.
Definition: dnp3.h:3728
void(* handle_double_bit_binary_input)(dnp3_header_info_t, dnp3_double_bit_binary_input_iterator_t *, void *)
Handle double-bit binary input data.
Definition: dnp3.h:3601
void(* handle_time_attr)(dnp3_header_info_t, dnp3_time_attr_t, uint8_t, uint8_t, uint64_t, void *)
Handle a DNP3 time device attribute.
Definition: dnp3.h:3719
void(* handle_analog_output_command_event)(dnp3_header_info_t, dnp3_analog_output_command_event_iterator_t *, void *)
Handle analog output command events.
Definition: dnp3.h:3649
void(* handle_int_attr)(dnp3_header_info_t, dnp3_int_attr_t, uint8_t, uint8_t, int32_t, void *)
Handle a signed integer device attribute.
Definition: dnp3.h:3710
void(* handle_octet_string)(dnp3_header_info_t, dnp3_octet_string_iterator_t *, void *)
Handle octet string data.
Definition: dnp3.h:3661
void(* handle_string_attr)(dnp3_header_info_t, dnp3_string_attr_t, uint8_t, uint8_t, const char *, void *)
Handle a known or unknown visible string device attribute.
Definition: dnp3.h:3670
void(* handle_bit_string_attr)(dnp3_header_info_t, dnp3_bit_string_attr_t, uint8_t, uint8_t, dnp3_byte_iterator_t *, void *)
Handle a bit string device attribute.
Definition: dnp3.h:3746
void(* end_fragment)(dnp3_read_type_t, dnp3_response_header_t, void *)
Called when all the data from a response fragment has been processed.
Definition: dnp3.h:3589
Handler for read tasks.
Definition: dnp3.h:4740
void(* on_complete)(dnp3_nothing_t, void *)
Invoked when the asynchronous operation completes successfully.
Definition: dnp3.h:4745
void * ctx
Context data.
Definition: dnp3.h:4755
void(* on_failure)(dnp3_read_error_t, void *)
Invoked when the asynchronous operation fails.
Definition: dnp3.h:4750
void(* on_destroy)(void *arg)
Callback when the underlying owner doesn't need the interface anymore.
Definition: dnp3.h:4753
Application-layer header for requests.
Definition: dnp3.h:7650
dnp3_control_field_t control_field
Control field.
Definition: dnp3.h:7652
dnp3_function_code_t function
Function code.
Definition: dnp3.h:7654
Response header information.
Definition: dnp3.h:3479
dnp3_response_function_t func
Response type.
Definition: dnp3.h:3483
dnp3_control_field_t control_field
Application control field.
Definition: dnp3.h:3481
dnp3_iin_t iin
IIN bytes.
Definition: dnp3.h:3485
Restart delay used by dnp3_outstation_application_t::cold_restart and dnp3_outstation_application_t::...
Definition: dnp3.h:7227
uint16_t value
Expected delay before the outstation comes back online.
Definition: dnp3.h:7231
dnp3_restart_delay_type_t restart_type
Indicates what dnp3_restart_delay_t::value is.
Definition: dnp3.h:7229
Handler for restart tasks.
Definition: dnp3.h:5144
void(* on_failure)(dnp3_restart_error_t, void *)
Invoked when the asynchronous operation fails.
Definition: dnp3.h:5154
void * ctx
Context data.
Definition: dnp3.h:5159
void(* on_complete)(uint64_t, void *)
Invoked when the asynchronous operation completes successfully.
Definition: dnp3.h:5149
void(* on_destroy)(void *arg)
Callback when the underlying owner doesn't need the interface anymore.
Definition: dnp3.h:5157
Retry strategy configuration.
Definition: dnp3.h:2584
uint64_t max_delay
Maximum delay between two retries.
Definition: dnp3.h:2590
uint64_t min_delay
Minimum delay between two retries.
Definition: dnp3.h:2587
Runtime configuration.
Definition: dnp3.h:418
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:422
Serial port settings.
Definition: dnp3.h:2714
dnp3_flow_control_t flow_control
Type of signalling to use for controlling data transfer.
Definition: dnp3.h:2720
dnp3_stop_bits_t stop_bits
Number of bits to use to signal the end of a character.
Definition: dnp3.h:2724
uint32_t baud_rate
Baud rate (in symbols-per-second)
Definition: dnp3.h:2716
dnp3_data_bits_t data_bits
Number of bits used to represent a character sent on the line.
Definition: dnp3.h:2718
dnp3_parity_t parity
Type of parity to use for error checking.
Definition: dnp3.h:2722
Handler for time synchronization tasks.
Definition: dnp3.h:5069
void(* on_destroy)(void *arg)
Callback when the underlying owner doesn't need the interface anymore.
Definition: dnp3.h:5082
void(* on_complete)(dnp3_nothing_t, void *)
Invoked when the asynchronous operation completes successfully.
Definition: dnp3.h:5074
void(* on_failure)(dnp3_time_sync_error_t, void *)
Invoked when the asynchronous operation fails.
Definition: dnp3.h:5079
void * ctx
Context data.
Definition: dnp3.h:5084
Timestamp associated with particular measurement from the outstation. The validity of the value depen...
Definition: dnp3.h:720
uint64_t value
Count of milliseconds since UNIX epoch.
Definition: dnp3.h:724
dnp3_time_quality_t quality
Enumeration that indicates the timestamp's validity.
Definition: dnp3.h:726
TLS client configuration.
Definition: dnp3.h:1476
const char * private_key_path
Path to the the PEM-encoded private key.
Definition: dnp3.h:1486
const char * dns_name
Subject name which is verified in the presented server certificate, from the SAN extension or in the ...
Definition: dnp3.h:1480
const char * password
Optional password if the private key file is encrypted.
Definition: dnp3.h:1492
dnp3_certificate_mode_t certificate_mode
Certificate validation mode.
Definition: dnp3.h:1496
const char * local_cert_path
Path to the PEM-encoded local certificate.
Definition: dnp3.h:1484
dnp3_min_tls_version_t min_tls_version
Minimum TLS version allowed.
Definition: dnp3.h:1494
bool allow_server_name_wildcard
If set to true, a '*' may be used for dnp3_tls_client_config_t::dns_name to bypass server name valida...
Definition: dnp3.h:1498
const char * peer_cert_path
Path to the PEM-encoded certificate of the peer.
Definition: dnp3.h:1482
TLS server configuration.
Definition: dnp3.h:8139
dnp3_min_tls_version_t min_tls_version
Minimum TLS version allowed.
Definition: dnp3.h:8157
const char * private_key_path
Path to the PEM-encoded private key.
Definition: dnp3.h:8149
const char * local_cert_path
Path to the PEM-encoded local certificate.
Definition: dnp3.h:8147
bool allow_client_name_wildcard
If set to true, a '*' may be used for dnp3_tls_server_config_t::dns_name to allow any authenticated c...
Definition: dnp3.h:8161
const char * dns_name
Subject name which is verified in the presented client certificate, from the SAN extension or in the ...
Definition: dnp3.h:8143
const char * password
Optional password if the private key file is encrypted.
Definition: dnp3.h:8155
dnp3_certificate_mode_t certificate_mode
Certificate validation mode.
Definition: dnp3.h:8159
const char * peer_cert_path
Path to the PEM-encoded certificate of the peer.
Definition: dnp3.h:8145
Remaining number of events in the buffer after a confirm on a per-type basis.
Definition: dnp3.h:7409
uint32_t num_double_bit_binary_input
Number of double-bit binary input events remaining in the buffer.
Definition: dnp3.h:7413
uint32_t num_octet_string
Number octet string events remaining in the buffer.
Definition: dnp3.h:7425
uint32_t num_analog
Number of analog events remaining in the buffer.
Definition: dnp3.h:7421
uint32_t num_analog_output_status
Number of analog output status events remaining in the buffer.
Definition: dnp3.h:7423
uint32_t num_binary_output_status
Number of binary output status events remaining in the buffer.
Definition: dnp3.h:7415
uint32_t num_counter
Number of counter events remaining in the buffer.
Definition: dnp3.h:7417
uint32_t num_binary_input
Number of binary input events remaining in the buffer.
Definition: dnp3.h:7411
uint32_t num_frozen_counter
Number of frozen counter events remaining in the buffer.
Definition: dnp3.h:7419
Unsigned byte corresponding to group 102 variation 1.
Definition: dnp3.h:1276
uint8_t value
Value of the object.
Definition: dnp3.h:1280
uint16_t index
Index of the object.
Definition: dnp3.h:1278
Defines what occurred during an update operation. Only certain id fields are valid depending on the v...
Definition: dnp3.h:5674
uint64_t created
The id of the created event if the result is DNP3_UPDATE_RESULT_CREATED or DNP3_UPDATE_RESULT_OVERFLO...
Definition: dnp3.h:5678
dnp3_update_result_t result
Defines what happened and which id fields are valid.
Definition: dnp3.h:5676
uint64_t discarded
The id of the discarded event if the result is DNP3_UPDATE_RESULT_OVERFLOW.
Definition: dnp3.h:5680
Options that control how the update is performed.
Definition: dnp3.h:5717
dnp3_event_mode_t event_mode
Determines how/if an event is produced.
Definition: dnp3.h:5721
bool update_static
Optionally bypass updating the static database (the current value)
Definition: dnp3.h:5719
Timestamp value returned by dnp3_association_handler_t::get_current_time.
Definition: dnp3.h:4287
bool is_valid
True if the timestamp is valid, false otherwise.
Definition: dnp3.h:4293
uint64_t value
Count of milliseconds since UNIX epoch.
Definition: dnp3.h:4291