// ------------------------------------------------------------------
// Common Definition of Device Identifiers
// ------------------------------------------------------------------
syntax = "proto3";
import "common_address.proto";
package siemens.common.identifiers.v1;
//===================================================================
// Identifiers Interface Definitions
//===================================================================
// ===========================================
// The Services Definition
//
service IdentifiersApi
{
rpc GetIdentifiers( GetIdentifiersRequest ) returns( GetIdentifiersResponse ) {}
rpc GetSupportedSemantics( GetSupportedSemanticsRequest ) returns( GetSupportedSemanticsResponse ) {}
}
// ==================================================================
// Get Identifiers Request
//
// Get specific identifiers, identified by their semantic meaning from a device (connection)
message IdentifierRequest {
oneof identifier {
// The specific identifier which is requested
SemanticClassifier semantic = 1;
// if a Identifier does not have a semantic mapping we can use the name of it as fallback
string name = 2;
}
}
message GetIdentifiersRequest {
siemens.common.address.v1.Destination target = 1; //the device to which the nodes/data points belong
repeated IdentifierRequest identifiers = 2; // if no specific identifiers are provided, all supported identifiers (see GetSupportedIdentifiers) are returned
}
message GetIdentifiersResponse {
repeated DeviceIdentifier identifiers = 1;
}
// ==================================================================
// Get supported identifier
//
// Get the list of identifiers and their semantic meaning which are supported by the connector
message GetSupportedSemanticsRequest {
// void
}
message GetSupportedSemanticsResponse {
repeated SupportedSemantic supportedSemantic = 1;
}
// ==================================================================
// Identifier definitions
//
// This message type is defined to work-around missing
// support for "repeated oneof" in gRPC. See
// https://github.com/protocolbuffers/protobuf/issues/2592
// for further reference.
message DeviceIdentifierValueList {
repeated DeviceIdentifier value = 1;
}
message DeviceIdentifier {
// The RAW value of the identifier, read from the device (connection)
oneof value {
// Transfer any integer value up to 64 bit
int64 int64_value = 2;
// Transfer any unsigned integer value up to 64 bit
uint64 uint64_value = 3;
// Transfer any floating point value
double float64_value = 4;
// Transfer a UTF8-text
string text = 5;
// Raw data
bytes raw_data = 6;
// A list of child identifiers. This value type
// can be used to transfer structured, hierarchical
// information.
// Example: Ethernet interface (parent identifier) with
// its assigned IP addresses (child identifiers) and MAC
// address (another child identifier).
DeviceIdentifierValueList children = 7;
}
// List of semantic mappings for this identifier
repeated SemanticClassifier classifiers = 8;
}
message SupportedSemantic {
// Human readable name of the identifier, e.g. "Manufacturer"
string name = 1;
// List of semantic identifiers
repeated SemanticClassifier classifiers = 2;
}
message SemanticClassifier {
// The type of the semantic identifier
// supported default classifier:
// "IRDI": e.g. for "CDD" or "eClass" classifier)
// "URI": e.g. for JSON-Link
string type = 1;
// The value of the semantic identifier, e.g. "0112/2///61987#ABA565#007" (IEC CDD/IRDI "Manufacturer")
string value = 2;
}
Message Type | Field | Type | Description |
---|---|---|---|
IdentifierRequest | semantic | SemanticClassifier | The specific identifier which is requested |
name | string | if a Identifier does not have a semantic mapping we can use the name of it as fallback | |
GetIdentifiersRequest | target | siemens.common.address.v1.Destination | the device to which the nodes/data points belong |
identifiers | repeated IdentifierRequest | if no specific identifiers are provided, all supported identifiers (see GetSupportedIdentifiers) are returned | |
GetIdentifiersResponse | identifiers | repeated DeviceIdentifier | - |
GetSupportedSemanticsResponse | supportedSemantic | repeated SupportedSemantic | - |
DeviceIdentifierValueList | value | repeated DeviceIdentifier | - |
DeviceIdentifier | int64_value | int64 | Transfer any integer value up to 64 bit |
uint64_value | uint64 | Transfer any unsigned integer value up to 64 bit | |
float64_value | double | Transfer any floating point value | |
text | string | Transfer a UTF8-text | |
raw_data | bytes | Raw data | |
children | DeviceIdentifierValueList | A list of child identifiers | |
classifiers | repeated SemanticClassifier | List of semantic mappings for this identifier | |
SupportedSemantic | name | string | Human readable name of the identifier, e.g. "Manufacturer" |
classifiers | repeated SemanticClassifier | List of semantic identifiers | |
SemanticClassifier | type | string | The type of the semantic identifier |
value | string | The value of the semantic identifier |