Pure MoonBit OPC UA Binary Encoding primitives and data-model codecs.
import {
"oilleelssq-wq/moonua" @moonua,
}
let writer = @moonua.UaWriter::new()
writer.write_node_id(@moonua.NodeId::numeric(1, 1000))
writer.write_qualified_name(@moonua.QualifiedName::new(1, "Device"))
let bytes = writer.to_bytes()moon fmt --check
moon check --deny-warn
moon test --deny-warn
moon test --target wasm
moon info
moon run examples/nodeid_demo --target wasm-gcpub(all) suberror UaError {
Truncated(Int, Int)
InvalidLength(Int)
LimitExceeded(Int, Int)
InvalidUtf8
InvalidNodeIdEncoding(UInt)
InvalidGuidLength(Int)
InvalidValue(String)
UnsupportedType(UInt)
InvalidMask(String, UInt)
InvalidExtensionObjectEncoding(UInt)
}pub(all) struct DataValue {
value : VariantValue?
status : StatusCode?
source_timestamp : UaDateTime?
server_timestamp : UaDateTime?
source_picoseconds : UInt16?
server_picoseconds : UInt16?
}fn ExpandedNodeId::with_namespace_uri(self : ExpandedNodeId, namespace_uri : String) -> ExpandedNodeIdpub(all) enum ExtensionObjectBody {
NoBody
ByteString(Bytes)
XmlElement(String)
}pub(all) struct LocalizedText {
locale : String?
text : String?
}pub(all) enum NodeIdIdentifier {
Numeric(UInt)
String(String)
Guid(Bytes)
Opaque(Bytes)
}pub(all) struct QualifiedName {
namespace_index : UInt16
name : String
}pub(all) struct StatusCode {
value : UInt
}pub(all) enum StatusSeverity {
Good
Uncertain
Bad
}pub(all) struct UaDateTime {
ticks : Int64
}pub(all) struct UaLimits {
max_byte_length : Int
max_array_length : Int
}pub(all) struct VariantArray {
element_type : UInt
values : Array[VariantValue]
dimensions : Array[Int]?
}fn VariantArray::from_dimensions(values : Array[VariantValue], dimensions : Array[Int]) -> VariantArray raise UaErrorpub(all) enum VariantValue {
Null
BoolValue(Bool)
SByteValue(Int)
ByteValue(UInt)
Int16Value(Int)
UInt16Value(UInt16)
Int32Value(Int)
UInt32Value(UInt)
Int64Value(Int64)
UInt64Value(UInt64)
FloatValue(Float)
DoubleValue(Double)
StringValue(String?)
DateTimeValue(UaDateTime)
GuidValue(Bytes)
ByteStringValue(Bytes?)
XmlElementValue(String?)
NodeIdValue(NodeId)
ExpandedNodeIdValue(ExpandedNodeId)
StatusCodeValue(StatusCode)
QualifiedNameValue(QualifiedName)
LocalizedTextValue(LocalizedText)
ExtensionObjectValue(ExtensionObject)
ArrayValue(VariantArray)
}Install
Download zipPure MoonBit OPC UA Binary Encoding primitives and data-model codecs.