Skip to main content

ng_gateway_sdk/
lib.rs

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
15/// Internal re-exports for use in generated symbols/macros to avoid version drift
16pub 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;
33/// Northward envelope protocol types (re-exported at crate root).
34pub 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
91/// Public SDK constants for loader/driver macros to reference.
92///
93/// These constants are embedded via build.rs and used to form export symbols
94/// for dynamic driver loading gates and routing.
95pub mod sdk {
96    /// Raw API version as string (from build.rs). Use `sdk_api_version()` to parse.
97    pub const SDK_API_VERSION_STR: &str = env!("NG_SDK_API_VERSION");
98    /// SDK SemVer string (e.g., 0.1.0)
99    pub const SDK_VERSION: &str = env!("NG_SDK_VERSION");
100
101    /// Parse the API version into u32 with safe fallback.
102    pub fn sdk_api_version() -> u32 {
103        SDK_API_VERSION_STR.parse::<u32>().unwrap_or(1)
104    }
105}