1mod bin_inspect;
2mod error;
3#[doc(hidden)]
4pub mod ffi;
5pub mod log;
6pub mod mqtt;
7pub mod northward;
8mod retry;
9pub mod southward;
10pub mod supervision;
11mod transform;
12mod ui_schema;
13mod value;
14
15pub mod export {
17 pub use once_cell;
18 pub use serde_json;
19 pub use tokio_util;
20 pub use tracing;
21 pub use tracing_subscriber;
22}
23
24pub type DriverResult<T> = Result<T, DriverError>;
25pub type NorthwardResult<T> = Result<T, NorthwardError>;
26
27pub use bin_inspect::{
28 ensure_current_platform_from_bytes, ensure_current_platform_from_path, inspect_binary,
29 BinaryArch, BinaryInfo, BinaryOsType,
30};
31pub use error::{DriverError, NorthwardError};
32pub use northward::buffer::DeviceBuffers;
33pub use northward::{
35 envelope,
36 extension::{ExtensionStore, ExtensionStoreExt},
37 mapping,
38 model::{
39 AlarmData, AttributeData, ClientRpcResponse, Command, DeviceConnectedData,
40 DeviceDisconnectedData, PointMeta, QueuePolicy, RpcRequest, ServerRpcResponse,
41 TelemetryData, WritePoint, WritePointError, WritePointErrorKind, WritePointResponse,
42 WritePointStatus,
43 },
44 probe::{discover_north_libraries_in_dir, probe_north_library, NorthwardProbeInfo},
45 runtime_api::NorthwardRuntimeApi,
46 supervised::{NorthwardHandle, SupervisedPlugin},
47 types::{AlarmSeverity, DropPolicy, TargetType},
48 EventReceiver, NorthwardData, NorthwardEvent, NorthwardInitContext, NorthwardPublisher, Plugin,
49 PluginConfig, PluginFactory,
50};
51pub use retry::{build_exponential_backoff, RetryController, RetryDecision, RetryPolicy};
52pub use southward::{
53 codec::ValueCodec,
54 model::{
55 ActionModel, ChannelModel, ConnectionPolicy, DeviceModel, DriverMetrics, Parameter,
56 PointModel, SouthwardInitContext,
57 },
58 probe::{probe_driver_library, DriverProbeInfo},
59 supervised::{SouthwardHandle, SupervisedDriver},
60 transport::{
61 bind_udp_metered, bind_udp_metered_with_timeout, connect_serial_metered,
62 connect_tcp_metered, connect_tcp_metered_with_timeout, MeteredStream, MeteredUdpSocket,
63 NoopSouthwardTransportMeter, SerialConnectConfig, SouthwardTransportMeter,
64 },
65 types::{AccessMode, CollectionType, DataPointType, DataType, DeviceState, ReportType, Status},
66 validation::{
67 downcast_parameters, resolve_action_inputs_typed, validate_action_parameters,
68 validate_and_resolve_action_inputs,
69 },
70 wire::{WireDecode, WireEncode},
71 CollectItem, CollectionGroupKey, Driver, DriverConfig, DriverFactory, ExecuteOutcome,
72 ExecuteResult, RuntimeAction, RuntimeChannel, RuntimeDelta, RuntimeDevice, RuntimeParameter,
73 RuntimePoint, WriteOutcome, WriteResult,
74};
75pub use supervision::{
76 ConnectionState, FailureKind, FailurePhase, FailureReport, HandleCell, Phase,
77 RetryBudgetSnapshot,
78};
79pub use transform::Transform;
80pub use ui_schema::{
81 DriverEntityTemplate, DriverSchemas, EnumItem, Field, FieldError, FlattenColumn, FlattenEntity,
82 FromValidatedRow, Group, ImportValidationPreview, Node, Operator, PluginConfigSchemas,
83 RowMappingContext, RuleValue, Rules, TemplateMetadata, UiDataType, UiProps, UiText, Union,
84 UnionCase, ValidatedRow, ValidationCode, ValidationSummary, When, WhenEffect,
85};
86pub use value::{
87 BinaryJsonEncoding, NGValue, NGValueCastError, NGValueJsonOptions, PointValue,
88 TimestampJsonEncoding,
89};
90
91pub mod sdk {
96 pub const SDK_API_VERSION_STR: &str = env!("NG_SDK_API_VERSION");
98 pub const SDK_VERSION: &str = env!("NG_SDK_VERSION");
100
101 pub fn sdk_api_version() -> u32 {
103 SDK_API_VERSION_STR.parse::<u32>().unwrap_or(1)
104 }
105}