LmxProxy is no longer needed. Moved the entire lmxproxy/ workspace, DCL adapter files, and related docs to deprecated/. Removed LmxProxy registration from DataConnectionFactory, project reference from DCL, protocol option from UI, and cleaned up all requirement docs.
167 lines
3.3 KiB
Protocol Buffer
167 lines
3.3 KiB
Protocol Buffer
syntax = "proto3";
|
|
|
|
option csharp_namespace = "ZB.MOM.WW.LmxProxy.Host.Grpc";
|
|
|
|
package scada;
|
|
|
|
// The SCADA service definition
|
|
service ScadaService {
|
|
// Connection management
|
|
rpc Connect(ConnectRequest) returns (ConnectResponse);
|
|
rpc Disconnect(DisconnectRequest) returns (DisconnectResponse);
|
|
rpc GetConnectionState(GetConnectionStateRequest) returns (GetConnectionStateResponse);
|
|
|
|
// Read operations
|
|
rpc Read(ReadRequest) returns (ReadResponse);
|
|
rpc ReadBatch(ReadBatchRequest) returns (ReadBatchResponse);
|
|
|
|
// Write operations
|
|
rpc Write(WriteRequest) returns (WriteResponse);
|
|
rpc WriteBatch(WriteBatchRequest) returns (WriteBatchResponse);
|
|
rpc WriteBatchAndWait(WriteBatchAndWaitRequest) returns (WriteBatchAndWaitResponse);
|
|
|
|
// Subscription operations (server streaming) - now streams VtqMessage directly
|
|
rpc Subscribe(SubscribeRequest) returns (stream VtqMessage);
|
|
|
|
// Authentication
|
|
rpc CheckApiKey(CheckApiKeyRequest) returns (CheckApiKeyResponse);
|
|
}
|
|
|
|
// === CONNECTION MESSAGES ===
|
|
|
|
message ConnectRequest {
|
|
string client_id = 1;
|
|
string api_key = 2;
|
|
}
|
|
|
|
message ConnectResponse {
|
|
bool success = 1;
|
|
string message = 2;
|
|
string session_id = 3;
|
|
}
|
|
|
|
message DisconnectRequest {
|
|
string session_id = 1;
|
|
}
|
|
|
|
message DisconnectResponse {
|
|
bool success = 1;
|
|
string message = 2;
|
|
}
|
|
|
|
message GetConnectionStateRequest {
|
|
string session_id = 1;
|
|
}
|
|
|
|
message GetConnectionStateResponse {
|
|
bool is_connected = 1;
|
|
string client_id = 2;
|
|
int64 connected_since_utc_ticks = 3;
|
|
}
|
|
|
|
// === VTQ MESSAGE ===
|
|
|
|
message VtqMessage {
|
|
string tag = 1;
|
|
string value = 2;
|
|
int64 timestamp_utc_ticks = 3;
|
|
string quality = 4; // "Good", "Uncertain", "Bad"
|
|
}
|
|
|
|
// === READ MESSAGES ===
|
|
|
|
message ReadRequest {
|
|
string session_id = 1;
|
|
string tag = 2;
|
|
}
|
|
|
|
message ReadResponse {
|
|
bool success = 1;
|
|
string message = 2;
|
|
VtqMessage vtq = 3;
|
|
}
|
|
|
|
message ReadBatchRequest {
|
|
string session_id = 1;
|
|
repeated string tags = 2;
|
|
}
|
|
|
|
message ReadBatchResponse {
|
|
bool success = 1;
|
|
string message = 2;
|
|
repeated VtqMessage vtqs = 3;
|
|
}
|
|
|
|
// === WRITE MESSAGES ===
|
|
|
|
message WriteRequest {
|
|
string session_id = 1;
|
|
string tag = 2;
|
|
string value = 3;
|
|
}
|
|
|
|
message WriteResponse {
|
|
bool success = 1;
|
|
string message = 2;
|
|
}
|
|
|
|
message WriteItem {
|
|
string tag = 1;
|
|
string value = 2;
|
|
}
|
|
|
|
message WriteResult {
|
|
string tag = 1;
|
|
bool success = 2;
|
|
string message = 3;
|
|
}
|
|
|
|
message WriteBatchRequest {
|
|
string session_id = 1;
|
|
repeated WriteItem items = 2;
|
|
}
|
|
|
|
message WriteBatchResponse {
|
|
bool success = 1;
|
|
string message = 2;
|
|
repeated WriteResult results = 3;
|
|
}
|
|
|
|
message WriteBatchAndWaitRequest {
|
|
string session_id = 1;
|
|
repeated WriteItem items = 2;
|
|
string flag_tag = 3;
|
|
string flag_value = 4;
|
|
int32 timeout_ms = 5;
|
|
int32 poll_interval_ms = 6;
|
|
}
|
|
|
|
message WriteBatchAndWaitResponse {
|
|
bool success = 1;
|
|
string message = 2;
|
|
repeated WriteResult write_results = 3;
|
|
bool flag_reached = 4;
|
|
int32 elapsed_ms = 5;
|
|
}
|
|
|
|
// === SUBSCRIPTION MESSAGES ===
|
|
|
|
message SubscribeRequest {
|
|
string session_id = 1;
|
|
repeated string tags = 2;
|
|
int32 sampling_ms = 3;
|
|
}
|
|
|
|
// Note: Subscribe RPC now streams VtqMessage directly (defined above)
|
|
|
|
// === AUTHENTICATION MESSAGES ===
|
|
|
|
message CheckApiKeyRequest {
|
|
string api_key = 1;
|
|
}
|
|
|
|
message CheckApiKeyResponse {
|
|
bool is_valid = 1;
|
|
string message = 2;
|
|
}
|