From 6e6f756e3a233a39f7d347351d3ab9eeb517c518 Mon Sep 17 00:00:00 2001 From: Sascha Doemer Date: Thu, 2 May 2024 13:46:16 +0200 Subject: [PATCH 01/17] Update import and rename constants file The import statement in mqtt.py was updated to reference the correct file for SYNC and ASYNC constants. Additionally, the constants.py file was renamed to mqtt_connection_mode.py, providing a more accurate description of its content. --- .../clients/constants.py => api/mqtt_connection_mode.py} | 0 src/agrirouter/messaging/clients/mqtt.py | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) rename src/agrirouter/{messaging/clients/constants.py => api/mqtt_connection_mode.py} (100%) diff --git a/src/agrirouter/messaging/clients/constants.py b/src/agrirouter/api/mqtt_connection_mode.py similarity index 100% rename from src/agrirouter/messaging/clients/constants.py rename to src/agrirouter/api/mqtt_connection_mode.py diff --git a/src/agrirouter/messaging/clients/mqtt.py b/src/agrirouter/messaging/clients/mqtt.py index c73d3f76..eff29b2d 100644 --- a/src/agrirouter/messaging/clients/mqtt.py +++ b/src/agrirouter/messaging/clients/mqtt.py @@ -7,7 +7,7 @@ from paho.mqtt.client import MQTTv31, MQTTMessageInfo from agrirouter.messaging.certification import create_certificate_file_from_pen -from agrirouter.messaging.clients.constants import SYNC, ASYNC +from agrirouter.api.mqtt_connection_mode import SYNC, ASYNC class MqttClient: From cb7b29e81b05ee81f3a71a8f5d8e921c54186a35 Mon Sep 17 00:00:00 2001 From: Sascha Doemer Date: Thu, 2 May 2024 13:50:08 +0200 Subject: [PATCH 02/17] Refactor certificate creation to CertificationService class The certificate creation code has been encapsulated into a new class, CertificationService. This allows for a more organized codebase, increasing the readability and maintainability of the code. This change impacts the methods in the http.py and mqtt.py files where the create_certificate_file_from_pen function call is replaced by CertificationService.create_certificate_file_from_pen. --- src/agrirouter/messaging/certification.py | 27 +++++++++++++---------- src/agrirouter/messaging/clients/http.py | 4 ++-- src/agrirouter/messaging/clients/mqtt.py | 4 ++-- 3 files changed, 19 insertions(+), 16 deletions(-) diff --git a/src/agrirouter/messaging/certification.py b/src/agrirouter/messaging/certification.py index d8f039f0..1c2a7d27 100644 --- a/src/agrirouter/messaging/certification.py +++ b/src/agrirouter/messaging/certification.py @@ -4,16 +4,19 @@ from agrirouter.onboarding.response import OnboardResponse -def create_certificate_file_from_pen(onboard_response: OnboardResponse): - dir_ = tempfile.mkdtemp() - prefix = onboard_response.get_sensor_alternate_id() - data = onboard_response.get_authentication().get_certificate() - fd, path = tempfile.mkstemp(dir=dir_, prefix=prefix, text=True) - try: - with os.fdopen(fd, 'w') as tmp: - tmp.write(data) - except Exception as exc: - os.remove(path) - raise exc +class CertificationService: - return path + @staticmethod + def create_certificate_file_from_pen(onboard_response: OnboardResponse): + dir_ = tempfile.mkdtemp() + prefix = onboard_response.get_sensor_alternate_id() + data = onboard_response.get_authentication().get_certificate() + fd, path = tempfile.mkstemp(dir=dir_, prefix=prefix, text=True) + try: + with os.fdopen(fd, 'w') as tmp: + tmp.write(data) + except Exception as exc: + os.remove(path) + raise exc + + return path diff --git a/src/agrirouter/messaging/clients/http.py b/src/agrirouter/messaging/clients/http.py index 0cb4b215..24f35343 100644 --- a/src/agrirouter/messaging/clients/http.py +++ b/src/agrirouter/messaging/clients/http.py @@ -4,7 +4,7 @@ import ssl from urllib.parse import urlparse -from agrirouter.messaging.certification import create_certificate_file_from_pen +from agrirouter.messaging.certification import CertificationService from agrirouter.onboarding.response import OnboardResponse @@ -45,7 +45,7 @@ def send_command(self, onboard_response: OnboardResponse, request_body=None): ) def send(self, method: str, uri: str, onboard_response: OnboardResponse, request_body=None): - certificate_file_path = create_certificate_file_from_pen(onboard_response) + certificate_file_path = CertificationService.create_certificate_file_from_pen(onboard_response) try: connection = self.make_connection(certificate_file_path, uri, onboard_response) if request_body is not None: diff --git a/src/agrirouter/messaging/clients/mqtt.py b/src/agrirouter/messaging/clients/mqtt.py index eff29b2d..52453045 100644 --- a/src/agrirouter/messaging/clients/mqtt.py +++ b/src/agrirouter/messaging/clients/mqtt.py @@ -6,8 +6,8 @@ import paho.mqtt.client as mqtt_client from paho.mqtt.client import MQTTv31, MQTTMessageInfo -from agrirouter.messaging.certification import create_certificate_file_from_pen from agrirouter.api.mqtt_connection_mode import SYNC, ASYNC +from agrirouter.messaging.certification import CertificationService class MqttClient: @@ -37,7 +37,7 @@ def __init__(self, self.mqtt_client.on_subscribe = self._get_on_subscribe_callback() self.mqtt_client.on_unsubscribe = self._get_on_unsubscribe_callback() - certificate_file_path = create_certificate_file_from_pen(onboard_response) + certificate_file_path = CertificationService.create_certificate_file_from_pen(onboard_response) context = ssl.SSLContext(ssl.PROTOCOL_SSLv23) context.load_cert_chain( certfile=certificate_file_path, From 93d16c72127d0603a7c78c5efd200c825caf18b8 Mon Sep 17 00:00:00 2001 From: Sascha Doemer Date: Thu, 2 May 2024 13:58:47 +0200 Subject: [PATCH 03/17] Refactor decoding methods into DecodingService class Moved `decode_response`, `read_properties_buffers_from_input_stream` methods into a new DecodingService class as static methods. Updated all their usages across the codebase to reflect this change. This consolidation streamlines code organization and enhances readability. --- example_script.py | 9 ++- src/agrirouter/messaging/decode.py | 57 ++++++++++++------- .../fixtures/update_mqtt_onboard_responses.py | 4 +- .../internal/messaging/test_decode.py | 6 +- .../internal/messaging/test_encode.py | 4 +- .../messaging/mqtt/test_capability_service.py | 4 +- .../mqtt/test_feed_confirm_service.py | 10 ++-- .../mqtt/test_feed_delete_service.py | 8 +-- .../mqtt/test_list_endpoints_service.py | 6 +- .../mqtt/test_publish_message_service.py | 8 +-- .../mqtt/test_query_header_service.py | 14 ++--- .../mqtt/test_query_message_service.py | 10 ++-- ..._receive_chunked_messages_from_the_feed.py | 8 +-- ...ges_and_receive_with_push_notifications.py | 6 +- .../mqtt/test_send_direct_message_service.py | 8 +-- .../mqtt/test_subscription_service.py | 6 +- 16 files changed, 96 insertions(+), 72 deletions(-) diff --git a/example_script.py b/example_script.py index 1a18b388..0e7b1295 100644 --- a/example_script.py +++ b/example_script.py @@ -1,5 +1,10 @@ import time import agrirouter as ar +from agrirouter.api.enums import CapabilityType +from agrirouter.messaging.parameters.service import QueryHeaderParameters, ListEndpointsParameters, \ + CapabilitiesParameters, SubscriptionParameters +from agrirouter.messaging.services.messaging import QueryHeaderService, ListEndpointsService, CapabilitiesService, \ + SubscriptionService from agrirouter.onboarding.enums import Gateways from agrirouter.generated.messaging.request.payload.endpoint.subscription_pb2 import Subscription from agrirouter.generated.messaging.request.payload.endpoint.capabilities_pb2 import CapabilitySpecification @@ -295,7 +300,7 @@ def example_query_header_message_mqtt(onboarding_response_data, on_msg_callback) def on_message_callback(client, userdata, msg): # Define here the way receiving messages will be processed - from agrirouter.messaging.decode import decode_response + from agrirouter.messaging.decode import DecodingService from agrirouter.messaging.decode import decode_details from agrirouter.messaging.messages import OutboxMessage @@ -304,7 +309,7 @@ def on_message_callback(client, userdata, msg): print(outbox_message.command.message) - decoded_message = decode_response(outbox_message.command.message) + decoded_message = DecodingService.decode_response(outbox_message.command.message) print(decoded_message.response_envelope) try: diff --git a/src/agrirouter/messaging/decode.py b/src/agrirouter/messaging/decode.py index 9f8b2258..64bfb6fe 100644 --- a/src/agrirouter/messaging/decode.py +++ b/src/agrirouter/messaging/decode.py @@ -4,40 +4,24 @@ from google.protobuf.any_pb2 import Any from google.protobuf.internal.decoder import _DecodeVarint +from agrirouter.api.exceptions import CanNotDecodeMessage from agrirouter.generated.commons.message_pb2 import Messages from agrirouter.generated.messaging.response.payload.account.endpoints_pb2 import ListEndpointsResponse from agrirouter.generated.messaging.response.payload.feed.feed_response_pb2 import HeaderQueryResponse, \ MessageQueryResponse from agrirouter.generated.messaging.response.payload.feed.push_notification_pb2 import PushNotification from agrirouter.generated.messaging.response.response_pb2 import ResponseEnvelope, ResponsePayloadWrapper -from agrirouter.api.exceptions import CanNotDecodeMessage from agrirouter.messaging.messages import DecodedMessage from agrirouter.utils.type_url import TypeUrl -def read_properties_buffers_from_input_stream(input_stream) -> tuple: - """ - Read the properties from the input stream. - """ - result = [] - pos = 0 - while pos < len(input_stream): - msg_len, pos = _DecodeVarint(input_stream, pos) - - msg_buf = input_stream[pos:pos + msg_len] - result.append(msg_buf) - - pos += msg_len - - return tuple(result) - - def decode_response(message: bytes) -> DecodedMessage: """ Decode the response itself. """ input_stream = base64.b64decode(message) - response_envelope_buffer, response_payload_buffer = read_properties_buffers_from_input_stream(input_stream) + response_envelope_buffer, response_payload_buffer = DecodingService.read_properties_buffers_from_input_stream( + input_stream) envelope = ResponseEnvelope() envelope.ParseFromString(response_envelope_buffer) payload = ResponsePayloadWrapper() @@ -76,3 +60,38 @@ def decode_details(details: Any): else: raise CanNotDecodeMessage(f"Could not handle type {details.type_url} while decoding details.") + + +class DecodingService: + + @staticmethod + def read_properties_buffers_from_input_stream(input_stream) -> tuple: + """ + Read the properties from the input stream. + """ + result = [] + pos = 0 + while pos < len(input_stream): + msg_len, pos = _DecodeVarint(input_stream, pos) + + msg_buf = input_stream[pos:pos + msg_len] + result.append(msg_buf) + + pos += msg_len + + return tuple(result) + + @staticmethod + def decode_response(message: bytes) -> DecodedMessage: + """ + Decode the response itself. + """ + input_stream = base64.b64decode(message) + response_envelope_buffer, response_payload_buffer = DecodingService.read_properties_buffers_from_input_stream( + input_stream) + envelope = ResponseEnvelope() + envelope.ParseFromString(response_envelope_buffer) + payload = ResponsePayloadWrapper() + payload.ParseFromString(response_payload_buffer) + message = DecodedMessage(envelope, payload) + return message diff --git a/tests/agrirouter/fixtures/update_mqtt_onboard_responses.py b/tests/agrirouter/fixtures/update_mqtt_onboard_responses.py index 5b6b7cf9..22b0fc51 100644 --- a/tests/agrirouter/fixtures/update_mqtt_onboard_responses.py +++ b/tests/agrirouter/fixtures/update_mqtt_onboard_responses.py @@ -3,7 +3,7 @@ from agrirouter.api.enums import CapabilityType, CapabilityDirectionType from agrirouter.api.environments import Qa from agrirouter.generated.messaging.request.payload.endpoint.capabilities_pb2 import CapabilitySpecification -from agrirouter.messaging.decode import decode_response +from agrirouter.messaging.decode import DecodingService from agrirouter.messaging.messages import OutboxMessage from agrirouter.messaging.parameters.service import CapabilitiesParameters from agrirouter.messaging.services.commons import MqttMessagingService @@ -113,7 +113,7 @@ def _on_message_callback(msg): """ outbox_message = OutboxMessage() outbox_message.json_deserialize(msg.payload.decode().replace("'", '"')) - decoded_message = decode_response(outbox_message.command.message.encode()) + decoded_message = DecodingService.decode_response(outbox_message.command.message.encode()) while not decoded_message: Sleeper.process_the_command() assert decoded_message.response_envelope.response_code == 201 diff --git a/tests/agrirouter/internal/messaging/test_decode.py b/tests/agrirouter/internal/messaging/test_decode.py index 78a2ea0c..587e96f8 100644 --- a/tests/agrirouter/internal/messaging/test_decode.py +++ b/tests/agrirouter/internal/messaging/test_decode.py @@ -2,14 +2,14 @@ from agrirouter.generated.messaging.response.response_pb2 import ResponseEnvelope from agrirouter.messaging.decode import decode_details -from agrirouter.messaging.decode import decode_response +from agrirouter.messaging.decode import DecodingService MESSAGING_RESULT = b'[{"sensorAlternateId":"185cd97b-ed0b-4e75-a6e2-6be1cdd38a06","capabilityAlternateId":"bbe9f361-b551-48d9-9fca-1b4dc768287c","command":{"message":"XwjIARAKGiQ5NWUzNWE0Zi1jNWM4LTQ1NDEtODE4OS03NmJlMzM0OTc0NDUiJDUzNzYyM2ZjLWY2NmYtNDc5Yi1hMmJhLWVjZjNlNWM3ZjhlMCoMCNTV5YsGEICI8LIDzQIKygIKTnR5cGVzLmFncmlyb3V0ZXIuY29tL2Fncmlyb3V0ZXIucmVzcG9uc2UucGF5bG9hZC5hY2NvdW50Lkxpc3RFbmRwb2ludHNSZXNwb25zZRL3AQp4CiRkNzA0YTQ0My05OWY3LTQ3YjQtYmU1NS1lMmZhMDk2ODllYmUSJFB5dGhvblNES19kZXYgLSAyMDIxLTEwLTI1LCAxMDo1MToxOBoLYXBwbGljYXRpb24iBmFjdGl2ZTIVdXJuOm15YXBwOnNucjAwMDAzMjM0CnsKJDE4NWNkOTdiLWVkMGItNGU3NS1hNmUyLTZiZTFjZGQzOGEwNhIkUHl0aG9uU0RLX2RldiAtIDIwMjEtMTAtMjEsIDIxOjQxOjI0GgthcHBsaWNhdGlvbiIGYWN0aXZlMhh1cm46bXlhcHA6c25yMDAwMDMyMzRzZGY="}}]' # noqa def test_decode_response(): json_response = json.loads(MESSAGING_RESULT) - message = decode_response(json_response[0]["command"]["message"].encode()) + message = DecodingService.decode_response(json_response[0]["command"]["message"].encode()) assert message.response_payload assert message.response_envelope @@ -30,7 +30,7 @@ def test_decode_response(): def test_decode_details(): json_response = json.loads(MESSAGING_RESULT) - message = decode_response(json_response[0]["command"]["message"].encode()) + message = DecodingService.decode_response(json_response[0]["command"]["message"].encode()) details = message.response_payload.details decoded_details = decode_details(details) diff --git a/tests/agrirouter/internal/messaging/test_encode.py b/tests/agrirouter/internal/messaging/test_encode.py index 17b73f70..392e97cd 100644 --- a/tests/agrirouter/internal/messaging/test_encode.py +++ b/tests/agrirouter/internal/messaging/test_encode.py @@ -2,7 +2,7 @@ from agrirouter.generated.commons.message_pb2 import Message, Messages from agrirouter.generated.messaging.request.request_pb2 import RequestEnvelope, RequestPayloadWrapper -from agrirouter.messaging.decode import read_properties_buffers_from_input_stream +from agrirouter.messaging.decode import DecodingService from agrirouter.messaging.encode import write_proto_parts_to_buffer, encode_header from agrirouter.messaging.parameters.service import MessageHeaderParameters @@ -20,7 +20,7 @@ def test_write_proto_parts_to_buffer(): payload = RequestPayloadWrapper(details=Any(type_url=type_url, value=messages.SerializeToString())) buffer = write_proto_parts_to_buffer([envelope, payload]) - result = read_properties_buffers_from_input_stream(buffer) + result = DecodingService.read_properties_buffers_from_input_stream(buffer) assert len(result) == 2 assert len(result[0]) == envelope.ByteSize() diff --git a/tests/agrirouter/service/messaging/mqtt/test_capability_service.py b/tests/agrirouter/service/messaging/mqtt/test_capability_service.py index 06b18ea2..bf2fccfd 100644 --- a/tests/agrirouter/service/messaging/mqtt/test_capability_service.py +++ b/tests/agrirouter/service/messaging/mqtt/test_capability_service.py @@ -4,7 +4,7 @@ import pytest from agrirouter.generated.messaging.request.payload.endpoint.capabilities_pb2 import CapabilitySpecification -from agrirouter.messaging.decode import decode_response, decode_details +from agrirouter.messaging.decode import DecodingService, decode_details from agrirouter.api.enums import CapabilityDirectionType from agrirouter.api.enums import CapabilityType from agrirouter.messaging.messages import OutboxMessage @@ -65,7 +65,7 @@ def _inner_function(client, userdata, msg): self._log.info("Received message after sending capabilities: " + str(msg.payload)) outbox_message = OutboxMessage() outbox_message.json_deserialize(msg.payload.decode().replace("'", '"')) - decoded_message = decode_response(outbox_message.command.message.encode()) + decoded_message = DecodingService.decode_response(outbox_message.command.message.encode()) if decoded_message.response_envelope.response_code != 201: decoded_details = decode_details(decoded_message.response_payload.details) self._log.error("Message details: " + str(decoded_details)) diff --git a/tests/agrirouter/service/messaging/mqtt/test_feed_confirm_service.py b/tests/agrirouter/service/messaging/mqtt/test_feed_confirm_service.py index 9b2fcbe7..1d638a4e 100644 --- a/tests/agrirouter/service/messaging/mqtt/test_feed_confirm_service.py +++ b/tests/agrirouter/service/messaging/mqtt/test_feed_confirm_service.py @@ -5,7 +5,7 @@ from agrirouter.api.enums import CapabilityType from agrirouter.generated.messaging.request.request_pb2 import RequestEnvelope -from agrirouter.messaging.decode import decode_response, decode_details +from agrirouter.messaging.decode import DecodingService, decode_details from agrirouter.messaging.messages import OutboxMessage from agrirouter.messaging.parameters.dto import SendMessageParameters from agrirouter.messaging.parameters.service import FeedDeleteParameters, FeedConfirmParameters @@ -219,7 +219,7 @@ def _inner_function(client, userdata, msg): msg.payload.decode()) outbox_message = OutboxMessage() outbox_message.json_deserialize(msg.payload.decode().replace("'", '"')) - decoded_message = decode_response(outbox_message.command.message.encode()) + decoded_message = DecodingService.decode_response(outbox_message.command.message.encode()) if decoded_message.response_envelope.type != 12: decoded_details = decode_details(decoded_message.response_payload.details) self._log.error( @@ -238,7 +238,7 @@ def _inner_function(client, userdata, msg): self._log.info("Received message after deleting messages: " + str(msg.payload)) outbox_message = OutboxMessage() outbox_message.json_deserialize(msg.payload.decode().replace("'", '"')) - decoded_message = decode_response(outbox_message.command.message.encode()) + decoded_message = DecodingService.decode_response(outbox_message.command.message.encode()) delete_details = decode_details(decoded_message.response_payload.details) self._log.info("Details for the message removal: " + str(delete_details)) assert decoded_message.response_envelope.response_code == 201 @@ -253,7 +253,7 @@ def _inner_function(client, userdata, msg): self._log.info("Callback for checking if the feed confirm messages are received.") outbox_message = OutboxMessage() outbox_message.json_deserialize(msg.payload.decode().replace("'", '"')) - decoded_message = decode_response(outbox_message.command.message.encode()) + decoded_message = DecodingService.decode_response(outbox_message.command.message.encode()) feed_confirm_details = decode_details(decoded_message.response_payload.details) self._log.info(f"Feed Confirm Service Details: {feed_confirm_details}") assert decoded_message.response_envelope.response_code == 200 @@ -272,7 +272,7 @@ def _inner_function(client, userdata, msg): self._log.info("Callback for checking if no messages are received.") outbox_message = OutboxMessage() outbox_message.json_deserialize(msg.payload.decode().replace("'", '"')) - decoded_message = decode_response(outbox_message.command.message.encode()) + decoded_message = DecodingService.decode_response(outbox_message.command.message.encode()) feed_confirm_details_for_empty_messages = decode_details(decoded_message.response_payload.details) self._log.info(f"Feed confirm details for empty messages: {feed_confirm_details_for_empty_messages}") assert decoded_message.response_envelope.response_code == 200 diff --git a/tests/agrirouter/service/messaging/mqtt/test_feed_delete_service.py b/tests/agrirouter/service/messaging/mqtt/test_feed_delete_service.py index aefc97b9..15ecf242 100644 --- a/tests/agrirouter/service/messaging/mqtt/test_feed_delete_service.py +++ b/tests/agrirouter/service/messaging/mqtt/test_feed_delete_service.py @@ -5,7 +5,7 @@ from agrirouter.api.enums import CapabilityType from agrirouter.generated.messaging.request.request_pb2 import RequestEnvelope -from agrirouter.messaging.decode import decode_response, decode_details +from agrirouter.messaging.decode import DecodingService, decode_details from agrirouter.messaging.messages import OutboxMessage from agrirouter.messaging.parameters.service import FeedDeleteParameters from agrirouter.messaging.services.commons import MqttMessagingService @@ -312,7 +312,7 @@ def _inner_function(client, userdata, msg): msg.payload.decode()) outbox_message = OutboxMessage() outbox_message.json_deserialize(msg.payload.decode().replace("'", '"')) - decoded_message = decode_response(outbox_message.command.message.encode()) + decoded_message = DecodingService.decode_response(outbox_message.command.message.encode()) if decoded_message.response_envelope.type != 12: decoded_details = decode_details(decoded_message.response_payload.details) self._log.error( @@ -331,7 +331,7 @@ def _inner_function(client, userdata, msg): self._log.info("Received message after deleting messages: " + str(msg.payload)) outbox_message = OutboxMessage() outbox_message.json_deserialize(msg.payload.decode().replace("'", '"')) - decoded_message = decode_response(outbox_message.command.message.encode()) + decoded_message = DecodingService.decode_response(outbox_message.command.message.encode()) feed_delete_details = decode_details(decoded_message.response_payload.details) self._log.info("Details for the message removal: " + str(feed_delete_details)) message_ids_in_feed = [_message.args['messageId'] for _message in feed_delete_details.messages] @@ -349,7 +349,7 @@ def _inner_function(client, userdata, msg): self._log.info("Callback for checking if no messages are received.") outbox_message = OutboxMessage() outbox_message.json_deserialize(msg.payload.decode().replace("'", '"')) - decoded_message = decode_response(outbox_message.command.message.encode()) + decoded_message = DecodingService.decode_response(outbox_message.command.message.encode()) feed_delete_service_for_empty_result = decode_details(decoded_message.response_payload.details) self._log.info(f"Feed delete details: {feed_delete_service_for_empty_result}") assert decoded_message.response_envelope.response_code == 204 diff --git a/tests/agrirouter/service/messaging/mqtt/test_list_endpoints_service.py b/tests/agrirouter/service/messaging/mqtt/test_list_endpoints_service.py index 7653c768..3d300634 100644 --- a/tests/agrirouter/service/messaging/mqtt/test_list_endpoints_service.py +++ b/tests/agrirouter/service/messaging/mqtt/test_list_endpoints_service.py @@ -3,7 +3,7 @@ import pytest -from agrirouter.messaging.decode import decode_response, decode_details +from agrirouter.messaging.decode import DecodingService, decode_details from agrirouter.api.enums import CapabilityType, CapabilityDirectionType from agrirouter.messaging.messages import OutboxMessage from agrirouter.messaging.parameters.service import ListEndpointsParameters @@ -139,7 +139,7 @@ def _inner_function(client, userdata, msg): self._log.info("Callback for checking if messages are received.") outbox_message = OutboxMessage() outbox_message.json_deserialize(msg.payload.decode().replace("'", '"')) - decoded_message = decode_response(outbox_message.command.message.encode()) + decoded_message = DecodingService.decode_response(outbox_message.command.message.encode()) list_endpoints_service_details = decode_details(decoded_message.response_payload.details) self._log.info(f"List endpoints service details: {list_endpoints_service_details}") assert decoded_message.response_envelope.response_code == 200 @@ -168,7 +168,7 @@ def _inner_function(client, userdata, msg): self._log.info("Callback for checking if messages are received.") outbox_message = OutboxMessage() outbox_message.json_deserialize(msg.payload.decode().replace("'", '"')) - decoded_message = decode_response(outbox_message.command.message.encode()) + decoded_message = DecodingService.decode_response(outbox_message.command.message.encode()) list_endpoints_service_details = decode_details(decoded_message.response_payload.details) self._log.info(f"List endpoints service details: {list_endpoints_service_details}") assert decoded_message.response_envelope.response_code == 200 diff --git a/tests/agrirouter/service/messaging/mqtt/test_publish_message_service.py b/tests/agrirouter/service/messaging/mqtt/test_publish_message_service.py index 296234df..a3116394 100644 --- a/tests/agrirouter/service/messaging/mqtt/test_publish_message_service.py +++ b/tests/agrirouter/service/messaging/mqtt/test_publish_message_service.py @@ -4,7 +4,7 @@ import pytest from agrirouter.generated.messaging.request.request_pb2 import RequestEnvelope -from agrirouter.messaging.decode import decode_response, decode_details +from agrirouter.messaging.decode import DecodingService, decode_details from agrirouter.api.enums import CapabilityType from agrirouter.messaging.messages import OutboxMessage from agrirouter.messaging.parameters.service import FeedDeleteParameters @@ -102,7 +102,7 @@ def _inner_function(client, userdata, msg): msg.payload.decode()) outbox_message = OutboxMessage() outbox_message.json_deserialize(msg.payload.decode().replace("'", '"')) - decoded_message = decode_response(outbox_message.command.message.encode()) + decoded_message = DecodingService.decode_response(outbox_message.command.message.encode()) if decoded_message.response_envelope.type != 1: decoded_details = decode_details(decoded_message.response_payload.details) self._log.error( @@ -121,7 +121,7 @@ def _inner_function(client, userdata, msg): msg.payload.decode()) outbox_message = OutboxMessage() outbox_message.json_deserialize(msg.payload.decode().replace("'", '"')) - decoded_message = decode_response(outbox_message.command.message.encode()) + decoded_message = DecodingService.decode_response(outbox_message.command.message.encode()) if decoded_message.response_envelope.type != 12: decoded_details = decode_details(decoded_message.response_payload.details) self._log.error( @@ -169,7 +169,7 @@ def _inner_function(client, userdata, msg): self._log.info("Received message after deleting messages: " + str(msg.payload)) outbox_message = OutboxMessage() outbox_message.json_deserialize(msg.payload.decode().replace("'", '"')) - decoded_message = decode_response(outbox_message.command.message.encode()) + decoded_message = DecodingService.decode_response(outbox_message.command.message.encode()) delete_details = decode_details(decoded_message.response_payload.details) self._log.info("Details for the message removal: " + str(delete_details)) assert decoded_message.response_envelope.response_code == 201 diff --git a/tests/agrirouter/service/messaging/mqtt/test_query_header_service.py b/tests/agrirouter/service/messaging/mqtt/test_query_header_service.py index 5159686c..51316683 100644 --- a/tests/agrirouter/service/messaging/mqtt/test_query_header_service.py +++ b/tests/agrirouter/service/messaging/mqtt/test_query_header_service.py @@ -5,7 +5,7 @@ import pytest from agrirouter.generated.messaging.request.request_pb2 import RequestEnvelope -from agrirouter.messaging.decode import decode_response, decode_details +from agrirouter.messaging.decode import DecodingService, decode_details from agrirouter.api.enums import CapabilityType from agrirouter.messaging.messages import OutboxMessage from agrirouter.messaging.parameters.service import FeedDeleteParameters, QueryHeaderParameters @@ -117,7 +117,7 @@ def _inner_function(client, userdata, msg): msg.payload.decode()) outbox_message = OutboxMessage() outbox_message.json_deserialize(msg.payload.decode().replace("'", '"')) - decoded_message = decode_response(outbox_message.command.message.encode()) + decoded_message = DecodingService.decode_response(outbox_message.command.message.encode()) if decoded_message.response_envelope.type != 12: decoded_details = decode_details(decoded_message.response_payload.details) self._log.error( @@ -364,7 +364,7 @@ def _inner_function(client, userdata, msg): self._log.info("Received message after deleting messages: " + str(msg.payload)) outbox_message = OutboxMessage() outbox_message.json_deserialize(msg.payload.decode().replace("'", '"')) - decoded_message = decode_response(outbox_message.command.message.encode()) + decoded_message = DecodingService.decode_response(outbox_message.command.message.encode()) delete_details = decode_details(decoded_message.response_payload.details) self._log.info("Details for the message removal: " + str(delete_details)) assert decoded_message.response_envelope.response_code == 201 @@ -379,7 +379,7 @@ def _inner_function(client, userdata, msg): self._log.info("Callback for checking if no messages are received.") outbox_message = OutboxMessage() outbox_message.json_deserialize(msg.payload.decode().replace("'", '"')) - decoded_message = decode_response(outbox_message.command.message.encode()) + decoded_message = DecodingService.decode_response(outbox_message.command.message.encode()) details = decode_details(decoded_message.response_payload.details) assert decoded_message.response_envelope.response_code == 400 @@ -400,7 +400,7 @@ def _inner_function(client, userdata, msg): self._log.info("Callback for checking if no messages are received.") outbox_message = OutboxMessage() outbox_message.json_deserialize(msg.payload.decode().replace("'", '"')) - decoded_message = decode_response(outbox_message.command.message.encode()) + decoded_message = DecodingService.decode_response(outbox_message.command.message.encode()) assert decoded_message.response_envelope.response_code == 204 self._callback_for_feed_header_query_processed = True @@ -415,7 +415,7 @@ def _inner_function(client, userdata, msg): msg.payload.decode()) outbox_message = OutboxMessage() outbox_message.json_deserialize(msg.payload.decode().replace("'", '"')) - decoded_message = decode_response(outbox_message.command.message.encode()) + decoded_message = DecodingService.decode_response(outbox_message.command.message.encode()) if decoded_message.response_envelope.type != 12: decoded_details = decode_details(decoded_message.response_payload.details) self._log.error( @@ -437,7 +437,7 @@ def _inner_function(client, userdata, msg): self._log.info("Callback for checking if the query header messages are received.") outbox_message = OutboxMessage() outbox_message.json_deserialize(msg.payload.decode().replace("'", '"')) - decoded_message = decode_response(outbox_message.command.message.encode()) + decoded_message = DecodingService.decode_response(outbox_message.command.message.encode()) query_header_details = decode_details(decoded_message.response_payload.details) self._log.info(f"Query Header Service Details: {query_header_details}") assert decoded_message.response_envelope.type == 6 diff --git a/tests/agrirouter/service/messaging/mqtt/test_query_message_service.py b/tests/agrirouter/service/messaging/mqtt/test_query_message_service.py index e9d2586f..25f637c0 100644 --- a/tests/agrirouter/service/messaging/mqtt/test_query_message_service.py +++ b/tests/agrirouter/service/messaging/mqtt/test_query_message_service.py @@ -5,7 +5,7 @@ import pytest from agrirouter.generated.messaging.request.request_pb2 import RequestEnvelope -from agrirouter.messaging.decode import decode_response, decode_details +from agrirouter.messaging.decode import DecodingService, decode_details from agrirouter.api.enums import CapabilityType from agrirouter.messaging.messages import OutboxMessage from agrirouter.messaging.parameters.service import FeedDeleteParameters, QueryMessageParameters @@ -312,7 +312,7 @@ def _inner_function(client, userdata, msg): msg.payload.decode()) outbox_message = OutboxMessage() outbox_message.json_deserialize(msg.payload.decode().replace("'", '"')) - decoded_message = decode_response(outbox_message.command.message.encode()) + decoded_message = DecodingService.decode_response(outbox_message.command.message.encode()) if decoded_message.response_envelope.type != 12: decoded_details = decode_details(decoded_message.response_payload.details) self._log.error( @@ -331,7 +331,7 @@ def _inner_function(client, userdata, msg): self._log.info("Received message after deleting messages: " + str(msg.payload)) outbox_message = OutboxMessage() outbox_message.json_deserialize(msg.payload.decode().replace("'", '"')) - decoded_message = decode_response(outbox_message.command.message.encode()) + decoded_message = DecodingService.decode_response(outbox_message.command.message.encode()) delete_details = decode_details(decoded_message.response_payload.details) self._log.info("Details for the message removal: " + str(delete_details)) assert decoded_message.response_envelope.response_code == 201 @@ -346,7 +346,7 @@ def _inner_function(client, userdata, msg): self._log.info("Callback for checking if the content from query messages are received.") outbox_message = OutboxMessage() outbox_message.json_deserialize(msg.payload.decode().replace("'", '"')) - decoded_message = decode_response(outbox_message.command.message.encode()) + decoded_message = DecodingService.decode_response(outbox_message.command.message.encode()) query_message_details = decode_details(decoded_message.response_payload.details) self._log.info(f"Query Message Service Details: {query_message_details}") assert decoded_message.response_envelope.type == 7 @@ -376,7 +376,7 @@ def _inner_function(client, userdata, msg): self._log.info("Callback for checking if no messages are received.") outbox_message = OutboxMessage() outbox_message.json_deserialize(msg.payload.decode().replace("'", '"')) - decoded_message = decode_response(outbox_message.command.message.encode()) + decoded_message = DecodingService.decode_response(outbox_message.command.message.encode()) assert decoded_message.response_envelope.response_code == 204 self._callback_for_feed_message_query_processed = True diff --git a/tests/agrirouter/service/messaging/mqtt/test_send_and_receive_chunked_messages_from_the_feed.py b/tests/agrirouter/service/messaging/mqtt/test_send_and_receive_chunked_messages_from_the_feed.py index 4ee80390..d8f0ee08 100644 --- a/tests/agrirouter/service/messaging/mqtt/test_send_and_receive_chunked_messages_from_the_feed.py +++ b/tests/agrirouter/service/messaging/mqtt/test_send_and_receive_chunked_messages_from_the_feed.py @@ -6,7 +6,7 @@ from agrirouter.api.enums import CapabilityType, TechnicalMessageType from agrirouter.generated.messaging.request.request_pb2 import RequestEnvelope -from agrirouter.messaging.decode import decode_response, decode_details +from agrirouter.messaging.decode import DecodingService, decode_details from agrirouter.messaging.encode import chunk_and_base64encode_each_chunk, encode_chunks_message from agrirouter.messaging.messages import OutboxMessage from agrirouter.messaging.parameters.dto import ChunkedMessageParameters @@ -191,7 +191,7 @@ def _inner_function(client, userdata, msg): msg.payload.decode()) outbox_message = OutboxMessage() outbox_message.json_deserialize(msg.payload.decode().replace("'", '"')) - decoded_message = decode_response(outbox_message.command.message.encode()) + decoded_message = DecodingService.decode_response(outbox_message.command.message.encode()) if decoded_message.response_envelope.type != 12: decoded_details = decode_details(decoded_message.response_payload.details) self._log.error( @@ -215,7 +215,7 @@ def _inner_function(client, userdata, msg): self._log.info("Received message after deleting messages: " + str(msg.payload)) outbox_message = OutboxMessage() outbox_message.json_deserialize(msg.payload.decode().replace("'", '"')) - decoded_message = decode_response(outbox_message.command.message.encode()) + decoded_message = DecodingService.decode_response(outbox_message.command.message.encode()) delete_details = decode_details(decoded_message.response_payload.details) self._log.info("Details for the message removal: " + str(delete_details)) assert decoded_message.response_envelope.response_code == 201 @@ -230,7 +230,7 @@ def _inner_function(client, userdata, msg): self._log.info("Callback for checking if the query header messages are received.") outbox_message = OutboxMessage() outbox_message.json_deserialize(msg.payload.decode().replace("'", '"')) - decoded_message = decode_response(outbox_message.command.message.encode()) + decoded_message = DecodingService.decode_response(outbox_message.command.message.encode()) query_header_details = decode_details(decoded_message.response_payload.details) self._log.info(f"Query Header Service Details: {query_header_details}") assert decoded_message.response_envelope.type == 6 diff --git a/tests/agrirouter/service/messaging/mqtt/test_send_chunked_messages_and_receive_with_push_notifications.py b/tests/agrirouter/service/messaging/mqtt/test_send_chunked_messages_and_receive_with_push_notifications.py index 158ff36e..a2b5eb9e 100644 --- a/tests/agrirouter/service/messaging/mqtt/test_send_chunked_messages_and_receive_with_push_notifications.py +++ b/tests/agrirouter/service/messaging/mqtt/test_send_chunked_messages_and_receive_with_push_notifications.py @@ -5,7 +5,7 @@ from agrirouter.api.enums import CapabilityType, TechnicalMessageType from agrirouter.generated.messaging.request.request_pb2 import RequestEnvelope -from agrirouter.messaging.decode import decode_response, decode_details +from agrirouter.messaging.decode import DecodingService, decode_details from agrirouter.messaging.encode import chunk_and_base64encode_each_chunk, encode_chunks_message from agrirouter.messaging.messages import OutboxMessage from agrirouter.messaging.parameters.dto import ChunkedMessageParameters @@ -161,7 +161,7 @@ def _inner_function(client, userdata, msg): msg.payload.decode()) outbox_message = OutboxMessage() outbox_message.json_deserialize(msg.payload.decode().replace("'", '"')) - decoded_message = decode_response(outbox_message.command.message.encode()) + decoded_message = DecodingService.decode_response(outbox_message.command.message.encode()) if decoded_message.response_envelope.type != 12: decoded_details = decode_details(decoded_message.response_payload.details) self._log.error( @@ -184,7 +184,7 @@ def _inner_function(client, userdata, msg): self._log.info("Received message after deleting messages: " + str(msg.payload)) outbox_message = OutboxMessage() outbox_message.json_deserialize(msg.payload.decode().replace("'", '"')) - decoded_message = decode_response(outbox_message.command.message.encode()) + decoded_message = DecodingService.decode_response(outbox_message.command.message.encode()) delete_details = decode_details(decoded_message.response_payload.details) self._log.info("Details for the message removal: " + str(delete_details)) assert decoded_message.response_envelope.response_code == 201 diff --git a/tests/agrirouter/service/messaging/mqtt/test_send_direct_message_service.py b/tests/agrirouter/service/messaging/mqtt/test_send_direct_message_service.py index 5770b3b5..f71e4271 100644 --- a/tests/agrirouter/service/messaging/mqtt/test_send_direct_message_service.py +++ b/tests/agrirouter/service/messaging/mqtt/test_send_direct_message_service.py @@ -4,7 +4,7 @@ import pytest from agrirouter.generated.messaging.request.request_pb2 import RequestEnvelope -from agrirouter.messaging.decode import decode_response, decode_details +from agrirouter.messaging.decode import DecodingService, decode_details from agrirouter.api.enums import CapabilityType from agrirouter.messaging.messages import OutboxMessage from agrirouter.messaging.parameters.service import FeedDeleteParameters @@ -104,7 +104,7 @@ def _inner_function(client, userdata, msg): msg.payload.decode()) outbox_message = OutboxMessage() outbox_message.json_deserialize(msg.payload.decode().replace("'", '"')) - decoded_message = decode_response(outbox_message.command.message.encode()) + decoded_message = DecodingService.decode_response(outbox_message.command.message.encode()) if decoded_message.response_envelope.type != 1: decoded_details = decode_details(decoded_message.response_payload.details) self._log.error( @@ -123,7 +123,7 @@ def _inner_function(client, userdata, msg): msg.payload.decode()) outbox_message = OutboxMessage() outbox_message.json_deserialize(msg.payload.decode().replace("'", '"')) - decoded_message = decode_response(outbox_message.command.message.encode()) + decoded_message = DecodingService.decode_response(outbox_message.command.message.encode()) if decoded_message.response_envelope.type != 12: decoded_details = decode_details(decoded_message.response_payload.details) self._log.error( @@ -171,7 +171,7 @@ def _inner_function(client, userdata, msg): self._log.info("Received message after deleting messages: " + str(msg.payload)) outbox_message = OutboxMessage() outbox_message.json_deserialize(msg.payload.decode().replace("'", '"')) - decoded_message = decode_response(outbox_message.command.message.encode()) + decoded_message = DecodingService.decode_response(outbox_message.command.message.encode()) delete_details = decode_details(decoded_message.response_payload.details) self._log.info("Details for the message removal: " + str(delete_details)) assert decoded_message.response_envelope.response_code == 201 diff --git a/tests/agrirouter/service/messaging/mqtt/test_subscription_service.py b/tests/agrirouter/service/messaging/mqtt/test_subscription_service.py index 9178cc3d..4677c768 100644 --- a/tests/agrirouter/service/messaging/mqtt/test_subscription_service.py +++ b/tests/agrirouter/service/messaging/mqtt/test_subscription_service.py @@ -5,7 +5,7 @@ from agrirouter.generated.messaging.request.payload.endpoint.capabilities_pb2 import CapabilitySpecification from agrirouter.generated.messaging.request.payload.endpoint.subscription_pb2 import Subscription -from agrirouter.messaging.decode import decode_response, decode_details +from agrirouter.messaging.decode import DecodingService, decode_details from agrirouter.api.enums import CapabilityType, CapabilityDirectionType from agrirouter.messaging.messages import OutboxMessage from agrirouter.messaging.parameters.service import SubscriptionParameters, CapabilitiesParameters @@ -79,7 +79,7 @@ def _inner_function(client, userdata, msg): "Received message from MQTT broker after sending the capabilities, checking the result.") outbox_message = OutboxMessage() outbox_message.json_deserialize(msg.payload.decode().replace("'", '"')) - decoded_message = decode_response(outbox_message.command.message.encode()) + decoded_message = DecodingService.decode_response(outbox_message.command.message.encode()) if decoded_message.response_envelope.response_code != 201: decoded_details = decode_details(decoded_message.response_payload.details) self._log.error("Message could not be processed. Response code: " + str( @@ -125,7 +125,7 @@ def _inner_function(client, userdata, msg): "Received message from MQTT broker after sending the subscriptions, checking the result.") outbox_message = OutboxMessage() outbox_message.json_deserialize(msg.payload.decode().replace("'", '"')) - decoded_message = decode_response(outbox_message.command.message.encode()) + decoded_message = DecodingService.decode_response(outbox_message.command.message.encode()) if decoded_message.response_envelope.response_code != 201: decoded_details = decode_details(decoded_message.response_payload.details) self._log.error("Message details: " + str(decoded_details)) From 3667358dbc95ca26018ebb336ba98047ca5dfc19 Mon Sep 17 00:00:00 2001 From: Sascha Doemer Date: Thu, 2 May 2024 14:02:10 +0200 Subject: [PATCH 04/17] Refactor decoding functions into DecodingService class The decoding functions `decode_response` and `decode_details` have been refactored into static methods in the `DecodingService` class in `src/agrirouter/messaging/decode.py`. The changes also involved updating the relative imports in test files and other modules that were previously using these standalone functions. --- example_script.py | 3 +- src/agrirouter/messaging/decode.py | 78 ++++++++----------- .../internal/messaging/test_decode.py | 2 +- .../messaging/mqtt/test_capability_service.py | 4 +- .../mqtt/test_feed_confirm_service.py | 12 +-- .../mqtt/test_feed_delete_service.py | 10 +-- .../mqtt/test_list_endpoints_service.py | 6 +- .../mqtt/test_publish_message_service.py | 10 +-- .../mqtt/test_query_header_service.py | 16 ++-- .../mqtt/test_query_message_service.py | 10 +-- ..._receive_chunked_messages_from_the_feed.py | 10 +-- ...ges_and_receive_with_push_notifications.py | 8 +- .../mqtt/test_send_direct_message_service.py | 10 +-- .../mqtt/test_subscription_service.py | 6 +- 14 files changed, 84 insertions(+), 101 deletions(-) diff --git a/example_script.py b/example_script.py index 0e7b1295..87160d09 100644 --- a/example_script.py +++ b/example_script.py @@ -301,7 +301,6 @@ def on_message_callback(client, userdata, msg): # Define here the way receiving messages will be processed from agrirouter.messaging.decode import DecodingService - from agrirouter.messaging.decode import decode_details from agrirouter.messaging.messages import OutboxMessage outbox_message = OutboxMessage() @@ -313,7 +312,7 @@ def on_message_callback(client, userdata, msg): print(decoded_message.response_envelope) try: - decoded_details = decode_details(decoded_message.response_payload.details) + decoded_details = DecodingService.decode_details(decoded_message.response_payload.details) print(decoded_details) except Exception as exc: print("Error in decoding details: ", exc) diff --git a/src/agrirouter/messaging/decode.py b/src/agrirouter/messaging/decode.py index 64bfb6fe..3439bf17 100644 --- a/src/agrirouter/messaging/decode.py +++ b/src/agrirouter/messaging/decode.py @@ -15,53 +15,6 @@ from agrirouter.utils.type_url import TypeUrl -def decode_response(message: bytes) -> DecodedMessage: - """ - Decode the response itself. - """ - input_stream = base64.b64decode(message) - response_envelope_buffer, response_payload_buffer = DecodingService.read_properties_buffers_from_input_stream( - input_stream) - envelope = ResponseEnvelope() - envelope.ParseFromString(response_envelope_buffer) - payload = ResponsePayloadWrapper() - payload.ParseFromString(response_payload_buffer) - message = DecodedMessage(envelope, payload) - return message - - -def decode_details(details: Any): - """ - Decode the details of a response. - """ - _log = logging.getLogger(__name__) - _log.debug(f"Decoding details of type {details.type_url}.") - - if details.type_url == TypeUrl.get_type_url(Messages): - messages = Messages() - messages.MergeFromString(details.value) - return messages - elif details.type_url == TypeUrl.get_type_url(ListEndpointsResponse): - list_endpoints_response = ListEndpointsResponse() - list_endpoints_response.MergeFromString(details.value) - return list_endpoints_response - elif details.type_url == TypeUrl.get_type_url(HeaderQueryResponse): - header_query_response = HeaderQueryResponse() - header_query_response.MergeFromString(details.value) - return header_query_response - elif details.type_url == TypeUrl.get_type_url(MessageQueryResponse): - message_query_response = MessageQueryResponse() - message_query_response.MergeFromString(details.value) - return message_query_response - elif details.type_url == TypeUrl.get_type_url(PushNotification): - push_notification = PushNotification() - push_notification.MergeFromString(details.value) - return push_notification - else: - - raise CanNotDecodeMessage(f"Could not handle type {details.type_url} while decoding details.") - - class DecodingService: @staticmethod @@ -95,3 +48,34 @@ def decode_response(message: bytes) -> DecodedMessage: payload.ParseFromString(response_payload_buffer) message = DecodedMessage(envelope, payload) return message + + def decode_details(details: Any): + """ + Decode the details of a response. + """ + _log = logging.getLogger(__name__) + _log.debug(f"Decoding details of type {details.type_url}.") + + if details.type_url == TypeUrl.get_type_url(Messages): + messages = Messages() + messages.MergeFromString(details.value) + return messages + elif details.type_url == TypeUrl.get_type_url(ListEndpointsResponse): + list_endpoints_response = ListEndpointsResponse() + list_endpoints_response.MergeFromString(details.value) + return list_endpoints_response + elif details.type_url == TypeUrl.get_type_url(HeaderQueryResponse): + header_query_response = HeaderQueryResponse() + header_query_response.MergeFromString(details.value) + return header_query_response + elif details.type_url == TypeUrl.get_type_url(MessageQueryResponse): + message_query_response = MessageQueryResponse() + message_query_response.MergeFromString(details.value) + return message_query_response + elif details.type_url == TypeUrl.get_type_url(PushNotification): + push_notification = PushNotification() + push_notification.MergeFromString(details.value) + return push_notification + else: + + raise CanNotDecodeMessage(f"Could not handle type {details.type_url} while decoding details.") diff --git a/tests/agrirouter/internal/messaging/test_decode.py b/tests/agrirouter/internal/messaging/test_decode.py index 587e96f8..c0844b91 100644 --- a/tests/agrirouter/internal/messaging/test_decode.py +++ b/tests/agrirouter/internal/messaging/test_decode.py @@ -1,7 +1,7 @@ import json from agrirouter.generated.messaging.response.response_pb2 import ResponseEnvelope -from agrirouter.messaging.decode import decode_details + from agrirouter.messaging.decode import DecodingService MESSAGING_RESULT = b'[{"sensorAlternateId":"185cd97b-ed0b-4e75-a6e2-6be1cdd38a06","capabilityAlternateId":"bbe9f361-b551-48d9-9fca-1b4dc768287c","command":{"message":"XwjIARAKGiQ5NWUzNWE0Zi1jNWM4LTQ1NDEtODE4OS03NmJlMzM0OTc0NDUiJDUzNzYyM2ZjLWY2NmYtNDc5Yi1hMmJhLWVjZjNlNWM3ZjhlMCoMCNTV5YsGEICI8LIDzQIKygIKTnR5cGVzLmFncmlyb3V0ZXIuY29tL2Fncmlyb3V0ZXIucmVzcG9uc2UucGF5bG9hZC5hY2NvdW50Lkxpc3RFbmRwb2ludHNSZXNwb25zZRL3AQp4CiRkNzA0YTQ0My05OWY3LTQ3YjQtYmU1NS1lMmZhMDk2ODllYmUSJFB5dGhvblNES19kZXYgLSAyMDIxLTEwLTI1LCAxMDo1MToxOBoLYXBwbGljYXRpb24iBmFjdGl2ZTIVdXJuOm15YXBwOnNucjAwMDAzMjM0CnsKJDE4NWNkOTdiLWVkMGItNGU3NS1hNmUyLTZiZTFjZGQzOGEwNhIkUHl0aG9uU0RLX2RldiAtIDIwMjEtMTAtMjEsIDIxOjQxOjI0GgthcHBsaWNhdGlvbiIGYWN0aXZlMhh1cm46bXlhcHA6c25yMDAwMDMyMzRzZGY="}}]' # noqa diff --git a/tests/agrirouter/service/messaging/mqtt/test_capability_service.py b/tests/agrirouter/service/messaging/mqtt/test_capability_service.py index bf2fccfd..bf210caa 100644 --- a/tests/agrirouter/service/messaging/mqtt/test_capability_service.py +++ b/tests/agrirouter/service/messaging/mqtt/test_capability_service.py @@ -4,7 +4,7 @@ import pytest from agrirouter.generated.messaging.request.payload.endpoint.capabilities_pb2 import CapabilitySpecification -from agrirouter.messaging.decode import DecodingService, decode_details +from agrirouter.messaging.decode import DecodingService from agrirouter.api.enums import CapabilityDirectionType from agrirouter.api.enums import CapabilityType from agrirouter.messaging.messages import OutboxMessage @@ -67,7 +67,7 @@ def _inner_function(client, userdata, msg): outbox_message.json_deserialize(msg.payload.decode().replace("'", '"')) decoded_message = DecodingService.decode_response(outbox_message.command.message.encode()) if decoded_message.response_envelope.response_code != 201: - decoded_details = decode_details(decoded_message.response_payload.details) + decoded_details = DecodingService.decode_details(decoded_message.response_payload.details) self._log.error("Message details: " + str(decoded_details)) assert decoded_message.response_envelope.response_code == 201 self._callback_processed = True diff --git a/tests/agrirouter/service/messaging/mqtt/test_feed_confirm_service.py b/tests/agrirouter/service/messaging/mqtt/test_feed_confirm_service.py index 1d638a4e..eb052648 100644 --- a/tests/agrirouter/service/messaging/mqtt/test_feed_confirm_service.py +++ b/tests/agrirouter/service/messaging/mqtt/test_feed_confirm_service.py @@ -5,7 +5,7 @@ from agrirouter.api.enums import CapabilityType from agrirouter.generated.messaging.request.request_pb2 import RequestEnvelope -from agrirouter.messaging.decode import DecodingService, decode_details +from agrirouter.messaging.decode import DecodingService from agrirouter.messaging.messages import OutboxMessage from agrirouter.messaging.parameters.dto import SendMessageParameters from agrirouter.messaging.parameters.service import FeedDeleteParameters, FeedConfirmParameters @@ -221,10 +221,10 @@ def _inner_function(client, userdata, msg): outbox_message.json_deserialize(msg.payload.decode().replace("'", '"')) decoded_message = DecodingService.decode_response(outbox_message.command.message.encode()) if decoded_message.response_envelope.type != 12: - decoded_details = decode_details(decoded_message.response_payload.details) + decoded_details = DecodingService.decode_details(decoded_message.response_payload.details) self._log.error( f"Received wrong message from the agrirouter: {str(decoded_details)}") - push_notification = decode_details(decoded_message.response_payload.details) + push_notification = DecodingService.decode_details(decoded_message.response_payload.details) assert decoded_message.response_envelope.response_code == 200 self._received_messages = push_notification.messages[0] @@ -239,7 +239,7 @@ def _inner_function(client, userdata, msg): outbox_message = OutboxMessage() outbox_message.json_deserialize(msg.payload.decode().replace("'", '"')) decoded_message = DecodingService.decode_response(outbox_message.command.message.encode()) - delete_details = decode_details(decoded_message.response_payload.details) + delete_details = DecodingService.decode_details(decoded_message.response_payload.details) self._log.info("Details for the message removal: " + str(delete_details)) assert decoded_message.response_envelope.response_code == 201 @@ -254,7 +254,7 @@ def _inner_function(client, userdata, msg): outbox_message = OutboxMessage() outbox_message.json_deserialize(msg.payload.decode().replace("'", '"')) decoded_message = DecodingService.decode_response(outbox_message.command.message.encode()) - feed_confirm_details = decode_details(decoded_message.response_payload.details) + feed_confirm_details = DecodingService.decode_details(decoded_message.response_payload.details) self._log.info(f"Feed Confirm Service Details: {feed_confirm_details}") assert decoded_message.response_envelope.response_code == 200 assert all( @@ -273,7 +273,7 @@ def _inner_function(client, userdata, msg): outbox_message = OutboxMessage() outbox_message.json_deserialize(msg.payload.decode().replace("'", '"')) decoded_message = DecodingService.decode_response(outbox_message.command.message.encode()) - feed_confirm_details_for_empty_messages = decode_details(decoded_message.response_payload.details) + feed_confirm_details_for_empty_messages = DecodingService.decode_details(decoded_message.response_payload.details) self._log.info(f"Feed confirm details for empty messages: {feed_confirm_details_for_empty_messages}") assert decoded_message.response_envelope.response_code == 200 for _message in feed_confirm_details_for_empty_messages.messages: diff --git a/tests/agrirouter/service/messaging/mqtt/test_feed_delete_service.py b/tests/agrirouter/service/messaging/mqtt/test_feed_delete_service.py index 15ecf242..2aec41ff 100644 --- a/tests/agrirouter/service/messaging/mqtt/test_feed_delete_service.py +++ b/tests/agrirouter/service/messaging/mqtt/test_feed_delete_service.py @@ -5,7 +5,7 @@ from agrirouter.api.enums import CapabilityType from agrirouter.generated.messaging.request.request_pb2 import RequestEnvelope -from agrirouter.messaging.decode import DecodingService, decode_details +from agrirouter.messaging.decode import DecodingService from agrirouter.messaging.messages import OutboxMessage from agrirouter.messaging.parameters.service import FeedDeleteParameters from agrirouter.messaging.services.commons import MqttMessagingService @@ -314,10 +314,10 @@ def _inner_function(client, userdata, msg): outbox_message.json_deserialize(msg.payload.decode().replace("'", '"')) decoded_message = DecodingService.decode_response(outbox_message.command.message.encode()) if decoded_message.response_envelope.type != 12: - decoded_details = decode_details(decoded_message.response_payload.details) + decoded_details = DecodingService.decode_details(decoded_message.response_payload.details) self._log.error( f"Received wrong message from the agrirouter: {str(decoded_details)}") - push_notification = decode_details(decoded_message.response_payload.details) + push_notification = DecodingService.decode_details(decoded_message.response_payload.details) assert decoded_message.response_envelope.response_code == 200 self._received_messages = push_notification.messages[0] @@ -332,7 +332,7 @@ def _inner_function(client, userdata, msg): outbox_message = OutboxMessage() outbox_message.json_deserialize(msg.payload.decode().replace("'", '"')) decoded_message = DecodingService.decode_response(outbox_message.command.message.encode()) - feed_delete_details = decode_details(decoded_message.response_payload.details) + feed_delete_details = DecodingService.decode_details(decoded_message.response_payload.details) self._log.info("Details for the message removal: " + str(feed_delete_details)) message_ids_in_feed = [_message.args['messageId'] for _message in feed_delete_details.messages] assert decoded_message.response_envelope.response_code == 201 @@ -350,7 +350,7 @@ def _inner_function(client, userdata, msg): outbox_message = OutboxMessage() outbox_message.json_deserialize(msg.payload.decode().replace("'", '"')) decoded_message = DecodingService.decode_response(outbox_message.command.message.encode()) - feed_delete_service_for_empty_result = decode_details(decoded_message.response_payload.details) + feed_delete_service_for_empty_result = DecodingService.decode_details(decoded_message.response_payload.details) self._log.info(f"Feed delete details: {feed_delete_service_for_empty_result}") assert decoded_message.response_envelope.response_code == 204 assert feed_delete_service_for_empty_result.messages[0].message_code == "VAL_000208" diff --git a/tests/agrirouter/service/messaging/mqtt/test_list_endpoints_service.py b/tests/agrirouter/service/messaging/mqtt/test_list_endpoints_service.py index 3d300634..93efbbcd 100644 --- a/tests/agrirouter/service/messaging/mqtt/test_list_endpoints_service.py +++ b/tests/agrirouter/service/messaging/mqtt/test_list_endpoints_service.py @@ -3,7 +3,7 @@ import pytest -from agrirouter.messaging.decode import DecodingService, decode_details +from agrirouter.messaging.decode import DecodingService from agrirouter.api.enums import CapabilityType, CapabilityDirectionType from agrirouter.messaging.messages import OutboxMessage from agrirouter.messaging.parameters.service import ListEndpointsParameters @@ -140,7 +140,7 @@ def _inner_function(client, userdata, msg): outbox_message = OutboxMessage() outbox_message.json_deserialize(msg.payload.decode().replace("'", '"')) decoded_message = DecodingService.decode_response(outbox_message.command.message.encode()) - list_endpoints_service_details = decode_details(decoded_message.response_payload.details) + list_endpoints_service_details = DecodingService.decode_details(decoded_message.response_payload.details) self._log.info(f"List endpoints service details: {list_endpoints_service_details}") assert decoded_message.response_envelope.response_code == 200 for _endpoint in list_endpoints_service_details.endpoints: @@ -169,7 +169,7 @@ def _inner_function(client, userdata, msg): outbox_message = OutboxMessage() outbox_message.json_deserialize(msg.payload.decode().replace("'", '"')) decoded_message = DecodingService.decode_response(outbox_message.command.message.encode()) - list_endpoints_service_details = decode_details(decoded_message.response_payload.details) + list_endpoints_service_details = DecodingService.decode_details(decoded_message.response_payload.details) self._log.info(f"List endpoints service details: {list_endpoints_service_details}") assert decoded_message.response_envelope.response_code == 200 for _endpoint in list_endpoints_service_details.endpoints: diff --git a/tests/agrirouter/service/messaging/mqtt/test_publish_message_service.py b/tests/agrirouter/service/messaging/mqtt/test_publish_message_service.py index a3116394..bfefc179 100644 --- a/tests/agrirouter/service/messaging/mqtt/test_publish_message_service.py +++ b/tests/agrirouter/service/messaging/mqtt/test_publish_message_service.py @@ -4,7 +4,7 @@ import pytest from agrirouter.generated.messaging.request.request_pb2 import RequestEnvelope -from agrirouter.messaging.decode import DecodingService, decode_details +from agrirouter.messaging.decode import DecodingService from agrirouter.api.enums import CapabilityType from agrirouter.messaging.messages import OutboxMessage from agrirouter.messaging.parameters.service import FeedDeleteParameters @@ -104,7 +104,7 @@ def _inner_function(client, userdata, msg): outbox_message.json_deserialize(msg.payload.decode().replace("'", '"')) decoded_message = DecodingService.decode_response(outbox_message.command.message.encode()) if decoded_message.response_envelope.type != 1: - decoded_details = decode_details(decoded_message.response_payload.details) + decoded_details = DecodingService.decode_details(decoded_message.response_payload.details) self._log.error( f"Received wrong message from the agrirouter: {str(decoded_details)}") assert decoded_message.response_envelope.response_code == 201 @@ -123,10 +123,10 @@ def _inner_function(client, userdata, msg): outbox_message.json_deserialize(msg.payload.decode().replace("'", '"')) decoded_message = DecodingService.decode_response(outbox_message.command.message.encode()) if decoded_message.response_envelope.type != 12: - decoded_details = decode_details(decoded_message.response_payload.details) + decoded_details = DecodingService.decode_details(decoded_message.response_payload.details) self._log.error( f"Received wrong message from the agrirouter: {str(decoded_details)}") - push_notification = decode_details(decoded_message.response_payload.details) + push_notification = DecodingService.decode_details(decoded_message.response_payload.details) assert decoded_message.response_envelope.response_code == 200 assert DataProvider.get_hash( push_notification.messages[0].content.value) == DataProvider.get_hash( @@ -170,7 +170,7 @@ def _inner_function(client, userdata, msg): outbox_message = OutboxMessage() outbox_message.json_deserialize(msg.payload.decode().replace("'", '"')) decoded_message = DecodingService.decode_response(outbox_message.command.message.encode()) - delete_details = decode_details(decoded_message.response_payload.details) + delete_details = DecodingService.decode_details(decoded_message.response_payload.details) self._log.info("Details for the message removal: " + str(delete_details)) assert decoded_message.response_envelope.response_code == 201 diff --git a/tests/agrirouter/service/messaging/mqtt/test_query_header_service.py b/tests/agrirouter/service/messaging/mqtt/test_query_header_service.py index 51316683..ad97ddf5 100644 --- a/tests/agrirouter/service/messaging/mqtt/test_query_header_service.py +++ b/tests/agrirouter/service/messaging/mqtt/test_query_header_service.py @@ -5,7 +5,7 @@ import pytest from agrirouter.generated.messaging.request.request_pb2 import RequestEnvelope -from agrirouter.messaging.decode import DecodingService, decode_details +from agrirouter.messaging.decode import DecodingService from agrirouter.api.enums import CapabilityType from agrirouter.messaging.messages import OutboxMessage from agrirouter.messaging.parameters.service import FeedDeleteParameters, QueryHeaderParameters @@ -119,10 +119,10 @@ def _inner_function(client, userdata, msg): outbox_message.json_deserialize(msg.payload.decode().replace("'", '"')) decoded_message = DecodingService.decode_response(outbox_message.command.message.encode()) if decoded_message.response_envelope.type != 12: - decoded_details = decode_details(decoded_message.response_payload.details) + decoded_details = DecodingService.decode_details(decoded_message.response_payload.details) self._log.error( f"Received wrong message from the agrirouter: {str(decoded_details)}") - push_notification = decode_details(decoded_message.response_payload.details) + push_notification = DecodingService.decode_details(decoded_message.response_payload.details) self._received_messages = push_notification.messages[0].header.message_id assert decoded_message.response_envelope.response_code == 200 assert push_notification.messages[0] is not None @@ -365,7 +365,7 @@ def _inner_function(client, userdata, msg): outbox_message = OutboxMessage() outbox_message.json_deserialize(msg.payload.decode().replace("'", '"')) decoded_message = DecodingService.decode_response(outbox_message.command.message.encode()) - delete_details = decode_details(decoded_message.response_payload.details) + delete_details = DecodingService.decode_details(decoded_message.response_payload.details) self._log.info("Details for the message removal: " + str(delete_details)) assert decoded_message.response_envelope.response_code == 201 @@ -380,7 +380,7 @@ def _inner_function(client, userdata, msg): outbox_message = OutboxMessage() outbox_message.json_deserialize(msg.payload.decode().replace("'", '"')) decoded_message = DecodingService.decode_response(outbox_message.command.message.encode()) - details = decode_details(decoded_message.response_payload.details) + details = DecodingService.decode_details(decoded_message.response_payload.details) assert decoded_message.response_envelope.response_code == 400 assert decoded_message.response_envelope.type == 3 @@ -417,10 +417,10 @@ def _inner_function(client, userdata, msg): outbox_message.json_deserialize(msg.payload.decode().replace("'", '"')) decoded_message = DecodingService.decode_response(outbox_message.command.message.encode()) if decoded_message.response_envelope.type != 12: - decoded_details = decode_details(decoded_message.response_payload.details) + decoded_details = DecodingService.decode_details(decoded_message.response_payload.details) self._log.error( f"Received wrong message from the agrirouter: {str(decoded_details)}") - push_notification = decode_details(decoded_message.response_payload.details) + push_notification = DecodingService.decode_details(decoded_message.response_payload.details) assert decoded_message.response_envelope.response_code == 200 assert DataProvider.get_hash( push_notification.messages[0].content.value) == DataProvider.get_hash( @@ -438,7 +438,7 @@ def _inner_function(client, userdata, msg): outbox_message = OutboxMessage() outbox_message.json_deserialize(msg.payload.decode().replace("'", '"')) decoded_message = DecodingService.decode_response(outbox_message.command.message.encode()) - query_header_details = decode_details(decoded_message.response_payload.details) + query_header_details = DecodingService.decode_details(decoded_message.response_payload.details) self._log.info(f"Query Header Service Details: {query_header_details}") assert decoded_message.response_envelope.type == 6 if query_header_details.feed: diff --git a/tests/agrirouter/service/messaging/mqtt/test_query_message_service.py b/tests/agrirouter/service/messaging/mqtt/test_query_message_service.py index 25f637c0..bb3c4abf 100644 --- a/tests/agrirouter/service/messaging/mqtt/test_query_message_service.py +++ b/tests/agrirouter/service/messaging/mqtt/test_query_message_service.py @@ -5,7 +5,7 @@ import pytest from agrirouter.generated.messaging.request.request_pb2 import RequestEnvelope -from agrirouter.messaging.decode import DecodingService, decode_details +from agrirouter.messaging.decode import DecodingService from agrirouter.api.enums import CapabilityType from agrirouter.messaging.messages import OutboxMessage from agrirouter.messaging.parameters.service import FeedDeleteParameters, QueryMessageParameters @@ -314,10 +314,10 @@ def _inner_function(client, userdata, msg): outbox_message.json_deserialize(msg.payload.decode().replace("'", '"')) decoded_message = DecodingService.decode_response(outbox_message.command.message.encode()) if decoded_message.response_envelope.type != 12: - decoded_details = decode_details(decoded_message.response_payload.details) + decoded_details = DecodingService.decode_details(decoded_message.response_payload.details) self._log.error( f"Received wrong message from the agrirouter: {str(decoded_details)}") - push_notification = decode_details(decoded_message.response_payload.details) + push_notification = DecodingService.decode_details(decoded_message.response_payload.details) assert decoded_message.response_envelope.response_code == 200 self._received_messages = push_notification.messages[0] @@ -332,7 +332,7 @@ def _inner_function(client, userdata, msg): outbox_message = OutboxMessage() outbox_message.json_deserialize(msg.payload.decode().replace("'", '"')) decoded_message = DecodingService.decode_response(outbox_message.command.message.encode()) - delete_details = decode_details(decoded_message.response_payload.details) + delete_details = DecodingService.decode_details(decoded_message.response_payload.details) self._log.info("Details for the message removal: " + str(delete_details)) assert decoded_message.response_envelope.response_code == 201 @@ -347,7 +347,7 @@ def _inner_function(client, userdata, msg): outbox_message = OutboxMessage() outbox_message.json_deserialize(msg.payload.decode().replace("'", '"')) decoded_message = DecodingService.decode_response(outbox_message.command.message.encode()) - query_message_details = decode_details(decoded_message.response_payload.details) + query_message_details = DecodingService.decode_details(decoded_message.response_payload.details) self._log.info(f"Query Message Service Details: {query_message_details}") assert decoded_message.response_envelope.type == 7 message_query_message_ids = [query_message_details.messages[idx].header.message_id for idx in diff --git a/tests/agrirouter/service/messaging/mqtt/test_send_and_receive_chunked_messages_from_the_feed.py b/tests/agrirouter/service/messaging/mqtt/test_send_and_receive_chunked_messages_from_the_feed.py index d8f0ee08..92df5bd4 100644 --- a/tests/agrirouter/service/messaging/mqtt/test_send_and_receive_chunked_messages_from_the_feed.py +++ b/tests/agrirouter/service/messaging/mqtt/test_send_and_receive_chunked_messages_from_the_feed.py @@ -6,7 +6,7 @@ from agrirouter.api.enums import CapabilityType, TechnicalMessageType from agrirouter.generated.messaging.request.request_pb2 import RequestEnvelope -from agrirouter.messaging.decode import DecodingService, decode_details +from agrirouter.messaging.decode import DecodingService from agrirouter.messaging.encode import chunk_and_base64encode_each_chunk, encode_chunks_message from agrirouter.messaging.messages import OutboxMessage from agrirouter.messaging.parameters.dto import ChunkedMessageParameters @@ -193,10 +193,10 @@ def _inner_function(client, userdata, msg): outbox_message.json_deserialize(msg.payload.decode().replace("'", '"')) decoded_message = DecodingService.decode_response(outbox_message.command.message.encode()) if decoded_message.response_envelope.type != 12: - decoded_details = decode_details(decoded_message.response_payload.details) + decoded_details = DecodingService.decode_details(decoded_message.response_payload.details) self._log.error( f"Received wrong message from the agrirouter: {str(decoded_details)}") - push_notification = decode_details(decoded_message.response_payload.details) + push_notification = DecodingService.decode_details(decoded_message.response_payload.details) current_chunked_message = push_notification.messages[0].content.value self._received_messages.append(push_notification.messages[0].header.message_id) assert decoded_message.response_envelope.response_code == 200 @@ -216,7 +216,7 @@ def _inner_function(client, userdata, msg): outbox_message = OutboxMessage() outbox_message.json_deserialize(msg.payload.decode().replace("'", '"')) decoded_message = DecodingService.decode_response(outbox_message.command.message.encode()) - delete_details = decode_details(decoded_message.response_payload.details) + delete_details = DecodingService.decode_details(decoded_message.response_payload.details) self._log.info("Details for the message removal: " + str(delete_details)) assert decoded_message.response_envelope.response_code == 201 @@ -231,7 +231,7 @@ def _inner_function(client, userdata, msg): outbox_message = OutboxMessage() outbox_message.json_deserialize(msg.payload.decode().replace("'", '"')) decoded_message = DecodingService.decode_response(outbox_message.command.message.encode()) - query_header_details = decode_details(decoded_message.response_payload.details) + query_header_details = DecodingService.decode_details(decoded_message.response_payload.details) self._log.info(f"Query Header Service Details: {query_header_details}") assert decoded_message.response_envelope.type == 6 if query_header_details.feed: diff --git a/tests/agrirouter/service/messaging/mqtt/test_send_chunked_messages_and_receive_with_push_notifications.py b/tests/agrirouter/service/messaging/mqtt/test_send_chunked_messages_and_receive_with_push_notifications.py index a2b5eb9e..565cd6c6 100644 --- a/tests/agrirouter/service/messaging/mqtt/test_send_chunked_messages_and_receive_with_push_notifications.py +++ b/tests/agrirouter/service/messaging/mqtt/test_send_chunked_messages_and_receive_with_push_notifications.py @@ -5,7 +5,7 @@ from agrirouter.api.enums import CapabilityType, TechnicalMessageType from agrirouter.generated.messaging.request.request_pb2 import RequestEnvelope -from agrirouter.messaging.decode import DecodingService, decode_details +from agrirouter.messaging.decode import DecodingService from agrirouter.messaging.encode import chunk_and_base64encode_each_chunk, encode_chunks_message from agrirouter.messaging.messages import OutboxMessage from agrirouter.messaging.parameters.dto import ChunkedMessageParameters @@ -163,10 +163,10 @@ def _inner_function(client, userdata, msg): outbox_message.json_deserialize(msg.payload.decode().replace("'", '"')) decoded_message = DecodingService.decode_response(outbox_message.command.message.encode()) if decoded_message.response_envelope.type != 12: - decoded_details = decode_details(decoded_message.response_payload.details) + decoded_details = DecodingService.decode_details(decoded_message.response_payload.details) self._log.error( f"Received wrong message from the agrirouter: {str(decoded_details)}") - push_notification = decode_details(decoded_message.response_payload.details) + push_notification = DecodingService.decode_details(decoded_message.response_payload.details) current_chunked_message = push_notification.messages[0].content.value assert decoded_message.response_envelope.response_code == 200 assert DataProvider.get_hash(current_chunked_message) == DataProvider.get_hash( @@ -185,7 +185,7 @@ def _inner_function(client, userdata, msg): outbox_message = OutboxMessage() outbox_message.json_deserialize(msg.payload.decode().replace("'", '"')) decoded_message = DecodingService.decode_response(outbox_message.command.message.encode()) - delete_details = decode_details(decoded_message.response_payload.details) + delete_details = DecodingService.decode_details(decoded_message.response_payload.details) self._log.info("Details for the message removal: " + str(delete_details)) assert decoded_message.response_envelope.response_code == 201 diff --git a/tests/agrirouter/service/messaging/mqtt/test_send_direct_message_service.py b/tests/agrirouter/service/messaging/mqtt/test_send_direct_message_service.py index f71e4271..8f1629c6 100644 --- a/tests/agrirouter/service/messaging/mqtt/test_send_direct_message_service.py +++ b/tests/agrirouter/service/messaging/mqtt/test_send_direct_message_service.py @@ -4,7 +4,7 @@ import pytest from agrirouter.generated.messaging.request.request_pb2 import RequestEnvelope -from agrirouter.messaging.decode import DecodingService, decode_details +from agrirouter.messaging.decode import DecodingService from agrirouter.api.enums import CapabilityType from agrirouter.messaging.messages import OutboxMessage from agrirouter.messaging.parameters.service import FeedDeleteParameters @@ -106,7 +106,7 @@ def _inner_function(client, userdata, msg): outbox_message.json_deserialize(msg.payload.decode().replace("'", '"')) decoded_message = DecodingService.decode_response(outbox_message.command.message.encode()) if decoded_message.response_envelope.type != 1: - decoded_details = decode_details(decoded_message.response_payload.details) + decoded_details = DecodingService.decode_details(decoded_message.response_payload.details) self._log.error( f"Received wrong message from the agrirouter: {str(decoded_details)}") assert decoded_message.response_envelope.response_code == 201 @@ -125,10 +125,10 @@ def _inner_function(client, userdata, msg): outbox_message.json_deserialize(msg.payload.decode().replace("'", '"')) decoded_message = DecodingService.decode_response(outbox_message.command.message.encode()) if decoded_message.response_envelope.type != 12: - decoded_details = decode_details(decoded_message.response_payload.details) + decoded_details = DecodingService.decode_details(decoded_message.response_payload.details) self._log.error( f"Received wrong message from the agrirouter: {str(decoded_details)}") - push_notification = decode_details(decoded_message.response_payload.details) + push_notification = DecodingService.decode_details(decoded_message.response_payload.details) assert decoded_message.response_envelope.response_code == 200 assert DataProvider.get_hash( push_notification.messages[0].content.value) == DataProvider.get_hash( @@ -172,7 +172,7 @@ def _inner_function(client, userdata, msg): outbox_message = OutboxMessage() outbox_message.json_deserialize(msg.payload.decode().replace("'", '"')) decoded_message = DecodingService.decode_response(outbox_message.command.message.encode()) - delete_details = decode_details(decoded_message.response_payload.details) + delete_details = DecodingService.decode_details(decoded_message.response_payload.details) self._log.info("Details for the message removal: " + str(delete_details)) assert decoded_message.response_envelope.response_code == 201 diff --git a/tests/agrirouter/service/messaging/mqtt/test_subscription_service.py b/tests/agrirouter/service/messaging/mqtt/test_subscription_service.py index 4677c768..5d34c460 100644 --- a/tests/agrirouter/service/messaging/mqtt/test_subscription_service.py +++ b/tests/agrirouter/service/messaging/mqtt/test_subscription_service.py @@ -5,7 +5,7 @@ from agrirouter.generated.messaging.request.payload.endpoint.capabilities_pb2 import CapabilitySpecification from agrirouter.generated.messaging.request.payload.endpoint.subscription_pb2 import Subscription -from agrirouter.messaging.decode import DecodingService, decode_details +from agrirouter.messaging.decode import DecodingService from agrirouter.api.enums import CapabilityType, CapabilityDirectionType from agrirouter.messaging.messages import OutboxMessage from agrirouter.messaging.parameters.service import SubscriptionParameters, CapabilitiesParameters @@ -81,7 +81,7 @@ def _inner_function(client, userdata, msg): outbox_message.json_deserialize(msg.payload.decode().replace("'", '"')) decoded_message = DecodingService.decode_response(outbox_message.command.message.encode()) if decoded_message.response_envelope.response_code != 201: - decoded_details = decode_details(decoded_message.response_payload.details) + decoded_details = DecodingService.decode_details(decoded_message.response_payload.details) self._log.error("Message could not be processed. Response code: " + str( decoded_message.response_envelope.response_code)) self._log.error("Message details: " + str(decoded_details)) @@ -127,7 +127,7 @@ def _inner_function(client, userdata, msg): outbox_message.json_deserialize(msg.payload.decode().replace("'", '"')) decoded_message = DecodingService.decode_response(outbox_message.command.message.encode()) if decoded_message.response_envelope.response_code != 201: - decoded_details = decode_details(decoded_message.response_payload.details) + decoded_details = DecodingService.decode_details(decoded_message.response_payload.details) self._log.error("Message details: " + str(decoded_details)) assert decoded_message.response_envelope.response_code == 201 self._callback_processed = True From e15a9b63a2470ce8243b51b4dee001a66132f2b0 Mon Sep 17 00:00:00 2001 From: Sascha Doemer Date: Thu, 2 May 2024 15:42:41 +0200 Subject: [PATCH 05/17] Refactor encoding functions into EncodingService class The encoding functions previously contained within the file `encode.py` are refactored into a new class called `EncodingService`. This improves the organization of the code and makes it easier to manage and understand. All corresponding tests and imports have been updated to use this new class. --- src/agrirouter/messaging/encode.py | 257 +++++++++--------- .../internal/messaging/test_encode.py | 4 +- ..._receive_chunked_messages_from_the_feed.py | 12 +- ...ges_and_receive_with_push_notifications.py | 12 +- 4 files changed, 146 insertions(+), 139 deletions(-) diff --git a/src/agrirouter/messaging/encode.py b/src/agrirouter/messaging/encode.py index c7cb8ac5..b4fbb21a 100644 --- a/src/agrirouter/messaging/encode.py +++ b/src/agrirouter/messaging/encode.py @@ -37,134 +37,137 @@ def encode_message(header_parameters: MessageHeaderParameters, payload_parameter :payload_parameters: Message Payload Parameters Returns decoded data """ - request_envelope = encode_header(header_parameters) - request_payload = encode_payload(payload_parameters) + request_envelope = EncodingService.encode_header(header_parameters) + request_payload = EncodingService.encode_payload(payload_parameters) raw_data = write_proto_parts_to_buffer([request_envelope, request_payload]) return base64.b64encode(raw_data).decode() -def encode_header(header_parameters: MessageHeaderParameters) -> RequestEnvelope: - """ - Encode header to RequestEnvelope protobuf - :header_parameters: Message Header Parameters - Returns RequestEnvelope with parameters set - """ - request_envelope = RequestEnvelope() - request_envelope.application_message_id = header_parameters.get_application_message_id() \ - if header_parameters.get_application_message_id() else new_uuid() - request_envelope.application_message_seq_no = header_parameters.get_application_message_seq_no() - request_envelope.technical_message_type = header_parameters.get_technical_message_type() - - request_envelope.mode = header_parameters.get_mode() \ - if header_parameters.get_mode() else RequestEnvelope.Mode.Value("DIRECT") - - if header_parameters.get_team_set_context_id() is not None: - request_envelope.team_set_context_id = header_parameters.get_team_set_context_id() - request_envelope.timestamp.FromDatetime(now_as_utc_timestamp()) - if header_parameters.get_recipients() is not None: - request_envelope.recipients.extend(header_parameters.get_recipients()) - if header_parameters.get_chunk_component() is not None: - request_envelope.chunk_info.extend(header_parameters.get_chunk_component()) - if header_parameters.get_metadata() is not None: - request_envelope.metadata.extend(header_parameters.get_metadata()) - - return request_envelope - - -def encode_payload(payload_parameters: MessagePayloadParameters) -> RequestPayloadWrapper: - """ - Encode header to RequestPayloadWrapper protobuf - :payload_parameters: Message Payload Parameters - Returns RequestPayloadWrapper with parameters set - """ - any_proto_wrapper = Any() - any_proto_wrapper.type_url = payload_parameters.get_type_url() - any_proto_wrapper.value = payload_parameters.get_value() - request_payload = RequestPayloadWrapper(details=any_proto_wrapper) - return request_payload - - -def encode_chunks_message(message_parameter_tuple: List[MessageParameterTuple]) -> List: - """ - Encode chunks of messages - :message_parameter_tuple - Tuple of message parameters - Returns list of encoded chunked messages - """ - return [encode_message(_tuple.message_header_parameters, _tuple.message_payload_parameters) for _tuple in - message_parameter_tuple] - - -def chunk_and_base64encode_each_chunk(header_parameters: MessageHeaderParameters, - payload_parameters: MessagePayloadParameters, - onboarding_response: OnboardResponse) -> List[MessageParameterTuple]: - """ - Chunk and encode each chunk - :header_parameters - Message Header Parameters - :payload_parameters - Message Payload Parameters - :onboarding_response - Onboarding Response for endpoint ID - Returns list of message parameter tuples - """ - - whole_message = payload_parameters.get_value() - message_chunks = split_into_chunks(whole_message) - - if payload_parameters is None or header_parameters is None: - raise ValueError('The parameters cannot be NULL') - - if len(whole_message) <= MAX_LENGTH_FOR_RAW_MESSAGE_CONTENT: - log.info("Message is not chunked, because it is smaller than the maximum size of a chunk.") - return [MessageParameterTuple(message_header_parameters=header_parameters, - message_payload_parameters=payload_parameters)] - - log.info("Message is chunked, because it is bigger than the maximum size of a chunk.") - tuples = [] - chunk_context_id = new_uuid() - chunk_number = 1 - - for chunk in message_chunks: - chunk_message_id = new_uuid() - sequence_number_for_chunk = SequenceNumberService.next_seq_nr( - onboarding_response.get_sensor_alternate_id()) - - header_parameters_copy = MessageHeaderParameters() - header_parameters_copy.set_application_message_id(chunk_message_id) - header_parameters_copy.set_application_message_seq_no(sequence_number_for_chunk) - - chunk_info = ChunkComponent() - chunk_info.context_id = chunk_context_id - chunk_info.current = chunk_number - chunk_info.total = len(message_chunks) - chunk_info.total_size = len(whole_message) - header_parameters_copy.chunk_component = chunk_info - header_parameters_copy.technical_message_type = header_parameters.get_technical_message_type() - header_parameters_copy.mode = header_parameters.get_mode() - header_parameters_copy.recipients = header_parameters.get_recipients() - - payload_parameters_copy = MessagePayloadParameters(type_url='', - value='') - payload_parameters_copy.value = base64.b64encode(chunk) - payload_parameters_copy.type_url = payload_parameters.get_type_url() - - tuples.append(MessageParameterTuple(message_header_parameters=header_parameters_copy, - message_payload_parameters=payload_parameters_copy)) - chunk_number += 1 - - log.info("Message was chunked into %s chunks.", len(tuples)) - return tuples - - -def split_into_chunks(whole_message: str): - """ - Split the whole message into chunks - :whole_message - Message to split into chunks - Returns a list of chunks - """ - chunks = [] - remaining_bytes = whole_message - while len(remaining_bytes) > MAX_LENGTH_FOR_RAW_MESSAGE_CONTENT: - chunk = remaining_bytes[:MAX_LENGTH_FOR_RAW_MESSAGE_CONTENT] - chunks.append(chunk) - remaining_bytes = remaining_bytes[MAX_LENGTH_FOR_RAW_MESSAGE_CONTENT:] - if len(remaining_bytes) > 0: - chunks.append(remaining_bytes) - return chunks +class EncodingService: + + @staticmethod + def chunk_and_base64encode_each_chunk(header_parameters: MessageHeaderParameters, + payload_parameters: MessagePayloadParameters, + onboarding_response: OnboardResponse) -> List[MessageParameterTuple]: + """ + Chunk and encode each chunk + :header_parameters - Message Header Parameters + :payload_parameters - Message Payload Parameters + :onboarding_response - Onboarding Response for endpoint ID + Returns list of message parameter tuples + """ + + whole_message = payload_parameters.get_value() + message_chunks = EncodingService._split_into_chunks(whole_message) + + if payload_parameters is None or header_parameters is None: + raise ValueError('The parameters cannot be NULL') + + if len(whole_message) <= MAX_LENGTH_FOR_RAW_MESSAGE_CONTENT: + log.info("Message is not chunked, because it is smaller than the maximum size of a chunk.") + return [MessageParameterTuple(message_header_parameters=header_parameters, + message_payload_parameters=payload_parameters)] + + log.info("Message is chunked, because it is bigger than the maximum size of a chunk.") + tuples = [] + chunk_context_id = new_uuid() + chunk_number = 1 + + for chunk in message_chunks: + chunk_message_id = new_uuid() + sequence_number_for_chunk = SequenceNumberService.next_seq_nr( + onboarding_response.get_sensor_alternate_id()) + + header_parameters_copy = MessageHeaderParameters() + header_parameters_copy.set_application_message_id(chunk_message_id) + header_parameters_copy.set_application_message_seq_no(sequence_number_for_chunk) + + chunk_info = ChunkComponent() + chunk_info.context_id = chunk_context_id + chunk_info.current = chunk_number + chunk_info.total = len(message_chunks) + chunk_info.total_size = len(whole_message) + header_parameters_copy.chunk_component = chunk_info + header_parameters_copy.technical_message_type = header_parameters.get_technical_message_type() + header_parameters_copy.mode = header_parameters.get_mode() + header_parameters_copy.recipients = header_parameters.get_recipients() + + payload_parameters_copy = MessagePayloadParameters(type_url='', + value='') + payload_parameters_copy.value = base64.b64encode(chunk) + payload_parameters_copy.type_url = payload_parameters.get_type_url() + + tuples.append(MessageParameterTuple(message_header_parameters=header_parameters_copy, + message_payload_parameters=payload_parameters_copy)) + chunk_number += 1 + + log.info("Message was chunked into %s chunks.", len(tuples)) + return tuples + + @staticmethod + def _split_into_chunks(whole_message: str): + """ + Split the whole message into chunks + :whole_message - Message to split into chunks + Returns a list of chunks + """ + chunks = [] + remaining_bytes = whole_message + while len(remaining_bytes) > MAX_LENGTH_FOR_RAW_MESSAGE_CONTENT: + chunk = remaining_bytes[:MAX_LENGTH_FOR_RAW_MESSAGE_CONTENT] + chunks.append(chunk) + remaining_bytes = remaining_bytes[MAX_LENGTH_FOR_RAW_MESSAGE_CONTENT:] + if len(remaining_bytes) > 0: + chunks.append(remaining_bytes) + return chunks + + @staticmethod + def encode_chunks_message(message_parameter_tuple: List[MessageParameterTuple]) -> List: + """ + Encode chunks of messages + :message_parameter_tuple - Tuple of message parameters + Returns list of encoded chunked messages + """ + return [encode_message(_tuple.message_header_parameters, _tuple.message_payload_parameters) for _tuple in + message_parameter_tuple] + + @staticmethod + def encode_header(header_parameters: MessageHeaderParameters) -> RequestEnvelope: + """ + Encode header to RequestEnvelope protobuf + :header_parameters: Message Header Parameters + Returns RequestEnvelope with parameters set + """ + request_envelope = RequestEnvelope() + request_envelope.application_message_id = header_parameters.get_application_message_id() \ + if header_parameters.get_application_message_id() else new_uuid() + request_envelope.application_message_seq_no = header_parameters.get_application_message_seq_no() + request_envelope.technical_message_type = header_parameters.get_technical_message_type() + + request_envelope.mode = header_parameters.get_mode() \ + if header_parameters.get_mode() else RequestEnvelope.Mode.Value("DIRECT") + + if header_parameters.get_team_set_context_id() is not None: + request_envelope.team_set_context_id = header_parameters.get_team_set_context_id() + request_envelope.timestamp.FromDatetime(now_as_utc_timestamp()) + if header_parameters.get_recipients() is not None: + request_envelope.recipients.extend(header_parameters.get_recipients()) + if header_parameters.get_chunk_component() is not None: + request_envelope.chunk_info.extend(header_parameters.get_chunk_component()) + if header_parameters.get_metadata() is not None: + request_envelope.metadata.extend(header_parameters.get_metadata()) + + return request_envelope + + @staticmethod + def encode_payload(payload_parameters: MessagePayloadParameters) -> RequestPayloadWrapper: + """ + Encode header to RequestPayloadWrapper protobuf + :payload_parameters: Message Payload Parameters + Returns RequestPayloadWrapper with parameters set + """ + any_proto_wrapper = Any() + any_proto_wrapper.type_url = payload_parameters.get_type_url() + any_proto_wrapper.value = payload_parameters.get_value() + request_payload = RequestPayloadWrapper(details=any_proto_wrapper) + return request_payload diff --git a/tests/agrirouter/internal/messaging/test_encode.py b/tests/agrirouter/internal/messaging/test_encode.py index 392e97cd..8ee8ca63 100644 --- a/tests/agrirouter/internal/messaging/test_encode.py +++ b/tests/agrirouter/internal/messaging/test_encode.py @@ -3,7 +3,7 @@ from agrirouter.generated.commons.message_pb2 import Message, Messages from agrirouter.generated.messaging.request.request_pb2 import RequestEnvelope, RequestPayloadWrapper from agrirouter.messaging.decode import DecodingService -from agrirouter.messaging.encode import write_proto_parts_to_buffer, encode_header +from agrirouter.messaging.encode import write_proto_parts_to_buffer, EncodingService from agrirouter.messaging.parameters.service import MessageHeaderParameters @@ -41,7 +41,7 @@ def test_encode_header(): message_header_parameters.technical_message_type = "iso-11783-10:taskdata:zip" message_header_parameters.mode = RequestEnvelope.Mode.Value("DIRECT") - header = encode_header(message_header_parameters) + header = EncodingService.encode_header(message_header_parameters) assert header.application_message_id == message_header_parameters.application_message_id assert header.application_message_seq_no == message_header_parameters.application_message_seq_no assert header.technical_message_type == message_header_parameters.technical_message_type diff --git a/tests/agrirouter/service/messaging/mqtt/test_send_and_receive_chunked_messages_from_the_feed.py b/tests/agrirouter/service/messaging/mqtt/test_send_and_receive_chunked_messages_from_the_feed.py index 92df5bd4..e4b14f3d 100644 --- a/tests/agrirouter/service/messaging/mqtt/test_send_and_receive_chunked_messages_from_the_feed.py +++ b/tests/agrirouter/service/messaging/mqtt/test_send_and_receive_chunked_messages_from_the_feed.py @@ -7,7 +7,7 @@ from agrirouter.api.enums import CapabilityType, TechnicalMessageType from agrirouter.generated.messaging.request.request_pb2 import RequestEnvelope from agrirouter.messaging.decode import DecodingService -from agrirouter.messaging.encode import chunk_and_base64encode_each_chunk, encode_chunks_message +from agrirouter.messaging.encode import EncodingService from agrirouter.messaging.messages import OutboxMessage from agrirouter.messaging.parameters.dto import ChunkedMessageParameters from agrirouter.messaging.parameters.service import FeedDeleteParameters, MessageHeaderParameters, \ @@ -114,15 +114,17 @@ def _send_direct_chunked_message(self): message_payload_parameters = MessagePayloadParameters(type_url=TechnicalMessageType.EMPTY.value, value=DataProvider.read_base64_encoded_large_bmp()) - message_parameter_tuples = chunk_and_base64encode_each_chunk(header_parameters=message_header_parameters, - payload_parameters=message_payload_parameters, - onboarding_response=self._sender) + message_parameter_tuples = EncodingService.chunk_and_base64encode_each_chunk( + header_parameters=message_header_parameters, + payload_parameters=message_payload_parameters, + onboarding_response=self._sender) for _tuple in message_parameter_tuples: self._chunked_message_to_verify.append(_tuple.message_payload_parameters.get_value()) assert len(_tuple.message_payload_parameters.get_value()) <= self._MAX_CHUNK_SIZE - encoded_chunked_messages = encode_chunks_message(message_parameter_tuple=message_parameter_tuples) + encoded_chunked_messages = EncodingService.encode_chunks_message( + message_parameter_tuple=message_parameter_tuples) chunk_message_parameters = ChunkedMessageParameters( onboarding_response=self._sender, diff --git a/tests/agrirouter/service/messaging/mqtt/test_send_chunked_messages_and_receive_with_push_notifications.py b/tests/agrirouter/service/messaging/mqtt/test_send_chunked_messages_and_receive_with_push_notifications.py index 565cd6c6..f84b81c3 100644 --- a/tests/agrirouter/service/messaging/mqtt/test_send_chunked_messages_and_receive_with_push_notifications.py +++ b/tests/agrirouter/service/messaging/mqtt/test_send_chunked_messages_and_receive_with_push_notifications.py @@ -6,7 +6,7 @@ from agrirouter.api.enums import CapabilityType, TechnicalMessageType from agrirouter.generated.messaging.request.request_pb2 import RequestEnvelope from agrirouter.messaging.decode import DecodingService -from agrirouter.messaging.encode import chunk_and_base64encode_each_chunk, encode_chunks_message +from agrirouter.messaging.encode import EncodingService from agrirouter.messaging.messages import OutboxMessage from agrirouter.messaging.parameters.dto import ChunkedMessageParameters from agrirouter.messaging.parameters.service import FeedDeleteParameters, MessageHeaderParameters, \ @@ -110,15 +110,17 @@ def test_send_direct_chunked_message_with_valid_recipient_should_return_the_vali message_payload_parameters = MessagePayloadParameters(type_url=TechnicalMessageType.EMPTY.value, value=DataProvider.read_base64_encoded_large_bmp()) - message_parameter_tuples = chunk_and_base64encode_each_chunk(header_parameters=message_header_parameters, - payload_parameters=message_payload_parameters, - onboarding_response=self._sender) + message_parameter_tuples = EncodingService.chunk_and_base64encode_each_chunk( + header_parameters=message_header_parameters, + payload_parameters=message_payload_parameters, + onboarding_response=self._sender) for _tuple in message_parameter_tuples: self._chunked_message_to_verify.append(_tuple.message_payload_parameters.get_value()) assert len(_tuple.message_payload_parameters.get_value()) <= self._MAX_CHUNK_SIZE - encoded_chunked_messages = encode_chunks_message(message_parameter_tuple=message_parameter_tuples) + encoded_chunked_messages = EncodingService.encode_chunks_message( + message_parameter_tuple=message_parameter_tuples) if not len(encoded_chunked_messages) == 10: self._log.error("Number of chunks not as expected. Check the data being chunked. ") From 721d9ea109c810c9c24011cf373f1365812261c6 Mon Sep 17 00:00:00 2001 From: Sascha Doemer Date: Thu, 2 May 2024 15:47:20 +0200 Subject: [PATCH 06/17] Refactor encoding functions into EncodingService class The standalone encode and write_proto_parts_to_buffer functions have been refactored into a static methods inside the newly created EncodingService class. All instances where these functions were called have been updated to use this new class method. This enhances the code structure and makes it more organized. --- src/agrirouter/messaging/encode.py | 48 +++++++++---------- src/agrirouter/messaging/services/cloud.py | 4 +- .../messaging/services/messaging.py | 28 +++++------ .../internal/messaging/test_encode.py | 4 +- 4 files changed, 42 insertions(+), 42 deletions(-) diff --git a/src/agrirouter/messaging/encode.py b/src/agrirouter/messaging/encode.py index b4fbb21a..b0d1716f 100644 --- a/src/agrirouter/messaging/encode.py +++ b/src/agrirouter/messaging/encode.py @@ -18,32 +18,32 @@ log = logging.getLogger("com.dke.data.agrirouter.sdk.encode") -def write_proto_parts_to_buffer(parts: list, buffer: bytes = b""): - """ - Writing proto parts to buffer - """ - for part in parts: - part_size = part.ByteSize() - buffer += _VarintBytes(part_size) - buffer += part.SerializeToString() - - return buffer - - -def encode_message(header_parameters: MessageHeaderParameters, payload_parameters: MessagePayloadParameters) -> str: - """ - Encoding message with the following arguments - :header_parameters - Message Header Parameters - :payload_parameters: Message Payload Parameters - Returns decoded data - """ - request_envelope = EncodingService.encode_header(header_parameters) - request_payload = EncodingService.encode_payload(payload_parameters) - raw_data = write_proto_parts_to_buffer([request_envelope, request_payload]) - return base64.b64encode(raw_data).decode() +class EncodingService: + @staticmethod + def encode_message(header_parameters: MessageHeaderParameters, payload_parameters: MessagePayloadParameters) -> str: + """ + Encoding message with the following arguments + :header_parameters - Message Header Parameters + :payload_parameters: Message Payload Parameters + Returns decoded data + """ + request_envelope = EncodingService.encode_header(header_parameters) + request_payload = EncodingService.encode_payload(payload_parameters) + raw_data = EncodingService.write_proto_parts_to_buffer([request_envelope, request_payload]) + return base64.b64encode(raw_data).decode() -class EncodingService: + @staticmethod + def write_proto_parts_to_buffer(parts: list, buffer: bytes = b""): + """ + Writing proto parts to buffer + """ + for part in parts: + part_size = part.ByteSize() + buffer += _VarintBytes(part_size) + buffer += part.SerializeToString() + + return buffer @staticmethod def chunk_and_base64encode_each_chunk(header_parameters: MessageHeaderParameters, diff --git a/src/agrirouter/messaging/services/cloud.py b/src/agrirouter/messaging/services/cloud.py index 74642e96..868d72c1 100644 --- a/src/agrirouter/messaging/services/cloud.py +++ b/src/agrirouter/messaging/services/cloud.py @@ -2,7 +2,7 @@ from agrirouter.generated.cloud_provider_integration.cloud_virtualized_app_registration_pb2 import OnboardingRequest, \ OffboardingRequest from agrirouter.generated.messaging.request.request_pb2 import RequestEnvelope -from agrirouter.messaging.encode import encode_message +from agrirouter.messaging.encode import EncodingService from agrirouter.messaging.messages import EncodedMessage from agrirouter.messaging.parameters.service import MessageHeaderParameters, MessagePayloadParameters, \ CloudOnboardParameters, CloudOffboardParameters @@ -32,7 +32,7 @@ def encode(parameters: CloudOnboardParameters) -> EncodedMessage: value=onboarding_request.SerializeToString() ) - message_content = encode_message(message_header_parameters, message_payload_parameters) + message_content = EncodingService.encode_message(message_header_parameters, message_payload_parameters) encoded_message = EncodedMessage( id_=new_uuid(), content=message_content diff --git a/src/agrirouter/messaging/services/messaging.py b/src/agrirouter/messaging/services/messaging.py index cd0c2812..cd60afc7 100644 --- a/src/agrirouter/messaging/services/messaging.py +++ b/src/agrirouter/messaging/services/messaging.py @@ -8,7 +8,7 @@ from agrirouter.generated.messaging.request.payload.feed.feed_requests_pb2 import MessageConfirm, MessageDelete, \ MessageQuery from agrirouter.generated.messaging.request.request_pb2 import RequestEnvelope -from agrirouter.messaging.encode import encode_message +from agrirouter.messaging.encode import EncodingService from agrirouter.messaging.messages import EncodedMessage from agrirouter.messaging.parameters.dto import SendMessageParameters, ChunkedMessageParameters from agrirouter.messaging.parameters.service import MessageHeaderParameters, MessagePayloadParameters, \ @@ -52,7 +52,7 @@ def encode(parameters: CapabilitiesParameters) -> EncodedMessage: value=capability_specification.SerializeToString() ) - message_content = encode_message(message_header_parameters, message_payload_parameters) + message_content = EncodingService.encode_message(message_header_parameters, message_payload_parameters) encoded_message = EncodedMessage( id_=new_uuid(), content=message_content @@ -82,7 +82,7 @@ def encode(parameters: FeedConfirmParameters) -> EncodedMessage: value=message_confirm.SerializeToString() ) - message_content = encode_message(message_header_parameters, message_payload_parameters) + message_content = EncodingService.encode_message(message_header_parameters, message_payload_parameters) encoded_message = EncodedMessage( id_=new_uuid(), content=message_content @@ -114,7 +114,7 @@ def encode(parameters: FeedDeleteParameters) -> EncodedMessage: value=message_delete.SerializeToString() ) - message_content = encode_message(message_header_parameters, message_payload_parameters) + message_content = EncodingService.encode_message(message_header_parameters, message_payload_parameters) encoded_message = EncodedMessage( id_=new_uuid(), content=message_content @@ -146,7 +146,7 @@ def encode(parameters: ListEndpointsParameters) -> EncodedMessage: value=list_endpoints_query.SerializeToString() ) - message_content = encode_message(message_header_parameters, message_payload_parameters) + message_content = EncodingService.encode_message(message_header_parameters, message_payload_parameters) encoded_message = EncodedMessage( id_=new_uuid(), content=message_content @@ -178,7 +178,7 @@ def encode(parameters: QueryMessageParameters) -> EncodedMessage: value=message_query.SerializeToString() ) - message_content = encode_message(message_header_parameters, message_payload_parameters) + message_content = EncodingService.encode_message(message_header_parameters, message_payload_parameters) encoded_message = EncodedMessage( id_=new_uuid(), content=message_content @@ -217,7 +217,7 @@ def encode(parameters: QueryHeaderParameters) -> EncodedMessage: value=message_query.SerializeToString() ) - message_content = encode_message(message_header_parameters, message_payload_parameters) + message_content = EncodingService.encode_message(message_header_parameters, message_payload_parameters) encoded_message = EncodedMessage( id_=new_uuid(), content=message_content @@ -254,7 +254,7 @@ def encode(parameters: SubscriptionParameters) -> EncodedMessage: value=subscription.SerializeToString() ) - message_content = encode_message(message_header_parameters, message_payload_parameters) + message_content = EncodingService.encode_message(message_header_parameters, message_payload_parameters) encoded_message = EncodedMessage( id_=new_uuid(), content=message_content @@ -289,7 +289,7 @@ def encode(parameters: SendMessageParameters) -> EncodedMessage: value=parameters.get_base64_message_content(), ) - message_content = encode_message(message_header_parameters, message_payload_parameters) + message_content = EncodingService.encode_message(message_header_parameters, message_payload_parameters) encoded_message = EncodedMessage( id_=new_uuid(), @@ -337,7 +337,7 @@ def encode(parameters: ImageParameters) -> EncodedMessage: value=parameters.get_image_encoded() ) - message_content = encode_message(message_header_parameters, message_payload_parameters) + message_content = EncodingService.encode_message(message_header_parameters, message_payload_parameters) encoded_message = EncodedMessage( id_=new_uuid(), content=message_content @@ -374,7 +374,7 @@ def encode(parameters: TaskParameters) -> EncodedMessage: value=parameters.get_task_encoded() ) - message_content = encode_message(message_header_parameters, message_payload_parameters) + message_content = EncodingService.encode_message(message_header_parameters, message_payload_parameters) encoded_message = EncodedMessage( id_=new_uuid(), content=message_content @@ -408,7 +408,7 @@ def encode(parameters: EfdiParameters) -> EncodedMessage: value=parameters.get_efdi() ) - message_content = encode_message(message_header_parameters, message_payload_parameters) + message_content = EncodingService.encode_message(message_header_parameters, message_payload_parameters) encoded_message = EncodedMessage( id_=new_uuid(), content=message_content @@ -441,7 +441,7 @@ def encode(parameters: EfdiParameters) -> EncodedMessage: value=parameters.get_efdi() ) - message_content = encode_message(message_header_parameters, message_payload_parameters) + message_content = EncodingService.encode_message(message_header_parameters, message_payload_parameters) encoded_message = EncodedMessage( id_=new_uuid(), content=message_content @@ -474,7 +474,7 @@ def encode(parameters: EfdiParameters) -> EncodedMessage: value=parameters.get_efdi() ) - message_content = encode_message(message_header_parameters, message_payload_parameters) + message_content = EncodingService.encode_message(message_header_parameters, message_payload_parameters) encoded_message = EncodedMessage( id_=new_uuid(), content=message_content diff --git a/tests/agrirouter/internal/messaging/test_encode.py b/tests/agrirouter/internal/messaging/test_encode.py index 8ee8ca63..d9b300d5 100644 --- a/tests/agrirouter/internal/messaging/test_encode.py +++ b/tests/agrirouter/internal/messaging/test_encode.py @@ -3,7 +3,7 @@ from agrirouter.generated.commons.message_pb2 import Message, Messages from agrirouter.generated.messaging.request.request_pb2 import RequestEnvelope, RequestPayloadWrapper from agrirouter.messaging.decode import DecodingService -from agrirouter.messaging.encode import write_proto_parts_to_buffer, EncodingService +from agrirouter.messaging.encode import EncodingService from agrirouter.messaging.parameters.service import MessageHeaderParameters @@ -19,7 +19,7 @@ def test_write_proto_parts_to_buffer(): envelope = RequestEnvelope(mode=mode, technical_message_type=tmt, team_set_context_id=team_set_context_id) payload = RequestPayloadWrapper(details=Any(type_url=type_url, value=messages.SerializeToString())) - buffer = write_proto_parts_to_buffer([envelope, payload]) + buffer = EncodingService.write_proto_parts_to_buffer([envelope, payload]) result = DecodingService.read_properties_buffers_from_input_stream(buffer) assert len(result) == 2 From ca931682ea72ec7b40403d706be5d443b5b42cbe Mon Sep 17 00:00:00 2001 From: Sascha Doemer Date: Thu, 2 May 2024 15:50:16 +0200 Subject: [PATCH 07/17] Moved CertificateTypes and Gateways enum to api.enums The enum classes, CertificateTypes and Gateways, previously located under onboarding.enums, have been moved to api.enums. The import statements in the impacted files have been adjusted accordingly. This ensures a more logical arrangement of the enum information and simplifies future maintenance. --- example_script.py | 2 +- src/agrirouter/api/enums.py | 26 +++++++++++++++++++ src/agrirouter/onboarding/enums.py | 11 -------- src/agrirouter/onboarding/parameters.py | 2 +- src/agrirouter/onboarding/request_body.py | 2 +- .../fixtures/update_http_onboard_responses.py | 2 +- .../fixtures/update_mqtt_onboard_responses.py | 2 +- .../internal/onboarding/test_onboarding.py | 2 +- .../onboarding/test_request_onboarding.py | 2 +- 9 files changed, 33 insertions(+), 18 deletions(-) delete mode 100644 src/agrirouter/onboarding/enums.py diff --git a/example_script.py b/example_script.py index 87160d09..e87ee3de 100644 --- a/example_script.py +++ b/example_script.py @@ -5,7 +5,7 @@ CapabilitiesParameters, SubscriptionParameters from agrirouter.messaging.services.messaging import QueryHeaderService, ListEndpointsService, CapabilitiesService, \ SubscriptionService -from agrirouter.onboarding.enums import Gateways +from agrirouter.api.enums import Gateways from agrirouter.generated.messaging.request.payload.endpoint.subscription_pb2 import Subscription from agrirouter.generated.messaging.request.payload.endpoint.capabilities_pb2 import CapabilitySpecification from agrirouter.messaging.services.commons import HttpMessagingService, MqttMessagingService diff --git a/src/agrirouter/api/enums.py b/src/agrirouter/api/enums.py index bfab8ac5..6edf6d3c 100644 --- a/src/agrirouter/api/enums.py +++ b/src/agrirouter/api/enums.py @@ -77,3 +77,29 @@ class CapabilityDirectionType(BaseEnum): SEND = "SEND" RECEIVE = "RECEIVE" SEND_RECEIVE = "SEND_RECEIVE" + + +class CertificateTypes(BaseEnum): + """ + CertificateTypes Enum Class + + An enum class representing different types of certificates. + + Attributes: + PEM (str): The PEM certificate type. + P12 (str): The P12 certificate type. + """ + PEM = "PEM" + P12 = "P12" + + +class Gateways(BaseEnum): + """ + Enum class to store the possible gateways for communication. + + Attributes: + MQTT (str): The MQTT gateway. + HTTP (str): The HTTP gateway. + """ + MQTT = "2" + HTTP = "3" diff --git a/src/agrirouter/onboarding/enums.py b/src/agrirouter/onboarding/enums.py deleted file mode 100644 index 5572621a..00000000 --- a/src/agrirouter/onboarding/enums.py +++ /dev/null @@ -1,11 +0,0 @@ -from agrirouter.api.enums import BaseEnum - - -class CertificateTypes(BaseEnum): - PEM = "PEM" - P12 = "P12" - - -class Gateways(BaseEnum): - MQTT = "2" - HTTP = "3" diff --git a/src/agrirouter/onboarding/parameters.py b/src/agrirouter/onboarding/parameters.py index 409fec2e..144a8ebf 100644 --- a/src/agrirouter/onboarding/parameters.py +++ b/src/agrirouter/onboarding/parameters.py @@ -1,5 +1,5 @@ from agrirouter.api.enums import ContentTypes -from agrirouter.onboarding.enums import CertificateTypes +from agrirouter.api.enums import CertificateTypes from agrirouter.utils.utc_time_util import now_as_utc_str diff --git a/src/agrirouter/onboarding/request_body.py b/src/agrirouter/onboarding/request_body.py index e6c89c2d..436f44ff 100644 --- a/src/agrirouter/onboarding/request_body.py +++ b/src/agrirouter/onboarding/request_body.py @@ -2,7 +2,7 @@ from datetime import datetime from agrirouter.api.exceptions import WrongCertificationType, WrongGateWayType -from agrirouter.onboarding.enums import CertificateTypes, Gateways +from agrirouter.api.enums import CertificateTypes, Gateways class SoftwareOnboardingBody: diff --git a/tests/agrirouter/fixtures/update_http_onboard_responses.py b/tests/agrirouter/fixtures/update_http_onboard_responses.py index ae102175..30432557 100644 --- a/tests/agrirouter/fixtures/update_http_onboard_responses.py +++ b/tests/agrirouter/fixtures/update_http_onboard_responses.py @@ -10,7 +10,7 @@ from agrirouter.messaging.services.commons import HttpMessagingService from agrirouter.messaging.services.http.fetch_message_service import FetchMessageService from agrirouter.messaging.services.messaging import CapabilitiesService -from agrirouter.onboarding.enums import CertificateTypes, Gateways +from agrirouter.api.enums import CertificateTypes, Gateways from agrirouter.onboarding.response import OnboardResponse from agrirouter.utils.uuid_util import new_uuid from tests.agrirouter.common.onboarding import onboard_communication_unit diff --git a/tests/agrirouter/fixtures/update_mqtt_onboard_responses.py b/tests/agrirouter/fixtures/update_mqtt_onboard_responses.py index 22b0fc51..aa3be69c 100644 --- a/tests/agrirouter/fixtures/update_mqtt_onboard_responses.py +++ b/tests/agrirouter/fixtures/update_mqtt_onboard_responses.py @@ -9,7 +9,7 @@ from agrirouter.messaging.services.commons import MqttMessagingService from agrirouter.messaging.services.messaging import CapabilitiesService from agrirouter.messaging.services.sequence_number_service import SequenceNumberService -from agrirouter.onboarding.enums import CertificateTypes, Gateways +from agrirouter.api.enums import CertificateTypes, Gateways from agrirouter.utils.uuid_util import new_uuid from tests.agrirouter.common.onboarding import onboard_communication_unit from tests.agrirouter.common.sleeper import Sleeper diff --git a/tests/agrirouter/internal/onboarding/test_onboarding.py b/tests/agrirouter/internal/onboarding/test_onboarding.py index dcfad4d2..bc491d24 100644 --- a/tests/agrirouter/internal/onboarding/test_onboarding.py +++ b/tests/agrirouter/internal/onboarding/test_onboarding.py @@ -4,7 +4,7 @@ from agrirouter.api.environments import Qa from agrirouter.api.exceptions import WrongCertificationType, WrongGateWayType -from agrirouter.onboarding.enums import Gateways, CertificateTypes +from agrirouter.api.enums import Gateways, CertificateTypes from agrirouter.onboarding.onboarding import SecuredOnboardingService from agrirouter.onboarding.parameters import OnboardParameters from tests.agrirouter.common.constants import PUBLIC_KEY, PRIVATE_KEY, APPLICATION_ID diff --git a/tests/agrirouter/internal/onboarding/test_request_onboarding.py b/tests/agrirouter/internal/onboarding/test_request_onboarding.py index a5fbb88b..00a63a99 100644 --- a/tests/agrirouter/internal/onboarding/test_request_onboarding.py +++ b/tests/agrirouter/internal/onboarding/test_request_onboarding.py @@ -1,6 +1,6 @@ """Test src/onboarding/request.py""" from agrirouter.api.environments import Qa -from agrirouter.onboarding.enums import Gateways, CertificateTypes +from agrirouter.api.enums import Gateways, CertificateTypes from agrirouter.onboarding.onboarding import SecuredOnboardingService from agrirouter.onboarding.parameters import OnboardParameters from tests.agrirouter.common.constants import APPLICATION_ID, PUBLIC_KEY, PRIVATE_KEY From f504f7f788566c179d350101f5dc3398545e8400 Mon Sep 17 00:00:00 2001 From: Sascha Doemer Date: Thu, 2 May 2024 15:54:13 +0200 Subject: [PATCH 08/17] Refactor signature handling into SignatureService class The handling of signature creation and verification has been refactored into a new SignatureService class. This change has improved modularity and allowed signature-related functions to be called directly from the service. This commit involves changes to the agrirouter.onboarding, agrirouter.auth, and agrirouter.revoking modules, plus updates to relevant tests. --- src/agrirouter/auth/response.py | 10 +--- src/agrirouter/onboarding/request.py | 6 +-- src/agrirouter/onboarding/signature.py | 53 ++++++++++--------- src/agrirouter/revoking/request.py | 4 +- .../internal/onboarding/test_signature.py | 8 +-- 5 files changed, 39 insertions(+), 42 deletions(-) diff --git a/src/agrirouter/auth/response.py b/src/agrirouter/auth/response.py index 0464c2d7..df7f63dd 100644 --- a/src/agrirouter/auth/response.py +++ b/src/agrirouter/auth/response.py @@ -6,13 +6,7 @@ from cryptography.exceptions import InvalidSignature from agrirouter.auth.dto import AuthorizationToken, AuthorizationResultUrl -from agrirouter.onboarding.signature import verify_signature - - -# from cryptography.exceptions import InvalidSignature - - -# from agrirouter.onboarding.signature import verify_signature +from agrirouter.onboarding.signature import SignatureService class AuthResponse: @@ -57,7 +51,7 @@ def verify(self, public_key) -> None: self._is_valid = True try: - verify_signature(encoded_data, encoded_signature, public_key) + SignatureService.verify_signature(encoded_data, encoded_signature, public_key) except InvalidSignature: print("Response is invalid: invalid signature.") self._is_valid = False diff --git a/src/agrirouter/onboarding/request.py b/src/agrirouter/onboarding/request.py index 77ee8a75..18726e0e 100644 --- a/src/agrirouter/onboarding/request.py +++ b/src/agrirouter/onboarding/request.py @@ -2,7 +2,7 @@ from agrirouter.onboarding.headers import SoftwareOnboardingHeader from agrirouter.onboarding.parameters import OnboardParameters from agrirouter.onboarding.request_body import SoftwareOnboardingBody -from agrirouter.onboarding.signature import create_signature, verify_signature +from agrirouter.onboarding.signature import SignatureService class OnboardRequest: @@ -31,8 +31,8 @@ def get_body_content(self): def sign(self, private_key, public_key): body = self.get_body_content() - signature = create_signature(body, private_key) - verify_signature(body, bytes.fromhex(signature), public_key) + signature = SignatureService.create_signature(body, private_key) + SignatureService.verify_signature(body, bytes.fromhex(signature), public_key) self.header.sign(signature) @property diff --git a/src/agrirouter/onboarding/signature.py b/src/agrirouter/onboarding/signature.py index ca84477b..2e05e64a 100644 --- a/src/agrirouter/onboarding/signature.py +++ b/src/agrirouter/onboarding/signature.py @@ -5,28 +5,31 @@ SIGNATURE_ALGORITHM = "SHA256withRSA" -def to_hex(sign: bytes): - return sign.hex() - - -def create_signature(request_body: str, private_key: str) -> str: - private_key_bytes = bytearray(private_key.encode('utf-8')) - private_key_data = load_pem_private_key(private_key_bytes, None) - signature = private_key_data.sign( - request_body.encode("utf-8"), - padding.PKCS1v15(), - hashes.SHA256() - ) - - return to_hex(signature) - - -def verify_signature(request_body: str, signature: bytes, public_key: str) -> None: - public_key_bytes = bytearray(public_key.encode('utf-8')) - public_key_data = load_pem_public_key(public_key_bytes) - public_key_data.verify( - signature, - request_body.encode('utf-8'), - padding.PKCS1v15(), - hashes.SHA256() - ) +class SignatureService: + + @staticmethod + def create_signature(request_body: str, private_key: str) -> str: + private_key_bytes = bytearray(private_key.encode('utf-8')) + private_key_data = load_pem_private_key(private_key_bytes, None) + signature = private_key_data.sign( + request_body.encode("utf-8"), + padding.PKCS1v15(), + hashes.SHA256() + ) + + return SignatureService._to_hex(signature) + + @staticmethod + def _to_hex(sign: bytes): + return sign.hex() + + @staticmethod + def verify_signature(request_body: str, signature: bytes, public_key: str) -> None: + public_key_bytes = bytearray(public_key.encode('utf-8')) + public_key_data = load_pem_public_key(public_key_bytes) + public_key_data.verify( + signature, + request_body.encode('utf-8'), + padding.PKCS1v15(), + hashes.SHA256() + ) diff --git a/src/agrirouter/revoking/request.py b/src/agrirouter/revoking/request.py index 1fea09e1..c3213404 100644 --- a/src/agrirouter/revoking/request.py +++ b/src/agrirouter/revoking/request.py @@ -1,4 +1,4 @@ -from agrirouter.onboarding.signature import create_signature +from agrirouter.onboarding.signature import SignatureService from agrirouter.revoking.headers import RevokingHeader from agrirouter.revoking.request_body import RevokingBody @@ -23,7 +23,7 @@ def get_body_content(self): def sign(self, private_key): body = self.get_body_content() - signature = create_signature(body, private_key) + signature = SignatureService.create_signature(body, private_key) self.header.sign(signature) @property diff --git a/tests/agrirouter/internal/onboarding/test_signature.py b/tests/agrirouter/internal/onboarding/test_signature.py index a8679e03..c5139827 100644 --- a/tests/agrirouter/internal/onboarding/test_signature.py +++ b/tests/agrirouter/internal/onboarding/test_signature.py @@ -3,16 +3,16 @@ import pytest from cryptography.exceptions import InvalidSignature -from agrirouter.onboarding.signature import create_signature, verify_signature +from agrirouter.onboarding.signature import SignatureService from tests.agrirouter.common.constants import PRIVATE_KEY, PUBLIC_KEY def test_create_signature_ok(): - signature = create_signature( + signature = SignatureService.create_signature( "REQUEST CONTENT", PRIVATE_KEY) raised = False try: - verify_signature( + SignatureService.verify_signature( "REQUEST CONTENT", bytes.fromhex(signature), PUBLIC_KEY) except InvalidSignature: raised = True @@ -21,5 +21,5 @@ def test_create_signature_ok(): def test_verify_signature_fail(): with pytest.raises(InvalidSignature): - verify_signature( + SignatureService.verify_signature( "REQUEST CONTENT", b"wrong_signature", PUBLIC_KEY) From caf92029c8f15c762ea13b0446baabe1b5e1f64b Mon Sep 17 00:00:00 2001 From: Sascha Doemer Date: Thu, 2 May 2024 16:00:46 +0200 Subject: [PATCH 09/17] Refactored utc_time_util to a class structure The utc_time_util functions have been adjusted into a class structure for improved organization and code readability. This also involves changes to the function calls in several source files where these functions were used. --- src/agrirouter/messaging/encode.py | 7 +- src/agrirouter/messaging/messages.py | 4 +- src/agrirouter/onboarding/parameters.py | 6 +- src/agrirouter/utils/utc_time_util.py | 140 +++++++++--------- .../mqtt/test_feed_delete_service.py | 11 +- .../mqtt/test_query_header_service.py | 8 +- .../mqtt/test_query_message_service.py | 9 +- 7 files changed, 97 insertions(+), 88 deletions(-) diff --git a/src/agrirouter/messaging/encode.py b/src/agrirouter/messaging/encode.py index b0d1716f..d0f16d41 100644 --- a/src/agrirouter/messaging/encode.py +++ b/src/agrirouter/messaging/encode.py @@ -11,7 +11,7 @@ from agrirouter.messaging.parameters.service import MessageHeaderParameters, MessagePayloadParameters from agrirouter.messaging.services.sequence_number_service import SequenceNumberService from agrirouter.onboarding.response import OnboardResponse -from agrirouter.utils.utc_time_util import now_as_utc_timestamp +from agrirouter.utils.utc_time_util import UtcTimeUtil from agrirouter.utils.uuid_util import new_uuid MAX_LENGTH_FOR_RAW_MESSAGE_CONTENT = 767997 // 2 @@ -128,7 +128,8 @@ def encode_chunks_message(message_parameter_tuple: List[MessageParameterTuple]) :message_parameter_tuple - Tuple of message parameters Returns list of encoded chunked messages """ - return [encode_message(_tuple.message_header_parameters, _tuple.message_payload_parameters) for _tuple in + return [EncodingService.encode_message(_tuple.message_header_parameters, _tuple.message_payload_parameters) for + _tuple in message_parameter_tuple] @staticmethod @@ -149,7 +150,7 @@ def encode_header(header_parameters: MessageHeaderParameters) -> RequestEnvelope if header_parameters.get_team_set_context_id() is not None: request_envelope.team_set_context_id = header_parameters.get_team_set_context_id() - request_envelope.timestamp.FromDatetime(now_as_utc_timestamp()) + request_envelope.timestamp.FromDatetime(UtcTimeUtil.now_as_utc_timestamp()) if header_parameters.get_recipients() is not None: request_envelope.recipients.extend(header_parameters.get_recipients()) if header_parameters.get_chunk_component() is not None: diff --git a/src/agrirouter/messaging/messages.py b/src/agrirouter/messaging/messages.py index 3615e5ef..fd245ea1 100644 --- a/src/agrirouter/messaging/messages.py +++ b/src/agrirouter/messaging/messages.py @@ -2,7 +2,7 @@ from typing import Union, Dict from agrirouter.api.exceptions import WrongField -from agrirouter.utils.utc_time_util import now_as_utc_str +from agrirouter.utils.utc_time_util import UtcTimeUtil class EncodedMessage: @@ -36,7 +36,7 @@ class Message: def __init__(self, content): self.content = content - self.timestamp = now_as_utc_str() + self.timestamp = UtcTimeUtil.now_as_utc_str() def json_serialize(self) -> dict: return { diff --git a/src/agrirouter/onboarding/parameters.py b/src/agrirouter/onboarding/parameters.py index 144a8ebf..5683d50d 100644 --- a/src/agrirouter/onboarding/parameters.py +++ b/src/agrirouter/onboarding/parameters.py @@ -1,6 +1,6 @@ -from agrirouter.api.enums import ContentTypes from agrirouter.api.enums import CertificateTypes -from agrirouter.utils.utc_time_util import now_as_utc_str +from agrirouter.api.enums import ContentTypes +from agrirouter.utils.utc_time_util import UtcTimeUtil class OnboardParameters: @@ -20,7 +20,7 @@ def __init__(self, self.certification_version_id = certification_version_id self.gateway_id = str(gateway_id) self.certificate_type = certificate_type - self.utc_timestamp = str(utc_timestamp) if utc_timestamp else now_as_utc_str() + self.utc_timestamp = str(utc_timestamp) if utc_timestamp else UtcTimeUtil.now_as_utc_str() self.time_zone = str(time_zone) self.reg_code = reg_code diff --git a/src/agrirouter/utils/utc_time_util.py b/src/agrirouter/utils/utc_time_util.py index 0c099bac..ba1daa87 100644 --- a/src/agrirouter/utils/utc_time_util.py +++ b/src/agrirouter/utils/utc_time_util.py @@ -5,70 +5,76 @@ from agrirouter.generated.messaging.request.payload.feed.feed_requests_pb2 import ValidityPeriod -def now_as_utc_timestamp() -> datetime: - """ - Returns current utc timestamp - """ - return datetime.utcnow() - - -def now_as_utc_str() -> str: - """ - Returns current utc timestamp as a string - """ - timestamp = datetime.utcnow() - return timestamp.strftime("%Y-%m-%dT%H:%M:%S.%fZ") - - -def max_validity_period() -> ValidityPeriod: - """ - Returns time stamp from weeks before according to the Timestamp protobuf format - """ - return ValidityPeriod(sent_from=timestamp_before_number_of_weeks(4), sent_to=now_as_timestamp()) - - -def validity_period_for_seconds(seconds) -> ValidityPeriod: - """ - Returns validity period from seconds before according to the ValidityPeriod protobuf format - """ - return ValidityPeriod(sent_from=timestamp_before_number_of_seconds(seconds), sent_to=now_as_timestamp()) - - -def validity_period_for_weeks(weeks) -> ValidityPeriod: - """ - Returns validity period from seconds before according to the ValidityPeriod protobuf format - """ - return ValidityPeriod(sent_from=timestamp_before_number_of_weeks(weeks), sent_to=now_as_timestamp()) - - -def timestamp_before_number_of_weeks(weeks) -> Timestamp: - """ - Returns time stamp from weeks before according to the Timestamp protobuf format - """ - utc_timestamp_weeks_ago = datetime.now() - timedelta(weeks=weeks) - sent_from = Timestamp() - sent_from.seconds = int(utc_timestamp_weeks_ago.timestamp()) - sent_from.nanos = utc_timestamp_weeks_ago.microsecond * 1000 - return sent_from - - -def timestamp_before_number_of_seconds(seconds) -> Timestamp: - """ - Returns time stamp from seconds before according to the Timestamp protobuf format. - This is used to test the invalid validity period and is only used for testing purposes - """ - utc_timestamp_seconds_ago = datetime.now() - timedelta(seconds=seconds) - sent_from = Timestamp() - sent_from.seconds = int(utc_timestamp_seconds_ago.timestamp()) - sent_from.nanos = utc_timestamp_seconds_ago.microsecond * 1000 - return sent_from - - -def now_as_timestamp(): - """ - Returns current time stamp in google protobuf format - """ - sent_to = Timestamp() - sent_to.seconds = int(datetime.now().timestamp()) - sent_to.nanos = datetime.now().microsecond * 1000 - return sent_to +class UtcTimeUtil: + + @staticmethod + def now_as_utc_timestamp() -> datetime: + """ + Returns current utc timestamp + """ + return datetime.utcnow() + + @staticmethod + def now_as_utc_str() -> str: + """ + Returns current utc timestamp as a string + """ + timestamp = datetime.utcnow() + return timestamp.strftime("%Y-%m-%dT%H:%M:%S.%fZ") + + @staticmethod + def max_validity_period() -> ValidityPeriod: + """ + Returns time stamp from weeks before according to the Timestamp protobuf format + """ + return ValidityPeriod(sent_from=UtcTimeUtil._timestamp_before_number_of_weeks(4), + sent_to=UtcTimeUtil._now_as_timestamp()) + + @staticmethod + def validity_period_for_seconds(seconds) -> ValidityPeriod: + """ + Returns validity period from seconds before according to the ValidityPeriod protobuf format + """ + return ValidityPeriod(sent_from=UtcTimeUtil._timestamp_before_number_of_seconds(seconds), + sent_to=UtcTimeUtil._now_as_timestamp()) + + @staticmethod + def validity_period_for_weeks(weeks) -> ValidityPeriod: + """ + Returns validity period from seconds before according to the ValidityPeriod protobuf format + """ + return ValidityPeriod(sent_from=UtcTimeUtil._timestamp_before_number_of_weeks(weeks), + sent_to=UtcTimeUtil._now_as_timestamp()) + + @staticmethod + def _timestamp_before_number_of_weeks(weeks) -> Timestamp: + """ + Returns time stamp from weeks before according to the Timestamp protobuf format + """ + utc_timestamp_weeks_ago = datetime.now() - timedelta(weeks=weeks) + sent_from = Timestamp() + sent_from.seconds = int(utc_timestamp_weeks_ago.timestamp()) + sent_from.nanos = utc_timestamp_weeks_ago.microsecond * 1000 + return sent_from + + @staticmethod + def _timestamp_before_number_of_seconds(seconds) -> Timestamp: + """ + Returns time stamp from seconds before according to the Timestamp protobuf format. + This is used to test the invalid validity period and is only used for testing purposes + """ + utc_timestamp_seconds_ago = datetime.now() - timedelta(seconds=seconds) + sent_from = Timestamp() + sent_from.seconds = int(utc_timestamp_seconds_ago.timestamp()) + sent_from.nanos = utc_timestamp_seconds_ago.microsecond * 1000 + return sent_from + + @staticmethod + def _now_as_timestamp(): + """ + Returns current time stamp in google protobuf format + """ + sent_to = Timestamp() + sent_to.seconds = int(datetime.now().timestamp()) + sent_to.nanos = datetime.now().microsecond * 1000 + return sent_to diff --git a/tests/agrirouter/service/messaging/mqtt/test_feed_delete_service.py b/tests/agrirouter/service/messaging/mqtt/test_feed_delete_service.py index 2aec41ff..5cee7f97 100644 --- a/tests/agrirouter/service/messaging/mqtt/test_feed_delete_service.py +++ b/tests/agrirouter/service/messaging/mqtt/test_feed_delete_service.py @@ -11,7 +11,7 @@ from agrirouter.messaging.services.commons import MqttMessagingService from agrirouter.messaging.services.messaging import SendMessageService, SendMessageParameters, FeedDeleteService from agrirouter.messaging.services.sequence_number_service import SequenceNumberService -from agrirouter.utils.utc_time_util import max_validity_period, validity_period_for_seconds +from agrirouter.utils.utc_time_util import UtcTimeUtil from agrirouter.utils.uuid_util import new_uuid from tests.agrirouter.common.data_provider import DataProvider from tests.agrirouter.common.sleeper import Sleeper @@ -164,7 +164,7 @@ def test_delete_messages_for_given_validity_period_should_delete_the_messages_fr onboarding_response=self._recipient_onboard_response, application_message_id=new_uuid(), application_message_seq_no=current_sequence_number, - validity_period=max_validity_period() + validity_period=UtcTimeUtil.max_validity_period() ) delete_message_service = FeedDeleteService(self._messaging_service_for_recipient) @@ -251,7 +251,7 @@ def test_delete_messages_for_invalid_validity_period_should_return_empty_message onboarding_response=self._recipient_onboard_response, application_message_id=new_uuid(), application_message_seq_no=current_sequence_number, - validity_period=validity_period_for_seconds(5) + validity_period=UtcTimeUtil.validity_period_for_seconds(5) ) delete_message_service = FeedDeleteService(self._messaging_service_for_recipient) @@ -280,7 +280,7 @@ def test_delete_messages_for_incomplete_attributes_should_return_in_an_error(sel onboarding_response=self._recipient_onboard_response, application_message_id=new_uuid(), application_message_seq_no=current_sequence_number, - validity_period=validity_period_for_seconds(5) + validity_period=UtcTimeUtil.validity_period_for_seconds(5) ) delete_message_service = FeedDeleteService(self._messaging_service_for_recipient) @@ -350,7 +350,8 @@ def _inner_function(client, userdata, msg): outbox_message = OutboxMessage() outbox_message.json_deserialize(msg.payload.decode().replace("'", '"')) decoded_message = DecodingService.decode_response(outbox_message.command.message.encode()) - feed_delete_service_for_empty_result = DecodingService.decode_details(decoded_message.response_payload.details) + feed_delete_service_for_empty_result = DecodingService.decode_details( + decoded_message.response_payload.details) self._log.info(f"Feed delete details: {feed_delete_service_for_empty_result}") assert decoded_message.response_envelope.response_code == 204 assert feed_delete_service_for_empty_result.messages[0].message_code == "VAL_000208" diff --git a/tests/agrirouter/service/messaging/mqtt/test_query_header_service.py b/tests/agrirouter/service/messaging/mqtt/test_query_header_service.py index ad97ddf5..a24c32f9 100644 --- a/tests/agrirouter/service/messaging/mqtt/test_query_header_service.py +++ b/tests/agrirouter/service/messaging/mqtt/test_query_header_service.py @@ -4,9 +4,9 @@ import pytest +from agrirouter.api.enums import CapabilityType from agrirouter.generated.messaging.request.request_pb2 import RequestEnvelope from agrirouter.messaging.decode import DecodingService -from agrirouter.api.enums import CapabilityType from agrirouter.messaging.messages import OutboxMessage from agrirouter.messaging.parameters.service import FeedDeleteParameters, QueryHeaderParameters from agrirouter.messaging.services.commons import MqttMessagingService @@ -14,7 +14,7 @@ QueryHeaderService from agrirouter.messaging.services.sequence_number_service import SequenceNumberService from agrirouter.onboarding.response import OnboardResponse -from agrirouter.utils.utc_time_util import max_validity_period, validity_period_for_seconds +from agrirouter.utils.utc_time_util import UtcTimeUtil from agrirouter.utils.uuid_util import new_uuid from tests.agrirouter.common.data_provider import DataProvider from tests.agrirouter.common.sleeper import Sleeper @@ -166,7 +166,7 @@ def test_header_query_service_when_validity_period_is_specified_should_return_me query_header_parameters = QueryHeaderParameters(application_message_id=new_uuid(), application_message_seq_no=current_sequence_number, onboarding_response=self._recipient_onboard_response, - validity_period=max_validity_period(), + validity_period=UtcTimeUtil.max_validity_period(), ) self.assertIsNotNone(self._received_messages) @@ -343,7 +343,7 @@ def test_header_query_service_for_incorrect_validity_period_should_return_empty_ query_header_parameters = QueryHeaderParameters(application_message_id=new_uuid(), application_message_seq_no=current_sequence_number, onboarding_response=self._recipient_onboard_response, - validity_period=validity_period_for_seconds(5), + validity_period=UtcTimeUtil.validity_period_for_seconds(5), ) query_header_service = QueryHeaderService(_messaging_service) diff --git a/tests/agrirouter/service/messaging/mqtt/test_query_message_service.py b/tests/agrirouter/service/messaging/mqtt/test_query_message_service.py index bb3c4abf..c520912d 100644 --- a/tests/agrirouter/service/messaging/mqtt/test_query_message_service.py +++ b/tests/agrirouter/service/messaging/mqtt/test_query_message_service.py @@ -4,9 +4,9 @@ import pytest +from agrirouter.api.enums import CapabilityType from agrirouter.generated.messaging.request.request_pb2 import RequestEnvelope from agrirouter.messaging.decode import DecodingService -from agrirouter.api.enums import CapabilityType from agrirouter.messaging.messages import OutboxMessage from agrirouter.messaging.parameters.service import FeedDeleteParameters, QueryMessageParameters from agrirouter.messaging.services.commons import MqttMessagingService @@ -14,7 +14,7 @@ QueryMessagesService from agrirouter.messaging.services.sequence_number_service import SequenceNumberService from agrirouter.onboarding.response import OnboardResponse -from agrirouter.utils.utc_time_util import max_validity_period, validity_period_for_seconds +from agrirouter.utils.utc_time_util import UtcTimeUtil from agrirouter.utils.uuid_util import new_uuid from tests.agrirouter.common.data_provider import DataProvider from tests.agrirouter.common.sleeper import Sleeper @@ -138,7 +138,7 @@ def test_message_query_service_when_validity_period_is_specified_should_return_t query_message_parameters = QueryMessageParameters(application_message_id=new_uuid(), application_message_seq_no=current_sequence_number, onboarding_response=self._recipient_onboard_response, - validity_period=max_validity_period(), + validity_period=UtcTimeUtil.max_validity_period(), ) query_message_service = QueryMessagesService(self._messaging_service_for_recipient) @@ -280,7 +280,8 @@ def test_query_message_service_for_incorrect_validity_period_should_return_empty query_message_parameters = QueryMessageParameters(application_message_id=new_uuid(), application_message_seq_no=current_sequence_number, onboarding_response=self._recipient_onboard_response, - validity_period=validity_period_for_seconds(seconds=5), + validity_period=UtcTimeUtil.validity_period_for_seconds( + seconds=5), ) query_message_service = QueryMessagesService(self._messaging_service_for_recipient) From 87594bb4b60563907c382c61b4cc53eb8c8185f7 Mon Sep 17 00:00:00 2001 From: Sascha Doemer Date: Thu, 2 May 2024 16:03:15 +0200 Subject: [PATCH 10/17] Refactor uuid utility to a class-based implementation The refactor includes changing the direct function calls of 'new_uuid()' to the class-based static method 'UUIDUtil.new_uuid()'. These changes impact multiple files across the application, improving the overall structure following the object-oriented programming paradigm. --- example_script.py | 24 +++++++-------- src/agrirouter/messaging/encode.py | 8 ++--- src/agrirouter/messaging/services/cloud.py | 6 ++-- .../messaging/services/messaging.py | 30 +++++++++---------- src/agrirouter/utils/uuid_util.py | 25 +++++++++------- .../fixtures/update_http_onboard_responses.py | 4 +-- .../fixtures/update_mqtt_onboard_responses.py | 4 +-- .../messaging/mqtt/test_capability_service.py | 4 +-- .../mqtt/test_feed_confirm_service.py | 16 +++++----- .../mqtt/test_feed_delete_service.py | 22 +++++++------- .../mqtt/test_list_endpoints_service.py | 8 ++--- .../mqtt/test_publish_message_service.py | 6 ++-- .../mqtt/test_query_header_service.py | 24 +++++++-------- .../mqtt/test_query_message_service.py | 22 +++++++------- ..._receive_chunked_messages_from_the_feed.py | 10 +++---- ...ges_and_receive_with_push_notifications.py | 8 ++--- .../mqtt/test_send_direct_message_service.py | 6 ++-- .../mqtt/test_subscription_service.py | 6 ++-- 18 files changed, 118 insertions(+), 115 deletions(-) diff --git a/example_script.py b/example_script.py index e87ee3de..9b847445 100644 --- a/example_script.py +++ b/example_script.py @@ -9,7 +9,7 @@ from agrirouter.generated.messaging.request.payload.endpoint.subscription_pb2 import Subscription from agrirouter.generated.messaging.request.payload.endpoint.capabilities_pb2 import CapabilitySpecification from agrirouter.messaging.services.commons import HttpMessagingService, MqttMessagingService -from agrirouter.utils.uuid_util import new_uuid +from agrirouter.utils.uuid_util import UUIDUtil from google.protobuf.timestamp_pb2 import Timestamp @@ -148,7 +148,7 @@ def example_list_endpoints_mqtt(onboarding_response_data, foo): direction=ListEndpointsQuery.Direction.Value("SEND_RECEIVE"), filtered=False, onboarding_response=onboarding_response, - application_message_id=new_uuid(), + application_message_id=UUIDUtil.new_uuid(), application_message_seq_no=1, ) list_endpoint_service = ListEndpointsService(messaging_service) @@ -170,7 +170,7 @@ def example_set_capabilities(onboarding_response_data, mqtt_message_callback): ) capabilities_parameters = CapabilitiesParameters( onboarding_response=onboarding_response, - application_message_id=new_uuid(), + application_message_id=UUIDUtil.new_uuid(), application_message_seq_no=1, application_id=application_id, certification_version_id=certification_version_id, @@ -194,7 +194,7 @@ def example_list_endpoints_http(onboarding_response_data): direction=2, filtered=False, onboarding_response=onboarding_response, - application_message_id=new_uuid(), + application_message_id=UUIDUtil.new_uuid(), application_message_seq_no=1, ) list_endpoint_service = ListEndpointsService(messaging_service) @@ -216,7 +216,7 @@ def example_subscription_http(onboarding_response_data): subscription_parameters = SubscriptionParameters( subscription_items=[subscription_item], onboarding_response=onboarding_response, - application_message_id=new_uuid(), + application_message_id=UUIDUtil.new_uuid(), application_message_seq_no=1, ) @@ -237,7 +237,7 @@ def example_subscription_mqtt(onboarding_response_data, on_msg_callback): subscription_parameters = SubscriptionParameters( subscription_items=[subscription_item], onboarding_response=onboarding_response, - application_message_id=new_uuid(), + application_message_id=UUIDUtil.new_uuid(), application_message_seq_no=1, ) @@ -259,11 +259,11 @@ def example_query_header_message_http(onboarding_response_data): sent_to = Timestamp() validity_period = ValidityPeriod(sent_from=sent_from, sent_to=sent_to) query_header_parameters = QueryHeaderParameters( - message_ids=[new_uuid(), new_uuid()], - senders=[new_uuid(), new_uuid()], + message_ids=[UUIDUtil.new_uuid(), UUIDUtil.new_uuid()], + senders=[UUIDUtil.new_uuid(), UUIDUtil.new_uuid()], validity_period=validity_period, onboarding_response=onboarding_response, - application_message_id=new_uuid(), + application_message_id=UUIDUtil.new_uuid(), application_message_seq_no=1, ) messaging_result = query_header_service.send(query_header_parameters) @@ -282,11 +282,11 @@ def example_query_header_message_mqtt(onboarding_response_data, on_msg_callback) sent_to = Timestamp() validity_period = ValidityPeriod(sent_from=sent_from, sent_to=sent_to) query_header_parameters = QueryHeaderParameters( - message_ids=[new_uuid(), new_uuid()], - senders=[new_uuid(), new_uuid()], + message_ids=[UUIDUtil.new_uuid(), UUIDUtil.new_uuid()], + senders=[UUIDUtil.new_uuid(), UUIDUtil.new_uuid()], validity_period=validity_period, onboarding_response=onboarding_response, - application_message_id=new_uuid(), + application_message_id=UUIDUtil.new_uuid(), application_message_seq_no=1, ) messaging_result = query_header_service.send(query_header_parameters) diff --git a/src/agrirouter/messaging/encode.py b/src/agrirouter/messaging/encode.py index d0f16d41..2ae93119 100644 --- a/src/agrirouter/messaging/encode.py +++ b/src/agrirouter/messaging/encode.py @@ -12,7 +12,7 @@ from agrirouter.messaging.services.sequence_number_service import SequenceNumberService from agrirouter.onboarding.response import OnboardResponse from agrirouter.utils.utc_time_util import UtcTimeUtil -from agrirouter.utils.uuid_util import new_uuid +from agrirouter.utils.uuid_util import UUIDUtil MAX_LENGTH_FOR_RAW_MESSAGE_CONTENT = 767997 // 2 log = logging.getLogger("com.dke.data.agrirouter.sdk.encode") @@ -70,11 +70,11 @@ def chunk_and_base64encode_each_chunk(header_parameters: MessageHeaderParameters log.info("Message is chunked, because it is bigger than the maximum size of a chunk.") tuples = [] - chunk_context_id = new_uuid() + chunk_context_id = UUIDUtil.new_uuid() chunk_number = 1 for chunk in message_chunks: - chunk_message_id = new_uuid() + chunk_message_id = UUIDUtil.new_uuid() sequence_number_for_chunk = SequenceNumberService.next_seq_nr( onboarding_response.get_sensor_alternate_id()) @@ -141,7 +141,7 @@ def encode_header(header_parameters: MessageHeaderParameters) -> RequestEnvelope """ request_envelope = RequestEnvelope() request_envelope.application_message_id = header_parameters.get_application_message_id() \ - if header_parameters.get_application_message_id() else new_uuid() + if header_parameters.get_application_message_id() else UUIDUtil.new_uuid() request_envelope.application_message_seq_no = header_parameters.get_application_message_seq_no() request_envelope.technical_message_type = header_parameters.get_technical_message_type() diff --git a/src/agrirouter/messaging/services/cloud.py b/src/agrirouter/messaging/services/cloud.py index 868d72c1..8835cee3 100644 --- a/src/agrirouter/messaging/services/cloud.py +++ b/src/agrirouter/messaging/services/cloud.py @@ -8,7 +8,7 @@ CloudOnboardParameters, CloudOffboardParameters from agrirouter.messaging.services.messaging import AbstractService from agrirouter.utils.type_url import TypeUrl -from agrirouter.utils.uuid_util import new_uuid +from agrirouter.utils.uuid_util import UUIDUtil class CloudOnboardService(AbstractService): @@ -34,7 +34,7 @@ def encode(parameters: CloudOnboardParameters) -> EncodedMessage: message_content = EncodingService.encode_message(message_header_parameters, message_payload_parameters) encoded_message = EncodedMessage( - id_=new_uuid(), + id_=UUIDUtil.new_uuid(), content=message_content ) @@ -64,7 +64,7 @@ def encode(parameters: CloudOffboardParameters) -> EncodedMessage: message_content = encode_message(message_header_parameters, message_payload_parameters) encoded_message = EncodedMessage( - id_=new_uuid(), + id_=UUIDUtil.new_uuid(), content=message_content ) diff --git a/src/agrirouter/messaging/services/messaging.py b/src/agrirouter/messaging/services/messaging.py index cd60afc7..b4c2cd17 100644 --- a/src/agrirouter/messaging/services/messaging.py +++ b/src/agrirouter/messaging/services/messaging.py @@ -17,7 +17,7 @@ EfdiParameters from agrirouter.messaging.services.commons import AbstractService from agrirouter.utils.type_url import TypeUrl -from agrirouter.utils.uuid_util import new_uuid +from agrirouter.utils.uuid_util import UUIDUtil class CapabilitiesService(AbstractService): @@ -54,7 +54,7 @@ def encode(parameters: CapabilitiesParameters) -> EncodedMessage: message_content = EncodingService.encode_message(message_header_parameters, message_payload_parameters) encoded_message = EncodedMessage( - id_=new_uuid(), + id_=UUIDUtil.new_uuid(), content=message_content ) @@ -84,7 +84,7 @@ def encode(parameters: FeedConfirmParameters) -> EncodedMessage: message_content = EncodingService.encode_message(message_header_parameters, message_payload_parameters) encoded_message = EncodedMessage( - id_=new_uuid(), + id_=UUIDUtil.new_uuid(), content=message_content ) @@ -116,7 +116,7 @@ def encode(parameters: FeedDeleteParameters) -> EncodedMessage: message_content = EncodingService.encode_message(message_header_parameters, message_payload_parameters) encoded_message = EncodedMessage( - id_=new_uuid(), + id_=UUIDUtil.new_uuid(), content=message_content ) @@ -148,7 +148,7 @@ def encode(parameters: ListEndpointsParameters) -> EncodedMessage: message_content = EncodingService.encode_message(message_header_parameters, message_payload_parameters) encoded_message = EncodedMessage( - id_=new_uuid(), + id_=UUIDUtil.new_uuid(), content=message_content ) @@ -180,7 +180,7 @@ def encode(parameters: QueryMessageParameters) -> EncodedMessage: message_content = EncodingService.encode_message(message_header_parameters, message_payload_parameters) encoded_message = EncodedMessage( - id_=new_uuid(), + id_=UUIDUtil.new_uuid(), content=message_content ) @@ -219,7 +219,7 @@ def encode(parameters: QueryHeaderParameters) -> EncodedMessage: message_content = EncodingService.encode_message(message_header_parameters, message_payload_parameters) encoded_message = EncodedMessage( - id_=new_uuid(), + id_=UUIDUtil.new_uuid(), content=message_content ) @@ -256,7 +256,7 @@ def encode(parameters: SubscriptionParameters) -> EncodedMessage: message_content = EncodingService.encode_message(message_header_parameters, message_payload_parameters) encoded_message = EncodedMessage( - id_=new_uuid(), + id_=UUIDUtil.new_uuid(), content=message_content ) @@ -292,7 +292,7 @@ def encode(parameters: SendMessageParameters) -> EncodedMessage: message_content = EncodingService.encode_message(message_header_parameters, message_payload_parameters) encoded_message = EncodedMessage( - id_=new_uuid(), + id_=UUIDUtil.new_uuid(), content=message_content ) @@ -310,7 +310,7 @@ def encode(parameters: ChunkedMessageParameters): parameters: Chunked Message Parameters required """ encoded_message = EncodedMessage( - id_=new_uuid(), + id_=UUIDUtil.new_uuid(), content=parameters.get_encoded_chunked_messages(), ) return encoded_message @@ -339,7 +339,7 @@ def encode(parameters: ImageParameters) -> EncodedMessage: message_content = EncodingService.encode_message(message_header_parameters, message_payload_parameters) encoded_message = EncodedMessage( - id_=new_uuid(), + id_=UUIDUtil.new_uuid(), content=message_content ) @@ -376,7 +376,7 @@ def encode(parameters: TaskParameters) -> EncodedMessage: message_content = EncodingService.encode_message(message_header_parameters, message_payload_parameters) encoded_message = EncodedMessage( - id_=new_uuid(), + id_=UUIDUtil.new_uuid(), content=message_content ) @@ -410,7 +410,7 @@ def encode(parameters: EfdiParameters) -> EncodedMessage: message_content = EncodingService.encode_message(message_header_parameters, message_payload_parameters) encoded_message = EncodedMessage( - id_=new_uuid(), + id_=UUIDUtil.new_uuid(), content=message_content ) @@ -443,7 +443,7 @@ def encode(parameters: EfdiParameters) -> EncodedMessage: message_content = EncodingService.encode_message(message_header_parameters, message_payload_parameters) encoded_message = EncodedMessage( - id_=new_uuid(), + id_=UUIDUtil.new_uuid(), content=message_content ) @@ -476,7 +476,7 @@ def encode(parameters: EfdiParameters) -> EncodedMessage: message_content = EncodingService.encode_message(message_header_parameters, message_payload_parameters) encoded_message = EncodedMessage( - id_=new_uuid(), + id_=UUIDUtil.new_uuid(), content=message_content ) diff --git a/src/agrirouter/utils/uuid_util.py b/src/agrirouter/utils/uuid_util.py index c85999cf..c877d1b4 100644 --- a/src/agrirouter/utils/uuid_util.py +++ b/src/agrirouter/utils/uuid_util.py @@ -1,18 +1,21 @@ import uuid -def new_uuid(): - """ +class UUIDUtil: - new_uuid() -> str + @staticmethod + def new_uuid(): + """ - Generates a new universally unique identifier (UUID) and returns it as a string representation. + UUIDUtil.new_uuid() -> str - Returns: - str: A string representation of the generated UUID. + Generates a new universally unique identifier (UUID) and returns it as a string representation. - Example: - >>> new_uuid() - 'c5616b83-733b-4500-8c7a-efbff81b226b' - """ - return str(uuid.uuid4()) + Returns: + str: A string representation of the generated UUID. + + Example: + >>> UUIDUtil.new_uuid() + 'c5616b83-733b-4500-8c7a-efbff81b226b' + """ + return str(uuid.uuid4()) diff --git a/tests/agrirouter/fixtures/update_http_onboard_responses.py b/tests/agrirouter/fixtures/update_http_onboard_responses.py index 30432557..c10786ec 100644 --- a/tests/agrirouter/fixtures/update_http_onboard_responses.py +++ b/tests/agrirouter/fixtures/update_http_onboard_responses.py @@ -12,7 +12,7 @@ from agrirouter.messaging.services.messaging import CapabilitiesService from agrirouter.api.enums import CertificateTypes, Gateways from agrirouter.onboarding.response import OnboardResponse -from agrirouter.utils.uuid_util import new_uuid +from agrirouter.utils.uuid_util import UUIDUtil from tests.agrirouter.common.onboarding import onboard_communication_unit from tests.agrirouter.common.sleeper import Sleeper from tests.agrirouter.data.applications import CommunicationUnit @@ -62,7 +62,7 @@ def _enable_all_capabilities_via_http(onboard_response: OnboardResponse): capabilities_service = CapabilitiesService(messaging_service) capabilities_parameters = CapabilitiesParameters( onboarding_response=onboard_response, - application_message_id=new_uuid(), + application_message_id=UUIDUtil.new_uuid(), application_message_seq_no=1, application_id=CommunicationUnit.application_id, certification_version_id=CommunicationUnit.certification_version_id, diff --git a/tests/agrirouter/fixtures/update_mqtt_onboard_responses.py b/tests/agrirouter/fixtures/update_mqtt_onboard_responses.py index aa3be69c..b6c9a26e 100644 --- a/tests/agrirouter/fixtures/update_mqtt_onboard_responses.py +++ b/tests/agrirouter/fixtures/update_mqtt_onboard_responses.py @@ -10,7 +10,7 @@ from agrirouter.messaging.services.messaging import CapabilitiesService from agrirouter.messaging.services.sequence_number_service import SequenceNumberService from agrirouter.api.enums import CertificateTypes, Gateways -from agrirouter.utils.uuid_util import new_uuid +from agrirouter.utils.uuid_util import UUIDUtil from tests.agrirouter.common.onboarding import onboard_communication_unit from tests.agrirouter.common.sleeper import Sleeper from tests.agrirouter.data.applications import CommunicationUnit @@ -82,7 +82,7 @@ def _enable_capabilities(onboard_response, callback): onboard_response.get_sensor_alternate_id()) capabilities_parameters = CapabilitiesParameters( onboarding_response=onboard_response, - application_message_id=new_uuid(), + application_message_id=UUIDUtil.new_uuid(), application_message_seq_no=current_sequence_number, application_id=CommunicationUnit.application_id, certification_version_id=CommunicationUnit.certification_version_id, diff --git a/tests/agrirouter/service/messaging/mqtt/test_capability_service.py b/tests/agrirouter/service/messaging/mqtt/test_capability_service.py index bf210caa..ff18b792 100644 --- a/tests/agrirouter/service/messaging/mqtt/test_capability_service.py +++ b/tests/agrirouter/service/messaging/mqtt/test_capability_service.py @@ -12,7 +12,7 @@ from agrirouter.messaging.services.commons import MqttMessagingService from agrirouter.messaging.services.messaging import CapabilitiesService from agrirouter.messaging.services.sequence_number_service import SequenceNumberService -from agrirouter.utils.uuid_util import new_uuid +from agrirouter.utils.uuid_util import UUIDUtil from tests.agrirouter.common.sleeper import Sleeper from tests.agrirouter.data.applications import CommunicationUnit from tests.agrirouter.data.identifier import Identifier @@ -79,7 +79,7 @@ def _send_capabilities(self, onboard_response, direction): onboard_response.get_sensor_alternate_id()) capabilities_parameters = CapabilitiesParameters( onboarding_response=onboard_response, - application_message_id=new_uuid(), + application_message_id=UUIDUtil.new_uuid(), application_message_seq_no=current_sequence_number, application_id=CommunicationUnit.application_id, certification_version_id=CommunicationUnit.certification_version_id, diff --git a/tests/agrirouter/service/messaging/mqtt/test_feed_confirm_service.py b/tests/agrirouter/service/messaging/mqtt/test_feed_confirm_service.py index eb052648..a37822d7 100644 --- a/tests/agrirouter/service/messaging/mqtt/test_feed_confirm_service.py +++ b/tests/agrirouter/service/messaging/mqtt/test_feed_confirm_service.py @@ -13,7 +13,7 @@ from agrirouter.messaging.services.messaging import SendMessageService, FeedDeleteService, FeedConfirmService from agrirouter.messaging.services.sequence_number_service import SequenceNumberService from agrirouter.onboarding.response import OnboardResponse -from agrirouter.utils.uuid_util import new_uuid +from agrirouter.utils.uuid_util import UUIDUtil from tests.agrirouter.common.data_provider import DataProvider from tests.agrirouter.common.sleeper import Sleeper from tests.agrirouter.data.identifier import Identifier @@ -81,7 +81,7 @@ def send_message_before_the_test_run(self): send_message_parameters = SendMessageParameters( onboarding_response=self._sender_onboard_response, technical_message_type=CapabilityType.IMG_PNG.value, - application_message_id=new_uuid(), + application_message_id=UUIDUtil.new_uuid(), application_message_seq_no=current_sequence_number, recipients=[self._recipient_onboard_response.get_sensor_alternate_id()], base64_message_content=DataProvider.read_base64_encoded_image(), @@ -107,7 +107,7 @@ def _delete_messages_after_test_run(self, onboard_response: OnboardResponse): delete_message_parameters = FeedDeleteParameters( onboarding_response=onboard_response, - application_message_id=new_uuid(), + application_message_id=UUIDUtil.new_uuid(), application_message_seq_no=current_sequence_number, senders=[self._sender_onboard_response.get_sensor_alternate_id()] ) @@ -131,7 +131,7 @@ def test_feed_confirm_service_for_valid_message_id_should_return_the_message_for on_message_callback=self._feed_confirm_service_callback()) feed_confirm_parameters = FeedConfirmParameters(message_ids=[self._received_messages.header.message_id], - application_message_id=new_uuid(), + application_message_id=UUIDUtil.new_uuid(), application_message_seq_no=current_sequence_number, onboarding_response=self._recipient_onboard_response) @@ -157,8 +157,8 @@ def test_feed_confirm_service_for_incorrect_message_id_should_return_an_empty_me onboarding_response=self._recipient_onboard_response, on_message_callback=self._empty_result_in_response_callback()) - feed_confirm_parameters = FeedConfirmParameters(message_ids=[new_uuid()], - application_message_id=new_uuid(), + feed_confirm_parameters = FeedConfirmParameters(message_ids=[UUIDUtil.new_uuid()], + application_message_id=UUIDUtil.new_uuid(), application_message_seq_no=current_sequence_number, onboarding_response=self._recipient_onboard_response) @@ -184,8 +184,8 @@ def test_feed_confirm_service_for_multiple_invalid_message_ids_should_return_emp onboarding_response=self._recipient_onboard_response, on_message_callback=self._empty_result_in_response_callback()) - feed_confirm_parameters = FeedConfirmParameters(message_ids=[new_uuid(), new_uuid()], - application_message_id=new_uuid(), + feed_confirm_parameters = FeedConfirmParameters(message_ids=[UUIDUtil.new_uuid(), UUIDUtil.new_uuid()], + application_message_id=UUIDUtil.new_uuid(), application_message_seq_no=current_sequence_number, onboarding_response=self._recipient_onboard_response) diff --git a/tests/agrirouter/service/messaging/mqtt/test_feed_delete_service.py b/tests/agrirouter/service/messaging/mqtt/test_feed_delete_service.py index 5cee7f97..f11efcba 100644 --- a/tests/agrirouter/service/messaging/mqtt/test_feed_delete_service.py +++ b/tests/agrirouter/service/messaging/mqtt/test_feed_delete_service.py @@ -12,7 +12,7 @@ from agrirouter.messaging.services.messaging import SendMessageService, SendMessageParameters, FeedDeleteService from agrirouter.messaging.services.sequence_number_service import SequenceNumberService from agrirouter.utils.utc_time_util import UtcTimeUtil -from agrirouter.utils.uuid_util import new_uuid +from agrirouter.utils.uuid_util import UUIDUtil from tests.agrirouter.common.data_provider import DataProvider from tests.agrirouter.common.sleeper import Sleeper from tests.agrirouter.data.identifier import Identifier @@ -76,7 +76,7 @@ def send_message_before_the_test_run(self): send_message_parameters = SendMessageParameters( onboarding_response=self._sender_onboard_response, technical_message_type=CapabilityType.IMG_PNG.value, - application_message_id=new_uuid(), + application_message_id=UUIDUtil.new_uuid(), application_message_seq_no=current_sequence_number, recipients=[self._recipient_onboard_response.get_sensor_alternate_id()], base64_message_content=DataProvider.read_base64_encoded_image(), @@ -104,7 +104,7 @@ def test_delete_messages_for_specified_sender_id_should_delete_the_message_from_ delete_message_parameters = FeedDeleteParameters( onboarding_response=self._recipient_onboard_response, - application_message_id=new_uuid(), + application_message_id=UUIDUtil.new_uuid(), application_message_seq_no=current_sequence_number, senders=[self._sender_onboard_response.get_sensor_alternate_id()] ) @@ -133,7 +133,7 @@ def test_delete_messages_for_specified_message_id_should_delete_the_message_from delete_message_parameters = FeedDeleteParameters( onboarding_response=self._recipient_onboard_response, - application_message_id=new_uuid(), + application_message_id=UUIDUtil.new_uuid(), application_message_seq_no=current_sequence_number, message_ids=[self._received_messages.header.message_id] ) @@ -162,7 +162,7 @@ def test_delete_messages_for_given_validity_period_should_delete_the_messages_fr delete_message_parameters = FeedDeleteParameters( onboarding_response=self._recipient_onboard_response, - application_message_id=new_uuid(), + application_message_id=UUIDUtil.new_uuid(), application_message_seq_no=current_sequence_number, validity_period=UtcTimeUtil.max_validity_period() ) @@ -191,9 +191,9 @@ def test_delete_messages_for_incorrect_message_id_should_return_empty_message(se delete_message_parameters = FeedDeleteParameters( onboarding_response=self._recipient_onboard_response, - application_message_id=new_uuid(), + application_message_id=UUIDUtil.new_uuid(), application_message_seq_no=current_sequence_number, - message_ids=[new_uuid()] + message_ids=[UUIDUtil.new_uuid()] ) delete_message_service = FeedDeleteService(self._messaging_service_for_recipient) @@ -220,9 +220,9 @@ def test_delete_messages_for_incorrect_sender_id_should_return_empty_message(sel delete_message_parameters = FeedDeleteParameters( onboarding_response=self._recipient_onboard_response, - application_message_id=new_uuid(), + application_message_id=UUIDUtil.new_uuid(), application_message_seq_no=current_sequence_number, - senders=[new_uuid()] + senders=[UUIDUtil.new_uuid()] ) delete_message_service = FeedDeleteService(self._messaging_service_for_recipient) @@ -249,7 +249,7 @@ def test_delete_messages_for_invalid_validity_period_should_return_empty_message delete_message_parameters = FeedDeleteParameters( onboarding_response=self._recipient_onboard_response, - application_message_id=new_uuid(), + application_message_id=UUIDUtil.new_uuid(), application_message_seq_no=current_sequence_number, validity_period=UtcTimeUtil.validity_period_for_seconds(5) ) @@ -278,7 +278,7 @@ def test_delete_messages_for_incomplete_attributes_should_return_in_an_error(sel delete_message_parameters = FeedDeleteParameters( onboarding_response=self._recipient_onboard_response, - application_message_id=new_uuid(), + application_message_id=UUIDUtil.new_uuid(), application_message_seq_no=current_sequence_number, validity_period=UtcTimeUtil.validity_period_for_seconds(5) ) diff --git a/tests/agrirouter/service/messaging/mqtt/test_list_endpoints_service.py b/tests/agrirouter/service/messaging/mqtt/test_list_endpoints_service.py index 93efbbcd..e4b1952a 100644 --- a/tests/agrirouter/service/messaging/mqtt/test_list_endpoints_service.py +++ b/tests/agrirouter/service/messaging/mqtt/test_list_endpoints_service.py @@ -10,7 +10,7 @@ from agrirouter.messaging.services.commons import MqttMessagingService from agrirouter.messaging.services.messaging import ListEndpointsService from agrirouter.messaging.services.sequence_number_service import SequenceNumberService -from agrirouter.utils.uuid_util import new_uuid +from agrirouter.utils.uuid_util import UUIDUtil from tests.agrirouter.common.sleeper import Sleeper from tests.agrirouter.data.identifier import Identifier from tests.agrirouter.data.onboard_response_integration_service import read_onboard_response @@ -52,7 +52,7 @@ def test_list_endpoints_service_with_unfiltered_endpoints_list_should_return_the onboarding_response=self._recipient_onboard_response, on_message_callback=self._list_endpoints_service_callback()) - list_endpoints_parameters = ListEndpointsParameters(application_message_id=new_uuid(), + list_endpoints_parameters = ListEndpointsParameters(application_message_id=UUIDUtil.new_uuid(), application_message_seq_no=current_sequence_number, onboarding_response=self._recipient_onboard_response, filtered=True, @@ -84,7 +84,7 @@ def test_list_endpoints_service_with_filtered_endpoints_list_should_return_the_e onboarding_response=self._recipient_onboard_response, on_message_callback=self._list_endpoints_service_callback()) - list_endpoints_parameters = ListEndpointsParameters(application_message_id=new_uuid(), + list_endpoints_parameters = ListEndpointsParameters(application_message_id=UUIDUtil.new_uuid(), application_message_seq_no=current_sequence_number, onboarding_response=self._recipient_onboard_response, filtered=True, @@ -117,7 +117,7 @@ def test_list_endpoints_without_filters_should_return_all_the_available_endpoint onboarding_response=self._recipient_onboard_response, on_message_callback=self._list_endpoints_service_for_all_endpoints_callback()) - list_endpoints_parameters = ListEndpointsParameters(application_message_id=new_uuid(), + list_endpoints_parameters = ListEndpointsParameters(application_message_id=UUIDUtil.new_uuid(), application_message_seq_no=current_sequence_number, onboarding_response=self._recipient_onboard_response, ) diff --git a/tests/agrirouter/service/messaging/mqtt/test_publish_message_service.py b/tests/agrirouter/service/messaging/mqtt/test_publish_message_service.py index bfefc179..a54c12c7 100644 --- a/tests/agrirouter/service/messaging/mqtt/test_publish_message_service.py +++ b/tests/agrirouter/service/messaging/mqtt/test_publish_message_service.py @@ -12,7 +12,7 @@ from agrirouter.messaging.services.messaging import SendMessageService, SendMessageParameters, FeedDeleteService from agrirouter.messaging.services.sequence_number_service import SequenceNumberService from agrirouter.onboarding.response import OnboardResponse -from agrirouter.utils.uuid_util import new_uuid +from agrirouter.utils.uuid_util import UUIDUtil from tests.agrirouter.common.data_provider import DataProvider from tests.agrirouter.common.sleeper import Sleeper from tests.agrirouter.data.identifier import Identifier @@ -72,7 +72,7 @@ def test_given_valid_message_content_when_sending_message_to_single_recipient_th send_message_parameters = SendMessageParameters( onboarding_response=self._sender, technical_message_type=CapabilityType.IMG_PNG.value, - application_message_id=new_uuid(), + application_message_id=UUIDUtil.new_uuid(), application_message_seq_no=current_sequence_number, base64_message_content=DataProvider.read_base64_encoded_image(), mode=RequestEnvelope.Mode.Value("PUBLISH")) @@ -151,7 +151,7 @@ def delete_all_messages_within_the_feed(self, onboard_response: OnboardResponse) delete_message_parameters = FeedDeleteParameters( onboarding_response=onboard_response, - application_message_id=new_uuid(), + application_message_id=UUIDUtil.new_uuid(), application_message_seq_no=current_sequence_number, senders=[self._sender.get_sensor_alternate_id()] ) diff --git a/tests/agrirouter/service/messaging/mqtt/test_query_header_service.py b/tests/agrirouter/service/messaging/mqtt/test_query_header_service.py index a24c32f9..3b32012a 100644 --- a/tests/agrirouter/service/messaging/mqtt/test_query_header_service.py +++ b/tests/agrirouter/service/messaging/mqtt/test_query_header_service.py @@ -15,7 +15,7 @@ from agrirouter.messaging.services.sequence_number_service import SequenceNumberService from agrirouter.onboarding.response import OnboardResponse from agrirouter.utils.utc_time_util import UtcTimeUtil -from agrirouter.utils.uuid_util import new_uuid +from agrirouter.utils.uuid_util import UUIDUtil from tests.agrirouter.common.data_provider import DataProvider from tests.agrirouter.common.sleeper import Sleeper from tests.agrirouter.data.identifier import Identifier @@ -85,7 +85,7 @@ def send_message_before_the_test_run(self): send_message_parameters = SendMessageParameters( onboarding_response=self._sender_onboard_response, technical_message_type=CapabilityType.IMG_PNG.value, - application_message_id=new_uuid(), + application_message_id=UUIDUtil.new_uuid(), application_message_seq_no=current_sequence_number, recipients=[self._recipient_onboard_response.get_sensor_alternate_id()], base64_message_content=DataProvider.read_base64_encoded_image(), @@ -144,7 +144,7 @@ def _delete_messages_after_test_run(self, onboard_response: OnboardResponse): delete_message_parameters = FeedDeleteParameters( onboarding_response=onboard_response, - application_message_id=new_uuid(), + application_message_id=UUIDUtil.new_uuid(), application_message_seq_no=current_sequence_number, senders=[self._sender_onboard_response.get_sensor_alternate_id()] ) @@ -163,7 +163,7 @@ def test_header_query_service_when_validity_period_is_specified_should_return_me current_sequence_number = SequenceNumberService.next_seq_nr( self._recipient_onboard_response.get_sensor_alternate_id()) - query_header_parameters = QueryHeaderParameters(application_message_id=new_uuid(), + query_header_parameters = QueryHeaderParameters(application_message_id=UUIDUtil.new_uuid(), application_message_seq_no=current_sequence_number, onboarding_response=self._recipient_onboard_response, validity_period=UtcTimeUtil.max_validity_period(), @@ -197,7 +197,7 @@ def test_header_query_service_when_senders_is_specified_should_return_the_header onboarding_response=self._recipient_onboard_response, on_message_callback=self._on_query_header_service_callback(None)) - query_header_parameters = QueryHeaderParameters(application_message_id=new_uuid(), + query_header_parameters = QueryHeaderParameters(application_message_id=UUIDUtil.new_uuid(), application_message_seq_no=current_sequence_number, onboarding_response=self._recipient_onboard_response, senders=[ @@ -230,7 +230,7 @@ def test_header_query_service_for_specific_message_ids_should_return_the_message onboarding_response=self._recipient_onboard_response, on_message_callback=self._on_query_header_service_callback(message_for_message_ids)) - query_header_parameters = QueryHeaderParameters(application_message_id=new_uuid(), + query_header_parameters = QueryHeaderParameters(application_message_id=UUIDUtil.new_uuid(), application_message_seq_no=current_sequence_number, onboarding_response=self._recipient_onboard_response, message_ids=message_for_message_ids, @@ -258,7 +258,7 @@ def test_header_query_service_for_incomplete_attributes_should_return_in_an_erro onboarding_response=self._recipient_onboard_response, on_message_callback=self._incomplete_attributes_callback()) - query_header_parameters = QueryHeaderParameters(application_message_id=new_uuid(), + query_header_parameters = QueryHeaderParameters(application_message_id=UUIDUtil.new_uuid(), application_message_seq_no=current_sequence_number, onboarding_response=self._recipient_onboard_response, ) @@ -285,10 +285,10 @@ def test_header_query_service_for_incorrect_message_ids_should_return_empty_mess onboarding_response=self._recipient_onboard_response, on_message_callback=self._empty_result_in_response_callback()) - query_header_parameters = QueryHeaderParameters(application_message_id=new_uuid(), + query_header_parameters = QueryHeaderParameters(application_message_id=UUIDUtil.new_uuid(), application_message_seq_no=current_sequence_number, onboarding_response=self._recipient_onboard_response, - message_ids=[new_uuid()], + message_ids=[UUIDUtil.new_uuid()], ) query_header_service = QueryHeaderService(self._messaging_service_for_recipient) @@ -313,10 +313,10 @@ def test_header_query_service_for_incorrect_sender_id_should_return_empty_messag onboarding_response=self._recipient_onboard_response, on_message_callback=self._empty_result_in_response_callback()) - query_header_parameters = QueryHeaderParameters(application_message_id=new_uuid(), + query_header_parameters = QueryHeaderParameters(application_message_id=UUIDUtil.new_uuid(), application_message_seq_no=current_sequence_number, onboarding_response=self._recipient_onboard_response, - senders=[new_uuid()], + senders=[UUIDUtil.new_uuid()], ) query_header_service = QueryHeaderService(self._messaging_service_for_recipient) @@ -340,7 +340,7 @@ def test_header_query_service_for_incorrect_validity_period_should_return_empty_ _messaging_service = MqttMessagingService(onboarding_response=self._recipient_onboard_response, on_message_callback=self._empty_result_in_response_callback()) - query_header_parameters = QueryHeaderParameters(application_message_id=new_uuid(), + query_header_parameters = QueryHeaderParameters(application_message_id=UUIDUtil.new_uuid(), application_message_seq_no=current_sequence_number, onboarding_response=self._recipient_onboard_response, validity_period=UtcTimeUtil.validity_period_for_seconds(5), diff --git a/tests/agrirouter/service/messaging/mqtt/test_query_message_service.py b/tests/agrirouter/service/messaging/mqtt/test_query_message_service.py index c520912d..1d2d607f 100644 --- a/tests/agrirouter/service/messaging/mqtt/test_query_message_service.py +++ b/tests/agrirouter/service/messaging/mqtt/test_query_message_service.py @@ -15,7 +15,7 @@ from agrirouter.messaging.services.sequence_number_service import SequenceNumberService from agrirouter.onboarding.response import OnboardResponse from agrirouter.utils.utc_time_util import UtcTimeUtil -from agrirouter.utils.uuid_util import new_uuid +from agrirouter.utils.uuid_util import UUIDUtil from tests.agrirouter.common.data_provider import DataProvider from tests.agrirouter.common.sleeper import Sleeper from tests.agrirouter.data.identifier import Identifier @@ -85,7 +85,7 @@ def send_message_before_the_test_run(self): send_message_parameters = SendMessageParameters( onboarding_response=self._sender_onboard_response, technical_message_type=CapabilityType.IMG_PNG.value, - application_message_id=new_uuid(), + application_message_id=UUIDUtil.new_uuid(), application_message_seq_no=current_sequence_number, recipients=[self._recipient_onboard_response.get_sensor_alternate_id()], base64_message_content=DataProvider.read_base64_encoded_image(), @@ -111,7 +111,7 @@ def _delete_messages_after_test_run(self, onboard_response: OnboardResponse): delete_message_parameters = FeedDeleteParameters( onboarding_response=onboard_response, - application_message_id=new_uuid(), + application_message_id=UUIDUtil.new_uuid(), application_message_seq_no=current_sequence_number, senders=[self._sender_onboard_response.get_sensor_alternate_id()] ) @@ -135,7 +135,7 @@ def test_message_query_service_when_validity_period_is_specified_should_return_t onboarding_response=self._recipient_onboard_response, on_message_callback=self._on_query_message_service_callback([self._received_messages.header.message_id])) - query_message_parameters = QueryMessageParameters(application_message_id=new_uuid(), + query_message_parameters = QueryMessageParameters(application_message_id=UUIDUtil.new_uuid(), application_message_seq_no=current_sequence_number, onboarding_response=self._recipient_onboard_response, validity_period=UtcTimeUtil.max_validity_period(), @@ -163,7 +163,7 @@ def test_message_query_service_when_sender_is_specified_should_return_the_messag onboarding_response=self._recipient_onboard_response, on_message_callback=self._on_query_message_service_callback(None)) - query_message_parameters = QueryMessageParameters(application_message_id=new_uuid(), + query_message_parameters = QueryMessageParameters(application_message_id=UUIDUtil.new_uuid(), application_message_seq_no=current_sequence_number, onboarding_response=self._recipient_onboard_response, senders=[ @@ -192,7 +192,7 @@ def test_message_query_service_when_message_id_is_specified_should_return_the_me onboarding_response=self._recipient_onboard_response, on_message_callback=self._on_query_message_service_callback([self._received_messages.header.message_id])) - query_message_parameters = QueryMessageParameters(application_message_id=new_uuid(), + query_message_parameters = QueryMessageParameters(application_message_id=UUIDUtil.new_uuid(), application_message_seq_no=current_sequence_number, onboarding_response=self._recipient_onboard_response, message_ids=[ @@ -221,10 +221,10 @@ def test_query_message_service_for_incorrect_message_ids_should_return_empty_mes onboarding_response=self._recipient_onboard_response, on_message_callback=self._empty_result_in_response_callback()) - query_message_parameters = QueryMessageParameters(application_message_id=new_uuid(), + query_message_parameters = QueryMessageParameters(application_message_id=UUIDUtil.new_uuid(), application_message_seq_no=current_sequence_number, onboarding_response=self._recipient_onboard_response, - message_ids=[new_uuid()], + message_ids=[UUIDUtil.new_uuid()], ) query_message_service = QueryMessagesService(self._messaging_service_for_recipient) @@ -249,10 +249,10 @@ def test_query_message_service_for_incorrect_sender_ids_should_return_empty_mess onboarding_response=self._recipient_onboard_response, on_message_callback=self._empty_result_in_response_callback()) - query_message_parameters = QueryMessageParameters(application_message_id=new_uuid(), + query_message_parameters = QueryMessageParameters(application_message_id=UUIDUtil.new_uuid(), application_message_seq_no=current_sequence_number, onboarding_response=self._recipient_onboard_response, - senders=[new_uuid()], + senders=[UUIDUtil.new_uuid()], ) query_message_service = QueryMessagesService(self._messaging_service_for_recipient) @@ -277,7 +277,7 @@ def test_query_message_service_for_incorrect_validity_period_should_return_empty onboarding_response=self._recipient_onboard_response, on_message_callback=self._empty_result_in_response_callback()) - query_message_parameters = QueryMessageParameters(application_message_id=new_uuid(), + query_message_parameters = QueryMessageParameters(application_message_id=UUIDUtil.new_uuid(), application_message_seq_no=current_sequence_number, onboarding_response=self._recipient_onboard_response, validity_period=UtcTimeUtil.validity_period_for_seconds( diff --git a/tests/agrirouter/service/messaging/mqtt/test_send_and_receive_chunked_messages_from_the_feed.py b/tests/agrirouter/service/messaging/mqtt/test_send_and_receive_chunked_messages_from_the_feed.py index e4b14f3d..364adb21 100644 --- a/tests/agrirouter/service/messaging/mqtt/test_send_and_receive_chunked_messages_from_the_feed.py +++ b/tests/agrirouter/service/messaging/mqtt/test_send_and_receive_chunked_messages_from_the_feed.py @@ -16,7 +16,7 @@ from agrirouter.messaging.services.messaging import FeedDeleteService, SendChunkedMessageService, QueryHeaderService from agrirouter.messaging.services.sequence_number_service import SequenceNumberService from agrirouter.onboarding.response import OnboardResponse -from agrirouter.utils.uuid_util import new_uuid +from agrirouter.utils.uuid_util import UUIDUtil from tests.agrirouter.common.data_provider import DataProvider from tests.agrirouter.common.sleeper import Sleeper from tests.agrirouter.data.identifier import Identifier @@ -74,7 +74,7 @@ def _delete_messages_after_test_run(self, onboard_response: OnboardResponse): delete_message_parameters = FeedDeleteParameters( onboarding_response=onboard_response, - application_message_id=new_uuid(), + application_message_id=UUIDUtil.new_uuid(), application_message_seq_no=current_sequence_number, senders=[self._sender.get_sensor_alternate_id()] ) @@ -104,7 +104,7 @@ def _send_direct_chunked_message(self): current_sequence_number = SequenceNumberService.next_seq_nr( self._recipient.get_sensor_alternate_id()) - message_header_parameters = MessageHeaderParameters(application_message_id=new_uuid(), + message_header_parameters = MessageHeaderParameters(application_message_id=UUIDUtil.new_uuid(), application_message_seq_no=current_sequence_number, technical_message_type=CapabilityType.IMG_BMP.value, recipients=[ @@ -129,7 +129,7 @@ def _send_direct_chunked_message(self): chunk_message_parameters = ChunkedMessageParameters( onboarding_response=self._sender, technical_message_type=CapabilityType.IMG_BMP.value, - application_message_id=new_uuid(), + application_message_id=UUIDUtil.new_uuid(), application_message_seq_no=current_sequence_number, recipients=[self._recipient.get_sensor_alternate_id()], encoded_chunked_messages=encoded_chunked_messages) @@ -154,7 +154,7 @@ def test_receive_chunked_msgs_from_feed_when_sender_id_is_specified_should_retur onboarding_response=self._recipient, on_message_callback=self._on_query_header_service_callback(self._received_messages)) - query_header_parameters = QueryHeaderParameters(application_message_id=new_uuid(), + query_header_parameters = QueryHeaderParameters(application_message_id=UUIDUtil.new_uuid(), application_message_seq_no=current_sequence_number, onboarding_response=self._recipient, senders=[ diff --git a/tests/agrirouter/service/messaging/mqtt/test_send_chunked_messages_and_receive_with_push_notifications.py b/tests/agrirouter/service/messaging/mqtt/test_send_chunked_messages_and_receive_with_push_notifications.py index f84b81c3..2a26c2ec 100644 --- a/tests/agrirouter/service/messaging/mqtt/test_send_chunked_messages_and_receive_with_push_notifications.py +++ b/tests/agrirouter/service/messaging/mqtt/test_send_chunked_messages_and_receive_with_push_notifications.py @@ -15,7 +15,7 @@ from agrirouter.messaging.services.messaging import FeedDeleteService, SendChunkedMessageService from agrirouter.messaging.services.sequence_number_service import SequenceNumberService from agrirouter.onboarding.response import OnboardResponse -from agrirouter.utils.uuid_util import new_uuid +from agrirouter.utils.uuid_util import UUIDUtil from tests.agrirouter.common.data_provider import DataProvider from tests.agrirouter.common.sleeper import Sleeper from tests.agrirouter.data.identifier import Identifier @@ -70,7 +70,7 @@ def _delete_messages_after_test_run(self, onboard_response: OnboardResponse): delete_message_parameters = FeedDeleteParameters( onboarding_response=onboard_response, - application_message_id=new_uuid(), + application_message_id=UUIDUtil.new_uuid(), application_message_seq_no=current_sequence_number, senders=[self._sender.get_sensor_alternate_id()] ) @@ -100,7 +100,7 @@ def test_send_direct_chunked_message_with_valid_recipient_should_return_the_vali current_sequence_number = SequenceNumberService.next_seq_nr( self._recipient.get_sensor_alternate_id()) - message_header_parameters = MessageHeaderParameters(application_message_id=new_uuid(), + message_header_parameters = MessageHeaderParameters(application_message_id=UUIDUtil.new_uuid(), application_message_seq_no=current_sequence_number, technical_message_type=CapabilityType.IMG_BMP.value, recipients=[ @@ -128,7 +128,7 @@ def test_send_direct_chunked_message_with_valid_recipient_should_return_the_vali chunk_message_parameters = ChunkedMessageParameters( onboarding_response=self._sender, technical_message_type=CapabilityType.IMG_BMP.value, - application_message_id=new_uuid(), + application_message_id=UUIDUtil.new_uuid(), application_message_seq_no=current_sequence_number, recipients=[self._recipient.get_sensor_alternate_id()], encoded_chunked_messages=encoded_chunked_messages) diff --git a/tests/agrirouter/service/messaging/mqtt/test_send_direct_message_service.py b/tests/agrirouter/service/messaging/mqtt/test_send_direct_message_service.py index 8f1629c6..812eb578 100644 --- a/tests/agrirouter/service/messaging/mqtt/test_send_direct_message_service.py +++ b/tests/agrirouter/service/messaging/mqtt/test_send_direct_message_service.py @@ -12,7 +12,7 @@ from agrirouter.messaging.services.messaging import SendMessageService, SendMessageParameters, FeedDeleteService from agrirouter.messaging.services.sequence_number_service import SequenceNumberService from agrirouter.onboarding.response import OnboardResponse -from agrirouter.utils.uuid_util import new_uuid +from agrirouter.utils.uuid_util import UUIDUtil from tests.agrirouter.common.data_provider import DataProvider from tests.agrirouter.common.sleeper import Sleeper from tests.agrirouter.data.identifier import Identifier @@ -72,7 +72,7 @@ def test_given_valid_message_content_when_sending_message_to_single_recipient_th send_message_parameters = SendMessageParameters( onboarding_response=self._sender, technical_message_type=CapabilityType.IMG_PNG.value, - application_message_id=new_uuid(), + application_message_id=UUIDUtil.new_uuid(), application_message_seq_no=current_sequence_number, recipients=[self._recipient.get_sensor_alternate_id()], base64_message_content=DataProvider.read_base64_encoded_image(), @@ -153,7 +153,7 @@ def delete_all_messages_within_the_feed(self, onboard_response: OnboardResponse) delete_message_parameters = FeedDeleteParameters( onboarding_response=onboard_response, - application_message_id=new_uuid(), + application_message_id=UUIDUtil.new_uuid(), application_message_seq_no=current_sequence_number, senders=[self._sender.get_sensor_alternate_id()] ) diff --git a/tests/agrirouter/service/messaging/mqtt/test_subscription_service.py b/tests/agrirouter/service/messaging/mqtt/test_subscription_service.py index 5d34c460..52bbb334 100644 --- a/tests/agrirouter/service/messaging/mqtt/test_subscription_service.py +++ b/tests/agrirouter/service/messaging/mqtt/test_subscription_service.py @@ -12,7 +12,7 @@ from agrirouter.messaging.services.commons import MqttMessagingService from agrirouter.messaging.services.messaging import SubscriptionService, CapabilitiesService from agrirouter.messaging.services.sequence_number_service import SequenceNumberService -from agrirouter.utils.uuid_util import new_uuid +from agrirouter.utils.uuid_util import UUIDUtil from tests.agrirouter.common.sleeper import Sleeper from tests.agrirouter.data.applications import CommunicationUnit from tests.agrirouter.data.identifier import Identifier @@ -44,7 +44,7 @@ def _send_capabilities(self): self._onboard_response.get_sensor_alternate_id()) capabilities_parameters = CapabilitiesParameters( onboarding_response=self._onboard_response, - application_message_id=new_uuid(), + application_message_id=UUIDUtil.new_uuid(), application_message_seq_no=current_sequence_number, application_id=CommunicationUnit.application_id, certification_version_id=CommunicationUnit.certification_version_id, @@ -103,7 +103,7 @@ def test_when_sending_subscriptions_for_pem_recipient_then_the_server_should_acc subscription_parameters = SubscriptionParameters( subscription_items=[subscription_item], onboarding_response=self._onboard_response, - application_message_id=new_uuid(), + application_message_id=UUIDUtil.new_uuid(), application_message_seq_no=current_sequence_number, ) subscription_service.send(subscription_parameters) From d9c66c3b4549398d6d04d6c3d2b92e5367d96fb9 Mon Sep 17 00:00:00 2001 From: Sascha Doemer Date: Thu, 2 May 2024 16:30:21 +0200 Subject: [PATCH 11/17] Refactor environment handling and file structure The 'environments.py' file was renamed to 'env.py' and EnvironmentService class is now inside 'api/env.py'. References to the old file structure were updated accordingly across multiple modules to ensure correct importing. The 'environmental_services.py' was deleted after moving its content to 'env.py'. --- .../api/{environments.py => env.py} | 24 ++++++++++++++++++ src/agrirouter/api/exceptions.py | 2 +- src/agrirouter/auth/auth.py | 2 +- src/agrirouter/environments/__init__.py | 0 .../environments/environmental_services.py | 25 ------------------- src/agrirouter/onboarding/onboarding.py | 4 +-- src/agrirouter/revoking/revoking.py | 2 +- .../fixtures/update_http_onboard_responses.py | 2 +- .../fixtures/update_mqtt_onboard_responses.py | 2 +- tests/agrirouter/internal/auth/test_auth.py | 2 +- .../test_environmental_services.py | 6 ++--- .../environments/test_environments.py | 6 ++--- .../internal/onboarding/test_onboarding.py | 2 +- .../onboarding/test_request_onboarding.py | 2 +- 14 files changed, 40 insertions(+), 41 deletions(-) rename src/agrirouter/api/{environments.py => env.py} (79%) delete mode 100644 src/agrirouter/environments/__init__.py delete mode 100644 src/agrirouter/environments/environmental_services.py diff --git a/src/agrirouter/api/environments.py b/src/agrirouter/api/env.py similarity index 79% rename from src/agrirouter/api/environments.py rename to src/agrirouter/api/env.py index e56fd24e..11f0e60f 100644 --- a/src/agrirouter/api/environments.py +++ b/src/agrirouter/api/env.py @@ -63,3 +63,27 @@ class Qa(BaseEnvironment): _API_PREFIX = "/api/v1.0" _REGISTRATION_SERVICE_URL = "https://agrirouter-registration-service-hubqa-eu10.cfapps.eu10.hana.ondemand.com" _AR_PUBLIC_KEY = AR_QA_PUBLIC_KEY + + +class EnvironmentalService: + """ + A class that provides environmental services based on the provided environment value. + + Attributes: + - _environment (Environment): The current environment. + """ + + def __init__(self, env: BaseEnvironment): + self._set_env(env) + + def _set_env(self, env) -> None: + """ + Sets the environment based on the provided value. + + Parameters: + - env (str): The desired environment value. Must be one of the following: `qa` or `production`. + + Raises: + - InvalidEnvironmentSetup: If the provided environment value is not valid. + """ + self._environment = env diff --git a/src/agrirouter/api/exceptions.py b/src/agrirouter/api/exceptions.py index 610fe2dd..4c2640fd 100644 --- a/src/agrirouter/api/exceptions.py +++ b/src/agrirouter/api/exceptions.py @@ -15,7 +15,7 @@ class BadAuthResponse(AgrirouterBaseException): class InvalidEnvironmentSetup(AgrirouterBaseException): _message = "Invalid value of env parameter. [QA] or [Production] values are allowed. " \ - "Please use environments.enums.Environments enum for configure environment properly" + "Please use env.enums.Environments enum for configure environment properly" class TypeUrlNotFound(AgrirouterBaseException): diff --git a/src/agrirouter/auth/auth.py b/src/agrirouter/auth/auth.py index ff32ea75..bce5371e 100644 --- a/src/agrirouter/auth/auth.py +++ b/src/agrirouter/auth/auth.py @@ -2,7 +2,7 @@ from agrirouter.auth.parameters import AuthUrlParameter from agrirouter.auth.response import AuthResponse -from agrirouter.environments.environmental_services import EnvironmentalService +from agrirouter.api.env import EnvironmentalService class Authorization(EnvironmentalService): diff --git a/src/agrirouter/environments/__init__.py b/src/agrirouter/environments/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/src/agrirouter/environments/environmental_services.py b/src/agrirouter/environments/environmental_services.py deleted file mode 100644 index bf95c756..00000000 --- a/src/agrirouter/environments/environmental_services.py +++ /dev/null @@ -1,25 +0,0 @@ -from agrirouter.api.environments import BaseEnvironment - - -class EnvironmentalService: - """ - A class that provides environmental services based on the provided environment value. - - Attributes: - - _environment (Environment): The current environment. - """ - - def __init__(self, env: BaseEnvironment): - self._set_env(env) - - def _set_env(self, env) -> None: - """ - Sets the environment based on the provided value. - - Parameters: - - env (str): The desired environment value. Must be one of the following: `qa` or `production`. - - Raises: - - InvalidEnvironmentSetup: If the provided environment value is not valid. - """ - self._environment = env diff --git a/src/agrirouter/onboarding/onboarding.py b/src/agrirouter/onboarding/onboarding.py index 7470ca4a..b8a00bcb 100644 --- a/src/agrirouter/onboarding/onboarding.py +++ b/src/agrirouter/onboarding/onboarding.py @@ -1,8 +1,8 @@ import requests -from agrirouter.api.environments import BaseEnvironment +from agrirouter.api.env import BaseEnvironment from agrirouter.api.exceptions import UnexpectedErrorDuringOnboarding, RequestNotSigned -from agrirouter.environments.environmental_services import EnvironmentalService +from agrirouter.api.env import EnvironmentalService from agrirouter.onboarding.headers import SoftwareOnboardingHeader from agrirouter.onboarding.parameters import OnboardParameters from agrirouter.onboarding.request import OnboardRequest diff --git a/src/agrirouter/revoking/revoking.py b/src/agrirouter/revoking/revoking.py index 469947b5..618a540f 100644 --- a/src/agrirouter/revoking/revoking.py +++ b/src/agrirouter/revoking/revoking.py @@ -1,6 +1,6 @@ import requests -from agrirouter.environments.environmental_services import EnvironmentalService +from agrirouter.api.env import EnvironmentalService from agrirouter.api.exceptions import RequestNotSigned from agrirouter.revoking.headers import RevokingHeader from agrirouter.revoking.parameters import RevokingParameter diff --git a/tests/agrirouter/fixtures/update_http_onboard_responses.py b/tests/agrirouter/fixtures/update_http_onboard_responses.py index c10786ec..f30f179a 100644 --- a/tests/agrirouter/fixtures/update_http_onboard_responses.py +++ b/tests/agrirouter/fixtures/update_http_onboard_responses.py @@ -4,7 +4,7 @@ import pytest from agrirouter.api.enums import CapabilityType, CapabilityDirectionType -from agrirouter.api.environments import Qa +from agrirouter.api.env import Qa from agrirouter.generated.messaging.request.payload.endpoint.capabilities_pb2 import CapabilitySpecification from agrirouter.messaging.parameters.service import CapabilitiesParameters from agrirouter.messaging.services.commons import HttpMessagingService diff --git a/tests/agrirouter/fixtures/update_mqtt_onboard_responses.py b/tests/agrirouter/fixtures/update_mqtt_onboard_responses.py index b6c9a26e..673cc5c8 100644 --- a/tests/agrirouter/fixtures/update_mqtt_onboard_responses.py +++ b/tests/agrirouter/fixtures/update_mqtt_onboard_responses.py @@ -1,7 +1,7 @@ import pytest from agrirouter.api.enums import CapabilityType, CapabilityDirectionType -from agrirouter.api.environments import Qa +from agrirouter.api.env import Qa from agrirouter.generated.messaging.request.payload.endpoint.capabilities_pb2 import CapabilitySpecification from agrirouter.messaging.decode import DecodingService from agrirouter.messaging.messages import OutboxMessage diff --git a/tests/agrirouter/internal/auth/test_auth.py b/tests/agrirouter/internal/auth/test_auth.py index 31a482f0..58b24dc7 100644 --- a/tests/agrirouter/internal/auth/test_auth.py +++ b/tests/agrirouter/internal/auth/test_auth.py @@ -1,5 +1,5 @@ """Tests agrirouter/auth/auth.py""" -from agrirouter.api.environments import Qa +from agrirouter.api.env import Qa from agrirouter.auth.auth import AuthUrlParameter from agrirouter.auth.auth import Authorization from tests.agrirouter.common.constants import ( diff --git a/tests/agrirouter/internal/environments/test_environmental_services.py b/tests/agrirouter/internal/environments/test_environmental_services.py index d0681868..84e21f22 100644 --- a/tests/agrirouter/internal/environments/test_environmental_services.py +++ b/tests/agrirouter/internal/environments/test_environmental_services.py @@ -1,7 +1,7 @@ -"""Test src/environments/environmental_services.py""" +"""Test src/env/environmental_services.py""" -from src.agrirouter.api.environments import Qa, Production -from src.agrirouter.environments.environmental_services import EnvironmentalService +from src.agrirouter.api.env import Qa, Production +from src.agrirouter.env.environmental_services import EnvironmentalService def test_arclient_set_env(): diff --git a/tests/agrirouter/internal/environments/test_environments.py b/tests/agrirouter/internal/environments/test_environments.py index ae073e71..f49c1d68 100644 --- a/tests/agrirouter/internal/environments/test_environments.py +++ b/tests/agrirouter/internal/environments/test_environments.py @@ -1,7 +1,7 @@ -"""Test src/environments/environments.py""" +"""Test src/env/env.py""" -from src.agrirouter.api.environments import Production -from src.agrirouter.api.environments import Qa +from src.agrirouter.api.env import Production +from src.agrirouter.api.env import Qa from tests.agrirouter.common.constants import APPLICATION_ID diff --git a/tests/agrirouter/internal/onboarding/test_onboarding.py b/tests/agrirouter/internal/onboarding/test_onboarding.py index bc491d24..8bc23c50 100644 --- a/tests/agrirouter/internal/onboarding/test_onboarding.py +++ b/tests/agrirouter/internal/onboarding/test_onboarding.py @@ -2,7 +2,7 @@ import pytest -from agrirouter.api.environments import Qa +from agrirouter.api.env import Qa from agrirouter.api.exceptions import WrongCertificationType, WrongGateWayType from agrirouter.api.enums import Gateways, CertificateTypes from agrirouter.onboarding.onboarding import SecuredOnboardingService diff --git a/tests/agrirouter/internal/onboarding/test_request_onboarding.py b/tests/agrirouter/internal/onboarding/test_request_onboarding.py index 00a63a99..463f06a6 100644 --- a/tests/agrirouter/internal/onboarding/test_request_onboarding.py +++ b/tests/agrirouter/internal/onboarding/test_request_onboarding.py @@ -1,5 +1,5 @@ """Test src/onboarding/request.py""" -from agrirouter.api.environments import Qa +from agrirouter.api.env import Qa from agrirouter.api.enums import Gateways, CertificateTypes from agrirouter.onboarding.onboarding import SecuredOnboardingService from agrirouter.onboarding.parameters import OnboardParameters From 26a3f7d5be5a1f4242851849b84f2481c8a20d72 Mon Sep 17 00:00:00 2001 From: Sascha Doemer Date: Thu, 2 May 2024 16:32:03 +0200 Subject: [PATCH 12/17] Refactor constants and keys management in agrirouter API This commit consolidates the handling of constants and keys within the agrirouter API. The 'mqtt_connection_mode.py' file has been deleted, and its ASYNC/SYNC constants moved into the '#constants.py' file. References to these keys and constants across the API have been updated to reflect the changes. --- src/agrirouter/api/{keys.py => constants.py} | 4 ++++ src/agrirouter/api/env.py | 2 +- src/agrirouter/api/mqtt_connection_mode.py | 2 -- src/agrirouter/messaging/clients/mqtt.py | 2 +- 4 files changed, 6 insertions(+), 4 deletions(-) rename src/agrirouter/api/{keys.py => constants.py} (97%) delete mode 100644 src/agrirouter/api/mqtt_connection_mode.py diff --git a/src/agrirouter/api/keys.py b/src/agrirouter/api/constants.py similarity index 97% rename from src/agrirouter/api/keys.py rename to src/agrirouter/api/constants.py index 7ed3a292..f26114a7 100644 --- a/src/agrirouter/api/keys.py +++ b/src/agrirouter/api/constants.py @@ -17,3 +17,7 @@ "GNASOOHju7ewlYjkyGIRxxAoc3C0w5dg1qlLiAFWToYwgDOcUpLRjU/7bzGiGvp8\n" \ "RwIDAQAB\n" \ "-----END PUBLIC KEY-----" + +ASYNC = "ASYNC" + +SYNC = "SYNC" diff --git a/src/agrirouter/api/env.py b/src/agrirouter/api/env.py index 11f0e60f..202c7b43 100644 --- a/src/agrirouter/api/env.py +++ b/src/agrirouter/api/env.py @@ -1,4 +1,4 @@ -from agrirouter.api.keys import AR_QA_PUBLIC_KEY, AR_PROD_PUBLIC_KEY +from agrirouter.api.constants import AR_QA_PUBLIC_KEY, AR_PROD_PUBLIC_KEY class BaseEnvironment: diff --git a/src/agrirouter/api/mqtt_connection_mode.py b/src/agrirouter/api/mqtt_connection_mode.py deleted file mode 100644 index 78de8628..00000000 --- a/src/agrirouter/api/mqtt_connection_mode.py +++ /dev/null @@ -1,2 +0,0 @@ -ASYNC = "ASYNC" -SYNC = "SYNC" diff --git a/src/agrirouter/messaging/clients/mqtt.py b/src/agrirouter/messaging/clients/mqtt.py index 52453045..a6f6da85 100644 --- a/src/agrirouter/messaging/clients/mqtt.py +++ b/src/agrirouter/messaging/clients/mqtt.py @@ -6,7 +6,7 @@ import paho.mqtt.client as mqtt_client from paho.mqtt.client import MQTTv31, MQTTMessageInfo -from agrirouter.api.mqtt_connection_mode import SYNC, ASYNC +from agrirouter.api.constants import SYNC, ASYNC from agrirouter.messaging.certification import CertificationService From ef3812329c623a483ab612c3d6676fd740b6a9a2 Mon Sep 17 00:00:00 2001 From: Sascha Doemer Date: Thu, 2 May 2024 17:14:55 +0200 Subject: [PATCH 13/17] Refactored package structure and rearranged onboarding and messaging components. The package structure has been rearranged to improve code organization. The agrirouter 'onboarding' and 'messaging' modules were moved into a new 'service' module. As part of this reorganization, various code files were renamed and moved to new locations. This refactoring enhances the structure of the code and makes it easier to navigate and maintain. The naming and organization of components are now more logical, reflecting their associated responsibilities. --- example_script.py | 14 +- src/agrirouter/api/env.py | 2 +- src/agrirouter/{messaging => api}/messages.py | 4 +- .../builders.py => api/messaging_builders.py} | 0 src/agrirouter/messaging/result.py | 52 ----- src/agrirouter/onboarding/headers.py | 42 ---- src/agrirouter/onboarding/request.py | 43 ---- src/agrirouter/onboarding/request_body.py | 69 ------ src/agrirouter/revoking/headers.py | 25 -- src/agrirouter/revoking/request.py | 34 --- src/agrirouter/revoking/request_body.py | 34 --- src/agrirouter/{auth => service}/__init__.py | 0 .../auth.py => service/authorization.py} | 8 +- .../{messaging => service}/certification.py | 2 +- .../{messaging => service/client}/__init__.py | 0 .../clients => service/client}/http.py | 4 +- .../clients => service/client}/mqtt.py | 2 +- .../clients => service/dto}/__init__.py | 0 .../dto.py => service/dto/messaging.py} | 4 +- .../dto/request}/__init__.py | 0 .../dto/request/authorization.py} | 0 .../dto/request/messaging.py} | 0 .../service/dto/request/onboarding.py | 148 ++++++++++++ .../service/dto/request/revoking.py | 93 ++++++++ .../dto/response}/__init__.py | 0 .../dto/response/authorization.py} | 4 +- .../dto/response/messaging.py} | 53 ++++- .../dto/response/onboarding.py} | 0 .../dto/response/revoking.py} | 0 .../http => service/messaging}/__init__.py | 0 .../services => service/messaging}/cloud.py | 12 +- .../messaging/common.py} | 18 +- .../messaging/decoding.py} | 4 +- .../messaging/encoding.py} | 20 +- .../messaging/http}/__init__.py | 0 .../messaging/http/message_fetching.py} | 4 +- .../messaging/message_sending.py} | 30 +-- .../messaging/sequence_numbers.py} | 0 .../{onboarding => service}/onboarding.py | 11 +- .../parameter}/__init__.py | 0 .../parameter/authorization.py} | 0 .../parameter/messaging.py} | 215 +++++++++++++++++- .../parameter/onboarding.py} | 2 +- .../parameter/revoking.py} | 0 .../{revoking => service}/revoking.py | 13 +- .../{onboarding => service}/signature.py | 0 src/agrirouter/{utils => util}/__init__.py | 0 src/agrirouter/{utils => util}/type_url.py | 0 .../{utils => util}/utc_time_util.py | 0 src/agrirouter/{utils => util}/uuid_util.py | 0 tests/agrirouter/common/onboarding.py | 6 +- .../onboard_response_integration_service.py | 2 +- .../fixtures/update_http_onboard_responses.py | 12 +- .../fixtures/update_mqtt_onboard_responses.py | 14 +- tests/agrirouter/internal/auth/test_auth.py | 14 +- .../agrirouter/internal/auth/test_auth_dto.py | 4 +- .../agrirouter/internal/auth/test_response.py | 4 +- .../internal/messaging/test_decode.py | 2 +- .../internal/messaging/test_encode.py | 6 +- .../internal/messaging/test_request.py | 6 +- .../internal/onboarding/test_headers.py | 4 +- .../internal/onboarding/test_onboarding.py | 4 +- .../onboarding/test_onboarding_dto.py | 4 +- .../onboarding/test_request_onboarding.py | 6 +- .../internal/onboarding/test_signature.py | 2 +- .../internal/revoking/test_parameters.py | 4 +- .../messaging/mqtt/test_capability_service.py | 14 +- .../mqtt/test_feed_confirm_service.py | 18 +- .../mqtt/test_feed_delete_service.py | 16 +- .../mqtt/test_list_endpoints_service.py | 14 +- .../mqtt/test_publish_message_service.py | 16 +- .../mqtt/test_query_header_service.py | 18 +- .../mqtt/test_query_message_service.py | 18 +- ..._receive_chunked_messages_from_the_feed.py | 20 +- ...ges_and_receive_with_push_notifications.py | 20 +- .../mqtt/test_send_direct_message_service.py | 16 +- .../mqtt/test_subscription_service.py | 14 +- 77 files changed, 722 insertions(+), 522 deletions(-) rename src/agrirouter/{messaging => api}/messages.py (96%) rename src/agrirouter/{messaging/builders.py => api/messaging_builders.py} (100%) delete mode 100644 src/agrirouter/messaging/result.py delete mode 100644 src/agrirouter/onboarding/headers.py delete mode 100644 src/agrirouter/onboarding/request.py delete mode 100644 src/agrirouter/onboarding/request_body.py delete mode 100644 src/agrirouter/revoking/headers.py delete mode 100644 src/agrirouter/revoking/request.py delete mode 100644 src/agrirouter/revoking/request_body.py rename src/agrirouter/{auth => service}/__init__.py (100%) rename src/agrirouter/{auth/auth.py => service/authorization.py} (81%) rename src/agrirouter/{messaging => service}/certification.py (89%) rename src/agrirouter/{messaging => service/client}/__init__.py (100%) rename src/agrirouter/{messaging/clients => service/client}/http.py (94%) rename src/agrirouter/{messaging/clients => service/client}/mqtt.py (98%) rename src/agrirouter/{messaging/clients => service/dto}/__init__.py (100%) rename src/agrirouter/{messaging/parameters/dto.py => service/dto/messaging.py} (98%) rename src/agrirouter/{messaging/parameters => service/dto/request}/__init__.py (100%) rename src/agrirouter/{auth/dto.py => service/dto/request/authorization.py} (100%) rename src/agrirouter/{messaging/request.py => service/dto/request/messaging.py} (100%) create mode 100644 src/agrirouter/service/dto/request/onboarding.py create mode 100644 src/agrirouter/service/dto/request/revoking.py rename src/agrirouter/{messaging/services => service/dto/response}/__init__.py (100%) rename src/agrirouter/{auth/response.py => service/dto/response/authorization.py} (94%) rename src/agrirouter/{onboarding/response.py => service/dto/response/messaging.py} (79%) rename src/agrirouter/{onboarding/dto.py => service/dto/response/onboarding.py} (100%) rename src/agrirouter/{revoking/response.py => service/dto/response/revoking.py} (100%) rename src/agrirouter/{messaging/services/http => service/messaging}/__init__.py (100%) rename src/agrirouter/{messaging/services => service/messaging}/cloud.py (87%) rename src/agrirouter/{messaging/services/commons.py => service/messaging/common.py} (87%) rename src/agrirouter/{messaging/decode.py => service/messaging/decoding.py} (96%) rename src/agrirouter/{messaging/encode.py => service/messaging/encoding.py} (92%) rename src/agrirouter/{onboarding => service/messaging/http}/__init__.py (100%) rename src/agrirouter/{messaging/services/http/fetch_message_service.py => service/messaging/http/message_fetching.py} (84%) rename src/agrirouter/{messaging/services/messaging.py => service/messaging/message_sending.py} (95%) rename src/agrirouter/{messaging/services/sequence_number_service.py => service/messaging/sequence_numbers.py} (100%) rename src/agrirouter/{onboarding => service}/onboarding.py (89%) rename src/agrirouter/{revoking => service/parameter}/__init__.py (100%) rename src/agrirouter/{auth/parameters.py => service/parameter/authorization.py} (100%) rename src/agrirouter/{messaging/parameters/service.py => service/parameter/messaging.py} (72%) rename src/agrirouter/{onboarding/parameters.py => service/parameter/onboarding.py} (96%) rename src/agrirouter/{revoking/parameters.py => service/parameter/revoking.py} (100%) rename src/agrirouter/{revoking => service}/revoking.py (76%) rename src/agrirouter/{onboarding => service}/signature.py (100%) rename src/agrirouter/{utils => util}/__init__.py (100%) rename src/agrirouter/{utils => util}/type_url.py (100%) rename src/agrirouter/{utils => util}/utc_time_util.py (100%) rename src/agrirouter/{utils => util}/uuid_util.py (100%) diff --git a/example_script.py b/example_script.py index 9b847445..01c6ab86 100644 --- a/example_script.py +++ b/example_script.py @@ -1,21 +1,21 @@ import time import agrirouter as ar from agrirouter.api.enums import CapabilityType -from agrirouter.messaging.parameters.service import QueryHeaderParameters, ListEndpointsParameters, \ +from agrirouter.service.parameter.messaging import QueryHeaderParameters, ListEndpointsParameters, \ CapabilitiesParameters, SubscriptionParameters -from agrirouter.messaging.services.messaging import QueryHeaderService, ListEndpointsService, CapabilitiesService, \ +from agrirouter.service.messaging import QueryHeaderService, ListEndpointsService, CapabilitiesService, \ SubscriptionService from agrirouter.api.enums import Gateways from agrirouter.generated.messaging.request.payload.endpoint.subscription_pb2 import Subscription from agrirouter.generated.messaging.request.payload.endpoint.capabilities_pb2 import CapabilitySpecification -from agrirouter.messaging.services.commons import HttpMessagingService, MqttMessagingService -from agrirouter.utils.uuid_util import UUIDUtil +from agrirouter.service.messaging import HttpMessagingService, MqttMessagingService +from agrirouter.util.uuid_util import UUIDUtil from google.protobuf.timestamp_pb2 import Timestamp from agrirouter.generated.messaging.request.payload.account.endpoints_pb2 import ListEndpointsQuery from agrirouter.generated.messaging.request.payload.feed.feed_requests_pb2 import ValidityPeriod -from agrirouter.onboarding.response import OnboardResponse +from agrirouter.service.onboarding import OnboardResponse public_key = """-----BEGIN PUBLIC KEY----- MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzGt41/+kSOTlO1sJvLIN @@ -300,8 +300,8 @@ def example_query_header_message_mqtt(onboarding_response_data, on_msg_callback) def on_message_callback(client, userdata, msg): # Define here the way receiving messages will be processed - from agrirouter.messaging.decode import DecodingService - from agrirouter.messaging.messages import OutboxMessage + from agrirouter.service.messaging.decoding import DecodingService + from agrirouter.api.messages import OutboxMessage outbox_message = OutboxMessage() outbox_message.json_deserialize(msg.payload.decode().replace("'", '"')) diff --git a/src/agrirouter/api/env.py b/src/agrirouter/api/env.py index 202c7b43..64b7cc58 100644 --- a/src/agrirouter/api/env.py +++ b/src/agrirouter/api/env.py @@ -67,7 +67,7 @@ class Qa(BaseEnvironment): class EnvironmentalService: """ - A class that provides environmental services based on the provided environment value. + A class that provides environmental messaging based on the provided environment value. Attributes: - _environment (Environment): The current environment. diff --git a/src/agrirouter/messaging/messages.py b/src/agrirouter/api/messages.py similarity index 96% rename from src/agrirouter/messaging/messages.py rename to src/agrirouter/api/messages.py index fd245ea1..8160a180 100644 --- a/src/agrirouter/messaging/messages.py +++ b/src/agrirouter/api/messages.py @@ -2,7 +2,7 @@ from typing import Union, Dict from agrirouter.api.exceptions import WrongField -from agrirouter.utils.utc_time_util import UtcTimeUtil +from agrirouter.util.utc_time_util import UtcTimeUtil class EncodedMessage: @@ -115,7 +115,7 @@ def set_command(self, command: Command) -> None: class MessageParameterTuple: """ - Class used to form a tuple of header and payload parameters + Class used to form a tuple of header and payload parameter """ def __init__(self, message_header_parameters, message_payload_parameters): diff --git a/src/agrirouter/messaging/builders.py b/src/agrirouter/api/messaging_builders.py similarity index 100% rename from src/agrirouter/messaging/builders.py rename to src/agrirouter/api/messaging_builders.py diff --git a/src/agrirouter/messaging/result.py b/src/agrirouter/messaging/result.py deleted file mode 100644 index cf42f1c8..00000000 --- a/src/agrirouter/messaging/result.py +++ /dev/null @@ -1,52 +0,0 @@ -import json -from typing import List, Union - -from agrirouter.messaging.messages import OutboxMessage - - -class MessagingResult: - def __init__(self, messages_ids: List): - self.messages_ids = messages_ids - - def set_messages_ids(self, messages_ids): - self.messages_ids = messages_ids - - def get_messages_ids(self): - return self.messages_ids - - -class OutboxResponse: - def __init__(self, - status_code: int = None, - messages: List[OutboxMessage] = None - ): - self.status_code = status_code - self.messages = messages if messages else [] - - def json_deserialize(self, data: Union[list, str]): - messages = data if type(data) == list else json.loads(data) - outbox_message_list = [] - for message in messages: - outbox_message = OutboxMessage() - outbox_message.json_deserialize(message) - outbox_message_list.append(outbox_message) - - self.set_messages(outbox_message_list) - - def get_status_code(self) -> int: - return self.status_code - - def set_status_code(self, status_code: int) -> None: - self.status_code = status_code - - def get_messages(self) -> List[OutboxMessage]: - return self.messages - - def set_messages(self, messages: List[OutboxMessage]) -> None: - self.messages = messages - - def add_messages(self, message: OutboxMessage) -> None: - self.messages.append(message) - - def extend_messages(self, messages: List[OutboxMessage]) -> None: - self.messages.extend(messages) diff --git a/src/agrirouter/onboarding/headers.py b/src/agrirouter/onboarding/headers.py deleted file mode 100644 index b09101c8..00000000 --- a/src/agrirouter/onboarding/headers.py +++ /dev/null @@ -1,42 +0,0 @@ -import logging - -from agrirouter.api.enums import ContentTypes, RequestHeaders -from agrirouter.api.exceptions import MissingRegistrationCode - - -class SoftwareOnboardingHeader: - def __init__(self, - reg_code: str, - application_id: str = None, - signature: str = None, - content_type=ContentTypes.APPLICATION_JSON.value - ): - self._set_params(reg_code, content_type, application_id, signature) - - def get_header(self) -> dict: - return self.params - - def sign(self, signature: str): - self.params[RequestHeaders.X_AGRIROUTER_SIGNATURE.value] = signature - - def _set_params(self, reg_code: str, content_type: str, application_id: str, signature: str = None): - header = dict() - - if reg_code: - header[RequestHeaders.AUTHORIZATION.value] = f"Bearer {reg_code}" - else: - raise MissingRegistrationCode("Registration code is required") - - if content_type: - header[RequestHeaders.CONTENT_TYPE.value] = content_type - else: - logging.warning("Content-Type not set, defaulting to application/json") - header[RequestHeaders.CONTENT_TYPE.value] = ContentTypes.APPLICATION_JSON.value - - if application_id: - header[RequestHeaders.X_AGRIROUTER_APPLICATION_ID.value] = application_id - - if signature: - header[RequestHeaders.X_AGRIROUTER_SIGNATURE.value] = signature if signature else "" - - self.params = header diff --git a/src/agrirouter/onboarding/request.py b/src/agrirouter/onboarding/request.py deleted file mode 100644 index 18726e0e..00000000 --- a/src/agrirouter/onboarding/request.py +++ /dev/null @@ -1,43 +0,0 @@ -from agrirouter.api.enums import RequestHeaders -from agrirouter.onboarding.headers import SoftwareOnboardingHeader -from agrirouter.onboarding.parameters import OnboardParameters -from agrirouter.onboarding.request_body import SoftwareOnboardingBody -from agrirouter.onboarding.signature import SignatureService - - -class OnboardRequest: - def __init__(self, header: SoftwareOnboardingHeader, body: SoftwareOnboardingBody): - self.header = header - self.body = body - - @classmethod - def from_onboard_parameters(cls, params: OnboardParameters) -> 'OnboardRequest': - body_params = params.get_body_params() - request_body = SoftwareOnboardingBody(**body_params) - - header_params = params.get_header_params() - request_header = SoftwareOnboardingHeader(**header_params) - - return cls(header=request_header, body=request_body) - - def get_data(self): - return self.body.get_parameters() - - def get_header(self): - return self.header.get_header() - - def get_body_content(self): - return self.body.json().replace("\n", "") - - def sign(self, private_key, public_key): - body = self.get_body_content() - signature = SignatureService.create_signature(body, private_key) - SignatureService.verify_signature(body, bytes.fromhex(signature), public_key) - self.header.sign(signature) - - @property - def is_signed(self): - header_has_signature = self.get_header().get(RequestHeaders.X_AGRIROUTER_SIGNATURE.value, None) - if header_has_signature: - return True - return False diff --git a/src/agrirouter/onboarding/request_body.py b/src/agrirouter/onboarding/request_body.py deleted file mode 100644 index 436f44ff..00000000 --- a/src/agrirouter/onboarding/request_body.py +++ /dev/null @@ -1,69 +0,0 @@ -import json -from datetime import datetime - -from agrirouter.api.exceptions import WrongCertificationType, WrongGateWayType -from agrirouter.api.enums import CertificateTypes, Gateways - - -class SoftwareOnboardingBody: - def __init__(self, - *, - id_, - application_id, - certification_version_id, - gateway_id, - certificate_type, - time_zone=None, - utc_timestamp=None - ): - - self._validate_certificate_type(certificate_type) - self._validate_gateway_id(gateway_id) - - utc_timestamp = utc_timestamp if utc_timestamp else datetime.utcnow().strftime("%Y-%m-%dT%H:%M:%S.%fZ") - - self._set_params( - id_, - application_id, - certification_version_id, - gateway_id, - certificate_type, - utc_timestamp, - time_zone - ) - - def get_parameters(self) -> dict: - return self.params - - def _set_params(self, - id_, - application_id, - certification_version_id, - gateway_id, - certificate_type, - utc_timestamp=None, - time_zone=None - ): - - self.params = { - "id": id_, - "applicationId": application_id, - "certificationVersionId": certification_version_id, - "gatewayId": gateway_id, - "certificateType": certificate_type, - "UTCTimestamp": utc_timestamp, - "timeZone": time_zone, - } - - def json(self) -> str: - return json.dumps(self.get_parameters(), separators=(',', ':')) - - @staticmethod - def _validate_certificate_type(certificate_type: str) -> None: - if certificate_type not in CertificateTypes.values_list(): - raise WrongCertificationType - - @staticmethod - def _validate_gateway_id(gateway_id: str) -> None: - if gateway_id not in Gateways.values_list(): - raise WrongGateWayType diff --git a/src/agrirouter/revoking/headers.py b/src/agrirouter/revoking/headers.py deleted file mode 100644 index 24e90226..00000000 --- a/src/agrirouter/revoking/headers.py +++ /dev/null @@ -1,25 +0,0 @@ -from agrirouter.api.enums import ContentTypes - - -class RevokingHeader: - def __init__(self, - application_id, - signature=None, - content_type=ContentTypes.APPLICATION_JSON.value - ): - self._set_params(application_id, signature, content_type) - - def get_header(self) -> dict: - return self.params - - def sign(self, signatute): - self.params["X-Agrirouter-Signature"] = signatute - - def _set_params(self, application_id: str, signature: str, content_type: str): - header = dict() - header["Content-Type"] = content_type - header["X-Agrirouter-ApplicationId"] = application_id - if signature: - header["X-Agrirouter-Signature"] = signature - - self.params = header diff --git a/src/agrirouter/revoking/request.py b/src/agrirouter/revoking/request.py deleted file mode 100644 index c3213404..00000000 --- a/src/agrirouter/revoking/request.py +++ /dev/null @@ -1,34 +0,0 @@ -from agrirouter.onboarding.signature import SignatureService -from agrirouter.revoking.headers import RevokingHeader -from agrirouter.revoking.request_body import RevokingBody - - -class RevokingRequest: - def __init__(self, header: RevokingHeader, body: RevokingBody, url: str): - self.header = header - self.body = body - self.url = url - - def get_url(self): - return self.url - - def get_data(self): - return self.body.get_parameters() - - def get_header(self): - return self.header.get_header() - - def get_body_content(self): - return self.body.json().replace("\n", "") - - def sign(self, private_key): - body = self.get_body_content() - signature = SignatureService.create_signature(body, private_key) - self.header.sign(signature) - - @property - def is_signed(self) -> bool: - header_has_signature = self.get_header().get("X-Agrirouter-Signature", None) - if header_has_signature: - return True - return False diff --git a/src/agrirouter/revoking/request_body.py b/src/agrirouter/revoking/request_body.py deleted file mode 100644 index 776a2c81..00000000 --- a/src/agrirouter/revoking/request_body.py +++ /dev/null @@ -1,34 +0,0 @@ -import json - - -class RevokingBody: - def __init__(self, - account_id, - endpoint_ids, - utc_timestamp, - time_zone): - self._set_params( - account_id, - endpoint_ids, - utc_timestamp, - time_zone - ) - - def get_parameters(self) -> dict: - return self.params - - def _set_params(self, - account_id, - endpoint_ids, - utc_timestamp, - time_zone - ) -> None: - self.params = { - "accountId": account_id, - "endpointIds": endpoint_ids, - "UTCTimestamp": utc_timestamp, - "timeZone": time_zone, - } - - def json(self) -> str: - return json.dumps(self.get_parameters(), separators=(',', ':')) diff --git a/src/agrirouter/auth/__init__.py b/src/agrirouter/service/__init__.py similarity index 100% rename from src/agrirouter/auth/__init__.py rename to src/agrirouter/service/__init__.py diff --git a/src/agrirouter/auth/auth.py b/src/agrirouter/service/authorization.py similarity index 81% rename from src/agrirouter/auth/auth.py rename to src/agrirouter/service/authorization.py index bce5371e..3c4a5cd3 100644 --- a/src/agrirouter/auth/auth.py +++ b/src/agrirouter/service/authorization.py @@ -1,11 +1,11 @@ from urllib.parse import urlparse, parse_qs -from agrirouter.auth.parameters import AuthUrlParameter -from agrirouter.auth.response import AuthResponse +from agrirouter.service.parameter.authorization import AuthUrlParameter +from agrirouter.service.dto.response.authorization import AuthResponse from agrirouter.api.env import EnvironmentalService -class Authorization(EnvironmentalService): +class AuthorizationService(EnvironmentalService): SIGNATURE_KEY = "signature" STATE_KEY = "state" TOKEN_KEY = "token" @@ -14,7 +14,7 @@ class Authorization(EnvironmentalService): def __init__(self, env, public_key, private_key): self._public_key = public_key self._private_key = private_key - super(Authorization, self).__init__(env) + super(AuthorizationService, self).__init__(env) def get_auth_request_url(self, parameters: AuthUrlParameter) -> str: auth_parameters = parameters.get_parameters() diff --git a/src/agrirouter/messaging/certification.py b/src/agrirouter/service/certification.py similarity index 89% rename from src/agrirouter/messaging/certification.py rename to src/agrirouter/service/certification.py index 1c2a7d27..35e7092d 100644 --- a/src/agrirouter/messaging/certification.py +++ b/src/agrirouter/service/certification.py @@ -1,7 +1,7 @@ import os import tempfile -from agrirouter.onboarding.response import OnboardResponse +from agrirouter.service.dto.response.onboarding import OnboardResponse class CertificationService: diff --git a/src/agrirouter/messaging/__init__.py b/src/agrirouter/service/client/__init__.py similarity index 100% rename from src/agrirouter/messaging/__init__.py rename to src/agrirouter/service/client/__init__.py diff --git a/src/agrirouter/messaging/clients/http.py b/src/agrirouter/service/client/http.py similarity index 94% rename from src/agrirouter/messaging/clients/http.py rename to src/agrirouter/service/client/http.py index 24f35343..7842552f 100644 --- a/src/agrirouter/messaging/clients/http.py +++ b/src/agrirouter/service/client/http.py @@ -4,8 +4,8 @@ import ssl from urllib.parse import urlparse -from agrirouter.messaging.certification import CertificationService -from agrirouter.onboarding.response import OnboardResponse +from agrirouter.service.certification import CertificationService +from agrirouter.service.dto.response.onboarding import OnboardResponse class HttpClient: diff --git a/src/agrirouter/messaging/clients/mqtt.py b/src/agrirouter/service/client/mqtt.py similarity index 98% rename from src/agrirouter/messaging/clients/mqtt.py rename to src/agrirouter/service/client/mqtt.py index a6f6da85..6bdf12b6 100644 --- a/src/agrirouter/messaging/clients/mqtt.py +++ b/src/agrirouter/service/client/mqtt.py @@ -7,7 +7,7 @@ from paho.mqtt.client import MQTTv31, MQTTMessageInfo from agrirouter.api.constants import SYNC, ASYNC -from agrirouter.messaging.certification import CertificationService +from agrirouter.service.certification import CertificationService class MqttClient: diff --git a/src/agrirouter/messaging/clients/__init__.py b/src/agrirouter/service/dto/__init__.py similarity index 100% rename from src/agrirouter/messaging/clients/__init__.py rename to src/agrirouter/service/dto/__init__.py diff --git a/src/agrirouter/messaging/parameters/dto.py b/src/agrirouter/service/dto/messaging.py similarity index 98% rename from src/agrirouter/messaging/parameters/dto.py rename to src/agrirouter/service/dto/messaging.py index 71d4e1d8..b6658469 100644 --- a/src/agrirouter/messaging/parameters/dto.py +++ b/src/agrirouter/service/dto/messaging.py @@ -2,8 +2,8 @@ from typing import List from agrirouter.generated.commons.chunk_pb2 import ChunkComponent -from agrirouter.messaging.messages import EncodedMessage -from agrirouter.onboarding.response import BaseOnboardingResponse +from agrirouter.api.messages import EncodedMessage +from agrirouter.service.dto.response.onboarding import BaseOnboardingResponse class Parameters: diff --git a/src/agrirouter/messaging/parameters/__init__.py b/src/agrirouter/service/dto/request/__init__.py similarity index 100% rename from src/agrirouter/messaging/parameters/__init__.py rename to src/agrirouter/service/dto/request/__init__.py diff --git a/src/agrirouter/auth/dto.py b/src/agrirouter/service/dto/request/authorization.py similarity index 100% rename from src/agrirouter/auth/dto.py rename to src/agrirouter/service/dto/request/authorization.py diff --git a/src/agrirouter/messaging/request.py b/src/agrirouter/service/dto/request/messaging.py similarity index 100% rename from src/agrirouter/messaging/request.py rename to src/agrirouter/service/dto/request/messaging.py diff --git a/src/agrirouter/service/dto/request/onboarding.py b/src/agrirouter/service/dto/request/onboarding.py new file mode 100644 index 00000000..01bec442 --- /dev/null +++ b/src/agrirouter/service/dto/request/onboarding.py @@ -0,0 +1,148 @@ +import json +import logging +from datetime import datetime + +from agrirouter.api.enums import RequestHeaders, CertificateTypes, Gateways, ContentTypes +from agrirouter.api.exceptions import WrongCertificationType, WrongGateWayType, MissingRegistrationCode +from agrirouter.service.signature import SignatureService +from agrirouter.service.parameter.onboarding import OnboardParameters + + +class SoftwareOnboardingHeader: + def __init__(self, + reg_code: str, + application_id: str = None, + signature: str = None, + content_type=ContentTypes.APPLICATION_JSON.value + ): + self._set_params(reg_code, content_type, application_id, signature) + + def get_header(self) -> dict: + return self.params + + def sign(self, signature: str): + self.params[RequestHeaders.X_AGRIROUTER_SIGNATURE.value] = signature + + def _set_params(self, reg_code: str, content_type: str, application_id: str, signature: str = None): + header = dict() + + if reg_code: + header[RequestHeaders.AUTHORIZATION.value] = f"Bearer {reg_code}" + else: + raise MissingRegistrationCode("Registration code is required") + + if content_type: + header[RequestHeaders.CONTENT_TYPE.value] = content_type + else: + logging.warning("Content-Type not set, defaulting to application/json") + header[RequestHeaders.CONTENT_TYPE.value] = ContentTypes.APPLICATION_JSON.value + + if application_id: + header[RequestHeaders.X_AGRIROUTER_APPLICATION_ID.value] = application_id + + if signature: + header[RequestHeaders.X_AGRIROUTER_SIGNATURE.value] = signature if signature else "" + + self.params = header + + +class SoftwareOnboardingBody: + def __init__(self, + *, + id_, + application_id, + certification_version_id, + gateway_id, + certificate_type, + time_zone=None, + utc_timestamp=None + ): + + self._validate_certificate_type(certificate_type) + self._validate_gateway_id(gateway_id) + + utc_timestamp = utc_timestamp if utc_timestamp else datetime.utcnow().strftime("%Y-%m-%dT%H:%M:%S.%fZ") + + self._set_params( + id_, + application_id, + certification_version_id, + gateway_id, + certificate_type, + utc_timestamp, + time_zone + ) + + def get_parameters(self) -> dict: + return self.params + + def _set_params(self, + id_, + application_id, + certification_version_id, + gateway_id, + certificate_type, + utc_timestamp=None, + time_zone=None + ): + + self.params = { + "id": id_, + "applicationId": application_id, + "certificationVersionId": certification_version_id, + "gatewayId": gateway_id, + "certificateType": certificate_type, + "UTCTimestamp": utc_timestamp, + "timeZone": time_zone, + } + + def json(self) -> str: + return json.dumps(self.get_parameters(), separators=(',', ':')) + + @staticmethod + def _validate_certificate_type(certificate_type: str) -> None: + if certificate_type not in CertificateTypes.values_list(): + raise WrongCertificationType + + @staticmethod + def _validate_gateway_id(gateway_id: str) -> None: + if gateway_id not in Gateways.values_list(): + raise WrongGateWayType + + +class OnboardRequest: + def __init__(self, header: SoftwareOnboardingHeader, body: SoftwareOnboardingBody): + self.header = header + self.body = body + + @classmethod + def from_onboard_parameters(cls, params: OnboardParameters) -> 'OnboardRequest': + body_params = params.get_body_params() + request_body = SoftwareOnboardingBody(**body_params) + + header_params = params.get_header_params() + request_header = SoftwareOnboardingHeader(**header_params) + + return cls(header=request_header, body=request_body) + + def get_data(self): + return self.body.get_parameters() + + def get_header(self): + return self.header.get_header() + + def get_body_content(self): + return self.body.json().replace("\n", "") + + def sign(self, private_key, public_key): + body = self.get_body_content() + signature = SignatureService.create_signature(body, private_key) + SignatureService.verify_signature(body, bytes.fromhex(signature), public_key) + self.header.sign(signature) + + @property + def is_signed(self): + header_has_signature = self.get_header().get(RequestHeaders.X_AGRIROUTER_SIGNATURE.value, None) + if header_has_signature: + return True + return False diff --git a/src/agrirouter/service/dto/request/revoking.py b/src/agrirouter/service/dto/request/revoking.py new file mode 100644 index 00000000..c4dc32e7 --- /dev/null +++ b/src/agrirouter/service/dto/request/revoking.py @@ -0,0 +1,93 @@ +import json + +from agrirouter.api.enums import ContentTypes +from agrirouter.service.signature import SignatureService + + +class RevokingHeader: + def __init__(self, + application_id, + signature=None, + content_type=ContentTypes.APPLICATION_JSON.value + ): + self._set_params(application_id, signature, content_type) + + def get_header(self) -> dict: + return self.params + + def sign(self, signatute): + self.params["X-Agrirouter-Signature"] = signatute + + def _set_params(self, application_id: str, signature: str, content_type: str): + header = dict() + header["Content-Type"] = content_type + header["X-Agrirouter-ApplicationId"] = application_id + if signature: + header["X-Agrirouter-Signature"] = signature + + self.params = header + + +class RevokingBody: + def __init__(self, + account_id, + endpoint_ids, + utc_timestamp, + time_zone): + self._set_params( + account_id, + endpoint_ids, + utc_timestamp, + time_zone + ) + + def get_parameters(self) -> dict: + return self.params + + def _set_params(self, + account_id, + endpoint_ids, + utc_timestamp, + time_zone + ) -> None: + self.params = { + "accountId": account_id, + "endpointIds": endpoint_ids, + "UTCTimestamp": utc_timestamp, + "timeZone": time_zone, + } + + def json(self) -> str: + return json.dumps(self.get_parameters(), separators=(',', ':')) + + +class RevokingRequest: + + def __init__(self, header: RevokingHeader, body: RevokingBody, url: str): + self.header = header + self.body = body + self.url = url + + def get_url(self): + return self.url + + def get_data(self): + return self.body.get_parameters() + + def get_header(self): + return self.header.get_header() + + def get_body_content(self): + return self.body.json().replace("\n", "") + + def sign(self, private_key): + body = self.get_body_content() + signature = SignatureService.create_signature(body, private_key) + self.header.sign(signature) + + @property + def is_signed(self) -> bool: + header_has_signature = self.get_header().get("X-Agrirouter-Signature", None) + if header_has_signature: + return True + return False diff --git a/src/agrirouter/messaging/services/__init__.py b/src/agrirouter/service/dto/response/__init__.py similarity index 100% rename from src/agrirouter/messaging/services/__init__.py rename to src/agrirouter/service/dto/response/__init__.py diff --git a/src/agrirouter/auth/response.py b/src/agrirouter/service/dto/response/authorization.py similarity index 94% rename from src/agrirouter/auth/response.py rename to src/agrirouter/service/dto/response/authorization.py index df7f63dd..6cfc8d2f 100644 --- a/src/agrirouter/auth/response.py +++ b/src/agrirouter/service/dto/response/authorization.py @@ -5,8 +5,8 @@ from cryptography.exceptions import InvalidSignature -from agrirouter.auth.dto import AuthorizationToken, AuthorizationResultUrl -from agrirouter.onboarding.signature import SignatureService +from agrirouter.service.dto.request.authorization import AuthorizationToken, AuthorizationResultUrl +from agrirouter.service.signature import SignatureService class AuthResponse: diff --git a/src/agrirouter/onboarding/response.py b/src/agrirouter/service/dto/response/messaging.py similarity index 79% rename from src/agrirouter/onboarding/response.py rename to src/agrirouter/service/dto/response/messaging.py index 78b0f53c..0b1841ac 100644 --- a/src/agrirouter/onboarding/response.py +++ b/src/agrirouter/service/dto/response/messaging.py @@ -1,10 +1,59 @@ import json -from typing import Union +from typing import List, Union from requests import Response from agrirouter.api.exceptions import WrongField -from agrirouter.onboarding.dto import ErrorResponse, ConnectionCriteria, Authentication +from agrirouter.api.messages import OutboxMessage +from agrirouter.service.dto.response.onboarding import ErrorResponse, ConnectionCriteria, Authentication + + +class MessagingResult: + def __init__(self, messages_ids: List): + self.messages_ids = messages_ids + + def set_messages_ids(self, messages_ids): + self.messages_ids = messages_ids + + def get_messages_ids(self): + return self.messages_ids + + +class OutboxResponse: + def __init__(self, + status_code: int = None, + messages: List[OutboxMessage] = None + ): + self.status_code = status_code + self.messages = messages if messages else [] + + def json_deserialize(self, data: Union[list, str]): + messages = data if type(data) == list else json.loads(data) + outbox_message_list = [] + for message in messages: + outbox_message = OutboxMessage() + outbox_message.json_deserialize(message) + outbox_message_list.append(outbox_message) + + self.set_messages(outbox_message_list) + + def get_status_code(self) -> int: + return self.status_code + + def set_status_code(self, status_code: int) -> None: + self.status_code = status_code + + def get_messages(self) -> List[OutboxMessage]: + return self.messages + + def set_messages(self, messages: List[OutboxMessage]) -> None: + self.messages = messages + + def add_messages(self, message: OutboxMessage) -> None: + self.messages.append(message) + + def extend_messages(self, messages: List[OutboxMessage]) -> None: + self.messages.extend(messages) class BaseOnboardingResponse: diff --git a/src/agrirouter/onboarding/dto.py b/src/agrirouter/service/dto/response/onboarding.py similarity index 100% rename from src/agrirouter/onboarding/dto.py rename to src/agrirouter/service/dto/response/onboarding.py diff --git a/src/agrirouter/revoking/response.py b/src/agrirouter/service/dto/response/revoking.py similarity index 100% rename from src/agrirouter/revoking/response.py rename to src/agrirouter/service/dto/response/revoking.py diff --git a/src/agrirouter/messaging/services/http/__init__.py b/src/agrirouter/service/messaging/__init__.py similarity index 100% rename from src/agrirouter/messaging/services/http/__init__.py rename to src/agrirouter/service/messaging/__init__.py diff --git a/src/agrirouter/messaging/services/cloud.py b/src/agrirouter/service/messaging/cloud.py similarity index 87% rename from src/agrirouter/messaging/services/cloud.py rename to src/agrirouter/service/messaging/cloud.py index 8835cee3..37971ab6 100644 --- a/src/agrirouter/messaging/services/cloud.py +++ b/src/agrirouter/service/messaging/cloud.py @@ -2,13 +2,13 @@ from agrirouter.generated.cloud_provider_integration.cloud_virtualized_app_registration_pb2 import OnboardingRequest, \ OffboardingRequest from agrirouter.generated.messaging.request.request_pb2 import RequestEnvelope -from agrirouter.messaging.encode import EncodingService -from agrirouter.messaging.messages import EncodedMessage -from agrirouter.messaging.parameters.service import MessageHeaderParameters, MessagePayloadParameters, \ +from agrirouter.service.messaging.encoding import EncodingService +from agrirouter.api.messages import EncodedMessage +from agrirouter.service.parameter.messaging import MessageHeaderParameters, MessagePayloadParameters, \ CloudOnboardParameters, CloudOffboardParameters -from agrirouter.messaging.services.messaging import AbstractService -from agrirouter.utils.type_url import TypeUrl -from agrirouter.utils.uuid_util import UUIDUtil +from agrirouter.service.messaging.message_sending import AbstractService +from agrirouter.util.type_url import TypeUrl +from agrirouter.util.uuid_util import UUIDUtil class CloudOnboardService(AbstractService): diff --git a/src/agrirouter/messaging/services/commons.py b/src/agrirouter/service/messaging/common.py similarity index 87% rename from src/agrirouter/messaging/services/commons.py rename to src/agrirouter/service/messaging/common.py index db54b17a..9399c4cb 100644 --- a/src/agrirouter/messaging/services/commons.py +++ b/src/agrirouter/service/messaging/common.py @@ -3,19 +3,19 @@ from abc import ABC, abstractmethod from agrirouter.api.exceptions import BadMessagingResult -from agrirouter.messaging.clients.http import HttpClient -from agrirouter.messaging.clients.mqtt import MqttClient -from agrirouter.messaging.messages import Message, EncodedMessage -from agrirouter.messaging.parameters.dto import MessagingParameters -from agrirouter.messaging.parameters.service import MessageParameters -from agrirouter.messaging.request import MessageRequest -from agrirouter.messaging.result import MessagingResult -from agrirouter.onboarding.response import OnboardResponse +from agrirouter.service.client.http import HttpClient +from agrirouter.service.client.mqtt import MqttClient +from agrirouter.api.messages import Message, EncodedMessage +from agrirouter.service.dto.messaging import MessagingParameters +from agrirouter.service.parameter.messaging import MessageParameters +from agrirouter.service.dto.request.messaging import MessageRequest +from agrirouter.service.dto.response.messaging import MessagingResult +from agrirouter.service.dto.response.onboarding import OnboardResponse class AbstractService: """ - Abstract service class for all services. + Abstract service class for all messaging. """ _log = logging.getLogger(__name__) diff --git a/src/agrirouter/messaging/decode.py b/src/agrirouter/service/messaging/decoding.py similarity index 96% rename from src/agrirouter/messaging/decode.py rename to src/agrirouter/service/messaging/decoding.py index 3439bf17..6616db9c 100644 --- a/src/agrirouter/messaging/decode.py +++ b/src/agrirouter/service/messaging/decoding.py @@ -11,8 +11,8 @@ MessageQueryResponse from agrirouter.generated.messaging.response.payload.feed.push_notification_pb2 import PushNotification from agrirouter.generated.messaging.response.response_pb2 import ResponseEnvelope, ResponsePayloadWrapper -from agrirouter.messaging.messages import DecodedMessage -from agrirouter.utils.type_url import TypeUrl +from agrirouter.api.messages import DecodedMessage +from agrirouter.util.type_url import TypeUrl class DecodingService: diff --git a/src/agrirouter/messaging/encode.py b/src/agrirouter/service/messaging/encoding.py similarity index 92% rename from src/agrirouter/messaging/encode.py rename to src/agrirouter/service/messaging/encoding.py index 2ae93119..c88cfc87 100644 --- a/src/agrirouter/messaging/encode.py +++ b/src/agrirouter/service/messaging/encoding.py @@ -7,12 +7,12 @@ from agrirouter.generated.commons.chunk_pb2 import ChunkComponent from agrirouter.generated.messaging.request.request_pb2 import RequestEnvelope, RequestPayloadWrapper -from agrirouter.messaging.messages import MessageParameterTuple -from agrirouter.messaging.parameters.service import MessageHeaderParameters, MessagePayloadParameters -from agrirouter.messaging.services.sequence_number_service import SequenceNumberService -from agrirouter.onboarding.response import OnboardResponse -from agrirouter.utils.utc_time_util import UtcTimeUtil -from agrirouter.utils.uuid_util import UUIDUtil +from agrirouter.api.messages import MessageParameterTuple +from agrirouter.service.parameter.messaging import MessageHeaderParameters, MessagePayloadParameters +from agrirouter.service.messaging.sequence_numbers import SequenceNumberService +from agrirouter.service.dto.response.onboarding import OnboardResponse +from agrirouter.util.utc_time_util import UtcTimeUtil +from agrirouter.util.uuid_util import UUIDUtil MAX_LENGTH_FOR_RAW_MESSAGE_CONTENT = 767997 // 2 log = logging.getLogger("com.dke.data.agrirouter.sdk.encode") @@ -61,7 +61,7 @@ def chunk_and_base64encode_each_chunk(header_parameters: MessageHeaderParameters message_chunks = EncodingService._split_into_chunks(whole_message) if payload_parameters is None or header_parameters is None: - raise ValueError('The parameters cannot be NULL') + raise ValueError('The parameter cannot be NULL') if len(whole_message) <= MAX_LENGTH_FOR_RAW_MESSAGE_CONTENT: log.info("Message is not chunked, because it is smaller than the maximum size of a chunk.") @@ -125,7 +125,7 @@ def _split_into_chunks(whole_message: str): def encode_chunks_message(message_parameter_tuple: List[MessageParameterTuple]) -> List: """ Encode chunks of messages - :message_parameter_tuple - Tuple of message parameters + :message_parameter_tuple - Tuple of message parameter Returns list of encoded chunked messages """ return [EncodingService.encode_message(_tuple.message_header_parameters, _tuple.message_payload_parameters) for @@ -137,7 +137,7 @@ def encode_header(header_parameters: MessageHeaderParameters) -> RequestEnvelope """ Encode header to RequestEnvelope protobuf :header_parameters: Message Header Parameters - Returns RequestEnvelope with parameters set + Returns RequestEnvelope with parameter set """ request_envelope = RequestEnvelope() request_envelope.application_message_id = header_parameters.get_application_message_id() \ @@ -165,7 +165,7 @@ def encode_payload(payload_parameters: MessagePayloadParameters) -> RequestPaylo """ Encode header to RequestPayloadWrapper protobuf :payload_parameters: Message Payload Parameters - Returns RequestPayloadWrapper with parameters set + Returns RequestPayloadWrapper with parameter set """ any_proto_wrapper = Any() any_proto_wrapper.type_url = payload_parameters.get_type_url() diff --git a/src/agrirouter/onboarding/__init__.py b/src/agrirouter/service/messaging/http/__init__.py similarity index 100% rename from src/agrirouter/onboarding/__init__.py rename to src/agrirouter/service/messaging/http/__init__.py diff --git a/src/agrirouter/messaging/services/http/fetch_message_service.py b/src/agrirouter/service/messaging/http/message_fetching.py similarity index 84% rename from src/agrirouter/messaging/services/http/fetch_message_service.py rename to src/agrirouter/service/messaging/http/message_fetching.py index 80db2f56..bfa2e770 100644 --- a/src/agrirouter/messaging/services/http/fetch_message_service.py +++ b/src/agrirouter/service/messaging/http/message_fetching.py @@ -1,6 +1,6 @@ -from agrirouter.messaging.clients.http import HttpClient from agrirouter.api.exceptions import CanNotFetchOutboxMessage -from agrirouter.messaging.result import OutboxResponse +from agrirouter.service.client.http import HttpClient +from agrirouter.service.dto.response.messaging import OutboxResponse class FetchMessageService: diff --git a/src/agrirouter/messaging/services/messaging.py b/src/agrirouter/service/messaging/message_sending.py similarity index 95% rename from src/agrirouter/messaging/services/messaging.py rename to src/agrirouter/service/messaging/message_sending.py index b4c2cd17..0411e6d8 100644 --- a/src/agrirouter/messaging/services/messaging.py +++ b/src/agrirouter/service/messaging/message_sending.py @@ -8,16 +8,16 @@ from agrirouter.generated.messaging.request.payload.feed.feed_requests_pb2 import MessageConfirm, MessageDelete, \ MessageQuery from agrirouter.generated.messaging.request.request_pb2 import RequestEnvelope -from agrirouter.messaging.encode import EncodingService -from agrirouter.messaging.messages import EncodedMessage -from agrirouter.messaging.parameters.dto import SendMessageParameters, ChunkedMessageParameters -from agrirouter.messaging.parameters.service import MessageHeaderParameters, MessagePayloadParameters, \ +from agrirouter.service.messaging.encoding import EncodingService +from agrirouter.api.messages import EncodedMessage +from agrirouter.service.dto.messaging import SendMessageParameters, ChunkedMessageParameters +from agrirouter.service.parameter.messaging import MessageHeaderParameters, MessagePayloadParameters, \ CapabilitiesParameters, FeedConfirmParameters, FeedDeleteParameters, ListEndpointsParameters, \ SubscriptionParameters, QueryHeaderParameters, QueryMessageParameters, ImageParameters, TaskParameters, \ EfdiParameters -from agrirouter.messaging.services.commons import AbstractService -from agrirouter.utils.type_url import TypeUrl -from agrirouter.utils.uuid_util import UUIDUtil +from agrirouter.service.messaging.common import AbstractService +from agrirouter.util.type_url import TypeUrl +from agrirouter.util.uuid_util import UUIDUtil class CapabilitiesService(AbstractService): @@ -28,7 +28,7 @@ class CapabilitiesService(AbstractService): @staticmethod def encode(parameters: CapabilitiesParameters) -> EncodedMessage: """ - Encode the parameters to a message. + Encode the parameter to a message. :param parameters: Parameters for the message. """ message_header_parameters = MessageHeaderParameters( @@ -195,8 +195,8 @@ class QueryHeaderService(AbstractService): @staticmethod def encode(parameters: QueryHeaderParameters) -> EncodedMessage: """ - Encode the parameters into a message - parameters: QueryHeaderParameters for the service + Encode the parameter into a message + parameter: QueryHeaderParameters for the service """ message_header_parameters = MessageHeaderParameters( application_message_id=parameters.get_application_message_id(), @@ -234,8 +234,8 @@ class SubscriptionService(AbstractService): @staticmethod def encode(parameters: SubscriptionParameters) -> EncodedMessage: """ - Encode the parameters into a subscription message. - parameters: Parameters for the subscription message. + Encode the parameter into a subscription message. + parameter: Parameters for the subscription message. """ message_header_parameters = MessageHeaderParameters( application_message_id=parameters.get_application_message_id(), @@ -271,8 +271,8 @@ class SendMessageService(AbstractService): @staticmethod def encode(parameters: SendMessageParameters) -> EncodedMessage: """ - Encode the parameters into a message. - parameters: Parameters for the message service. + Encode the parameter into a message. + parameter: Parameters for the message service. """ message_header_parameters = MessageHeaderParameters( technical_message_type=parameters.get_technical_message_type(), @@ -307,7 +307,7 @@ class SendChunkedMessageService(AbstractService): @staticmethod def encode(parameters: ChunkedMessageParameters): """ - parameters: Chunked Message Parameters required + parameter: Chunked Message Parameters required """ encoded_message = EncodedMessage( id_=UUIDUtil.new_uuid(), diff --git a/src/agrirouter/messaging/services/sequence_number_service.py b/src/agrirouter/service/messaging/sequence_numbers.py similarity index 100% rename from src/agrirouter/messaging/services/sequence_number_service.py rename to src/agrirouter/service/messaging/sequence_numbers.py diff --git a/src/agrirouter/onboarding/onboarding.py b/src/agrirouter/service/onboarding.py similarity index 89% rename from src/agrirouter/onboarding/onboarding.py rename to src/agrirouter/service/onboarding.py index b8a00bcb..b682bb41 100644 --- a/src/agrirouter/onboarding/onboarding.py +++ b/src/agrirouter/service/onboarding.py @@ -1,13 +1,12 @@ import requests from agrirouter.api.env import BaseEnvironment -from agrirouter.api.exceptions import UnexpectedErrorDuringOnboarding, RequestNotSigned from agrirouter.api.env import EnvironmentalService -from agrirouter.onboarding.headers import SoftwareOnboardingHeader -from agrirouter.onboarding.parameters import OnboardParameters -from agrirouter.onboarding.request import OnboardRequest -from agrirouter.onboarding.request_body import SoftwareOnboardingBody -from agrirouter.onboarding.response import VerificationResponse, OnboardResponse +from agrirouter.api.exceptions import UnexpectedErrorDuringOnboarding, RequestNotSigned +from agrirouter.service.dto.request.onboarding import OnboardRequest, SoftwareOnboardingBody +from agrirouter.service.onboarding.request_headers import SoftwareOnboardingHeader +from agrirouter.service.dto.response.onboarding import VerificationResponse, OnboardResponse +from agrirouter.service.parameter.onboarding import OnboardParameters class SecuredOnboardingService(EnvironmentalService): diff --git a/src/agrirouter/revoking/__init__.py b/src/agrirouter/service/parameter/__init__.py similarity index 100% rename from src/agrirouter/revoking/__init__.py rename to src/agrirouter/service/parameter/__init__.py diff --git a/src/agrirouter/auth/parameters.py b/src/agrirouter/service/parameter/authorization.py similarity index 100% rename from src/agrirouter/auth/parameters.py rename to src/agrirouter/service/parameter/authorization.py diff --git a/src/agrirouter/messaging/parameters/service.py b/src/agrirouter/service/parameter/messaging.py similarity index 72% rename from src/agrirouter/messaging/parameters/service.py rename to src/agrirouter/service/parameter/messaging.py index 184ce1d2..1dc61fdd 100644 --- a/src/agrirouter/messaging/parameters/service.py +++ b/src/agrirouter/service/parameter/messaging.py @@ -6,8 +6,219 @@ from agrirouter.generated.messaging.request.payload.endpoint.capabilities_pb2 import CapabilitySpecification from agrirouter.generated.messaging.request.payload.endpoint.subscription_pb2 import Subscription from agrirouter.generated.messaging.request.payload.feed.feed_requests_pb2 import ValidityPeriod -from agrirouter.messaging.parameters.dto import MessageParameters, Parameters -from agrirouter.onboarding.response import BaseOnboardingResponse +from agrirouter.service.dto.response.onboarding import BaseOnboardingResponse +from agrirouter.service.dto.messaging import MessageParameters + + +class Parameters: + def __init__(self, + *, + application_message_seq_no: int, + application_message_id: str = None, + team_set_context_id: str + ): + self.application_message_seq_no = application_message_seq_no + self.application_message_id = application_message_id + self.team_set_context_id = team_set_context_id + + def get_application_message_seq_no(self): + return self.application_message_seq_no + + def get_application_message_id(self): + return self.application_message_id + + def get_team_set_context_id(self): + return self.team_set_context_id + + def set_application_message_seq_no(self, application_message_seq_no): + self.application_message_seq_no = application_message_seq_no + + def set_application_message_id(self, application_message_id): + self.application_message_id = application_message_id + + def set_team_set_context_id(self, team_set_context_id): + self.team_set_context_id = team_set_context_id + + def validate(self): + pass + + +class MessageParameters(Parameters): + def __init__(self, + *, + application_message_seq_no: int, + application_message_id: str, + team_set_context_id: str = None, + onboarding_response: BaseOnboardingResponse + ): + super(MessageParameters, self).__init__( + application_message_seq_no=application_message_seq_no, + application_message_id=application_message_id, + team_set_context_id=team_set_context_id, + ) + + self.onboarding_response = onboarding_response + + def get_onboarding_response(self) -> BaseOnboardingResponse: + return self.onboarding_response + + +class MessagingParameters(MessageParameters): + + def __init__(self, + *, + application_message_seq_no: int = None, + application_message_id: str = None, + team_set_context_id: str = None, + onboarding_response: BaseOnboardingResponse, + encoded_messages=None + ): + super(MessagingParameters, self).__init__( + application_message_seq_no=application_message_seq_no, + application_message_id=application_message_id, + team_set_context_id=team_set_context_id, + onboarding_response=onboarding_response, + ) + + self._encoded_messages = encoded_messages if encoded_messages else [] + + def get_encoded_messages(self): + return deepcopy(self._encoded_messages) + + def set_encoded_messages(self, encoded_messages: List[EncodedMessage]): + self._encoded_messages = encoded_messages + + def append_encoded_messages(self, encoded_message: EncodedMessage): + self._encoded_messages.append(encoded_message) + + def extend_encoded_messages(self, encoded_messages: List[EncodedMessage]): + self._encoded_messages.extend(encoded_messages) + + +class SendMessageParameters(MessageParameters): + """ + Parameters to send messages to the agrirouter + The class inherits from MessageParameters class + """ + + def __init__(self, + *, + onboarding_response: BaseOnboardingResponse, + technical_message_type: str, + recipients: list = None, + chunk_component=None, + base64_message_content: bytes, + type_url: str = None, + chunk_size: int = None, + application_message_id: str, + application_message_seq_no: int, + mode + ): + """ + onboarding_response: Onboarding response of the sender + technical_message_type: TechnicalMessageType class to be sent + recipients: List of recipients + chunk_components: Chunk Information + base64_message_content: Message content that is sent + type_url: Url needed for MessagePayloadParameters + chunk_size: Define the size of the chunks + application_message_id: The application message ID + application_message_seq_no: Sequence number while sending the messages + to the agrirouter with SequenceNumberService + """ + + super(SendMessageParameters, self).__init__(application_message_id=application_message_id, + application_message_seq_no=application_message_seq_no, + onboarding_response=onboarding_response) + + self._technical_message_type = technical_message_type + self._base64_message_content = base64_message_content + self._type_url = type_url + self._mode = mode + + if recipients: + self._recipients = recipients + + if chunk_component: + self._chunk_component = chunk_component + else: + self._chunk_component = None + + if chunk_size: + self._chunk_size = chunk_size + + def get_technical_message_type(self): + return self._technical_message_type + + def get_recipients(self) -> list: + return self._recipients + + def get_chunk_component(self) -> ChunkComponent: + return self._chunk_component + + def get_base64_message_content(self): + return self._base64_message_content + + def get_type_url(self) -> str: + return self._type_url + + def get_chunk_size(self) -> int: + return self._chunk_size + + def get_mode(self): + return self._mode + + +class ChunkedMessageParameters(MessageParameters): + """ + Parameters to send chunked messages to the agrirouter + The class inherits from MessageParameters class + """ + + def __init__(self, + *, + onboarding_response: BaseOnboardingResponse, + technical_message_type: str = None, + recipients: List = None, + application_message_id: str = None, + application_message_seq_no: int = None, + encoded_chunked_messages: List[str] = None, + ): + """ + onboarding_response: Onboarding response of the sender + technical_message_type: TechnicalMessageType class to be sent + recipients: List of recipients + application_message_id: The application message ID + application_message_seq_no: Sequence number while sending the messages + to the agrirouter with SequenceNumberService + encoded_chunked_messages: List of encoded chunked messages + """ + + super(ChunkedMessageParameters, self).__init__(application_message_id=application_message_id, + application_message_seq_no=application_message_seq_no, + onboarding_response=onboarding_response) + + self._technical_message_type = technical_message_type + self._recipients = recipients + self._encoded_chunked_messages = encoded_chunked_messages + + def get_technical_message_type(self): + return self._technical_message_type + + def set_technical_message_type(self, technical_message_type: str): + self._technical_message_type = technical_message_type + + def get_recipients(self) -> list: + return self._recipients + + def set_recipients(self, recipients: list): + self._recipients = recipients + + def get_encoded_chunked_messages(self) -> List[str]: + return self._encoded_chunked_messages + + def set_encoded_chunked_messages(self, encoded_chunked_messages: List[str]): + self._encoded_chunked_messages = encoded_chunked_messages class MessageHeaderParameters(Parameters): diff --git a/src/agrirouter/onboarding/parameters.py b/src/agrirouter/service/parameter/onboarding.py similarity index 96% rename from src/agrirouter/onboarding/parameters.py rename to src/agrirouter/service/parameter/onboarding.py index 5683d50d..a1525609 100644 --- a/src/agrirouter/onboarding/parameters.py +++ b/src/agrirouter/service/parameter/onboarding.py @@ -1,6 +1,6 @@ from agrirouter.api.enums import CertificateTypes from agrirouter.api.enums import ContentTypes -from agrirouter.utils.utc_time_util import UtcTimeUtil +from agrirouter.util.utc_time_util import UtcTimeUtil class OnboardParameters: diff --git a/src/agrirouter/revoking/parameters.py b/src/agrirouter/service/parameter/revoking.py similarity index 100% rename from src/agrirouter/revoking/parameters.py rename to src/agrirouter/service/parameter/revoking.py diff --git a/src/agrirouter/revoking/revoking.py b/src/agrirouter/service/revoking.py similarity index 76% rename from src/agrirouter/revoking/revoking.py rename to src/agrirouter/service/revoking.py index 618a540f..ea42f284 100644 --- a/src/agrirouter/revoking/revoking.py +++ b/src/agrirouter/service/revoking.py @@ -2,19 +2,18 @@ from agrirouter.api.env import EnvironmentalService from agrirouter.api.exceptions import RequestNotSigned -from agrirouter.revoking.headers import RevokingHeader -from agrirouter.revoking.parameters import RevokingParameter -from agrirouter.revoking.request import RevokingRequest -from agrirouter.revoking.request_body import RevokingBody -from agrirouter.revoking.response import RevokingResponse +from agrirouter.service.parameter.revoking import RevokingParameter +from agrirouter.service.dto.request.revoking import RevokingBody, RevokingHeader +from agrirouter.service.dto.request.revoking import RevokingRequest +from agrirouter.service.dto.response.revoking import RevokingResponse -class Revoking(EnvironmentalService): +class RevokingService(EnvironmentalService): def __init__(self, *args, **kwargs): self._public_key = kwargs.pop("public_key") self._private_key = kwargs.pop("private_key") - super(Revoking, self).__init__(*args, **kwargs) + super(RevokingService, self).__init__(*args, **kwargs) def _create_request(self, params: RevokingParameter, url: str) -> RevokingRequest: body_params = params.get_body_params() diff --git a/src/agrirouter/onboarding/signature.py b/src/agrirouter/service/signature.py similarity index 100% rename from src/agrirouter/onboarding/signature.py rename to src/agrirouter/service/signature.py diff --git a/src/agrirouter/utils/__init__.py b/src/agrirouter/util/__init__.py similarity index 100% rename from src/agrirouter/utils/__init__.py rename to src/agrirouter/util/__init__.py diff --git a/src/agrirouter/utils/type_url.py b/src/agrirouter/util/type_url.py similarity index 100% rename from src/agrirouter/utils/type_url.py rename to src/agrirouter/util/type_url.py diff --git a/src/agrirouter/utils/utc_time_util.py b/src/agrirouter/util/utc_time_util.py similarity index 100% rename from src/agrirouter/utils/utc_time_util.py rename to src/agrirouter/util/utc_time_util.py diff --git a/src/agrirouter/utils/uuid_util.py b/src/agrirouter/util/uuid_util.py similarity index 100% rename from src/agrirouter/utils/uuid_util.py rename to src/agrirouter/util/uuid_util.py diff --git a/tests/agrirouter/common/onboarding.py b/tests/agrirouter/common/onboarding.py index 829a57d4..e0487976 100644 --- a/tests/agrirouter/common/onboarding.py +++ b/tests/agrirouter/common/onboarding.py @@ -1,6 +1,6 @@ -from agrirouter.onboarding.onboarding import OnboardingService -from agrirouter.onboarding.parameters import OnboardParameters -from agrirouter.onboarding.response import OnboardResponse +from agrirouter.service.onboarding import OnboardingService +from agrirouter.service.onboarding import OnboardParameters +from agrirouter.service.onboarding import OnboardResponse from tests.agrirouter.data.applications import CommunicationUnit diff --git a/tests/agrirouter/data/onboard_response_integration_service.py b/tests/agrirouter/data/onboard_response_integration_service.py index e788e76a..dc4d53bb 100644 --- a/tests/agrirouter/data/onboard_response_integration_service.py +++ b/tests/agrirouter/data/onboard_response_integration_service.py @@ -2,7 +2,7 @@ import os import tests -from agrirouter.onboarding.response import OnboardResponse +from agrirouter.service.onboarding import OnboardResponse def read_onboard_response(identifier: str) -> OnboardResponse: diff --git a/tests/agrirouter/fixtures/update_http_onboard_responses.py b/tests/agrirouter/fixtures/update_http_onboard_responses.py index f30f179a..78bcc017 100644 --- a/tests/agrirouter/fixtures/update_http_onboard_responses.py +++ b/tests/agrirouter/fixtures/update_http_onboard_responses.py @@ -6,13 +6,13 @@ from agrirouter.api.enums import CapabilityType, CapabilityDirectionType from agrirouter.api.env import Qa from agrirouter.generated.messaging.request.payload.endpoint.capabilities_pb2 import CapabilitySpecification -from agrirouter.messaging.parameters.service import CapabilitiesParameters -from agrirouter.messaging.services.commons import HttpMessagingService -from agrirouter.messaging.services.http.fetch_message_service import FetchMessageService -from agrirouter.messaging.services.messaging import CapabilitiesService +from agrirouter.service.parameter.messaging import CapabilitiesParameters +from agrirouter.service.messaging import HttpMessagingService +from agrirouter.service.messaging.http import FetchMessageService +from agrirouter.service.messaging import CapabilitiesService from agrirouter.api.enums import CertificateTypes, Gateways -from agrirouter.onboarding.response import OnboardResponse -from agrirouter.utils.uuid_util import UUIDUtil +from agrirouter.service.onboarding import OnboardResponse +from agrirouter.util.uuid_util import UUIDUtil from tests.agrirouter.common.onboarding import onboard_communication_unit from tests.agrirouter.common.sleeper import Sleeper from tests.agrirouter.data.applications import CommunicationUnit diff --git a/tests/agrirouter/fixtures/update_mqtt_onboard_responses.py b/tests/agrirouter/fixtures/update_mqtt_onboard_responses.py index 673cc5c8..49b3dbdf 100644 --- a/tests/agrirouter/fixtures/update_mqtt_onboard_responses.py +++ b/tests/agrirouter/fixtures/update_mqtt_onboard_responses.py @@ -3,14 +3,14 @@ from agrirouter.api.enums import CapabilityType, CapabilityDirectionType from agrirouter.api.env import Qa from agrirouter.generated.messaging.request.payload.endpoint.capabilities_pb2 import CapabilitySpecification -from agrirouter.messaging.decode import DecodingService -from agrirouter.messaging.messages import OutboxMessage -from agrirouter.messaging.parameters.service import CapabilitiesParameters -from agrirouter.messaging.services.commons import MqttMessagingService -from agrirouter.messaging.services.messaging import CapabilitiesService -from agrirouter.messaging.services.sequence_number_service import SequenceNumberService +from agrirouter.service.messaging.decoding import DecodingService +from agrirouter.api.messages import OutboxMessage +from agrirouter.service.parameter.messaging import CapabilitiesParameters +from agrirouter.service.messaging import MqttMessagingService +from agrirouter.service.messaging import CapabilitiesService +from agrirouter.service.messaging.sequence_numbers import SequenceNumberService from agrirouter.api.enums import CertificateTypes, Gateways -from agrirouter.utils.uuid_util import UUIDUtil +from agrirouter.util.uuid_util import UUIDUtil from tests.agrirouter.common.onboarding import onboard_communication_unit from tests.agrirouter.common.sleeper import Sleeper from tests.agrirouter.data.applications import CommunicationUnit diff --git a/tests/agrirouter/internal/auth/test_auth.py b/tests/agrirouter/internal/auth/test_auth.py index 58b24dc7..8840067c 100644 --- a/tests/agrirouter/internal/auth/test_auth.py +++ b/tests/agrirouter/internal/auth/test_auth.py @@ -1,7 +1,7 @@ -"""Tests agrirouter/auth/auth.py""" +"""Tests agrirouter/auth/authorization.py""" from agrirouter.api.env import Qa -from agrirouter.auth.auth import AuthUrlParameter -from agrirouter.auth.auth import Authorization +from agrirouter.service.authorization import AuthUrlParameter +from agrirouter.service.authorization import AuthorizationService from tests.agrirouter.common.constants import ( PUBLIC_KEY, PRIVATE_KEY, @@ -11,7 +11,7 @@ class TestAuthorization: def test_extract_query_params(self): - auth_client = Authorization(Qa(), public_key=PUBLIC_KEY, private_key=PRIVATE_KEY) + auth_client = AuthorizationService(Qa(), public_key=PUBLIC_KEY, private_key=PRIVATE_KEY) test_uri = "key1=val1&key2=val2&key3=val3" params = auth_client._extract_query_params(test_uri) assert params == {"key1": "val1", "key2": "val2", "key3": "val3"} @@ -22,7 +22,7 @@ def test_get_auth_request_url(self): ) assert auth_params.state - auth_client = Authorization( + auth_client = AuthorizationService( Qa(), public_key=PUBLIC_KEY, private_key=PRIVATE_KEY ) @@ -32,7 +32,7 @@ def test_get_auth_request_url(self): assert check_url == result_url.split("state")[0] def test_extract_auth_response(self): - auth_client = Authorization(Qa(), public_key=PUBLIC_KEY, private_key=PRIVATE_KEY) + auth_client = AuthorizationService(Qa(), public_key=PUBLIC_KEY, private_key=PRIVATE_KEY) state = "3770a15d-adf3-4900-a435-464978fe8054" token = "token" signature = "signature" @@ -47,7 +47,7 @@ def test_extract_auth_response(self): assert response.is_successful def test_get_auth_result(self): - auth_client = Authorization( + auth_client = AuthorizationService( env=Qa(), public_key=PUBLIC_KEY, private_key=PRIVATE_KEY ) auth_response = auth_client.extract_auth_response(AUTH_RESULT_URL) diff --git a/tests/agrirouter/internal/auth/test_auth_dto.py b/tests/agrirouter/internal/auth/test_auth_dto.py index deb1f5b7..409ff902 100644 --- a/tests/agrirouter/internal/auth/test_auth_dto.py +++ b/tests/agrirouter/internal/auth/test_auth_dto.py @@ -1,7 +1,7 @@ -"""Tests agrirouter/auth/dto.py""" +"""Tests agrirouter/auth/authorization.py""" import pytest -from agrirouter.auth.dto import AuthorizationToken +from agrirouter.service.dto.request.authorization import AuthorizationToken from agrirouter.api.exceptions import WrongField diff --git a/tests/agrirouter/internal/auth/test_response.py b/tests/agrirouter/internal/auth/test_response.py index f6d62c8f..6c628f51 100644 --- a/tests/agrirouter/internal/auth/test_response.py +++ b/tests/agrirouter/internal/auth/test_response.py @@ -1,10 +1,10 @@ -"""Tests agrirouter/auth/response.py""" +"""Tests agrirouter/auth/authorization.py""" import re import pytest -from agrirouter.auth.response import AuthResponse +from agrirouter.service.dto.response.authorization import AuthResponse from tests.agrirouter.common.constants import VALID_RESPONSE_SIGNATURE, VALID_RESPONSE_TOKEN, AR_PUBLIC_KEY diff --git a/tests/agrirouter/internal/messaging/test_decode.py b/tests/agrirouter/internal/messaging/test_decode.py index c0844b91..af58b457 100644 --- a/tests/agrirouter/internal/messaging/test_decode.py +++ b/tests/agrirouter/internal/messaging/test_decode.py @@ -2,7 +2,7 @@ from agrirouter.generated.messaging.response.response_pb2 import ResponseEnvelope -from agrirouter.messaging.decode import DecodingService +from agrirouter.service.messaging.decoding import DecodingService MESSAGING_RESULT = b'[{"sensorAlternateId":"185cd97b-ed0b-4e75-a6e2-6be1cdd38a06","capabilityAlternateId":"bbe9f361-b551-48d9-9fca-1b4dc768287c","command":{"message":"XwjIARAKGiQ5NWUzNWE0Zi1jNWM4LTQ1NDEtODE4OS03NmJlMzM0OTc0NDUiJDUzNzYyM2ZjLWY2NmYtNDc5Yi1hMmJhLWVjZjNlNWM3ZjhlMCoMCNTV5YsGEICI8LIDzQIKygIKTnR5cGVzLmFncmlyb3V0ZXIuY29tL2Fncmlyb3V0ZXIucmVzcG9uc2UucGF5bG9hZC5hY2NvdW50Lkxpc3RFbmRwb2ludHNSZXNwb25zZRL3AQp4CiRkNzA0YTQ0My05OWY3LTQ3YjQtYmU1NS1lMmZhMDk2ODllYmUSJFB5dGhvblNES19kZXYgLSAyMDIxLTEwLTI1LCAxMDo1MToxOBoLYXBwbGljYXRpb24iBmFjdGl2ZTIVdXJuOm15YXBwOnNucjAwMDAzMjM0CnsKJDE4NWNkOTdiLWVkMGItNGU3NS1hNmUyLTZiZTFjZGQzOGEwNhIkUHl0aG9uU0RLX2RldiAtIDIwMjEtMTAtMjEsIDIxOjQxOjI0GgthcHBsaWNhdGlvbiIGYWN0aXZlMhh1cm46bXlhcHA6c25yMDAwMDMyMzRzZGY="}}]' # noqa diff --git a/tests/agrirouter/internal/messaging/test_encode.py b/tests/agrirouter/internal/messaging/test_encode.py index d9b300d5..e6f4c89f 100644 --- a/tests/agrirouter/internal/messaging/test_encode.py +++ b/tests/agrirouter/internal/messaging/test_encode.py @@ -2,9 +2,9 @@ from agrirouter.generated.commons.message_pb2 import Message, Messages from agrirouter.generated.messaging.request.request_pb2 import RequestEnvelope, RequestPayloadWrapper -from agrirouter.messaging.decode import DecodingService -from agrirouter.messaging.encode import EncodingService -from agrirouter.messaging.parameters.service import MessageHeaderParameters +from agrirouter.service.messaging.decoding import DecodingService +from agrirouter.service.messaging.encoding import EncodingService +from agrirouter.service.parameter.messaging import MessageHeaderParameters def test_write_proto_parts_to_buffer(): diff --git a/tests/agrirouter/internal/messaging/test_request.py b/tests/agrirouter/internal/messaging/test_request.py index 25771cef..b0dac4d0 100644 --- a/tests/agrirouter/internal/messaging/test_request.py +++ b/tests/agrirouter/internal/messaging/test_request.py @@ -1,7 +1,7 @@ -"""Test agrirouter/messaging/request.py""" +"""Test agrirouter/messaging/messaging.py""" -from agrirouter.messaging.messages import Message -from agrirouter.messaging.request import MessageRequest +from agrirouter.api.messages import Message +from agrirouter.service.dto.request.messaging import MessageRequest def test_json_serialize(): diff --git a/tests/agrirouter/internal/onboarding/test_headers.py b/tests/agrirouter/internal/onboarding/test_headers.py index c4665ca5..c2dfa6b7 100644 --- a/tests/agrirouter/internal/onboarding/test_headers.py +++ b/tests/agrirouter/internal/onboarding/test_headers.py @@ -1,6 +1,6 @@ -"""Test agrirouter/onboarding/headers.py""" +"""Test agrirouter/onboarding/request_headers.py""" from agrirouter.api.enums import ContentTypes -from agrirouter.onboarding.headers import SoftwareOnboardingHeader +from agrirouter.service.onboarding import SoftwareOnboardingHeader class TestSoftwareOnboardingHeader: diff --git a/tests/agrirouter/internal/onboarding/test_onboarding.py b/tests/agrirouter/internal/onboarding/test_onboarding.py index 8bc23c50..abc6819a 100644 --- a/tests/agrirouter/internal/onboarding/test_onboarding.py +++ b/tests/agrirouter/internal/onboarding/test_onboarding.py @@ -5,8 +5,8 @@ from agrirouter.api.env import Qa from agrirouter.api.exceptions import WrongCertificationType, WrongGateWayType from agrirouter.api.enums import Gateways, CertificateTypes -from agrirouter.onboarding.onboarding import SecuredOnboardingService -from agrirouter.onboarding.parameters import OnboardParameters +from agrirouter.service.onboarding import SecuredOnboardingService +from agrirouter.service.onboarding import OnboardParameters from tests.agrirouter.common.constants import PUBLIC_KEY, PRIVATE_KEY, APPLICATION_ID diff --git a/tests/agrirouter/internal/onboarding/test_onboarding_dto.py b/tests/agrirouter/internal/onboarding/test_onboarding_dto.py index ea725896..aeef7479 100644 --- a/tests/agrirouter/internal/onboarding/test_onboarding_dto.py +++ b/tests/agrirouter/internal/onboarding/test_onboarding_dto.py @@ -1,8 +1,8 @@ -"""Tests agrirouter/onboarding/dto.py""" +"""Tests agrirouter/onboarding/authorization.py""" import pytest from agrirouter.api.exceptions import WrongField -from agrirouter.onboarding.dto import ConnectionCriteria, Authentication, ErrorResponse +from agrirouter.service.onboarding import ConnectionCriteria, Authentication, ErrorResponse class TestConnectionCriteria: diff --git a/tests/agrirouter/internal/onboarding/test_request_onboarding.py b/tests/agrirouter/internal/onboarding/test_request_onboarding.py index 463f06a6..2829d73c 100644 --- a/tests/agrirouter/internal/onboarding/test_request_onboarding.py +++ b/tests/agrirouter/internal/onboarding/test_request_onboarding.py @@ -1,8 +1,8 @@ -"""Test src/onboarding/request.py""" +"""Test src/onboarding/messaging.py""" from agrirouter.api.env import Qa from agrirouter.api.enums import Gateways, CertificateTypes -from agrirouter.onboarding.onboarding import SecuredOnboardingService -from agrirouter.onboarding.parameters import OnboardParameters +from agrirouter.service.onboarding import SecuredOnboardingService +from agrirouter.service.onboarding import OnboardParameters from tests.agrirouter.common.constants import APPLICATION_ID, PUBLIC_KEY, PRIVATE_KEY diff --git a/tests/agrirouter/internal/onboarding/test_signature.py b/tests/agrirouter/internal/onboarding/test_signature.py index c5139827..715795f4 100644 --- a/tests/agrirouter/internal/onboarding/test_signature.py +++ b/tests/agrirouter/internal/onboarding/test_signature.py @@ -3,7 +3,7 @@ import pytest from cryptography.exceptions import InvalidSignature -from agrirouter.onboarding.signature import SignatureService +from agrirouter.service.signature import SignatureService from tests.agrirouter.common.constants import PRIVATE_KEY, PUBLIC_KEY diff --git a/tests/agrirouter/internal/revoking/test_parameters.py b/tests/agrirouter/internal/revoking/test_parameters.py index eb07011a..dd326595 100644 --- a/tests/agrirouter/internal/revoking/test_parameters.py +++ b/tests/agrirouter/internal/revoking/test_parameters.py @@ -1,5 +1,5 @@ -"""Test agrirouter/revoking/parameters.py""" -from agrirouter.revoking.parameters import RevokingParameter +"""Test agrirouter/revoking/authorization.py""" +from agrirouter.service.parameter.revoking import RevokingParameter from tests.agrirouter.common.constants import APPLICATION_ID diff --git a/tests/agrirouter/service/messaging/mqtt/test_capability_service.py b/tests/agrirouter/service/messaging/mqtt/test_capability_service.py index ff18b792..4c79defc 100644 --- a/tests/agrirouter/service/messaging/mqtt/test_capability_service.py +++ b/tests/agrirouter/service/messaging/mqtt/test_capability_service.py @@ -4,15 +4,15 @@ import pytest from agrirouter.generated.messaging.request.payload.endpoint.capabilities_pb2 import CapabilitySpecification -from agrirouter.messaging.decode import DecodingService +from agrirouter.service.messaging.decoding import DecodingService from agrirouter.api.enums import CapabilityDirectionType from agrirouter.api.enums import CapabilityType -from agrirouter.messaging.messages import OutboxMessage -from agrirouter.messaging.parameters.service import CapabilitiesParameters -from agrirouter.messaging.services.commons import MqttMessagingService -from agrirouter.messaging.services.messaging import CapabilitiesService -from agrirouter.messaging.services.sequence_number_service import SequenceNumberService -from agrirouter.utils.uuid_util import UUIDUtil +from agrirouter.api.messages import OutboxMessage +from agrirouter.service.parameter.messaging import CapabilitiesParameters +from agrirouter.service.messaging import MqttMessagingService +from agrirouter.service.messaging import CapabilitiesService +from agrirouter.service.messaging.sequence_numbers import SequenceNumberService +from agrirouter.util.uuid_util import UUIDUtil from tests.agrirouter.common.sleeper import Sleeper from tests.agrirouter.data.applications import CommunicationUnit from tests.agrirouter.data.identifier import Identifier diff --git a/tests/agrirouter/service/messaging/mqtt/test_feed_confirm_service.py b/tests/agrirouter/service/messaging/mqtt/test_feed_confirm_service.py index a37822d7..3a290ea8 100644 --- a/tests/agrirouter/service/messaging/mqtt/test_feed_confirm_service.py +++ b/tests/agrirouter/service/messaging/mqtt/test_feed_confirm_service.py @@ -5,15 +5,15 @@ from agrirouter.api.enums import CapabilityType from agrirouter.generated.messaging.request.request_pb2 import RequestEnvelope -from agrirouter.messaging.decode import DecodingService -from agrirouter.messaging.messages import OutboxMessage -from agrirouter.messaging.parameters.dto import SendMessageParameters -from agrirouter.messaging.parameters.service import FeedDeleteParameters, FeedConfirmParameters -from agrirouter.messaging.services.commons import MqttMessagingService -from agrirouter.messaging.services.messaging import SendMessageService, FeedDeleteService, FeedConfirmService -from agrirouter.messaging.services.sequence_number_service import SequenceNumberService -from agrirouter.onboarding.response import OnboardResponse -from agrirouter.utils.uuid_util import UUIDUtil +from agrirouter.service.messaging.decoding import DecodingService +from agrirouter.api.messages import OutboxMessage +from agrirouter.service.dto.messaging import SendMessageParameters +from agrirouter.service.parameter.messaging import FeedDeleteParameters, FeedConfirmParameters +from agrirouter.service.messaging import MqttMessagingService +from agrirouter.service.messaging import SendMessageService, FeedDeleteService, FeedConfirmService +from agrirouter.service.messaging.sequence_numbers import SequenceNumberService +from agrirouter.service.onboarding import OnboardResponse +from agrirouter.util.uuid_util import UUIDUtil from tests.agrirouter.common.data_provider import DataProvider from tests.agrirouter.common.sleeper import Sleeper from tests.agrirouter.data.identifier import Identifier diff --git a/tests/agrirouter/service/messaging/mqtt/test_feed_delete_service.py b/tests/agrirouter/service/messaging/mqtt/test_feed_delete_service.py index f11efcba..c8a84aeb 100644 --- a/tests/agrirouter/service/messaging/mqtt/test_feed_delete_service.py +++ b/tests/agrirouter/service/messaging/mqtt/test_feed_delete_service.py @@ -5,14 +5,14 @@ from agrirouter.api.enums import CapabilityType from agrirouter.generated.messaging.request.request_pb2 import RequestEnvelope -from agrirouter.messaging.decode import DecodingService -from agrirouter.messaging.messages import OutboxMessage -from agrirouter.messaging.parameters.service import FeedDeleteParameters -from agrirouter.messaging.services.commons import MqttMessagingService -from agrirouter.messaging.services.messaging import SendMessageService, SendMessageParameters, FeedDeleteService -from agrirouter.messaging.services.sequence_number_service import SequenceNumberService -from agrirouter.utils.utc_time_util import UtcTimeUtil -from agrirouter.utils.uuid_util import UUIDUtil +from agrirouter.service.messaging.decoding import DecodingService +from agrirouter.api.messages import OutboxMessage +from agrirouter.service.parameter.messaging import FeedDeleteParameters +from agrirouter.service.messaging import MqttMessagingService +from agrirouter.service.messaging import SendMessageService, SendMessageParameters, FeedDeleteService +from agrirouter.service.messaging.sequence_numbers import SequenceNumberService +from agrirouter.util.utc_time_util import UtcTimeUtil +from agrirouter.util.uuid_util import UUIDUtil from tests.agrirouter.common.data_provider import DataProvider from tests.agrirouter.common.sleeper import Sleeper from tests.agrirouter.data.identifier import Identifier diff --git a/tests/agrirouter/service/messaging/mqtt/test_list_endpoints_service.py b/tests/agrirouter/service/messaging/mqtt/test_list_endpoints_service.py index e4b1952a..f61ebf71 100644 --- a/tests/agrirouter/service/messaging/mqtt/test_list_endpoints_service.py +++ b/tests/agrirouter/service/messaging/mqtt/test_list_endpoints_service.py @@ -3,14 +3,14 @@ import pytest -from agrirouter.messaging.decode import DecodingService +from agrirouter.service.messaging.decoding import DecodingService from agrirouter.api.enums import CapabilityType, CapabilityDirectionType -from agrirouter.messaging.messages import OutboxMessage -from agrirouter.messaging.parameters.service import ListEndpointsParameters -from agrirouter.messaging.services.commons import MqttMessagingService -from agrirouter.messaging.services.messaging import ListEndpointsService -from agrirouter.messaging.services.sequence_number_service import SequenceNumberService -from agrirouter.utils.uuid_util import UUIDUtil +from agrirouter.api.messages import OutboxMessage +from agrirouter.service.parameter.messaging import ListEndpointsParameters +from agrirouter.service.messaging import MqttMessagingService +from agrirouter.service.messaging import ListEndpointsService +from agrirouter.service.messaging.sequence_numbers import SequenceNumberService +from agrirouter.util.uuid_util import UUIDUtil from tests.agrirouter.common.sleeper import Sleeper from tests.agrirouter.data.identifier import Identifier from tests.agrirouter.data.onboard_response_integration_service import read_onboard_response diff --git a/tests/agrirouter/service/messaging/mqtt/test_publish_message_service.py b/tests/agrirouter/service/messaging/mqtt/test_publish_message_service.py index a54c12c7..a4a74570 100644 --- a/tests/agrirouter/service/messaging/mqtt/test_publish_message_service.py +++ b/tests/agrirouter/service/messaging/mqtt/test_publish_message_service.py @@ -4,15 +4,15 @@ import pytest from agrirouter.generated.messaging.request.request_pb2 import RequestEnvelope -from agrirouter.messaging.decode import DecodingService +from agrirouter.service.messaging.decoding import DecodingService from agrirouter.api.enums import CapabilityType -from agrirouter.messaging.messages import OutboxMessage -from agrirouter.messaging.parameters.service import FeedDeleteParameters -from agrirouter.messaging.services.commons import MqttMessagingService -from agrirouter.messaging.services.messaging import SendMessageService, SendMessageParameters, FeedDeleteService -from agrirouter.messaging.services.sequence_number_service import SequenceNumberService -from agrirouter.onboarding.response import OnboardResponse -from agrirouter.utils.uuid_util import UUIDUtil +from agrirouter.api.messages import OutboxMessage +from agrirouter.service.parameter.messaging import FeedDeleteParameters +from agrirouter.service.messaging import MqttMessagingService +from agrirouter.service.messaging import SendMessageService, SendMessageParameters, FeedDeleteService +from agrirouter.service.messaging.sequence_numbers import SequenceNumberService +from agrirouter.service.onboarding import OnboardResponse +from agrirouter.util.uuid_util import UUIDUtil from tests.agrirouter.common.data_provider import DataProvider from tests.agrirouter.common.sleeper import Sleeper from tests.agrirouter.data.identifier import Identifier diff --git a/tests/agrirouter/service/messaging/mqtt/test_query_header_service.py b/tests/agrirouter/service/messaging/mqtt/test_query_header_service.py index 3b32012a..0f42b8d0 100644 --- a/tests/agrirouter/service/messaging/mqtt/test_query_header_service.py +++ b/tests/agrirouter/service/messaging/mqtt/test_query_header_service.py @@ -6,16 +6,16 @@ from agrirouter.api.enums import CapabilityType from agrirouter.generated.messaging.request.request_pb2 import RequestEnvelope -from agrirouter.messaging.decode import DecodingService -from agrirouter.messaging.messages import OutboxMessage -from agrirouter.messaging.parameters.service import FeedDeleteParameters, QueryHeaderParameters -from agrirouter.messaging.services.commons import MqttMessagingService -from agrirouter.messaging.services.messaging import SendMessageService, SendMessageParameters, FeedDeleteService, \ +from agrirouter.service.messaging.decoding import DecodingService +from agrirouter.api.messages import OutboxMessage +from agrirouter.service.parameter.messaging import FeedDeleteParameters, QueryHeaderParameters +from agrirouter.service.messaging import MqttMessagingService +from agrirouter.service.messaging import SendMessageService, SendMessageParameters, FeedDeleteService, \ QueryHeaderService -from agrirouter.messaging.services.sequence_number_service import SequenceNumberService -from agrirouter.onboarding.response import OnboardResponse -from agrirouter.utils.utc_time_util import UtcTimeUtil -from agrirouter.utils.uuid_util import UUIDUtil +from agrirouter.service.messaging.sequence_numbers import SequenceNumberService +from agrirouter.service.onboarding import OnboardResponse +from agrirouter.util.utc_time_util import UtcTimeUtil +from agrirouter.util.uuid_util import UUIDUtil from tests.agrirouter.common.data_provider import DataProvider from tests.agrirouter.common.sleeper import Sleeper from tests.agrirouter.data.identifier import Identifier diff --git a/tests/agrirouter/service/messaging/mqtt/test_query_message_service.py b/tests/agrirouter/service/messaging/mqtt/test_query_message_service.py index 1d2d607f..ede3f10d 100644 --- a/tests/agrirouter/service/messaging/mqtt/test_query_message_service.py +++ b/tests/agrirouter/service/messaging/mqtt/test_query_message_service.py @@ -6,16 +6,16 @@ from agrirouter.api.enums import CapabilityType from agrirouter.generated.messaging.request.request_pb2 import RequestEnvelope -from agrirouter.messaging.decode import DecodingService -from agrirouter.messaging.messages import OutboxMessage -from agrirouter.messaging.parameters.service import FeedDeleteParameters, QueryMessageParameters -from agrirouter.messaging.services.commons import MqttMessagingService -from agrirouter.messaging.services.messaging import SendMessageService, SendMessageParameters, FeedDeleteService, \ +from agrirouter.service.messaging.decoding import DecodingService +from agrirouter.api.messages import OutboxMessage +from agrirouter.service.parameter.messaging import FeedDeleteParameters, QueryMessageParameters +from agrirouter.service.messaging import MqttMessagingService +from agrirouter.service.messaging import SendMessageService, SendMessageParameters, FeedDeleteService, \ QueryMessagesService -from agrirouter.messaging.services.sequence_number_service import SequenceNumberService -from agrirouter.onboarding.response import OnboardResponse -from agrirouter.utils.utc_time_util import UtcTimeUtil -from agrirouter.utils.uuid_util import UUIDUtil +from agrirouter.service.messaging.sequence_numbers import SequenceNumberService +from agrirouter.service.onboarding import OnboardResponse +from agrirouter.util.utc_time_util import UtcTimeUtil +from agrirouter.util.uuid_util import UUIDUtil from tests.agrirouter.common.data_provider import DataProvider from tests.agrirouter.common.sleeper import Sleeper from tests.agrirouter.data.identifier import Identifier diff --git a/tests/agrirouter/service/messaging/mqtt/test_send_and_receive_chunked_messages_from_the_feed.py b/tests/agrirouter/service/messaging/mqtt/test_send_and_receive_chunked_messages_from_the_feed.py index 364adb21..5c35aac3 100644 --- a/tests/agrirouter/service/messaging/mqtt/test_send_and_receive_chunked_messages_from_the_feed.py +++ b/tests/agrirouter/service/messaging/mqtt/test_send_and_receive_chunked_messages_from_the_feed.py @@ -6,17 +6,17 @@ from agrirouter.api.enums import CapabilityType, TechnicalMessageType from agrirouter.generated.messaging.request.request_pb2 import RequestEnvelope -from agrirouter.messaging.decode import DecodingService -from agrirouter.messaging.encode import EncodingService -from agrirouter.messaging.messages import OutboxMessage -from agrirouter.messaging.parameters.dto import ChunkedMessageParameters -from agrirouter.messaging.parameters.service import FeedDeleteParameters, MessageHeaderParameters, \ +from agrirouter.service.messaging.decoding import DecodingService +from agrirouter.service.messaging.encoding import EncodingService +from agrirouter.api.messages import OutboxMessage +from agrirouter.service.dto.messaging import ChunkedMessageParameters +from agrirouter.service.parameter.messaging import FeedDeleteParameters, MessageHeaderParameters, \ MessagePayloadParameters, QueryHeaderParameters -from agrirouter.messaging.services.commons import MqttMessagingService -from agrirouter.messaging.services.messaging import FeedDeleteService, SendChunkedMessageService, QueryHeaderService -from agrirouter.messaging.services.sequence_number_service import SequenceNumberService -from agrirouter.onboarding.response import OnboardResponse -from agrirouter.utils.uuid_util import UUIDUtil +from agrirouter.service.messaging import MqttMessagingService +from agrirouter.service.messaging import FeedDeleteService, SendChunkedMessageService, QueryHeaderService +from agrirouter.service.messaging.sequence_numbers import SequenceNumberService +from agrirouter.service.onboarding import OnboardResponse +from agrirouter.util.uuid_util import UUIDUtil from tests.agrirouter.common.data_provider import DataProvider from tests.agrirouter.common.sleeper import Sleeper from tests.agrirouter.data.identifier import Identifier diff --git a/tests/agrirouter/service/messaging/mqtt/test_send_chunked_messages_and_receive_with_push_notifications.py b/tests/agrirouter/service/messaging/mqtt/test_send_chunked_messages_and_receive_with_push_notifications.py index 2a26c2ec..15df73e5 100644 --- a/tests/agrirouter/service/messaging/mqtt/test_send_chunked_messages_and_receive_with_push_notifications.py +++ b/tests/agrirouter/service/messaging/mqtt/test_send_chunked_messages_and_receive_with_push_notifications.py @@ -5,17 +5,17 @@ from agrirouter.api.enums import CapabilityType, TechnicalMessageType from agrirouter.generated.messaging.request.request_pb2 import RequestEnvelope -from agrirouter.messaging.decode import DecodingService -from agrirouter.messaging.encode import EncodingService -from agrirouter.messaging.messages import OutboxMessage -from agrirouter.messaging.parameters.dto import ChunkedMessageParameters -from agrirouter.messaging.parameters.service import FeedDeleteParameters, MessageHeaderParameters, \ +from agrirouter.service.messaging.decoding import DecodingService +from agrirouter.service.messaging.encoding import EncodingService +from agrirouter.api.messages import OutboxMessage +from agrirouter.service.dto.messaging import ChunkedMessageParameters +from agrirouter.service.parameter.messaging import FeedDeleteParameters, MessageHeaderParameters, \ MessagePayloadParameters -from agrirouter.messaging.services.commons import MqttMessagingService -from agrirouter.messaging.services.messaging import FeedDeleteService, SendChunkedMessageService -from agrirouter.messaging.services.sequence_number_service import SequenceNumberService -from agrirouter.onboarding.response import OnboardResponse -from agrirouter.utils.uuid_util import UUIDUtil +from agrirouter.service.messaging import MqttMessagingService +from agrirouter.service.messaging import FeedDeleteService, SendChunkedMessageService +from agrirouter.service.messaging.sequence_numbers import SequenceNumberService +from agrirouter.service.onboarding import OnboardResponse +from agrirouter.util.uuid_util import UUIDUtil from tests.agrirouter.common.data_provider import DataProvider from tests.agrirouter.common.sleeper import Sleeper from tests.agrirouter.data.identifier import Identifier diff --git a/tests/agrirouter/service/messaging/mqtt/test_send_direct_message_service.py b/tests/agrirouter/service/messaging/mqtt/test_send_direct_message_service.py index 812eb578..175ca912 100644 --- a/tests/agrirouter/service/messaging/mqtt/test_send_direct_message_service.py +++ b/tests/agrirouter/service/messaging/mqtt/test_send_direct_message_service.py @@ -4,15 +4,15 @@ import pytest from agrirouter.generated.messaging.request.request_pb2 import RequestEnvelope -from agrirouter.messaging.decode import DecodingService +from agrirouter.service.messaging.decoding import DecodingService from agrirouter.api.enums import CapabilityType -from agrirouter.messaging.messages import OutboxMessage -from agrirouter.messaging.parameters.service import FeedDeleteParameters -from agrirouter.messaging.services.commons import MqttMessagingService -from agrirouter.messaging.services.messaging import SendMessageService, SendMessageParameters, FeedDeleteService -from agrirouter.messaging.services.sequence_number_service import SequenceNumberService -from agrirouter.onboarding.response import OnboardResponse -from agrirouter.utils.uuid_util import UUIDUtil +from agrirouter.api.messages import OutboxMessage +from agrirouter.service.parameter.messaging import FeedDeleteParameters +from agrirouter.service.messaging import MqttMessagingService +from agrirouter.service.messaging import SendMessageService, SendMessageParameters, FeedDeleteService +from agrirouter.service.messaging.sequence_numbers import SequenceNumberService +from agrirouter.service.onboarding import OnboardResponse +from agrirouter.util.uuid_util import UUIDUtil from tests.agrirouter.common.data_provider import DataProvider from tests.agrirouter.common.sleeper import Sleeper from tests.agrirouter.data.identifier import Identifier diff --git a/tests/agrirouter/service/messaging/mqtt/test_subscription_service.py b/tests/agrirouter/service/messaging/mqtt/test_subscription_service.py index 52bbb334..8fca94b0 100644 --- a/tests/agrirouter/service/messaging/mqtt/test_subscription_service.py +++ b/tests/agrirouter/service/messaging/mqtt/test_subscription_service.py @@ -5,14 +5,14 @@ from agrirouter.generated.messaging.request.payload.endpoint.capabilities_pb2 import CapabilitySpecification from agrirouter.generated.messaging.request.payload.endpoint.subscription_pb2 import Subscription -from agrirouter.messaging.decode import DecodingService +from agrirouter.service.messaging.decoding import DecodingService from agrirouter.api.enums import CapabilityType, CapabilityDirectionType -from agrirouter.messaging.messages import OutboxMessage -from agrirouter.messaging.parameters.service import SubscriptionParameters, CapabilitiesParameters -from agrirouter.messaging.services.commons import MqttMessagingService -from agrirouter.messaging.services.messaging import SubscriptionService, CapabilitiesService -from agrirouter.messaging.services.sequence_number_service import SequenceNumberService -from agrirouter.utils.uuid_util import UUIDUtil +from agrirouter.api.messages import OutboxMessage +from agrirouter.service.parameter.messaging import SubscriptionParameters, CapabilitiesParameters +from agrirouter.service.messaging import MqttMessagingService +from agrirouter.service.messaging import SubscriptionService, CapabilitiesService +from agrirouter.service.messaging.sequence_numbers import SequenceNumberService +from agrirouter.util.uuid_util import UUIDUtil from tests.agrirouter.common.sleeper import Sleeper from tests.agrirouter.data.applications import CommunicationUnit from tests.agrirouter.data.identifier import Identifier From c2d7e1e776224f8fd2e5318ca1d711ddc84e6758 Mon Sep 17 00:00:00 2001 From: Sascha Doemer Date: Thu, 2 May 2024 17:16:33 +0200 Subject: [PATCH 14/17] Update efdi_pb2.py in agrirouter messaging The protobuf file for agrirouter messaging, efdi_pb2.py, has been updated by removing unnecessary white spaces and a few unused import statements. File descriptor parameters have also been revised to enhance the efficiency and readability of the code. --- src/agrirouter/api/messaging_builders.py | 2 +- .../request/payload/efdi/efdi_pb2.py | 10512 ++++++++-------- .../service/dto/request/revoking.py | 4 +- 3 files changed, 5246 insertions(+), 5272 deletions(-) diff --git a/src/agrirouter/api/messaging_builders.py b/src/agrirouter/api/messaging_builders.py index 76a75910..df2bcc46 100644 --- a/src/agrirouter/api/messaging_builders.py +++ b/src/agrirouter/api/messaging_builders.py @@ -1,8 +1,8 @@ from typing import List +from agrirouter.api.enums import CapabilityType from agrirouter.generated.messaging.request.payload.endpoint.capabilities_pb2 import CapabilitySpecification from agrirouter.generated.messaging.request.payload.endpoint.subscription_pb2 import Subscription -from agrirouter.api.enums import CapabilityType class SubscriptionItemBuilder: diff --git a/src/agrirouter/generated/messaging/request/payload/efdi/efdi_pb2.py b/src/agrirouter/generated/messaging/request/payload/efdi/efdi_pb2.py index 9f70a1d3..ad54b510 100644 --- a/src/agrirouter/generated/messaging/request/payload/efdi/efdi_pb2.py +++ b/src/agrirouter/generated/messaging/request/payload/efdi/efdi_pb2.py @@ -6,5320 +6,5292 @@ from google.protobuf import message as _message from google.protobuf import reflection as _reflection from google.protobuf import symbol_database as _symbol_database + # @@protoc_insertion_point(imports) _sym_db = _symbol_database.Default() - from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2 from google.protobuf import any_pb2 as google_dot_protobuf_dot_any__pb2 - DESCRIPTOR = _descriptor.FileDescriptor( - name='agrirouter/protobuf/technicalmessagetype/efdi.proto', - package='efdi', - syntax='proto3', - serialized_options=None, - create_key=_descriptor._internal_create_key, - serialized_pb=b'\n3agrirouter/protobuf/technicalmessagetype/efdi.proto\x12\x04\x65\x66\x64i\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x19google/protobuf/any.proto\"\"\n\x03UID\x12\x0e\n\x06number\x18\x01 \x01(\x12\x12\x0b\n\x03uri\x18\x02 \x03(\t\"\xc2\x02\n\x0f\x41llocationStamp\x12)\n\x05start\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12(\n\x04stop\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x10\n\x08\x64uration\x18\x03 \x01(\x04\x12\x37\n\x04type\x18\x04 \x01(\x0e\x32).efdi.AllocationStamp.AllocationStampType\x12 \n\x08position\x18\x05 \x03(\x0b\x32\x0e.efdi.Position\x12(\n\textension\x18\x80\x10 \x03(\x0b\x32\x14.google.protobuf.Any\"C\n\x13\x41llocationStampType\x12\x0c\n\x08\x44_NOTSET\x10\x00\x12\r\n\tD_PLANNED\x10\x01\x12\x0f\n\x0b\x44_EFFECTIVE\x10\x04\"\xac\x02\n\x0c\x41ttachedFile\x12*\n\x17\x66ilename_with_extension\x18\x01 \x01(\x0b\x32\t.efdi.UID\x12-\n\x08preserve\x18\x02 \x01(\x0e\x32\x1b.efdi.AttachedFile.Preserve\x12\x18\n\x10manufacturer_gln\x18\x03 \x01(\t\x12\x11\n\tfile_type\x18\x04 \x01(\r\x12\x14\n\x0c\x66ile_version\x18\x05 \x01(\t\x12\x13\n\x0b\x66ile_length\x18\x06 \x01(\x04\x12(\n\textension\x18\x80\x10 \x03(\x0b\x32\x14.google.protobuf.Any\"?\n\x08Preserve\x12\x0c\n\x08\x42_NOTSET\x10\x00\x12\x11\n\rB_PRESERVE_NO\x10\x01\x12\x12\n\x0e\x42_PRESERVE_YES\x10\x02\"\xcc\x01\n\x0b\x42\x61seStation\x12\"\n\x0f\x62\x61se_station_id\x18\x01 \x01(\x0b\x32\t.efdi.UID\x12\x1f\n\x17\x62\x61se_station_designator\x18\x02 \x01(\t\x12\x1a\n\x12\x62\x61se_station_north\x18\x03 \x01(\x01\x12\x19\n\x11\x62\x61se_station_east\x18\x04 \x01(\x01\x12\x17\n\x0f\x62\x61se_station_up\x18\x05 \x01(\x12\x12(\n\textension\x18\x80\x10 \x03(\x0b\x32\x14.google.protobuf.Any\"\x80\x03\n\x0c\x43odedComment\x12#\n\x10\x63oded_comment_id\x18\x01 \x01(\x0b\x32\t.efdi.UID\x12 \n\x18\x63oded_comment_designator\x18\x02 \x01(\t\x12\x41\n\x13\x63oded_comment_scope\x18\x03 \x01(\x0e\x32$.efdi.CodedComment.CodedCommentScope\x12-\n\x1a\x63oded_comment_group_id_ref\x18\x04 \x01(\x0b\x32\t.efdi.UID\x12=\n\x18\x63oded_comment_list_value\x18\x05 \x03(\x0b\x32\x1b.efdi.CodedCommentListValue\x12(\n\textension\x18\x80\x10 \x03(\x0b\x32\x14.google.protobuf.Any\"N\n\x11\x43odedCommentScope\x12\x0c\n\x08\x43_NOTSET\x10\x00\x12\x0b\n\x07\x43_POINT\x10\x01\x12\x0c\n\x08\x43_GLOBAL\x10\x02\x12\x10\n\x0c\x43_CONTINUOUS\x10\x03\"\x90\x01\n\x11\x43odedCommentGroup\x12)\n\x16\x63oded_comment_group_id\x18\x01 \x01(\x0b\x32\t.efdi.UID\x12&\n\x1e\x63oded_comment_group_designator\x18\x02 \x01(\t\x12(\n\textension\x18\x80\x10 \x03(\x0b\x32\x14.google.protobuf.Any\"\x9e\x01\n\x15\x43odedCommentListValue\x12.\n\x1b\x63oded_comment_list_value_id\x18\x01 \x01(\x0b\x32\t.efdi.UID\x12+\n#coded_comment_list_value_designator\x18\x02 \x01(\t\x12(\n\textension\x18\x80\x10 \x03(\x0b\x32\x14.google.protobuf.Any\"\x9e\x01\n\x0c\x43olourLegend\x12#\n\x10\x63olour_legend_id\x18\x01 \x01(\x0b\x32\t.efdi.UID\x12\x16\n\x0e\x64\x65\x66\x61ult_colour\x18\x02 \x01(\r\x12\'\n\x0c\x63olour_range\x18\x03 \x03(\x0b\x32\x11.efdi.ColourRange\x12(\n\textension\x18\x80\x10 \x03(\x0b\x32\x14.google.protobuf.Any\"u\n\x0b\x43olourRange\x12\x15\n\rminimum_value\x18\x01 \x01(\x12\x12\x15\n\rmaximum_value\x18\x02 \x01(\x12\x12\x0e\n\x06\x63olour\x18\x03 \x01(\r\x12(\n\textension\x18\x80\x10 \x03(\x0b\x32\x14.google.protobuf.Any\"\xdf\x01\n\x11\x43ommentAllocation\x12\'\n\x14\x63oded_comment_id_ref\x18\x01 \x01(\x0b\x32\t.efdi.UID\x12+\n\x18\x63oded_comment_list_value\x18\x02 \x01(\x0b\x32\t.efdi.UID\x12\x19\n\x11\x66ree_comment_text\x18\x03 \x01(\t\x12/\n\x10\x61llocation_stamp\x18\x04 \x01(\x0b\x32\x15.efdi.AllocationStamp\x12(\n\textension\x18\x80\x10 \x03(\x0b\x32\x14.google.protobuf.Any\"\xd6\x01\n\nConnection\x12\"\n\x0f\x64\x65vice_id_ref_0\x18\x01 \x01(\x0b\x32\t.efdi.UID\x12*\n\x17\x64\x65vice_element_id_ref_0\x18\x02 \x01(\x0b\x32\t.efdi.UID\x12\"\n\x0f\x64\x65vice_id_ref_1\x18\x03 \x01(\x0b\x32\t.efdi.UID\x12*\n\x17\x64\x65vice_element_id_ref_1\x18\x04 \x01(\x0b\x32\t.efdi.UID\x12(\n\textension\x18\x80\x10 \x03(\x0b\x32\x14.google.protobuf.Any\"\xd4\x02\n\x11\x43ontrolAssignment\x12\x1a\n\x12source_client_name\x18\x01 \x01(\x0c\x12\x18\n\x10user_client_name\x18\x02 \x01(\x0c\x12%\n\x1dsource_device_structure_label\x18\x03 \x01(\x0c\x12#\n\x1buser_device_structure_label\x18\x04 \x01(\x0c\x12$\n\x1csource_device_element_number\x18\x05 \x01(\r\x12\"\n\x1auser_device_element_number\x18\x06 \x01(\r\x12\x18\n\x10process_data_ddi\x18\x07 \x01(\r\x12/\n\x10\x61llocation_stamp\x18\x08 \x01(\x0b\x32\x15.efdi.AllocationStamp\x12(\n\textension\x18\x80\x10 \x03(\x0b\x32\x14.google.protobuf.Any\"\xc5\x01\n\x08\x43ropType\x12\x1f\n\x0c\x63rop_type_id\x18\x01 \x01(\x0b\x32\t.efdi.UID\x12\x1c\n\x14\x63rop_type_designator\x18\x02 \x01(\t\x12\'\n\x14product_group_id_ref\x18\x03 \x01(\x0b\x32\t.efdi.UID\x12\'\n\x0c\x63rop_variety\x18\x04 \x03(\x0b\x32\x11.efdi.CropVariety\x12(\n\textension\x18\x80\x10 \x03(\x0b\x32\x14.google.protobuf.Any\"\x9f\x01\n\x0b\x43ropVariety\x12\"\n\x0f\x63rop_variety_id\x18\x01 \x01(\x0b\x32\t.efdi.UID\x12\x1f\n\x17\x63rop_variety_designator\x18\x02 \x01(\t\x12!\n\x0eproduct_id_ref\x18\x03 \x01(\x0b\x32\t.efdi.UID\x12(\n\textension\x18\x80\x10 \x03(\x0b\x32\x14.google.protobuf.Any\"\xab\x01\n\x10\x43ulturalPractice\x12\'\n\x14\x63ultural_practice_id\x18\x01 \x01(\x0b\x32\t.efdi.UID\x12$\n\x1c\x63ultural_practice_designator\x18\x02 \x01(\t\x12H\n\x1doperation_technique_reference\x18\x03 \x03(\x0b\x32!.efdi.OperationTechniqueReference\"\x85\x03\n\x08\x43ustomer\x12\x1e\n\x0b\x63ustomer_id\x18\x01 \x01(\x0b\x32\t.efdi.UID\x12\x1a\n\x12\x63ustomer_last_name\x18\x02 \x01(\t\x12\x1b\n\x13\x63ustomer_first_name\x18\x03 \x01(\t\x12\x17\n\x0f\x63ustomer_street\x18\x04 \x01(\t\x12\x17\n\x0f\x63ustomer_po_box\x18\x05 \x01(\t\x12\x1c\n\x14\x63ustomer_postal_code\x18\x06 \x01(\t\x12\x15\n\rcustomer_city\x18\x07 \x01(\t\x12\x16\n\x0e\x63ustomer_state\x18\x08 \x01(\t\x12\x18\n\x10\x63ustomer_country\x18\t \x01(\t\x12\x16\n\x0e\x63ustomer_phone\x18\n \x01(\t\x12\x17\n\x0f\x63ustomer_mobile\x18\x0b \x01(\t\x12\x14\n\x0c\x63ustomer_fax\x18\x0c \x01(\t\x12\x16\n\x0e\x63ustomer_email\x18\r \x01(\t\x12(\n\textension\x18\x80\x10 \x03(\x0b\x32\x14.google.protobuf.Any\"\xc5\x03\n\x0e\x44\x61taLogTrigger\x12\x14\n\x0c\x64\x61ta_log_ddi\x18\x01 \x01(\r\x12\x17\n\x0f\x64\x61ta_log_method\x18\x02 \x01(\r\x12\"\n\x1a\x64\x61ta_log_distance_interval\x18\x03 \x01(\x12\x12\x1e\n\x16\x64\x61ta_log_time_interval\x18\x04 \x01(\x12\x12\"\n\x1a\x64\x61ta_log_threshold_minimum\x18\x05 \x01(\x12\x12\"\n\x1a\x64\x61ta_log_threshold_maximum\x18\x06 \x01(\x12\x12!\n\x19\x64\x61ta_log_threshold_change\x18\x07 \x01(\x12\x12(\n\x15\x64\x65vice_element_id_ref\x18\x08 \x01(\x0b\x32\t.efdi.UID\x12,\n\x19value_presentation_id_ref\x18\t \x01(\x0b\x32\t.efdi.UID\x12\x14\n\x0c\x64\x61ta_log_pgn\x18\n \x01(\x04\x12\x1e\n\x16\x64\x61ta_log_pgn_start_bit\x18\x0b \x01(\r\x12\x1d\n\x15\x64\x61ta_log_pgn_stop_bit\x18\x0c \x01(\r\x12(\n\textension\x18\x80\x10 \x03(\x0b\x32\x14.google.protobuf.Any\"\xed\x01\n\x0c\x44\x61taLogValue\x12\x18\n\x10process_data_ddi\x18\x01 \x01(\r\x12\x1a\n\x12process_data_value\x18\x02 \x01(\x12\x12(\n\x15\x64\x65vice_element_id_ref\x18\x03 \x01(\x0b\x32\t.efdi.UID\x12\x14\n\x0c\x64\x61ta_log_pgn\x18\x04 \x01(\x04\x12\x1e\n\x16\x64\x61ta_log_pgn_start_bit\x18\x05 \x01(\r\x12\x1d\n\x15\x64\x61ta_log_pgn_stop_bit\x18\x06 \x01(\r\x12(\n\textension\x18\x80\x10 \x03(\x0b\x32\x14.google.protobuf.Any\"\xd6\x03\n\x06\x44\x65vice\x12\x1c\n\tdevice_id\x18\x01 \x01(\x0b\x32\t.efdi.UID\x12\x19\n\x11\x64\x65vice_designator\x18\x02 \x01(\t\x12\x1f\n\x17\x64\x65vice_software_version\x18\x03 \x01(\t\x12\x13\n\x0b\x63lient_name\x18\x04 \x01(\x0c\x12\x1c\n\x14\x64\x65vice_serial_number\x18\x05 \x01(\t\x12\x1e\n\x16\x64\x65vice_structure_label\x18\x06 \x01(\x0c\x12!\n\x19\x64\x65vice_localization_label\x18\x07 \x01(\x0c\x12+\n\x0e\x64\x65vice_element\x18\x08 \x03(\x0b\x32\x13.efdi.DeviceElement\x12\x34\n\x13\x64\x65vice_process_data\x18\t \x03(\x0b\x32\x17.efdi.DeviceProcessData\x12-\n\x0f\x64\x65vice_property\x18\n \x03(\x0b\x32\x14.efdi.DeviceProperty\x12@\n\x19\x64\x65vice_value_presentation\x18\x0b \x03(\x0b\x32\x1d.efdi.DeviceValuePresentation\x12(\n\textension\x18\x80\x10 \x03(\x0b\x32\x14.google.protobuf.Any\"\xc4\x01\n\x10\x44\x65viceAllocation\x12\x19\n\x11\x63lient_name_value\x18\x01 \x01(\x0c\x12\x18\n\x10\x63lient_name_mask\x18\x02 \x01(\x0c\x12 \n\rdevice_id_ref\x18\x03 \x01(\x0b\x32\t.efdi.UID\x12/\n\x10\x61llocation_stamp\x18\x04 \x01(\x0b\x32\x15.efdi.AllocationStamp\x12(\n\textension\x18\x80\x10 \x03(\x0b\x32\x14.google.protobuf.Any\"\xea\x03\n\rDeviceElement\x12$\n\x11\x64\x65vice_element_id\x18\x01 \x01(\x0b\x32\t.efdi.UID\x12 \n\x18\x64\x65vice_element_object_id\x18\x02 \x01(\r\x12\x42\n\x13\x64\x65vice_element_type\x18\x03 \x01(\x0e\x32%.efdi.DeviceElement.DeviceElementType\x12!\n\x19\x64\x65vice_element_designator\x18\x04 \x01(\t\x12\x1d\n\x15\x64\x65vice_element_number\x18\x05 \x01(\r\x12\x18\n\x10parent_object_id\x18\x06 \x01(\r\x12<\n\x17\x64\x65vice_object_reference\x18\x07 \x03(\x0b\x32\x1b.efdi.DeviceObjectReference\x12(\n\textension\x18\x80\x10 \x03(\x0b\x32\x14.google.protobuf.Any\"\x88\x01\n\x11\x44\x65viceElementType\x12\x0c\n\x08\x43_NOTSET\x10\x00\x12\x0c\n\x08\x43_DEVICE\x10\x01\x12\x0e\n\nC_FUNCTION\x10\x02\x12\t\n\x05\x43_BIN\x10\x03\x12\r\n\tC_SECTION\x10\x04\x12\n\n\x06\x43_UNIT\x10\x05\x12\x0f\n\x0b\x43_CONNECTOR\x10\x06\x12\x10\n\x0c\x43_NAVIGATION\x10\x07\"[\n\x15\x44\x65viceObjectReference\x12\x18\n\x10\x64\x65vice_object_id\x18\x01 \x01(\r\x12(\n\textension\x18\x80\x10 \x03(\x0b\x32\x14.google.protobuf.Any\"\xad\x02\n\x11\x44\x65viceProcessData\x12%\n\x1d\x64\x65vice_process_data_object_id\x18\x01 \x01(\r\x12\x1f\n\x17\x64\x65vice_process_data_ddi\x18\x02 \x01(\r\x12$\n\x1c\x64\x65vice_process_data_property\x18\x03 \x01(\r\x12+\n#device_process_data_trigger_methods\x18\x04 \x01(\r\x12&\n\x1e\x64\x65vice_process_data_designator\x18\x05 \x01(\t\x12+\n#device_value_presentation_object_id\x18\x06 \x01(\r\x12(\n\textension\x18\x80\x10 \x03(\x0b\x32\x14.google.protobuf.Any\"\xea\x01\n\x0e\x44\x65viceProperty\x12!\n\x19\x64\x65vice_property_object_id\x18\x01 \x01(\r\x12\x1b\n\x13\x64\x65vice_property_ddi\x18\x02 \x01(\r\x12\x1d\n\x15\x64\x65vice_property_value\x18\x03 \x01(\x12\x12\"\n\x1a\x64\x65vice_property_designator\x18\x04 \x01(\t\x12+\n#device_value_presentation_object_id\x18\x05 \x01(\r\x12(\n\textension\x18\x80\x10 \x03(\x0b\x32\x14.google.protobuf.Any\"\xc4\x01\n\x17\x44\x65viceValuePresentation\x12+\n#device_value_presentation_object_id\x18\x01 \x01(\r\x12\x0e\n\x06offset\x18\x02 \x01(\x12\x12\r\n\x05scale\x18\x03 \x01(\x01\x12\x1a\n\x12number_of_decimals\x18\x04 \x01(\r\x12\x17\n\x0funit_designator\x18\x05 \x01(\t\x12(\n\textension\x18\x80\x10 \x03(\x0b\x32\x14.google.protobuf.Any\"\x8a\x02\n\x04\x46\x61rm\x12\x1a\n\x07\x66\x61rm_id\x18\x01 \x01(\x0b\x32\t.efdi.UID\x12\x17\n\x0f\x66\x61rm_designator\x18\x02 \x01(\t\x12\x13\n\x0b\x66\x61rm_street\x18\x03 \x01(\t\x12\x13\n\x0b\x66\x61rm_po_box\x18\x04 \x01(\t\x12\x18\n\x10\x66\x61rm_postal_code\x18\x05 \x01(\t\x12\x11\n\tfarm_city\x18\x06 \x01(\t\x12\x12\n\nfarm_state\x18\x07 \x01(\t\x12\x14\n\x0c\x66\x61rm_country\x18\x08 \x01(\t\x12\"\n\x0f\x63ustomer_id_ref\x18\t \x01(\x0b\x32\t.efdi.UID\x12(\n\textension\x18\x80\x10 \x03(\x0b\x32\x14.google.protobuf.Any\"\xa1\x03\n\x04Grid\x12#\n\x1bgrid_minimum_north_position\x18\x01 \x01(\x01\x12\"\n\x1agrid_minimum_east_position\x18\x02 \x01(\x01\x12\x1c\n\x14grid_cell_north_size\x18\x03 \x01(\x01\x12\x1b\n\x13grid_cell_east_size\x18\x04 \x01(\x01\x12\x1b\n\x13grid_maximum_column\x18\x05 \x01(\x04\x12\x18\n\x10grid_maximum_row\x18\x06 \x01(\x04\x12\x1b\n\x08\x66ilename\x18\x07 \x01(\x0b\x32\t.efdi.UID\x12\x12\n\nfilelength\x18\x08 \x01(\x04\x12&\n\tgrid_type\x18\t \x01(\x0e\x32\x13.efdi.Grid.GridType\x12\x1b\n\x13treatment_zone_code\x18\n \x01(\r\x12(\n\textension\x18\x80\x10 \x03(\x0b\x32\x14.google.protobuf.Any\">\n\x08GridType\x12\x0c\n\x08I_NOTSET\x10\x00\x12\x11\n\rI_GRID_TYPE_1\x10\x01\x12\x11\n\rI_GRID_TYPE_2\x10\x02\"\xc6\x01\n\x12GuidanceAllocation\x12(\n\x15guidance_group_id_ref\x18\x01 \x01(\x0b\x32\t.efdi.UID\x12/\n\x10\x61llocation_stamp\x18\x02 \x01(\x0b\x32\x15.efdi.AllocationStamp\x12+\n\x0eguidance_shift\x18\x03 \x03(\x0b\x32\x13.efdi.GuidanceShift\x12(\n\textension\x18\x80\x10 \x03(\x0b\x32\x14.google.protobuf.Any\"\xdc\x01\n\rGuidanceGroup\x12$\n\x11guidance_group_id\x18\x01 \x01(\x0b\x32\t.efdi.UID\x12!\n\x19guidance_group_designator\x18\x02 \x01(\t\x12/\n\x10guidance_pattern\x18\x03 \x03(\x0b\x32\x15.efdi.GuidancePattern\x12\'\n\x10\x62oundary_polygon\x18\x04 \x03(\x0b\x32\r.efdi.Polygon\x12(\n\textension\x18\x80\x10 \x03(\x0b\x32\x14.google.protobuf.Any\"\xb5\x0c\n\x0fGuidancePattern\x12&\n\x13guidance_pattern_id\x18\x01 \x01(\x0b\x32\t.efdi.UID\x12#\n\x1bguidance_pattern_designator\x18\x02 \x01(\t\x12H\n\x15guidance_pattern_type\x18\x03 \x01(\x0e\x32).efdi.GuidancePattern.GuidancePatternType\x12N\n\x18guidance_pattern_options\x18\x04 \x01(\x0e\x32,.efdi.GuidancePattern.GuidancePatternOptions\x12i\n&guidance_pattern_propagation_direction\x18\x05 \x01(\x0e\x32\x39.efdi.GuidancePattern.GuidancePatternPropagationDirection\x12R\n\x1aguidance_pattern_extension\x18\x06 \x01(\x0e\x32..efdi.GuidancePattern.GuidancePatternExtension\x12 \n\x18guidance_pattern_heading\x18\x07 \x01(\x01\x12\x1f\n\x17guidance_pattern_radius\x18\x08 \x01(\x04\x12U\n\x1cguidance_pattern_gnss_method\x18\t \x01(\x0e\x32/.efdi.GuidancePattern.GuidancePatternGNSSMethod\x12,\n$guidance_pattern_horizontal_accuracy\x18\n \x01(\x01\x12*\n\"guidance_pattern_vertical_accuracy\x18\x0b \x01(\x01\x12&\n\x13\x62\x61se_station_id_ref\x18\x0c \x01(\x0b\x32\t.efdi.UID\x12\x15\n\roriginal_srid\x18\r \x01(\t\x12\x1d\n\x15number_of_swaths_left\x18\x0e \x01(\x04\x12\x1e\n\x16number_of_swaths_right\x18\x0f \x01(\x04\x12%\n\x0bline_string\x18\x10 \x01(\x0b\x32\x10.efdi.LineString\x12\'\n\x10\x62oundary_polygon\x18\x11 \x03(\x0b\x32\r.efdi.Polygon\x12(\n\textension\x18\x80\x10 \x03(\x0b\x32\x14.google.protobuf.Any\"c\n\x13GuidancePatternType\x12\x0c\n\x08\x43_NOTSET\x10\x00\x12\x08\n\x04\x43_AB\x10\x01\x12\x0c\n\x08\x43_A_PLUS\x10\x02\x12\x0b\n\x07\x43_CURVE\x10\x03\x12\x0b\n\x07\x43_PIVOT\x10\x04\x12\x0c\n\x08\x43_SPIRAL\x10\x05\"c\n\x16GuidancePatternOptions\x12\x0c\n\x08\x44_NOTSET\x10\x00\x12\x0f\n\x0b\x44_CLOCKWISE\x10\x01\x12\x17\n\x13\x44_COUNTER_CLOCKWISE\x10\x02\x12\x11\n\rD_FULL_CIRCLE\x10\x03\"g\n#GuidancePatternPropagationDirection\x12\x0c\n\x08\x45_NOTSET\x10\x00\x12\n\n\x06\x45_BOTH\x10\x01\x12\n\n\x06\x45_LEFT\x10\x02\x12\x0b\n\x07\x45_RIGHT\x10\x03\x12\r\n\tE_NO_PROP\x10\x04\"e\n\x18GuidancePatternExtension\x12\x0c\n\x08\x46_NOTSET\x10\x00\x12\n\n\x06\x46_BOTH\x10\x01\x12\x10\n\x0c\x46_FIRST_ONLY\x10\x02\x12\x0f\n\x0b\x46_LAST_ONLY\x10\x03\x12\x0c\n\x08\x46_NO_EXT\x10\x04\"\xf5\x01\n\x19GuidancePatternGNSSMethod\x12\x0c\n\x08I_NOTSET\x10\x00\x12\x0e\n\nI_GNSS_FIX\x10\x01\x12\x0f\n\x0bI_DGNSS_FIX\x10\x02\x12\x12\n\x0eI_PRECISE_GNSS\x10\x03\x12\x17\n\x13I_RTK_FIXED_INTEGER\x10\x04\x12\x0f\n\x0bI_RTK_FLOAT\x10\x05\x12\x17\n\x13I_ESTIMATED_DR_MODE\x10\x06\x12\x12\n\x0eI_MANUAL_INPUT\x10\x07\x12\x13\n\x0fI_SIMULATE_MODE\x10\x08\x12\x1c\n\x18I_DESKTOP_GENERATED_DATA\x10\x10\x12\x0b\n\x07I_OTHER\x10\x11\"\x97\x02\n\rGuidanceShift\x12(\n\x15guidance_group_id_ref\x18\x01 \x01(\x0b\x32\t.efdi.UID\x12*\n\x17guidance_pattern_id_ref\x18\x02 \x01(\x0b\x32\t.efdi.UID\x12\x1b\n\x13guidance_east_shift\x18\x03 \x01(\x12\x12\x1c\n\x14guidance_north_shift\x18\x04 \x01(\x12\x12\x1a\n\x12propagation_offset\x18\x05 \x01(\x12\x12/\n\x10\x61llocation_stamp\x18\x06 \x01(\x0b\x32\x15.efdi.AllocationStamp\x12(\n\textension\x18\x80\x10 \x03(\x0b\x32\x14.google.protobuf.Any\"\xc0\x0b\n\x11ISO11783_TaskData\x12;\n\rversion_major\x18\x01 \x01(\x0e\x32$.efdi.ISO11783_TaskData.VersionMajor\x12\x15\n\rversion_minor\x18\x02 \x01(\r\x12(\n management_software_manufacturer\x18\x03 \x01(\t\x12#\n\x1bmanagement_software_version\x18\x04 \x01(\t\x12$\n\x1ctask_controller_manufacturer\x18\x05 \x01(\t\x12\x1f\n\x17task_controller_version\x18\x06 \x01(\t\x12H\n\x14\x64\x61ta_transfer_origin\x18\x07 \x01(\x0e\x32*.efdi.ISO11783_TaskData.DataTransferOrigin\x12\x1e\n\x16\x64\x61ta_transfer_language\x18\x08 \x01(\t\x12)\n\rattached_file\x18\t \x03(\x0b\x32\x12.efdi.AttachedFile\x12\'\n\x0c\x62\x61se_station\x18\n \x03(\x0b\x32\x11.efdi.BaseStation\x12)\n\rcoded_comment\x18\x0b \x03(\x0b\x32\x12.efdi.CodedComment\x12\x34\n\x13\x63oded_comment_group\x18\x0c \x03(\x0b\x32\x17.efdi.CodedCommentGroup\x12)\n\rcolour_legend\x18\r \x03(\x0b\x32\x12.efdi.ColourLegend\x12!\n\tcrop_type\x18\x0e \x03(\x0b\x32\x0e.efdi.CropType\x12\x31\n\x11\x63ultural_practice\x18\x0f \x03(\x0b\x32\x16.efdi.CulturalPractice\x12 \n\x08\x63ustomer\x18\x10 \x03(\x0b\x32\x0e.efdi.Customer\x12\x1c\n\x06\x64\x65vice\x18\x11 \x03(\x0b\x32\x0c.efdi.Device\x12\x18\n\x04\x66\x61rm\x18\x12 \x03(\x0b\x32\n.efdi.Farm\x12\x35\n\x13operation_technique\x18\x13 \x03(\x0b\x32\x18.efdi.OperationTechnique\x12\"\n\tpartfield\x18\x14 \x03(\x0b\x32\x0f.efdi.Partfield\x12\x1e\n\x07product\x18\x15 \x03(\x0b\x32\r.efdi.Product\x12)\n\rproduct_group\x18\x16 \x03(\x0b\x32\x12.efdi.ProductGroup\x12\x18\n\x04task\x18\x17 \x03(\x0b\x32\n.efdi.Task\x12\x46\n\x1ctask_controller_capabilities\x18\x18 \x03(\x0b\x32 .efdi.TaskControllerCapabilities\x12\x33\n\x12value_presentation\x18\x19 \x03(\x0b\x32\x17.efdi.ValuePresentation\x12\x1c\n\x06worker\x18\x1a \x03(\x0b\x32\x0c.efdi.Worker\x12<\n\x17\x65xternal_file_reference\x18\x1b \x03(\x0b\x32\x1b.efdi.ExternalFileReference\x12(\n\textension\x18\x80\x10 \x03(\x0b\x32\x14.google.protobuf.Any\"\x8e\x01\n\x0cVersionMajor\x12\x15\n\x11VERSION_MAJOR_DIS\x10\x00\x12\x18\n\x14VERSION_MAJOR_FDIS_1\x10\x01\x12\x18\n\x14VERSION_MAJOR_FDIS_2\x10\x02\x12\x18\n\x14VERSION_MAJOR_E2_DIS\x10\x03\x12\x19\n\x15VERSION_MAJOR_E2_FDIS\x10\x04\"s\n\x12\x44\x61taTransferOrigin\x12\x1f\n\x1b\x44\x41TA_TRANSFER_ORIGIN_NOTSET\x10\x00\x12\x1d\n\x19\x44\x41TA_TRANSFER_ORIGIN_FMIS\x10\x01\x12\x1d\n\x19\x44\x41TA_TRANSFER_ORIGIN_MICS\x10\x02\"\xec\x03\n\nLineString\x12\x39\n\x10line_string_type\x18\x01 \x01(\x0e\x32\x1f.efdi.LineString.LinestringType\x12\x1e\n\x16line_string_designator\x18\x02 \x01(\t\x12\x19\n\x11line_string_width\x18\x03 \x01(\r\x12\x1a\n\x12line_string_length\x18\x04 \x01(\r\x12\x1a\n\x12line_string_colour\x18\x05 \x01(\r\x12!\n\x0eline_string_id\x18\x06 \x01(\x0b\x32\t.efdi.UID\x12\x1a\n\x05point\x18\x07 \x03(\x0b\x32\x0b.efdi.Point\x12(\n\textension\x18\x80\x10 \x03(\x0b\x32\x14.google.protobuf.Any\"\xc6\x01\n\x0eLinestringType\x12\x0c\n\x08\x41_NOTSET\x10\x00\x12\x16\n\x12\x41_POLYGON_EXTERIOR\x10\x01\x12\x16\n\x12\x41_POLYGON_INTERIOR\x10\x02\x12\x0f\n\x0b\x41_TRAM_LINE\x10\x03\x12\x14\n\x10\x41_SAMPLING_ROUTE\x10\x04\x12\x16\n\x12\x41_GUIDANCE_PATTERN\x10\x05\x12\x0e\n\nA_DRAINAGE\x10\x06\x12\x0b\n\x07\x41_FENCE\x10\x07\x12\n\n\x06\x41_FLAG\x10\x08\x12\x0e\n\nA_OBSTACLE\x10\t\"\x91\x01\n\x12OperationTechnique\x12)\n\x16operation_technique_id\x18\x01 \x01(\x0b\x32\t.efdi.UID\x12&\n\x1eoperation_technique_designator\x18\x02 \x01(\t\x12(\n\textension\x18\x80\x10 \x03(\x0b\x32\x14.google.protobuf.Any\"v\n\x1bOperationTechniqueReference\x12-\n\x1aoperation_technique_id_ref\x18\x01 \x01(\x0b\x32\t.efdi.UID\x12(\n\textension\x18\x80\x10 \x03(\x0b\x32\x14.google.protobuf.Any\"\x98\x01\n\x10OperTechPractice\x12+\n\x18\x63ultural_practice_id_ref\x18\x01 \x01(\x0b\x32\t.efdi.UID\x12-\n\x1aoperation_technique_id_ref\x18\x02 \x01(\x0b\x32\t.efdi.UID\x12(\n\textension\x18\x80\x10 \x03(\x0b\x32\x14.google.protobuf.Any\"\xe6\x03\n\tPartfield\x12\x1f\n\x0cpartfield_id\x18\x01 \x01(\x0b\x32\t.efdi.UID\x12\x16\n\x0epartfield_code\x18\x02 \x01(\t\x12\x1c\n\x14partfield_designator\x18\x03 \x01(\t\x12\x16\n\x0epartfield_area\x18\x04 \x01(\x04\x12\"\n\x0f\x63ustomer_id_ref\x18\x05 \x01(\x0b\x32\t.efdi.UID\x12\x1e\n\x0b\x66\x61rm_id_ref\x18\x06 \x01(\x0b\x32\t.efdi.UID\x12#\n\x10\x63rop_type_id_ref\x18\x07 \x01(\x0b\x32\t.efdi.UID\x12&\n\x13\x63rop_variety_id_ref\x18\x08 \x01(\x0b\x32\t.efdi.UID\x12\x1f\n\x0c\x66ield_id_ref\x18\t \x01(\x0b\x32\t.efdi.UID\x12\x1e\n\x07polygon\x18\n \x03(\x0b\x32\r.efdi.Polygon\x12%\n\x0bline_string\x18\x0b \x03(\x0b\x32\x10.efdi.LineString\x12\x1a\n\x05point\x18\x0c \x03(\x0b\x32\x0b.efdi.Point\x12+\n\x0eguidance_group\x18\r \x03(\x0b\x32\x13.efdi.GuidanceGroup\x12(\n\textension\x18\x80\x10 \x03(\x0b\x32\x14.google.protobuf.Any\"\xae\x04\n\x05Point\x12)\n\npoint_type\x18\x01 \x01(\x0e\x32\x15.efdi.Point.PointType\x12\x18\n\x10point_designator\x18\x02 \x01(\t\x12\x13\n\x0bpoint_north\x18\x03 \x01(\x01\x12\x12\n\npoint_east\x18\x04 \x01(\x01\x12\x10\n\x08point_up\x18\x05 \x01(\x12\x12\x14\n\x0cpoint_colour\x18\x06 \x01(\r\x12\x1b\n\x08point_id\x18\x07 \x01(\x0b\x32\t.efdi.UID\x12!\n\x19point_horizontal_accuracy\x18\x08 \x01(\x01\x12\x1f\n\x17point_vertical_accuracy\x18\t \x01(\x01\x12\x10\n\x08\x66ilename\x18\n \x01(\t\x12\x12\n\nfilelength\x18\x0b \x01(\x04\x12(\n\textension\x18\x80\x10 \x03(\x0b\x32\x14.google.protobuf.Any\"\xdd\x01\n\tPointType\x12\x0c\n\x08\x41_NOTSET\x10\x00\x12\n\n\x06\x41_FLAG\x10\x01\x12\x0b\n\x07\x41_OTHER\x10\x02\x12\x12\n\x0e\x41_FIELD_ACCESS\x10\x03\x12\r\n\tA_STORAGE\x10\x04\x12\x0e\n\nA_OBSTACLE\x10\x05\x12\x10\n\x0c\x41_GUID_REF_A\x10\x06\x12\x10\n\x0c\x41_GUID_REF_B\x10\x07\x12\x15\n\x11\x41_GUID_REF_CENTER\x10\x08\x12\x10\n\x0c\x41_GUID_POINT\x10\t\x12\x19\n\x15\x41_PARTFIELD_REF_POINT\x10\n\x12\x0e\n\nA_HOMEBASE\x10\x0b\"\xe1\x03\n\x07Polygon\x12/\n\x0cpolygon_type\x18\x01 \x01(\x0e\x32\x19.efdi.Polygon.PolygonType\x12\x1a\n\x12polygon_designator\x18\x02 \x01(\t\x12\x14\n\x0cpolygon_area\x18\x03 \x01(\x04\x12\x16\n\x0epolygon_colour\x18\x04 \x01(\r\x12\x1d\n\npolygon_id\x18\x05 \x01(\x0b\x32\t.efdi.UID\x12%\n\x0bline_string\x18\x06 \x03(\x0b\x32\x10.efdi.LineString\x12(\n\textension\x18\x80\x10 \x03(\x0b\x32\x14.google.protobuf.Any\"\xea\x01\n\x0bPolygonType\x12\x0c\n\x08\x41_NOTSET\x10\x00\x12\x18\n\x14\x41_PARTFIELD_BOUNDARY\x10\x01\x12\x14\n\x10\x41_TREATMENT_ZONE\x10\x02\x12\x13\n\x0f\x41_WATER_SURFACE\x10\x03\x12\x0e\n\nA_BUILDING\x10\x04\x12\n\n\x06\x41_ROAD\x10\x05\x12\x0e\n\nA_OBSTACLE\x10\x06\x12\n\n\x06\x41_FLAG\x10\x07\x12\x0b\n\x07\x41_OTHER\x10\x08\x12\x0f\n\x0b\x41_MAINFIELD\x10\t\x12\x0e\n\nA_HEADLAND\x10\n\x12\x11\n\rA_BUFFER_ZONE\x10\x0b\x12\x0f\n\x0b\x41_WINDBREAK\x10\x0c\"\xf2\x03\n\x08Position\x12\x16\n\x0eposition_north\x18\x01 \x01(\x01\x12\x15\n\rposition_east\x18\x02 \x01(\x01\x12\x13\n\x0bposition_up\x18\x03 \x01(\x12\x12\x36\n\x0fposition_status\x18\x04 \x01(\x0e\x32\x1d.efdi.Position.PositionStatus\x12\x0c\n\x04pdop\x18\x05 \x01(\x01\x12\x0c\n\x04hdop\x18\x06 \x01(\x01\x12\x1c\n\x14number_of_satellites\x18\x07 \x01(\r\x12\x35\n\x11gps_utc_timestamp\x18\x08 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12(\n\textension\x18\x80\x10 \x03(\x0b\x32\x14.google.protobuf.Any\"\xce\x01\n\x0ePositionStatus\x12\x0c\n\x08\x44_NO_GPS\x10\x00\x12\n\n\x06\x44_GNSS\x10\x01\x12\x0b\n\x07\x44_DGNSS\x10\x02\x12\x12\n\x0e\x44_PRECISE_GNSS\x10\x03\x12\x12\n\x0e\x44_RTK_FINTEGER\x10\x04\x12\x0f\n\x0b\x44_RTK_FLOAT\x10\x05\x12\x11\n\rD_EST_DR_MODE\x10\x06\x12\x12\n\x0e\x44_MANUAL_INPUT\x10\x07\x12\x13\n\x0f\x44_SIMULATE_MODE\x10\x08\x12\x0b\n\x07\x44_ERROR\x10\x0e\x12\x13\n\x0f\x44_NOT_AVAILABLE\x10\x0f\"\xf7\x02\n\x13ProcessDataVariable\x12\x18\n\x10process_data_ddi\x18\x01 \x01(\r\x12\x1a\n\x12process_data_value\x18\x02 \x01(\x12\x12!\n\x0eproduct_id_ref\x18\x03 \x01(\x0b\x32\t.efdi.UID\x12(\n\x15\x64\x65vice_element_id_ref\x18\x04 \x01(\x0b\x32\t.efdi.UID\x12,\n\x19value_presentation_id_ref\x18\x05 \x01(\x0b\x32\t.efdi.UID\x12&\n\x1e\x61\x63tual_cultural_practice_value\x18\x06 \x01(\x12\x12#\n\x1b\x65lement_type_instance_value\x18\x07 \x01(\x12\x12\x38\n\x15process_data_variable\x18\x08 \x03(\x0b\x32\x19.efdi.ProcessDataVariable\x12(\n\textension\x18\x80\x10 \x03(\x0b\x32\x14.google.protobuf.Any\"\x94\x04\n\x07Product\x12\x1d\n\nproduct_id\x18\x01 \x01(\x0b\x32\t.efdi.UID\x12\x1a\n\x12product_designator\x18\x02 \x01(\t\x12\'\n\x14product_group_id_ref\x18\x03 \x01(\x0b\x32\t.efdi.UID\x12,\n\x19value_presentation_id_ref\x18\x04 \x01(\x0b\x32\t.efdi.UID\x12\x14\n\x0cquantity_ddi\x18\x05 \x01(\r\x12/\n\x0cproduct_type\x18\x06 \x01(\x0e\x32\x19.efdi.Product.ProductType\x12\x1f\n\x17mixture_recipe_quantity\x18\x07 \x01(\x12\x12\x1f\n\x17\x64\x65nsity_mass_per_volume\x18\x08 \x01(\x12\x12\x1e\n\x16\x64\x65nsity_mass_per_count\x18\t \x01(\x12\x12 \n\x18\x64\x65nsity_volume_per_count\x18\n \x01(\x12\x12/\n\x10product_relation\x18\x0b \x03(\x0b\x32\x15.efdi.ProductRelation\x12(\n\textension\x18\x80\x10 \x03(\x0b\x32\x14.google.protobuf.Any\"Q\n\x0bProductType\x12\x0c\n\x08\x46_NOTSET\x10\x00\x12\x0c\n\x08\x46_SINGLE\x10\x01\x12\r\n\tF_MIXTURE\x10\x02\x12\x17\n\x13\x46_TEMPORARY_MIXTURE\x10\x03\"\xce\x03\n\x11ProductAllocation\x12!\n\x0eproduct_id_ref\x18\x01 \x01(\x0b\x32\t.efdi.UID\x12\x14\n\x0cquantity_ddi\x18\x02 \x01(\r\x12\x16\n\x0equantity_value\x18\x03 \x01(\x12\x12;\n\rtransfer_mode\x18\x04 \x01(\x0e\x32$.efdi.ProductAllocation.TransferMode\x12(\n\x15\x64\x65vice_element_id_ref\x18\x05 \x01(\x0b\x32\t.efdi.UID\x12,\n\x19value_presentation_id_ref\x18\x06 \x01(\x0b\x32\t.efdi.UID\x12*\n\x17product_sub_type_id_ref\x18\x07 \x01(\x0b\x32\t.efdi.UID\x12/\n\x10\x61llocation_stamp\x18\x08 \x01(\x0b\x32\x15.efdi.AllocationStamp\x12(\n\textension\x18\x80\x10 \x03(\x0b\x32\x14.google.protobuf.Any\"L\n\x0cTransferMode\x12\x0c\n\x08\x44_NOTSET\x10\x00\x12\r\n\tD_FILLING\x10\x01\x12\x0e\n\nD_EMPTYING\x10\x02\x12\x0f\n\x0b\x44_REMAINDER\x10\x03\"\x88\x02\n\x0cProductGroup\x12#\n\x10product_group_id\x18\x01 \x01(\x0b\x32\t.efdi.UID\x12 \n\x18product_group_designator\x18\x02 \x01(\t\x12?\n\x12product_group_type\x18\x03 \x01(\x0e\x32#.efdi.ProductGroup.ProductGroupType\x12(\n\textension\x18\x80\x10 \x03(\x0b\x32\x14.google.protobuf.Any\"F\n\x10ProductGroupType\x12\x0c\n\x08\x43_NOTSET\x10\x00\x12\x13\n\x0f\x43_PRODUCT_GROUP\x10\x01\x12\x0f\n\x0b\x43_CROP_TYPE\x10\x02\"v\n\x0fProductRelation\x12!\n\x0eproduct_id_ref\x18\x01 \x01(\x0b\x32\t.efdi.UID\x12\x16\n\x0equantity_value\x18\x02 \x01(\x12\x12(\n\textension\x18\x80\x10 \x03(\x0b\x32\x14.google.protobuf.Any\"\xe3\x08\n\x04Task\x12\x1a\n\x07task_id\x18\x01 \x01(\x0b\x32\t.efdi.UID\x12\x17\n\x0ftask_designator\x18\x02 \x01(\t\x12\"\n\x0f\x63ustomer_id_ref\x18\x03 \x01(\x0b\x32\t.efdi.UID\x12\x1e\n\x0b\x66\x61rm_id_ref\x18\x04 \x01(\x0b\x32\t.efdi.UID\x12#\n\x10partfield_id_ref\x18\x05 \x01(\x0b\x32\t.efdi.UID\x12,\n\x19responsible_worker_id_ref\x18\x06 \x01(\x0b\x32\t.efdi.UID\x12*\n\x0btask_status\x18\x07 \x01(\x0e\x32\x15.efdi.Task.TaskStatus\x12#\n\x1b\x64\x65\x66\x61ult_treatment_zone_code\x18\x08 \x01(\r\x12)\n!position_lost_treatment_zone_code\x18\t \x01(\r\x12(\n out_of_field_treatment_zone_code\x18\n \x01(\r\x12+\n\x0etreatment_zone\x18\x0b \x03(\x0b\x32\x13.efdi.TreatmentZone\x12\x18\n\x04time\x18\x0c \x03(\x0b\x32\n.efdi.Time\x12\x32\n\x12oper_tech_practice\x18\r \x01(\x0b\x32\x16.efdi.OperTechPractice\x12\x31\n\x11worker_allocation\x18\x0e \x03(\x0b\x32\x16.efdi.WorkerAllocation\x12\x31\n\x11\x64\x65vice_allocation\x18\x0f \x03(\x0b\x32\x16.efdi.DeviceAllocation\x12$\n\nconnection\x18\x10 \x03(\x0b\x32\x10.efdi.Connection\x12\x33\n\x12product_allocation\x18\x11 \x03(\x0b\x32\x17.efdi.ProductAllocation\x12.\n\x10\x64\x61ta_log_trigger\x18\x12 \x03(\x0b\x32\x14.efdi.DataLogTrigger\x12\x33\n\x12\x63omment_allocation\x18\x13 \x03(\x0b\x32\x17.efdi.CommentAllocation\x12\x1f\n\x08time_log\x18\x14 \x03(\x0b\x32\r.efdi.TimeLog\x12\x18\n\x04grid\x18\x15 \x01(\x0b\x32\n.efdi.Grid\x12\x33\n\x12\x63ontrol_assignment\x18\x16 \x03(\x0b\x32\x17.efdi.ControlAssignment\x12\x35\n\x13guidance_allocation\x18\x17 \x03(\x0b\x32\x18.efdi.GuidanceAllocation\x12(\n\textension\x18\x80\x10 \x03(\x0b\x32\x14.google.protobuf.Any\"w\n\nTaskStatus\x12\x0c\n\x08G_NOTSET\x10\x00\x12\r\n\tG_PLANNED\x10\x01\x12\r\n\tG_RUNNING\x10\x02\x12\x0c\n\x08G_PAUSED\x10\x03\x12\x0f\n\x0bG_COMPLETED\x10\x04\x12\x0e\n\nG_TEMPLATE\x10\x05\x12\x0e\n\nG_CANCELED\x10\x06\"\xce\x03\n\x1aTaskControllerCapabilities\x12-\n%task_controller_control_function_name\x18\x01 \x01(\x0c\x12\"\n\x1atask_controller_designator\x18\x02 \x01(\t\x12\x46\n\x0eversion_number\x18\x03 \x01(\x0e\x32..efdi.TaskControllerCapabilities.VersionNumber\x12\x1d\n\x15provided_capabilities\x18\x04 \x01(\r\x12\'\n\x1fnumber_of_booms_section_control\x18\x05 \x01(\r\x12*\n\"number_of_sections_section_control\x18\x06 \x01(\r\x12\"\n\x1anumber_of_control_channels\x18\x07 \x01(\r\x12(\n\textension\x18\x80\x10 \x03(\x0b\x32\x14.google.protobuf.Any\"S\n\rVersionNumber\x12\t\n\x05\x43_DIS\x10\x00\x12\x0c\n\x08\x43_FDIS_1\x10\x01\x12\x0c\n\x08\x43_FDIS_2\x10\x02\x12\x0c\n\x08\x43_E2_DIS\x10\x03\x12\r\n\tC_E2_FDIS\x10\x04\"\xc8\x03\n\x04Time\x12)\n\x05start\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12(\n\x04stop\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x10\n\x08\x64uration\x18\x03 \x01(\x04\x12!\n\x04type\x18\x04 \x01(\x0e\x32\x13.efdi.Time.TimeType\x12&\n\x0eposition_start\x18\x05 \x01(\x0b\x32\x0e.efdi.Position\x12%\n\rposition_stop\x18\x06 \x01(\x0b\x32\x0e.efdi.Position\x12*\n\x0e\x64\x61ta_log_value\x18\x07 \x03(\x0b\x32\x12.efdi.DataLogValue\x12(\n\textension\x18\x80\x10 \x03(\x0b\x32\x14.google.protobuf.Any\"\x90\x01\n\x08TimeType\x12\x0c\n\x08\x44_NOTSET\x10\x00\x12\r\n\tD_PLANNED\x10\x01\x12\x11\n\rD_PRELIMINARY\x10\x02\x12\x0f\n\x0b\x44_EFFECTIVE\x10\x04\x12\x11\n\rD_INEFFECTIVE\x10\x05\x12\x0c\n\x08\x44_REPAIR\x10\x06\x12\x0e\n\nD_CLEARING\x10\x07\x12\x12\n\x0e\x44_POWERED_DOWN\x10\x08\"\xd8\x01\n\x07TimeLog\x12\x10\n\x08\x66ilename\x18\x02 \x01(\t\x12\x12\n\nfilelength\x18\x03 \x01(\x04\x12\x30\n\rtime_log_type\x18\x01 \x01(\x0e\x32\x19.efdi.TimeLog.TimeLogType\x12\x18\n\x04time\x18\x04 \x03(\x0b\x32\n.efdi.Time\x12(\n\textension\x18\x80\x10 \x03(\x0b\x32\x14.google.protobuf.Any\"1\n\x0bTimeLogType\x12\x0c\n\x08\x43_NOTSET\x10\x00\x12\x14\n\x10\x43_BINARY_TIMELOG\x10\x01\"\xf2\x01\n\rTreatmentZone\x12\x1b\n\x13treatment_zone_code\x18\x01 \x01(\r\x12!\n\x19treatment_zone_designator\x18\x02 \x01(\t\x12\x1d\n\x15treatment_zone_colour\x18\x03 \x01(\r\x12\x1e\n\x07polygon\x18\x04 \x03(\x0b\x32\r.efdi.Polygon\x12\x38\n\x15process_data_variable\x18\x05 \x03(\x0b\x32\x19.efdi.ProcessDataVariable\x12(\n\textension\x18\x80\x10 \x03(\x0b\x32\x14.google.protobuf.Any\"\xe4\x01\n\x11ValuePresentation\x12(\n\x15value_presentation_id\x18\x01 \x01(\x0b\x32\t.efdi.UID\x12\x0e\n\x06offset\x18\x02 \x01(\x12\x12\r\n\x05scale\x18\x03 \x01(\x01\x12\x1a\n\x12number_of_decimals\x18\x04 \x01(\r\x12\x17\n\x0funit_designator\x18\x05 \x01(\t\x12\'\n\x14\x63olour_legend_id_ref\x18\x06 \x01(\x0b\x32\t.efdi.UID\x12(\n\textension\x18\x80\x10 \x03(\x0b\x32\x14.google.protobuf.Any\"\xf4\x02\n\x06Worker\x12\x1c\n\tworker_id\x18\x01 \x01(\x0b\x32\t.efdi.UID\x12\x18\n\x10worker_last_name\x18\x02 \x01(\t\x12\x19\n\x11worker_first_name\x18\x03 \x01(\t\x12\x15\n\rworker_street\x18\x04 \x01(\t\x12\x15\n\rworker_po_box\x18\x05 \x01(\t\x12\x1a\n\x12worker_postal_code\x18\x06 \x01(\t\x12\x13\n\x0bworker_city\x18\x07 \x01(\t\x12\x14\n\x0cworker_state\x18\x08 \x01(\t\x12\x16\n\x0eworker_country\x18\t \x01(\t\x12\x14\n\x0cworker_phone\x18\n \x01(\t\x12\x15\n\rworker_mobile\x18\x0b \x01(\t\x12\x1d\n\x15worker_license_number\x18\x0c \x01(\t\x12\x14\n\x0cworker_email\x18\r \x01(\t\x12(\n\textension\x18\x80\x10 \x03(\x0b\x32\x14.google.protobuf.Any\"\x8f\x01\n\x10WorkerAllocation\x12 \n\rworker_id_ref\x18\x01 \x01(\x0b\x32\t.efdi.UID\x12/\n\x10\x61llocation_stamp\x18\x02 \x01(\x0b\x32\x15.efdi.AllocationStamp\x12(\n\textension\x18\x80\x10 \x03(\x0b\x32\x14.google.protobuf.Any\"\xbc\x01\n\x15\x45xternalFileReference\x12\x1b\n\x08\x66ilename\x18\x01 \x01(\x0b\x32\t.efdi.UID\x12\x37\n\tfile_type\x18\x02 \x01(\x0e\x32$.efdi.ExternalFileReference.FileType\x12(\n\textension\x18\x80\x10 \x03(\x0b\x32\x14.google.protobuf.Any\"#\n\x08\x46ileType\x12\x0c\n\x08\x42_NOTSET\x10\x00\x12\t\n\x05\x42_XML\x10\x01\x62\x06proto3' - , - dependencies=[google_dot_protobuf_dot_timestamp__pb2.DESCRIPTOR,google_dot_protobuf_dot_any__pb2.DESCRIPTOR,]) - - + name='agrirouter/protobuf/technicalmessagetype/efdi.proto', + package='efdi', + syntax='proto3', + serialized_options=None, + create_key=_descriptor._internal_create_key, + serialized_pb=b'\n3agrirouter/protobuf/technicalmessagetype/efdi.proto\x12\x04\x65\x66\x64i\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x19google/protobuf/any.proto\"\"\n\x03UID\x12\x0e\n\x06number\x18\x01 \x01(\x12\x12\x0b\n\x03uri\x18\x02 \x03(\t\"\xc2\x02\n\x0f\x41llocationStamp\x12)\n\x05start\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12(\n\x04stop\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x10\n\x08\x64uration\x18\x03 \x01(\x04\x12\x37\n\x04type\x18\x04 \x01(\x0e\x32).efdi.AllocationStamp.AllocationStampType\x12 \n\x08position\x18\x05 \x03(\x0b\x32\x0e.efdi.Position\x12(\n\textension\x18\x80\x10 \x03(\x0b\x32\x14.google.protobuf.Any\"C\n\x13\x41llocationStampType\x12\x0c\n\x08\x44_NOTSET\x10\x00\x12\r\n\tD_PLANNED\x10\x01\x12\x0f\n\x0b\x44_EFFECTIVE\x10\x04\"\xac\x02\n\x0c\x41ttachedFile\x12*\n\x17\x66ilename_with_extension\x18\x01 \x01(\x0b\x32\t.efdi.UID\x12-\n\x08preserve\x18\x02 \x01(\x0e\x32\x1b.efdi.AttachedFile.Preserve\x12\x18\n\x10manufacturer_gln\x18\x03 \x01(\t\x12\x11\n\tfile_type\x18\x04 \x01(\r\x12\x14\n\x0c\x66ile_version\x18\x05 \x01(\t\x12\x13\n\x0b\x66ile_length\x18\x06 \x01(\x04\x12(\n\textension\x18\x80\x10 \x03(\x0b\x32\x14.google.protobuf.Any\"?\n\x08Preserve\x12\x0c\n\x08\x42_NOTSET\x10\x00\x12\x11\n\rB_PRESERVE_NO\x10\x01\x12\x12\n\x0e\x42_PRESERVE_YES\x10\x02\"\xcc\x01\n\x0b\x42\x61seStation\x12\"\n\x0f\x62\x61se_station_id\x18\x01 \x01(\x0b\x32\t.efdi.UID\x12\x1f\n\x17\x62\x61se_station_designator\x18\x02 \x01(\t\x12\x1a\n\x12\x62\x61se_station_north\x18\x03 \x01(\x01\x12\x19\n\x11\x62\x61se_station_east\x18\x04 \x01(\x01\x12\x17\n\x0f\x62\x61se_station_up\x18\x05 \x01(\x12\x12(\n\textension\x18\x80\x10 \x03(\x0b\x32\x14.google.protobuf.Any\"\x80\x03\n\x0c\x43odedComment\x12#\n\x10\x63oded_comment_id\x18\x01 \x01(\x0b\x32\t.efdi.UID\x12 \n\x18\x63oded_comment_designator\x18\x02 \x01(\t\x12\x41\n\x13\x63oded_comment_scope\x18\x03 \x01(\x0e\x32$.efdi.CodedComment.CodedCommentScope\x12-\n\x1a\x63oded_comment_group_id_ref\x18\x04 \x01(\x0b\x32\t.efdi.UID\x12=\n\x18\x63oded_comment_list_value\x18\x05 \x03(\x0b\x32\x1b.efdi.CodedCommentListValue\x12(\n\textension\x18\x80\x10 \x03(\x0b\x32\x14.google.protobuf.Any\"N\n\x11\x43odedCommentScope\x12\x0c\n\x08\x43_NOTSET\x10\x00\x12\x0b\n\x07\x43_POINT\x10\x01\x12\x0c\n\x08\x43_GLOBAL\x10\x02\x12\x10\n\x0c\x43_CONTINUOUS\x10\x03\"\x90\x01\n\x11\x43odedCommentGroup\x12)\n\x16\x63oded_comment_group_id\x18\x01 \x01(\x0b\x32\t.efdi.UID\x12&\n\x1e\x63oded_comment_group_designator\x18\x02 \x01(\t\x12(\n\textension\x18\x80\x10 \x03(\x0b\x32\x14.google.protobuf.Any\"\x9e\x01\n\x15\x43odedCommentListValue\x12.\n\x1b\x63oded_comment_list_value_id\x18\x01 \x01(\x0b\x32\t.efdi.UID\x12+\n#coded_comment_list_value_designator\x18\x02 \x01(\t\x12(\n\textension\x18\x80\x10 \x03(\x0b\x32\x14.google.protobuf.Any\"\x9e\x01\n\x0c\x43olourLegend\x12#\n\x10\x63olour_legend_id\x18\x01 \x01(\x0b\x32\t.efdi.UID\x12\x16\n\x0e\x64\x65\x66\x61ult_colour\x18\x02 \x01(\r\x12\'\n\x0c\x63olour_range\x18\x03 \x03(\x0b\x32\x11.efdi.ColourRange\x12(\n\textension\x18\x80\x10 \x03(\x0b\x32\x14.google.protobuf.Any\"u\n\x0b\x43olourRange\x12\x15\n\rminimum_value\x18\x01 \x01(\x12\x12\x15\n\rmaximum_value\x18\x02 \x01(\x12\x12\x0e\n\x06\x63olour\x18\x03 \x01(\r\x12(\n\textension\x18\x80\x10 \x03(\x0b\x32\x14.google.protobuf.Any\"\xdf\x01\n\x11\x43ommentAllocation\x12\'\n\x14\x63oded_comment_id_ref\x18\x01 \x01(\x0b\x32\t.efdi.UID\x12+\n\x18\x63oded_comment_list_value\x18\x02 \x01(\x0b\x32\t.efdi.UID\x12\x19\n\x11\x66ree_comment_text\x18\x03 \x01(\t\x12/\n\x10\x61llocation_stamp\x18\x04 \x01(\x0b\x32\x15.efdi.AllocationStamp\x12(\n\textension\x18\x80\x10 \x03(\x0b\x32\x14.google.protobuf.Any\"\xd6\x01\n\nConnection\x12\"\n\x0f\x64\x65vice_id_ref_0\x18\x01 \x01(\x0b\x32\t.efdi.UID\x12*\n\x17\x64\x65vice_element_id_ref_0\x18\x02 \x01(\x0b\x32\t.efdi.UID\x12\"\n\x0f\x64\x65vice_id_ref_1\x18\x03 \x01(\x0b\x32\t.efdi.UID\x12*\n\x17\x64\x65vice_element_id_ref_1\x18\x04 \x01(\x0b\x32\t.efdi.UID\x12(\n\textension\x18\x80\x10 \x03(\x0b\x32\x14.google.protobuf.Any\"\xd4\x02\n\x11\x43ontrolAssignment\x12\x1a\n\x12source_client_name\x18\x01 \x01(\x0c\x12\x18\n\x10user_client_name\x18\x02 \x01(\x0c\x12%\n\x1dsource_device_structure_label\x18\x03 \x01(\x0c\x12#\n\x1buser_device_structure_label\x18\x04 \x01(\x0c\x12$\n\x1csource_device_element_number\x18\x05 \x01(\r\x12\"\n\x1auser_device_element_number\x18\x06 \x01(\r\x12\x18\n\x10process_data_ddi\x18\x07 \x01(\r\x12/\n\x10\x61llocation_stamp\x18\x08 \x01(\x0b\x32\x15.efdi.AllocationStamp\x12(\n\textension\x18\x80\x10 \x03(\x0b\x32\x14.google.protobuf.Any\"\xc5\x01\n\x08\x43ropType\x12\x1f\n\x0c\x63rop_type_id\x18\x01 \x01(\x0b\x32\t.efdi.UID\x12\x1c\n\x14\x63rop_type_designator\x18\x02 \x01(\t\x12\'\n\x14product_group_id_ref\x18\x03 \x01(\x0b\x32\t.efdi.UID\x12\'\n\x0c\x63rop_variety\x18\x04 \x03(\x0b\x32\x11.efdi.CropVariety\x12(\n\textension\x18\x80\x10 \x03(\x0b\x32\x14.google.protobuf.Any\"\x9f\x01\n\x0b\x43ropVariety\x12\"\n\x0f\x63rop_variety_id\x18\x01 \x01(\x0b\x32\t.efdi.UID\x12\x1f\n\x17\x63rop_variety_designator\x18\x02 \x01(\t\x12!\n\x0eproduct_id_ref\x18\x03 \x01(\x0b\x32\t.efdi.UID\x12(\n\textension\x18\x80\x10 \x03(\x0b\x32\x14.google.protobuf.Any\"\xab\x01\n\x10\x43ulturalPractice\x12\'\n\x14\x63ultural_practice_id\x18\x01 \x01(\x0b\x32\t.efdi.UID\x12$\n\x1c\x63ultural_practice_designator\x18\x02 \x01(\t\x12H\n\x1doperation_technique_reference\x18\x03 \x03(\x0b\x32!.efdi.OperationTechniqueReference\"\x85\x03\n\x08\x43ustomer\x12\x1e\n\x0b\x63ustomer_id\x18\x01 \x01(\x0b\x32\t.efdi.UID\x12\x1a\n\x12\x63ustomer_last_name\x18\x02 \x01(\t\x12\x1b\n\x13\x63ustomer_first_name\x18\x03 \x01(\t\x12\x17\n\x0f\x63ustomer_street\x18\x04 \x01(\t\x12\x17\n\x0f\x63ustomer_po_box\x18\x05 \x01(\t\x12\x1c\n\x14\x63ustomer_postal_code\x18\x06 \x01(\t\x12\x15\n\rcustomer_city\x18\x07 \x01(\t\x12\x16\n\x0e\x63ustomer_state\x18\x08 \x01(\t\x12\x18\n\x10\x63ustomer_country\x18\t \x01(\t\x12\x16\n\x0e\x63ustomer_phone\x18\n \x01(\t\x12\x17\n\x0f\x63ustomer_mobile\x18\x0b \x01(\t\x12\x14\n\x0c\x63ustomer_fax\x18\x0c \x01(\t\x12\x16\n\x0e\x63ustomer_email\x18\r \x01(\t\x12(\n\textension\x18\x80\x10 \x03(\x0b\x32\x14.google.protobuf.Any\"\xc5\x03\n\x0e\x44\x61taLogTrigger\x12\x14\n\x0c\x64\x61ta_log_ddi\x18\x01 \x01(\r\x12\x17\n\x0f\x64\x61ta_log_method\x18\x02 \x01(\r\x12\"\n\x1a\x64\x61ta_log_distance_interval\x18\x03 \x01(\x12\x12\x1e\n\x16\x64\x61ta_log_time_interval\x18\x04 \x01(\x12\x12\"\n\x1a\x64\x61ta_log_threshold_minimum\x18\x05 \x01(\x12\x12\"\n\x1a\x64\x61ta_log_threshold_maximum\x18\x06 \x01(\x12\x12!\n\x19\x64\x61ta_log_threshold_change\x18\x07 \x01(\x12\x12(\n\x15\x64\x65vice_element_id_ref\x18\x08 \x01(\x0b\x32\t.efdi.UID\x12,\n\x19value_presentation_id_ref\x18\t \x01(\x0b\x32\t.efdi.UID\x12\x14\n\x0c\x64\x61ta_log_pgn\x18\n \x01(\x04\x12\x1e\n\x16\x64\x61ta_log_pgn_start_bit\x18\x0b \x01(\r\x12\x1d\n\x15\x64\x61ta_log_pgn_stop_bit\x18\x0c \x01(\r\x12(\n\textension\x18\x80\x10 \x03(\x0b\x32\x14.google.protobuf.Any\"\xed\x01\n\x0c\x44\x61taLogValue\x12\x18\n\x10process_data_ddi\x18\x01 \x01(\r\x12\x1a\n\x12process_data_value\x18\x02 \x01(\x12\x12(\n\x15\x64\x65vice_element_id_ref\x18\x03 \x01(\x0b\x32\t.efdi.UID\x12\x14\n\x0c\x64\x61ta_log_pgn\x18\x04 \x01(\x04\x12\x1e\n\x16\x64\x61ta_log_pgn_start_bit\x18\x05 \x01(\r\x12\x1d\n\x15\x64\x61ta_log_pgn_stop_bit\x18\x06 \x01(\r\x12(\n\textension\x18\x80\x10 \x03(\x0b\x32\x14.google.protobuf.Any\"\xd6\x03\n\x06\x44\x65vice\x12\x1c\n\tdevice_id\x18\x01 \x01(\x0b\x32\t.efdi.UID\x12\x19\n\x11\x64\x65vice_designator\x18\x02 \x01(\t\x12\x1f\n\x17\x64\x65vice_software_version\x18\x03 \x01(\t\x12\x13\n\x0b\x63lient_name\x18\x04 \x01(\x0c\x12\x1c\n\x14\x64\x65vice_serial_number\x18\x05 \x01(\t\x12\x1e\n\x16\x64\x65vice_structure_label\x18\x06 \x01(\x0c\x12!\n\x19\x64\x65vice_localization_label\x18\x07 \x01(\x0c\x12+\n\x0e\x64\x65vice_element\x18\x08 \x03(\x0b\x32\x13.efdi.DeviceElement\x12\x34\n\x13\x64\x65vice_process_data\x18\t \x03(\x0b\x32\x17.efdi.DeviceProcessData\x12-\n\x0f\x64\x65vice_property\x18\n \x03(\x0b\x32\x14.efdi.DeviceProperty\x12@\n\x19\x64\x65vice_value_presentation\x18\x0b \x03(\x0b\x32\x1d.efdi.DeviceValuePresentation\x12(\n\textension\x18\x80\x10 \x03(\x0b\x32\x14.google.protobuf.Any\"\xc4\x01\n\x10\x44\x65viceAllocation\x12\x19\n\x11\x63lient_name_value\x18\x01 \x01(\x0c\x12\x18\n\x10\x63lient_name_mask\x18\x02 \x01(\x0c\x12 \n\rdevice_id_ref\x18\x03 \x01(\x0b\x32\t.efdi.UID\x12/\n\x10\x61llocation_stamp\x18\x04 \x01(\x0b\x32\x15.efdi.AllocationStamp\x12(\n\textension\x18\x80\x10 \x03(\x0b\x32\x14.google.protobuf.Any\"\xea\x03\n\rDeviceElement\x12$\n\x11\x64\x65vice_element_id\x18\x01 \x01(\x0b\x32\t.efdi.UID\x12 \n\x18\x64\x65vice_element_object_id\x18\x02 \x01(\r\x12\x42\n\x13\x64\x65vice_element_type\x18\x03 \x01(\x0e\x32%.efdi.DeviceElement.DeviceElementType\x12!\n\x19\x64\x65vice_element_designator\x18\x04 \x01(\t\x12\x1d\n\x15\x64\x65vice_element_number\x18\x05 \x01(\r\x12\x18\n\x10parent_object_id\x18\x06 \x01(\r\x12<\n\x17\x64\x65vice_object_reference\x18\x07 \x03(\x0b\x32\x1b.efdi.DeviceObjectReference\x12(\n\textension\x18\x80\x10 \x03(\x0b\x32\x14.google.protobuf.Any\"\x88\x01\n\x11\x44\x65viceElementType\x12\x0c\n\x08\x43_NOTSET\x10\x00\x12\x0c\n\x08\x43_DEVICE\x10\x01\x12\x0e\n\nC_FUNCTION\x10\x02\x12\t\n\x05\x43_BIN\x10\x03\x12\r\n\tC_SECTION\x10\x04\x12\n\n\x06\x43_UNIT\x10\x05\x12\x0f\n\x0b\x43_CONNECTOR\x10\x06\x12\x10\n\x0c\x43_NAVIGATION\x10\x07\"[\n\x15\x44\x65viceObjectReference\x12\x18\n\x10\x64\x65vice_object_id\x18\x01 \x01(\r\x12(\n\textension\x18\x80\x10 \x03(\x0b\x32\x14.google.protobuf.Any\"\xad\x02\n\x11\x44\x65viceProcessData\x12%\n\x1d\x64\x65vice_process_data_object_id\x18\x01 \x01(\r\x12\x1f\n\x17\x64\x65vice_process_data_ddi\x18\x02 \x01(\r\x12$\n\x1c\x64\x65vice_process_data_property\x18\x03 \x01(\r\x12+\n#device_process_data_trigger_methods\x18\x04 \x01(\r\x12&\n\x1e\x64\x65vice_process_data_designator\x18\x05 \x01(\t\x12+\n#device_value_presentation_object_id\x18\x06 \x01(\r\x12(\n\textension\x18\x80\x10 \x03(\x0b\x32\x14.google.protobuf.Any\"\xea\x01\n\x0e\x44\x65viceProperty\x12!\n\x19\x64\x65vice_property_object_id\x18\x01 \x01(\r\x12\x1b\n\x13\x64\x65vice_property_ddi\x18\x02 \x01(\r\x12\x1d\n\x15\x64\x65vice_property_value\x18\x03 \x01(\x12\x12\"\n\x1a\x64\x65vice_property_designator\x18\x04 \x01(\t\x12+\n#device_value_presentation_object_id\x18\x05 \x01(\r\x12(\n\textension\x18\x80\x10 \x03(\x0b\x32\x14.google.protobuf.Any\"\xc4\x01\n\x17\x44\x65viceValuePresentation\x12+\n#device_value_presentation_object_id\x18\x01 \x01(\r\x12\x0e\n\x06offset\x18\x02 \x01(\x12\x12\r\n\x05scale\x18\x03 \x01(\x01\x12\x1a\n\x12number_of_decimals\x18\x04 \x01(\r\x12\x17\n\x0funit_designator\x18\x05 \x01(\t\x12(\n\textension\x18\x80\x10 \x03(\x0b\x32\x14.google.protobuf.Any\"\x8a\x02\n\x04\x46\x61rm\x12\x1a\n\x07\x66\x61rm_id\x18\x01 \x01(\x0b\x32\t.efdi.UID\x12\x17\n\x0f\x66\x61rm_designator\x18\x02 \x01(\t\x12\x13\n\x0b\x66\x61rm_street\x18\x03 \x01(\t\x12\x13\n\x0b\x66\x61rm_po_box\x18\x04 \x01(\t\x12\x18\n\x10\x66\x61rm_postal_code\x18\x05 \x01(\t\x12\x11\n\tfarm_city\x18\x06 \x01(\t\x12\x12\n\nfarm_state\x18\x07 \x01(\t\x12\x14\n\x0c\x66\x61rm_country\x18\x08 \x01(\t\x12\"\n\x0f\x63ustomer_id_ref\x18\t \x01(\x0b\x32\t.efdi.UID\x12(\n\textension\x18\x80\x10 \x03(\x0b\x32\x14.google.protobuf.Any\"\xa1\x03\n\x04Grid\x12#\n\x1bgrid_minimum_north_position\x18\x01 \x01(\x01\x12\"\n\x1agrid_minimum_east_position\x18\x02 \x01(\x01\x12\x1c\n\x14grid_cell_north_size\x18\x03 \x01(\x01\x12\x1b\n\x13grid_cell_east_size\x18\x04 \x01(\x01\x12\x1b\n\x13grid_maximum_column\x18\x05 \x01(\x04\x12\x18\n\x10grid_maximum_row\x18\x06 \x01(\x04\x12\x1b\n\x08\x66ilename\x18\x07 \x01(\x0b\x32\t.efdi.UID\x12\x12\n\nfilelength\x18\x08 \x01(\x04\x12&\n\tgrid_type\x18\t \x01(\x0e\x32\x13.efdi.Grid.GridType\x12\x1b\n\x13treatment_zone_code\x18\n \x01(\r\x12(\n\textension\x18\x80\x10 \x03(\x0b\x32\x14.google.protobuf.Any\">\n\x08GridType\x12\x0c\n\x08I_NOTSET\x10\x00\x12\x11\n\rI_GRID_TYPE_1\x10\x01\x12\x11\n\rI_GRID_TYPE_2\x10\x02\"\xc6\x01\n\x12GuidanceAllocation\x12(\n\x15guidance_group_id_ref\x18\x01 \x01(\x0b\x32\t.efdi.UID\x12/\n\x10\x61llocation_stamp\x18\x02 \x01(\x0b\x32\x15.efdi.AllocationStamp\x12+\n\x0eguidance_shift\x18\x03 \x03(\x0b\x32\x13.efdi.GuidanceShift\x12(\n\textension\x18\x80\x10 \x03(\x0b\x32\x14.google.protobuf.Any\"\xdc\x01\n\rGuidanceGroup\x12$\n\x11guidance_group_id\x18\x01 \x01(\x0b\x32\t.efdi.UID\x12!\n\x19guidance_group_designator\x18\x02 \x01(\t\x12/\n\x10guidance_pattern\x18\x03 \x03(\x0b\x32\x15.efdi.GuidancePattern\x12\'\n\x10\x62oundary_polygon\x18\x04 \x03(\x0b\x32\r.efdi.Polygon\x12(\n\textension\x18\x80\x10 \x03(\x0b\x32\x14.google.protobuf.Any\"\xb5\x0c\n\x0fGuidancePattern\x12&\n\x13guidance_pattern_id\x18\x01 \x01(\x0b\x32\t.efdi.UID\x12#\n\x1bguidance_pattern_designator\x18\x02 \x01(\t\x12H\n\x15guidance_pattern_type\x18\x03 \x01(\x0e\x32).efdi.GuidancePattern.GuidancePatternType\x12N\n\x18guidance_pattern_options\x18\x04 \x01(\x0e\x32,.efdi.GuidancePattern.GuidancePatternOptions\x12i\n&guidance_pattern_propagation_direction\x18\x05 \x01(\x0e\x32\x39.efdi.GuidancePattern.GuidancePatternPropagationDirection\x12R\n\x1aguidance_pattern_extension\x18\x06 \x01(\x0e\x32..efdi.GuidancePattern.GuidancePatternExtension\x12 \n\x18guidance_pattern_heading\x18\x07 \x01(\x01\x12\x1f\n\x17guidance_pattern_radius\x18\x08 \x01(\x04\x12U\n\x1cguidance_pattern_gnss_method\x18\t \x01(\x0e\x32/.efdi.GuidancePattern.GuidancePatternGNSSMethod\x12,\n$guidance_pattern_horizontal_accuracy\x18\n \x01(\x01\x12*\n\"guidance_pattern_vertical_accuracy\x18\x0b \x01(\x01\x12&\n\x13\x62\x61se_station_id_ref\x18\x0c \x01(\x0b\x32\t.efdi.UID\x12\x15\n\roriginal_srid\x18\r \x01(\t\x12\x1d\n\x15number_of_swaths_left\x18\x0e \x01(\x04\x12\x1e\n\x16number_of_swaths_right\x18\x0f \x01(\x04\x12%\n\x0bline_string\x18\x10 \x01(\x0b\x32\x10.efdi.LineString\x12\'\n\x10\x62oundary_polygon\x18\x11 \x03(\x0b\x32\r.efdi.Polygon\x12(\n\textension\x18\x80\x10 \x03(\x0b\x32\x14.google.protobuf.Any\"c\n\x13GuidancePatternType\x12\x0c\n\x08\x43_NOTSET\x10\x00\x12\x08\n\x04\x43_AB\x10\x01\x12\x0c\n\x08\x43_A_PLUS\x10\x02\x12\x0b\n\x07\x43_CURVE\x10\x03\x12\x0b\n\x07\x43_PIVOT\x10\x04\x12\x0c\n\x08\x43_SPIRAL\x10\x05\"c\n\x16GuidancePatternOptions\x12\x0c\n\x08\x44_NOTSET\x10\x00\x12\x0f\n\x0b\x44_CLOCKWISE\x10\x01\x12\x17\n\x13\x44_COUNTER_CLOCKWISE\x10\x02\x12\x11\n\rD_FULL_CIRCLE\x10\x03\"g\n#GuidancePatternPropagationDirection\x12\x0c\n\x08\x45_NOTSET\x10\x00\x12\n\n\x06\x45_BOTH\x10\x01\x12\n\n\x06\x45_LEFT\x10\x02\x12\x0b\n\x07\x45_RIGHT\x10\x03\x12\r\n\tE_NO_PROP\x10\x04\"e\n\x18GuidancePatternExtension\x12\x0c\n\x08\x46_NOTSET\x10\x00\x12\n\n\x06\x46_BOTH\x10\x01\x12\x10\n\x0c\x46_FIRST_ONLY\x10\x02\x12\x0f\n\x0b\x46_LAST_ONLY\x10\x03\x12\x0c\n\x08\x46_NO_EXT\x10\x04\"\xf5\x01\n\x19GuidancePatternGNSSMethod\x12\x0c\n\x08I_NOTSET\x10\x00\x12\x0e\n\nI_GNSS_FIX\x10\x01\x12\x0f\n\x0bI_DGNSS_FIX\x10\x02\x12\x12\n\x0eI_PRECISE_GNSS\x10\x03\x12\x17\n\x13I_RTK_FIXED_INTEGER\x10\x04\x12\x0f\n\x0bI_RTK_FLOAT\x10\x05\x12\x17\n\x13I_ESTIMATED_DR_MODE\x10\x06\x12\x12\n\x0eI_MANUAL_INPUT\x10\x07\x12\x13\n\x0fI_SIMULATE_MODE\x10\x08\x12\x1c\n\x18I_DESKTOP_GENERATED_DATA\x10\x10\x12\x0b\n\x07I_OTHER\x10\x11\"\x97\x02\n\rGuidanceShift\x12(\n\x15guidance_group_id_ref\x18\x01 \x01(\x0b\x32\t.efdi.UID\x12*\n\x17guidance_pattern_id_ref\x18\x02 \x01(\x0b\x32\t.efdi.UID\x12\x1b\n\x13guidance_east_shift\x18\x03 \x01(\x12\x12\x1c\n\x14guidance_north_shift\x18\x04 \x01(\x12\x12\x1a\n\x12propagation_offset\x18\x05 \x01(\x12\x12/\n\x10\x61llocation_stamp\x18\x06 \x01(\x0b\x32\x15.efdi.AllocationStamp\x12(\n\textension\x18\x80\x10 \x03(\x0b\x32\x14.google.protobuf.Any\"\xc0\x0b\n\x11ISO11783_TaskData\x12;\n\rversion_major\x18\x01 \x01(\x0e\x32$.efdi.ISO11783_TaskData.VersionMajor\x12\x15\n\rversion_minor\x18\x02 \x01(\r\x12(\n management_software_manufacturer\x18\x03 \x01(\t\x12#\n\x1bmanagement_software_version\x18\x04 \x01(\t\x12$\n\x1ctask_controller_manufacturer\x18\x05 \x01(\t\x12\x1f\n\x17task_controller_version\x18\x06 \x01(\t\x12H\n\x14\x64\x61ta_transfer_origin\x18\x07 \x01(\x0e\x32*.efdi.ISO11783_TaskData.DataTransferOrigin\x12\x1e\n\x16\x64\x61ta_transfer_language\x18\x08 \x01(\t\x12)\n\rattached_file\x18\t \x03(\x0b\x32\x12.efdi.AttachedFile\x12\'\n\x0c\x62\x61se_station\x18\n \x03(\x0b\x32\x11.efdi.BaseStation\x12)\n\rcoded_comment\x18\x0b \x03(\x0b\x32\x12.efdi.CodedComment\x12\x34\n\x13\x63oded_comment_group\x18\x0c \x03(\x0b\x32\x17.efdi.CodedCommentGroup\x12)\n\rcolour_legend\x18\r \x03(\x0b\x32\x12.efdi.ColourLegend\x12!\n\tcrop_type\x18\x0e \x03(\x0b\x32\x0e.efdi.CropType\x12\x31\n\x11\x63ultural_practice\x18\x0f \x03(\x0b\x32\x16.efdi.CulturalPractice\x12 \n\x08\x63ustomer\x18\x10 \x03(\x0b\x32\x0e.efdi.Customer\x12\x1c\n\x06\x64\x65vice\x18\x11 \x03(\x0b\x32\x0c.efdi.Device\x12\x18\n\x04\x66\x61rm\x18\x12 \x03(\x0b\x32\n.efdi.Farm\x12\x35\n\x13operation_technique\x18\x13 \x03(\x0b\x32\x18.efdi.OperationTechnique\x12\"\n\tpartfield\x18\x14 \x03(\x0b\x32\x0f.efdi.Partfield\x12\x1e\n\x07product\x18\x15 \x03(\x0b\x32\r.efdi.Product\x12)\n\rproduct_group\x18\x16 \x03(\x0b\x32\x12.efdi.ProductGroup\x12\x18\n\x04task\x18\x17 \x03(\x0b\x32\n.efdi.Task\x12\x46\n\x1ctask_controller_capabilities\x18\x18 \x03(\x0b\x32 .efdi.TaskControllerCapabilities\x12\x33\n\x12value_presentation\x18\x19 \x03(\x0b\x32\x17.efdi.ValuePresentation\x12\x1c\n\x06worker\x18\x1a \x03(\x0b\x32\x0c.efdi.Worker\x12<\n\x17\x65xternal_file_reference\x18\x1b \x03(\x0b\x32\x1b.efdi.ExternalFileReference\x12(\n\textension\x18\x80\x10 \x03(\x0b\x32\x14.google.protobuf.Any\"\x8e\x01\n\x0cVersionMajor\x12\x15\n\x11VERSION_MAJOR_DIS\x10\x00\x12\x18\n\x14VERSION_MAJOR_FDIS_1\x10\x01\x12\x18\n\x14VERSION_MAJOR_FDIS_2\x10\x02\x12\x18\n\x14VERSION_MAJOR_E2_DIS\x10\x03\x12\x19\n\x15VERSION_MAJOR_E2_FDIS\x10\x04\"s\n\x12\x44\x61taTransferOrigin\x12\x1f\n\x1b\x44\x41TA_TRANSFER_ORIGIN_NOTSET\x10\x00\x12\x1d\n\x19\x44\x41TA_TRANSFER_ORIGIN_FMIS\x10\x01\x12\x1d\n\x19\x44\x41TA_TRANSFER_ORIGIN_MICS\x10\x02\"\xec\x03\n\nLineString\x12\x39\n\x10line_string_type\x18\x01 \x01(\x0e\x32\x1f.efdi.LineString.LinestringType\x12\x1e\n\x16line_string_designator\x18\x02 \x01(\t\x12\x19\n\x11line_string_width\x18\x03 \x01(\r\x12\x1a\n\x12line_string_length\x18\x04 \x01(\r\x12\x1a\n\x12line_string_colour\x18\x05 \x01(\r\x12!\n\x0eline_string_id\x18\x06 \x01(\x0b\x32\t.efdi.UID\x12\x1a\n\x05point\x18\x07 \x03(\x0b\x32\x0b.efdi.Point\x12(\n\textension\x18\x80\x10 \x03(\x0b\x32\x14.google.protobuf.Any\"\xc6\x01\n\x0eLinestringType\x12\x0c\n\x08\x41_NOTSET\x10\x00\x12\x16\n\x12\x41_POLYGON_EXTERIOR\x10\x01\x12\x16\n\x12\x41_POLYGON_INTERIOR\x10\x02\x12\x0f\n\x0b\x41_TRAM_LINE\x10\x03\x12\x14\n\x10\x41_SAMPLING_ROUTE\x10\x04\x12\x16\n\x12\x41_GUIDANCE_PATTERN\x10\x05\x12\x0e\n\nA_DRAINAGE\x10\x06\x12\x0b\n\x07\x41_FENCE\x10\x07\x12\n\n\x06\x41_FLAG\x10\x08\x12\x0e\n\nA_OBSTACLE\x10\t\"\x91\x01\n\x12OperationTechnique\x12)\n\x16operation_technique_id\x18\x01 \x01(\x0b\x32\t.efdi.UID\x12&\n\x1eoperation_technique_designator\x18\x02 \x01(\t\x12(\n\textension\x18\x80\x10 \x03(\x0b\x32\x14.google.protobuf.Any\"v\n\x1bOperationTechniqueReference\x12-\n\x1aoperation_technique_id_ref\x18\x01 \x01(\x0b\x32\t.efdi.UID\x12(\n\textension\x18\x80\x10 \x03(\x0b\x32\x14.google.protobuf.Any\"\x98\x01\n\x10OperTechPractice\x12+\n\x18\x63ultural_practice_id_ref\x18\x01 \x01(\x0b\x32\t.efdi.UID\x12-\n\x1aoperation_technique_id_ref\x18\x02 \x01(\x0b\x32\t.efdi.UID\x12(\n\textension\x18\x80\x10 \x03(\x0b\x32\x14.google.protobuf.Any\"\xe6\x03\n\tPartfield\x12\x1f\n\x0cpartfield_id\x18\x01 \x01(\x0b\x32\t.efdi.UID\x12\x16\n\x0epartfield_code\x18\x02 \x01(\t\x12\x1c\n\x14partfield_designator\x18\x03 \x01(\t\x12\x16\n\x0epartfield_area\x18\x04 \x01(\x04\x12\"\n\x0f\x63ustomer_id_ref\x18\x05 \x01(\x0b\x32\t.efdi.UID\x12\x1e\n\x0b\x66\x61rm_id_ref\x18\x06 \x01(\x0b\x32\t.efdi.UID\x12#\n\x10\x63rop_type_id_ref\x18\x07 \x01(\x0b\x32\t.efdi.UID\x12&\n\x13\x63rop_variety_id_ref\x18\x08 \x01(\x0b\x32\t.efdi.UID\x12\x1f\n\x0c\x66ield_id_ref\x18\t \x01(\x0b\x32\t.efdi.UID\x12\x1e\n\x07polygon\x18\n \x03(\x0b\x32\r.efdi.Polygon\x12%\n\x0bline_string\x18\x0b \x03(\x0b\x32\x10.efdi.LineString\x12\x1a\n\x05point\x18\x0c \x03(\x0b\x32\x0b.efdi.Point\x12+\n\x0eguidance_group\x18\r \x03(\x0b\x32\x13.efdi.GuidanceGroup\x12(\n\textension\x18\x80\x10 \x03(\x0b\x32\x14.google.protobuf.Any\"\xae\x04\n\x05Point\x12)\n\npoint_type\x18\x01 \x01(\x0e\x32\x15.efdi.Point.PointType\x12\x18\n\x10point_designator\x18\x02 \x01(\t\x12\x13\n\x0bpoint_north\x18\x03 \x01(\x01\x12\x12\n\npoint_east\x18\x04 \x01(\x01\x12\x10\n\x08point_up\x18\x05 \x01(\x12\x12\x14\n\x0cpoint_colour\x18\x06 \x01(\r\x12\x1b\n\x08point_id\x18\x07 \x01(\x0b\x32\t.efdi.UID\x12!\n\x19point_horizontal_accuracy\x18\x08 \x01(\x01\x12\x1f\n\x17point_vertical_accuracy\x18\t \x01(\x01\x12\x10\n\x08\x66ilename\x18\n \x01(\t\x12\x12\n\nfilelength\x18\x0b \x01(\x04\x12(\n\textension\x18\x80\x10 \x03(\x0b\x32\x14.google.protobuf.Any\"\xdd\x01\n\tPointType\x12\x0c\n\x08\x41_NOTSET\x10\x00\x12\n\n\x06\x41_FLAG\x10\x01\x12\x0b\n\x07\x41_OTHER\x10\x02\x12\x12\n\x0e\x41_FIELD_ACCESS\x10\x03\x12\r\n\tA_STORAGE\x10\x04\x12\x0e\n\nA_OBSTACLE\x10\x05\x12\x10\n\x0c\x41_GUID_REF_A\x10\x06\x12\x10\n\x0c\x41_GUID_REF_B\x10\x07\x12\x15\n\x11\x41_GUID_REF_CENTER\x10\x08\x12\x10\n\x0c\x41_GUID_POINT\x10\t\x12\x19\n\x15\x41_PARTFIELD_REF_POINT\x10\n\x12\x0e\n\nA_HOMEBASE\x10\x0b\"\xe1\x03\n\x07Polygon\x12/\n\x0cpolygon_type\x18\x01 \x01(\x0e\x32\x19.efdi.Polygon.PolygonType\x12\x1a\n\x12polygon_designator\x18\x02 \x01(\t\x12\x14\n\x0cpolygon_area\x18\x03 \x01(\x04\x12\x16\n\x0epolygon_colour\x18\x04 \x01(\r\x12\x1d\n\npolygon_id\x18\x05 \x01(\x0b\x32\t.efdi.UID\x12%\n\x0bline_string\x18\x06 \x03(\x0b\x32\x10.efdi.LineString\x12(\n\textension\x18\x80\x10 \x03(\x0b\x32\x14.google.protobuf.Any\"\xea\x01\n\x0bPolygonType\x12\x0c\n\x08\x41_NOTSET\x10\x00\x12\x18\n\x14\x41_PARTFIELD_BOUNDARY\x10\x01\x12\x14\n\x10\x41_TREATMENT_ZONE\x10\x02\x12\x13\n\x0f\x41_WATER_SURFACE\x10\x03\x12\x0e\n\nA_BUILDING\x10\x04\x12\n\n\x06\x41_ROAD\x10\x05\x12\x0e\n\nA_OBSTACLE\x10\x06\x12\n\n\x06\x41_FLAG\x10\x07\x12\x0b\n\x07\x41_OTHER\x10\x08\x12\x0f\n\x0b\x41_MAINFIELD\x10\t\x12\x0e\n\nA_HEADLAND\x10\n\x12\x11\n\rA_BUFFER_ZONE\x10\x0b\x12\x0f\n\x0b\x41_WINDBREAK\x10\x0c\"\xf2\x03\n\x08Position\x12\x16\n\x0eposition_north\x18\x01 \x01(\x01\x12\x15\n\rposition_east\x18\x02 \x01(\x01\x12\x13\n\x0bposition_up\x18\x03 \x01(\x12\x12\x36\n\x0fposition_status\x18\x04 \x01(\x0e\x32\x1d.efdi.Position.PositionStatus\x12\x0c\n\x04pdop\x18\x05 \x01(\x01\x12\x0c\n\x04hdop\x18\x06 \x01(\x01\x12\x1c\n\x14number_of_satellites\x18\x07 \x01(\r\x12\x35\n\x11gps_utc_timestamp\x18\x08 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12(\n\textension\x18\x80\x10 \x03(\x0b\x32\x14.google.protobuf.Any\"\xce\x01\n\x0ePositionStatus\x12\x0c\n\x08\x44_NO_GPS\x10\x00\x12\n\n\x06\x44_GNSS\x10\x01\x12\x0b\n\x07\x44_DGNSS\x10\x02\x12\x12\n\x0e\x44_PRECISE_GNSS\x10\x03\x12\x12\n\x0e\x44_RTK_FINTEGER\x10\x04\x12\x0f\n\x0b\x44_RTK_FLOAT\x10\x05\x12\x11\n\rD_EST_DR_MODE\x10\x06\x12\x12\n\x0e\x44_MANUAL_INPUT\x10\x07\x12\x13\n\x0f\x44_SIMULATE_MODE\x10\x08\x12\x0b\n\x07\x44_ERROR\x10\x0e\x12\x13\n\x0f\x44_NOT_AVAILABLE\x10\x0f\"\xf7\x02\n\x13ProcessDataVariable\x12\x18\n\x10process_data_ddi\x18\x01 \x01(\r\x12\x1a\n\x12process_data_value\x18\x02 \x01(\x12\x12!\n\x0eproduct_id_ref\x18\x03 \x01(\x0b\x32\t.efdi.UID\x12(\n\x15\x64\x65vice_element_id_ref\x18\x04 \x01(\x0b\x32\t.efdi.UID\x12,\n\x19value_presentation_id_ref\x18\x05 \x01(\x0b\x32\t.efdi.UID\x12&\n\x1e\x61\x63tual_cultural_practice_value\x18\x06 \x01(\x12\x12#\n\x1b\x65lement_type_instance_value\x18\x07 \x01(\x12\x12\x38\n\x15process_data_variable\x18\x08 \x03(\x0b\x32\x19.efdi.ProcessDataVariable\x12(\n\textension\x18\x80\x10 \x03(\x0b\x32\x14.google.protobuf.Any\"\x94\x04\n\x07Product\x12\x1d\n\nproduct_id\x18\x01 \x01(\x0b\x32\t.efdi.UID\x12\x1a\n\x12product_designator\x18\x02 \x01(\t\x12\'\n\x14product_group_id_ref\x18\x03 \x01(\x0b\x32\t.efdi.UID\x12,\n\x19value_presentation_id_ref\x18\x04 \x01(\x0b\x32\t.efdi.UID\x12\x14\n\x0cquantity_ddi\x18\x05 \x01(\r\x12/\n\x0cproduct_type\x18\x06 \x01(\x0e\x32\x19.efdi.Product.ProductType\x12\x1f\n\x17mixture_recipe_quantity\x18\x07 \x01(\x12\x12\x1f\n\x17\x64\x65nsity_mass_per_volume\x18\x08 \x01(\x12\x12\x1e\n\x16\x64\x65nsity_mass_per_count\x18\t \x01(\x12\x12 \n\x18\x64\x65nsity_volume_per_count\x18\n \x01(\x12\x12/\n\x10product_relation\x18\x0b \x03(\x0b\x32\x15.efdi.ProductRelation\x12(\n\textension\x18\x80\x10 \x03(\x0b\x32\x14.google.protobuf.Any\"Q\n\x0bProductType\x12\x0c\n\x08\x46_NOTSET\x10\x00\x12\x0c\n\x08\x46_SINGLE\x10\x01\x12\r\n\tF_MIXTURE\x10\x02\x12\x17\n\x13\x46_TEMPORARY_MIXTURE\x10\x03\"\xce\x03\n\x11ProductAllocation\x12!\n\x0eproduct_id_ref\x18\x01 \x01(\x0b\x32\t.efdi.UID\x12\x14\n\x0cquantity_ddi\x18\x02 \x01(\r\x12\x16\n\x0equantity_value\x18\x03 \x01(\x12\x12;\n\rtransfer_mode\x18\x04 \x01(\x0e\x32$.efdi.ProductAllocation.TransferMode\x12(\n\x15\x64\x65vice_element_id_ref\x18\x05 \x01(\x0b\x32\t.efdi.UID\x12,\n\x19value_presentation_id_ref\x18\x06 \x01(\x0b\x32\t.efdi.UID\x12*\n\x17product_sub_type_id_ref\x18\x07 \x01(\x0b\x32\t.efdi.UID\x12/\n\x10\x61llocation_stamp\x18\x08 \x01(\x0b\x32\x15.efdi.AllocationStamp\x12(\n\textension\x18\x80\x10 \x03(\x0b\x32\x14.google.protobuf.Any\"L\n\x0cTransferMode\x12\x0c\n\x08\x44_NOTSET\x10\x00\x12\r\n\tD_FILLING\x10\x01\x12\x0e\n\nD_EMPTYING\x10\x02\x12\x0f\n\x0b\x44_REMAINDER\x10\x03\"\x88\x02\n\x0cProductGroup\x12#\n\x10product_group_id\x18\x01 \x01(\x0b\x32\t.efdi.UID\x12 \n\x18product_group_designator\x18\x02 \x01(\t\x12?\n\x12product_group_type\x18\x03 \x01(\x0e\x32#.efdi.ProductGroup.ProductGroupType\x12(\n\textension\x18\x80\x10 \x03(\x0b\x32\x14.google.protobuf.Any\"F\n\x10ProductGroupType\x12\x0c\n\x08\x43_NOTSET\x10\x00\x12\x13\n\x0f\x43_PRODUCT_GROUP\x10\x01\x12\x0f\n\x0b\x43_CROP_TYPE\x10\x02\"v\n\x0fProductRelation\x12!\n\x0eproduct_id_ref\x18\x01 \x01(\x0b\x32\t.efdi.UID\x12\x16\n\x0equantity_value\x18\x02 \x01(\x12\x12(\n\textension\x18\x80\x10 \x03(\x0b\x32\x14.google.protobuf.Any\"\xe3\x08\n\x04Task\x12\x1a\n\x07task_id\x18\x01 \x01(\x0b\x32\t.efdi.UID\x12\x17\n\x0ftask_designator\x18\x02 \x01(\t\x12\"\n\x0f\x63ustomer_id_ref\x18\x03 \x01(\x0b\x32\t.efdi.UID\x12\x1e\n\x0b\x66\x61rm_id_ref\x18\x04 \x01(\x0b\x32\t.efdi.UID\x12#\n\x10partfield_id_ref\x18\x05 \x01(\x0b\x32\t.efdi.UID\x12,\n\x19responsible_worker_id_ref\x18\x06 \x01(\x0b\x32\t.efdi.UID\x12*\n\x0btask_status\x18\x07 \x01(\x0e\x32\x15.efdi.Task.TaskStatus\x12#\n\x1b\x64\x65\x66\x61ult_treatment_zone_code\x18\x08 \x01(\r\x12)\n!position_lost_treatment_zone_code\x18\t \x01(\r\x12(\n out_of_field_treatment_zone_code\x18\n \x01(\r\x12+\n\x0etreatment_zone\x18\x0b \x03(\x0b\x32\x13.efdi.TreatmentZone\x12\x18\n\x04time\x18\x0c \x03(\x0b\x32\n.efdi.Time\x12\x32\n\x12oper_tech_practice\x18\r \x01(\x0b\x32\x16.efdi.OperTechPractice\x12\x31\n\x11worker_allocation\x18\x0e \x03(\x0b\x32\x16.efdi.WorkerAllocation\x12\x31\n\x11\x64\x65vice_allocation\x18\x0f \x03(\x0b\x32\x16.efdi.DeviceAllocation\x12$\n\nconnection\x18\x10 \x03(\x0b\x32\x10.efdi.Connection\x12\x33\n\x12product_allocation\x18\x11 \x03(\x0b\x32\x17.efdi.ProductAllocation\x12.\n\x10\x64\x61ta_log_trigger\x18\x12 \x03(\x0b\x32\x14.efdi.DataLogTrigger\x12\x33\n\x12\x63omment_allocation\x18\x13 \x03(\x0b\x32\x17.efdi.CommentAllocation\x12\x1f\n\x08time_log\x18\x14 \x03(\x0b\x32\r.efdi.TimeLog\x12\x18\n\x04grid\x18\x15 \x01(\x0b\x32\n.efdi.Grid\x12\x33\n\x12\x63ontrol_assignment\x18\x16 \x03(\x0b\x32\x17.efdi.ControlAssignment\x12\x35\n\x13guidance_allocation\x18\x17 \x03(\x0b\x32\x18.efdi.GuidanceAllocation\x12(\n\textension\x18\x80\x10 \x03(\x0b\x32\x14.google.protobuf.Any\"w\n\nTaskStatus\x12\x0c\n\x08G_NOTSET\x10\x00\x12\r\n\tG_PLANNED\x10\x01\x12\r\n\tG_RUNNING\x10\x02\x12\x0c\n\x08G_PAUSED\x10\x03\x12\x0f\n\x0bG_COMPLETED\x10\x04\x12\x0e\n\nG_TEMPLATE\x10\x05\x12\x0e\n\nG_CANCELED\x10\x06\"\xce\x03\n\x1aTaskControllerCapabilities\x12-\n%task_controller_control_function_name\x18\x01 \x01(\x0c\x12\"\n\x1atask_controller_designator\x18\x02 \x01(\t\x12\x46\n\x0eversion_number\x18\x03 \x01(\x0e\x32..efdi.TaskControllerCapabilities.VersionNumber\x12\x1d\n\x15provided_capabilities\x18\x04 \x01(\r\x12\'\n\x1fnumber_of_booms_section_control\x18\x05 \x01(\r\x12*\n\"number_of_sections_section_control\x18\x06 \x01(\r\x12\"\n\x1anumber_of_control_channels\x18\x07 \x01(\r\x12(\n\textension\x18\x80\x10 \x03(\x0b\x32\x14.google.protobuf.Any\"S\n\rVersionNumber\x12\t\n\x05\x43_DIS\x10\x00\x12\x0c\n\x08\x43_FDIS_1\x10\x01\x12\x0c\n\x08\x43_FDIS_2\x10\x02\x12\x0c\n\x08\x43_E2_DIS\x10\x03\x12\r\n\tC_E2_FDIS\x10\x04\"\xc8\x03\n\x04Time\x12)\n\x05start\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12(\n\x04stop\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x10\n\x08\x64uration\x18\x03 \x01(\x04\x12!\n\x04type\x18\x04 \x01(\x0e\x32\x13.efdi.Time.TimeType\x12&\n\x0eposition_start\x18\x05 \x01(\x0b\x32\x0e.efdi.Position\x12%\n\rposition_stop\x18\x06 \x01(\x0b\x32\x0e.efdi.Position\x12*\n\x0e\x64\x61ta_log_value\x18\x07 \x03(\x0b\x32\x12.efdi.DataLogValue\x12(\n\textension\x18\x80\x10 \x03(\x0b\x32\x14.google.protobuf.Any\"\x90\x01\n\x08TimeType\x12\x0c\n\x08\x44_NOTSET\x10\x00\x12\r\n\tD_PLANNED\x10\x01\x12\x11\n\rD_PRELIMINARY\x10\x02\x12\x0f\n\x0b\x44_EFFECTIVE\x10\x04\x12\x11\n\rD_INEFFECTIVE\x10\x05\x12\x0c\n\x08\x44_REPAIR\x10\x06\x12\x0e\n\nD_CLEARING\x10\x07\x12\x12\n\x0e\x44_POWERED_DOWN\x10\x08\"\xd8\x01\n\x07TimeLog\x12\x10\n\x08\x66ilename\x18\x02 \x01(\t\x12\x12\n\nfilelength\x18\x03 \x01(\x04\x12\x30\n\rtime_log_type\x18\x01 \x01(\x0e\x32\x19.efdi.TimeLog.TimeLogType\x12\x18\n\x04time\x18\x04 \x03(\x0b\x32\n.efdi.Time\x12(\n\textension\x18\x80\x10 \x03(\x0b\x32\x14.google.protobuf.Any\"1\n\x0bTimeLogType\x12\x0c\n\x08\x43_NOTSET\x10\x00\x12\x14\n\x10\x43_BINARY_TIMELOG\x10\x01\"\xf2\x01\n\rTreatmentZone\x12\x1b\n\x13treatment_zone_code\x18\x01 \x01(\r\x12!\n\x19treatment_zone_designator\x18\x02 \x01(\t\x12\x1d\n\x15treatment_zone_colour\x18\x03 \x01(\r\x12\x1e\n\x07polygon\x18\x04 \x03(\x0b\x32\r.efdi.Polygon\x12\x38\n\x15process_data_variable\x18\x05 \x03(\x0b\x32\x19.efdi.ProcessDataVariable\x12(\n\textension\x18\x80\x10 \x03(\x0b\x32\x14.google.protobuf.Any\"\xe4\x01\n\x11ValuePresentation\x12(\n\x15value_presentation_id\x18\x01 \x01(\x0b\x32\t.efdi.UID\x12\x0e\n\x06offset\x18\x02 \x01(\x12\x12\r\n\x05scale\x18\x03 \x01(\x01\x12\x1a\n\x12number_of_decimals\x18\x04 \x01(\r\x12\x17\n\x0funit_designator\x18\x05 \x01(\t\x12\'\n\x14\x63olour_legend_id_ref\x18\x06 \x01(\x0b\x32\t.efdi.UID\x12(\n\textension\x18\x80\x10 \x03(\x0b\x32\x14.google.protobuf.Any\"\xf4\x02\n\x06Worker\x12\x1c\n\tworker_id\x18\x01 \x01(\x0b\x32\t.efdi.UID\x12\x18\n\x10worker_last_name\x18\x02 \x01(\t\x12\x19\n\x11worker_first_name\x18\x03 \x01(\t\x12\x15\n\rworker_street\x18\x04 \x01(\t\x12\x15\n\rworker_po_box\x18\x05 \x01(\t\x12\x1a\n\x12worker_postal_code\x18\x06 \x01(\t\x12\x13\n\x0bworker_city\x18\x07 \x01(\t\x12\x14\n\x0cworker_state\x18\x08 \x01(\t\x12\x16\n\x0eworker_country\x18\t \x01(\t\x12\x14\n\x0cworker_phone\x18\n \x01(\t\x12\x15\n\rworker_mobile\x18\x0b \x01(\t\x12\x1d\n\x15worker_license_number\x18\x0c \x01(\t\x12\x14\n\x0cworker_email\x18\r \x01(\t\x12(\n\textension\x18\x80\x10 \x03(\x0b\x32\x14.google.protobuf.Any\"\x8f\x01\n\x10WorkerAllocation\x12 \n\rworker_id_ref\x18\x01 \x01(\x0b\x32\t.efdi.UID\x12/\n\x10\x61llocation_stamp\x18\x02 \x01(\x0b\x32\x15.efdi.AllocationStamp\x12(\n\textension\x18\x80\x10 \x03(\x0b\x32\x14.google.protobuf.Any\"\xbc\x01\n\x15\x45xternalFileReference\x12\x1b\n\x08\x66ilename\x18\x01 \x01(\x0b\x32\t.efdi.UID\x12\x37\n\tfile_type\x18\x02 \x01(\x0e\x32$.efdi.ExternalFileReference.FileType\x12(\n\textension\x18\x80\x10 \x03(\x0b\x32\x14.google.protobuf.Any\"#\n\x08\x46ileType\x12\x0c\n\x08\x42_NOTSET\x10\x00\x12\t\n\x05\x42_XML\x10\x01\x62\x06proto3' + , + dependencies=[google_dot_protobuf_dot_timestamp__pb2.DESCRIPTOR, google_dot_protobuf_dot_any__pb2.DESCRIPTOR, ]) _ALLOCATIONSTAMP_ALLOCATIONSTAMPTYPE = _descriptor.EnumDescriptor( - name='AllocationStampType', - full_name='efdi.AllocationStamp.AllocationStampType', - filename=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - values=[ - _descriptor.EnumValueDescriptor( - name='D_NOTSET', index=0, number=0, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='D_PLANNED', index=1, number=1, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='D_EFFECTIVE', index=2, number=4, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - ], - containing_type=None, - serialized_options=None, - serialized_start=413, - serialized_end=480, + name='AllocationStampType', + full_name='efdi.AllocationStamp.AllocationStampType', + filename=None, + file=DESCRIPTOR, + create_key=_descriptor._internal_create_key, + values=[ + _descriptor.EnumValueDescriptor( + name='D_NOTSET', index=0, number=0, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='D_PLANNED', index=1, number=1, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='D_EFFECTIVE', index=2, number=4, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + ], + containing_type=None, + serialized_options=None, + serialized_start=413, + serialized_end=480, ) _sym_db.RegisterEnumDescriptor(_ALLOCATIONSTAMP_ALLOCATIONSTAMPTYPE) _ATTACHEDFILE_PRESERVE = _descriptor.EnumDescriptor( - name='Preserve', - full_name='efdi.AttachedFile.Preserve', - filename=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - values=[ - _descriptor.EnumValueDescriptor( - name='B_NOTSET', index=0, number=0, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='B_PRESERVE_NO', index=1, number=1, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='B_PRESERVE_YES', index=2, number=2, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - ], - containing_type=None, - serialized_options=None, - serialized_start=720, - serialized_end=783, + name='Preserve', + full_name='efdi.AttachedFile.Preserve', + filename=None, + file=DESCRIPTOR, + create_key=_descriptor._internal_create_key, + values=[ + _descriptor.EnumValueDescriptor( + name='B_NOTSET', index=0, number=0, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='B_PRESERVE_NO', index=1, number=1, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='B_PRESERVE_YES', index=2, number=2, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + ], + containing_type=None, + serialized_options=None, + serialized_start=720, + serialized_end=783, ) _sym_db.RegisterEnumDescriptor(_ATTACHEDFILE_PRESERVE) _CODEDCOMMENT_CODEDCOMMENTSCOPE = _descriptor.EnumDescriptor( - name='CodedCommentScope', - full_name='efdi.CodedComment.CodedCommentScope', - filename=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - values=[ - _descriptor.EnumValueDescriptor( - name='C_NOTSET', index=0, number=0, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='C_POINT', index=1, number=1, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='C_GLOBAL', index=2, number=2, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='C_CONTINUOUS', index=3, number=3, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - ], - containing_type=None, - serialized_options=None, - serialized_start=1299, - serialized_end=1377, + name='CodedCommentScope', + full_name='efdi.CodedComment.CodedCommentScope', + filename=None, + file=DESCRIPTOR, + create_key=_descriptor._internal_create_key, + values=[ + _descriptor.EnumValueDescriptor( + name='C_NOTSET', index=0, number=0, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='C_POINT', index=1, number=1, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='C_GLOBAL', index=2, number=2, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='C_CONTINUOUS', index=3, number=3, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + ], + containing_type=None, + serialized_options=None, + serialized_start=1299, + serialized_end=1377, ) _sym_db.RegisterEnumDescriptor(_CODEDCOMMENT_CODEDCOMMENTSCOPE) _DEVICEELEMENT_DEVICEELEMENTTYPE = _descriptor.EnumDescriptor( - name='DeviceElementType', - full_name='efdi.DeviceElement.DeviceElementType', - filename=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - values=[ - _descriptor.EnumValueDescriptor( - name='C_NOTSET', index=0, number=0, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='C_DEVICE', index=1, number=1, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='C_FUNCTION', index=2, number=2, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='C_BIN', index=3, number=3, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='C_SECTION', index=4, number=4, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='C_UNIT', index=5, number=5, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='C_CONNECTOR', index=6, number=6, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='C_NAVIGATION', index=7, number=7, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - ], - containing_type=None, - serialized_options=None, - serialized_start=5404, - serialized_end=5540, + name='DeviceElementType', + full_name='efdi.DeviceElement.DeviceElementType', + filename=None, + file=DESCRIPTOR, + create_key=_descriptor._internal_create_key, + values=[ + _descriptor.EnumValueDescriptor( + name='C_NOTSET', index=0, number=0, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='C_DEVICE', index=1, number=1, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='C_FUNCTION', index=2, number=2, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='C_BIN', index=3, number=3, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='C_SECTION', index=4, number=4, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='C_UNIT', index=5, number=5, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='C_CONNECTOR', index=6, number=6, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='C_NAVIGATION', index=7, number=7, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + ], + containing_type=None, + serialized_options=None, + serialized_start=5404, + serialized_end=5540, ) _sym_db.RegisterEnumDescriptor(_DEVICEELEMENT_DEVICEELEMENTTYPE) _GRID_GRIDTYPE = _descriptor.EnumDescriptor( - name='GridType', - full_name='efdi.Grid.GridType', - filename=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - values=[ - _descriptor.EnumValueDescriptor( - name='I_NOTSET', index=0, number=0, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='I_GRID_TYPE_1', index=1, number=1, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='I_GRID_TYPE_2', index=2, number=2, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - ], - containing_type=None, - serialized_options=None, - serialized_start=7000, - serialized_end=7062, + name='GridType', + full_name='efdi.Grid.GridType', + filename=None, + file=DESCRIPTOR, + create_key=_descriptor._internal_create_key, + values=[ + _descriptor.EnumValueDescriptor( + name='I_NOTSET', index=0, number=0, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='I_GRID_TYPE_1', index=1, number=1, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='I_GRID_TYPE_2', index=2, number=2, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + ], + containing_type=None, + serialized_options=None, + serialized_start=7000, + serialized_end=7062, ) _sym_db.RegisterEnumDescriptor(_GRID_GRIDTYPE) _GUIDANCEPATTERN_GUIDANCEPATTERNTYPE = _descriptor.EnumDescriptor( - name='GuidancePatternType', - full_name='efdi.GuidancePattern.GuidancePatternType', - filename=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - values=[ - _descriptor.EnumValueDescriptor( - name='C_NOTSET', index=0, number=0, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='C_AB', index=1, number=1, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='C_A_PLUS', index=2, number=2, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='C_CURVE', index=3, number=3, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='C_PIVOT', index=4, number=4, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='C_SPIRAL', index=5, number=5, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - ], - containing_type=None, - serialized_options=None, - serialized_start=8422, - serialized_end=8521, + name='GuidancePatternType', + full_name='efdi.GuidancePattern.GuidancePatternType', + filename=None, + file=DESCRIPTOR, + create_key=_descriptor._internal_create_key, + values=[ + _descriptor.EnumValueDescriptor( + name='C_NOTSET', index=0, number=0, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='C_AB', index=1, number=1, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='C_A_PLUS', index=2, number=2, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='C_CURVE', index=3, number=3, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='C_PIVOT', index=4, number=4, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='C_SPIRAL', index=5, number=5, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + ], + containing_type=None, + serialized_options=None, + serialized_start=8422, + serialized_end=8521, ) _sym_db.RegisterEnumDescriptor(_GUIDANCEPATTERN_GUIDANCEPATTERNTYPE) _GUIDANCEPATTERN_GUIDANCEPATTERNOPTIONS = _descriptor.EnumDescriptor( - name='GuidancePatternOptions', - full_name='efdi.GuidancePattern.GuidancePatternOptions', - filename=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - values=[ - _descriptor.EnumValueDescriptor( - name='D_NOTSET', index=0, number=0, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='D_CLOCKWISE', index=1, number=1, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='D_COUNTER_CLOCKWISE', index=2, number=2, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='D_FULL_CIRCLE', index=3, number=3, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - ], - containing_type=None, - serialized_options=None, - serialized_start=8523, - serialized_end=8622, + name='GuidancePatternOptions', + full_name='efdi.GuidancePattern.GuidancePatternOptions', + filename=None, + file=DESCRIPTOR, + create_key=_descriptor._internal_create_key, + values=[ + _descriptor.EnumValueDescriptor( + name='D_NOTSET', index=0, number=0, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='D_CLOCKWISE', index=1, number=1, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='D_COUNTER_CLOCKWISE', index=2, number=2, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='D_FULL_CIRCLE', index=3, number=3, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + ], + containing_type=None, + serialized_options=None, + serialized_start=8523, + serialized_end=8622, ) _sym_db.RegisterEnumDescriptor(_GUIDANCEPATTERN_GUIDANCEPATTERNOPTIONS) _GUIDANCEPATTERN_GUIDANCEPATTERNPROPAGATIONDIRECTION = _descriptor.EnumDescriptor( - name='GuidancePatternPropagationDirection', - full_name='efdi.GuidancePattern.GuidancePatternPropagationDirection', - filename=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - values=[ - _descriptor.EnumValueDescriptor( - name='E_NOTSET', index=0, number=0, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='E_BOTH', index=1, number=1, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='E_LEFT', index=2, number=2, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='E_RIGHT', index=3, number=3, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='E_NO_PROP', index=4, number=4, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - ], - containing_type=None, - serialized_options=None, - serialized_start=8624, - serialized_end=8727, + name='GuidancePatternPropagationDirection', + full_name='efdi.GuidancePattern.GuidancePatternPropagationDirection', + filename=None, + file=DESCRIPTOR, + create_key=_descriptor._internal_create_key, + values=[ + _descriptor.EnumValueDescriptor( + name='E_NOTSET', index=0, number=0, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='E_BOTH', index=1, number=1, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='E_LEFT', index=2, number=2, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='E_RIGHT', index=3, number=3, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='E_NO_PROP', index=4, number=4, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + ], + containing_type=None, + serialized_options=None, + serialized_start=8624, + serialized_end=8727, ) _sym_db.RegisterEnumDescriptor(_GUIDANCEPATTERN_GUIDANCEPATTERNPROPAGATIONDIRECTION) _GUIDANCEPATTERN_GUIDANCEPATTERNEXTENSION = _descriptor.EnumDescriptor( - name='GuidancePatternExtension', - full_name='efdi.GuidancePattern.GuidancePatternExtension', - filename=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - values=[ - _descriptor.EnumValueDescriptor( - name='F_NOTSET', index=0, number=0, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='F_BOTH', index=1, number=1, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='F_FIRST_ONLY', index=2, number=2, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='F_LAST_ONLY', index=3, number=3, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='F_NO_EXT', index=4, number=4, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - ], - containing_type=None, - serialized_options=None, - serialized_start=8729, - serialized_end=8830, + name='GuidancePatternExtension', + full_name='efdi.GuidancePattern.GuidancePatternExtension', + filename=None, + file=DESCRIPTOR, + create_key=_descriptor._internal_create_key, + values=[ + _descriptor.EnumValueDescriptor( + name='F_NOTSET', index=0, number=0, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='F_BOTH', index=1, number=1, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='F_FIRST_ONLY', index=2, number=2, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='F_LAST_ONLY', index=3, number=3, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='F_NO_EXT', index=4, number=4, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + ], + containing_type=None, + serialized_options=None, + serialized_start=8729, + serialized_end=8830, ) _sym_db.RegisterEnumDescriptor(_GUIDANCEPATTERN_GUIDANCEPATTERNEXTENSION) _GUIDANCEPATTERN_GUIDANCEPATTERNGNSSMETHOD = _descriptor.EnumDescriptor( - name='GuidancePatternGNSSMethod', - full_name='efdi.GuidancePattern.GuidancePatternGNSSMethod', - filename=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - values=[ - _descriptor.EnumValueDescriptor( - name='I_NOTSET', index=0, number=0, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='I_GNSS_FIX', index=1, number=1, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='I_DGNSS_FIX', index=2, number=2, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='I_PRECISE_GNSS', index=3, number=3, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='I_RTK_FIXED_INTEGER', index=4, number=4, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='I_RTK_FLOAT', index=5, number=5, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='I_ESTIMATED_DR_MODE', index=6, number=6, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='I_MANUAL_INPUT', index=7, number=7, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='I_SIMULATE_MODE', index=8, number=8, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='I_DESKTOP_GENERATED_DATA', index=9, number=16, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='I_OTHER', index=10, number=17, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - ], - containing_type=None, - serialized_options=None, - serialized_start=8833, - serialized_end=9078, + name='GuidancePatternGNSSMethod', + full_name='efdi.GuidancePattern.GuidancePatternGNSSMethod', + filename=None, + file=DESCRIPTOR, + create_key=_descriptor._internal_create_key, + values=[ + _descriptor.EnumValueDescriptor( + name='I_NOTSET', index=0, number=0, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='I_GNSS_FIX', index=1, number=1, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='I_DGNSS_FIX', index=2, number=2, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='I_PRECISE_GNSS', index=3, number=3, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='I_RTK_FIXED_INTEGER', index=4, number=4, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='I_RTK_FLOAT', index=5, number=5, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='I_ESTIMATED_DR_MODE', index=6, number=6, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='I_MANUAL_INPUT', index=7, number=7, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='I_SIMULATE_MODE', index=8, number=8, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='I_DESKTOP_GENERATED_DATA', index=9, number=16, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='I_OTHER', index=10, number=17, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + ], + containing_type=None, + serialized_options=None, + serialized_start=8833, + serialized_end=9078, ) _sym_db.RegisterEnumDescriptor(_GUIDANCEPATTERN_GUIDANCEPATTERNGNSSMETHOD) _ISO11783_TASKDATA_VERSIONMAJOR = _descriptor.EnumDescriptor( - name='VersionMajor', - full_name='efdi.ISO11783_TaskData.VersionMajor', - filename=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - values=[ - _descriptor.EnumValueDescriptor( - name='VERSION_MAJOR_DIS', index=0, number=0, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='VERSION_MAJOR_FDIS_1', index=1, number=1, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='VERSION_MAJOR_FDIS_2', index=2, number=2, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='VERSION_MAJOR_E2_DIS', index=3, number=3, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='VERSION_MAJOR_E2_FDIS', index=4, number=4, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - ], - containing_type=None, - serialized_options=None, - serialized_start=10576, - serialized_end=10718, + name='VersionMajor', + full_name='efdi.ISO11783_TaskData.VersionMajor', + filename=None, + file=DESCRIPTOR, + create_key=_descriptor._internal_create_key, + values=[ + _descriptor.EnumValueDescriptor( + name='VERSION_MAJOR_DIS', index=0, number=0, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='VERSION_MAJOR_FDIS_1', index=1, number=1, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='VERSION_MAJOR_FDIS_2', index=2, number=2, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='VERSION_MAJOR_E2_DIS', index=3, number=3, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='VERSION_MAJOR_E2_FDIS', index=4, number=4, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + ], + containing_type=None, + serialized_options=None, + serialized_start=10576, + serialized_end=10718, ) _sym_db.RegisterEnumDescriptor(_ISO11783_TASKDATA_VERSIONMAJOR) _ISO11783_TASKDATA_DATATRANSFERORIGIN = _descriptor.EnumDescriptor( - name='DataTransferOrigin', - full_name='efdi.ISO11783_TaskData.DataTransferOrigin', - filename=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - values=[ - _descriptor.EnumValueDescriptor( - name='DATA_TRANSFER_ORIGIN_NOTSET', index=0, number=0, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='DATA_TRANSFER_ORIGIN_FMIS', index=1, number=1, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='DATA_TRANSFER_ORIGIN_MICS', index=2, number=2, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - ], - containing_type=None, - serialized_options=None, - serialized_start=10720, - serialized_end=10835, + name='DataTransferOrigin', + full_name='efdi.ISO11783_TaskData.DataTransferOrigin', + filename=None, + file=DESCRIPTOR, + create_key=_descriptor._internal_create_key, + values=[ + _descriptor.EnumValueDescriptor( + name='DATA_TRANSFER_ORIGIN_NOTSET', index=0, number=0, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='DATA_TRANSFER_ORIGIN_FMIS', index=1, number=1, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='DATA_TRANSFER_ORIGIN_MICS', index=2, number=2, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + ], + containing_type=None, + serialized_options=None, + serialized_start=10720, + serialized_end=10835, ) _sym_db.RegisterEnumDescriptor(_ISO11783_TASKDATA_DATATRANSFERORIGIN) _LINESTRING_LINESTRINGTYPE = _descriptor.EnumDescriptor( - name='LinestringType', - full_name='efdi.LineString.LinestringType', - filename=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - values=[ - _descriptor.EnumValueDescriptor( - name='A_NOTSET', index=0, number=0, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='A_POLYGON_EXTERIOR', index=1, number=1, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='A_POLYGON_INTERIOR', index=2, number=2, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='A_TRAM_LINE', index=3, number=3, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='A_SAMPLING_ROUTE', index=4, number=4, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='A_GUIDANCE_PATTERN', index=5, number=5, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='A_DRAINAGE', index=6, number=6, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='A_FENCE', index=7, number=7, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='A_FLAG', index=8, number=8, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='A_OBSTACLE', index=9, number=9, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - ], - containing_type=None, - serialized_options=None, - serialized_start=11132, - serialized_end=11330, + name='LinestringType', + full_name='efdi.LineString.LinestringType', + filename=None, + file=DESCRIPTOR, + create_key=_descriptor._internal_create_key, + values=[ + _descriptor.EnumValueDescriptor( + name='A_NOTSET', index=0, number=0, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='A_POLYGON_EXTERIOR', index=1, number=1, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='A_POLYGON_INTERIOR', index=2, number=2, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='A_TRAM_LINE', index=3, number=3, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='A_SAMPLING_ROUTE', index=4, number=4, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='A_GUIDANCE_PATTERN', index=5, number=5, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='A_DRAINAGE', index=6, number=6, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='A_FENCE', index=7, number=7, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='A_FLAG', index=8, number=8, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='A_OBSTACLE', index=9, number=9, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + ], + containing_type=None, + serialized_options=None, + serialized_start=11132, + serialized_end=11330, ) _sym_db.RegisterEnumDescriptor(_LINESTRING_LINESTRINGTYPE) _POINT_POINTTYPE = _descriptor.EnumDescriptor( - name='PointType', - full_name='efdi.Point.PointType', - filename=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - values=[ - _descriptor.EnumValueDescriptor( - name='A_NOTSET', index=0, number=0, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='A_FLAG', index=1, number=1, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='A_OTHER', index=2, number=2, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='A_FIELD_ACCESS', index=3, number=3, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='A_STORAGE', index=4, number=4, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='A_OBSTACLE', index=5, number=5, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='A_GUID_REF_A', index=6, number=6, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='A_GUID_REF_B', index=7, number=7, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='A_GUID_REF_CENTER', index=8, number=8, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='A_GUID_POINT', index=9, number=9, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='A_PARTFIELD_REF_POINT', index=10, number=10, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='A_HOMEBASE', index=11, number=11, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - ], - containing_type=None, - serialized_options=None, - serialized_start=12582, - serialized_end=12803, + name='PointType', + full_name='efdi.Point.PointType', + filename=None, + file=DESCRIPTOR, + create_key=_descriptor._internal_create_key, + values=[ + _descriptor.EnumValueDescriptor( + name='A_NOTSET', index=0, number=0, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='A_FLAG', index=1, number=1, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='A_OTHER', index=2, number=2, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='A_FIELD_ACCESS', index=3, number=3, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='A_STORAGE', index=4, number=4, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='A_OBSTACLE', index=5, number=5, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='A_GUID_REF_A', index=6, number=6, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='A_GUID_REF_B', index=7, number=7, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='A_GUID_REF_CENTER', index=8, number=8, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='A_GUID_POINT', index=9, number=9, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='A_PARTFIELD_REF_POINT', index=10, number=10, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='A_HOMEBASE', index=11, number=11, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + ], + containing_type=None, + serialized_options=None, + serialized_start=12582, + serialized_end=12803, ) _sym_db.RegisterEnumDescriptor(_POINT_POINTTYPE) _POLYGON_POLYGONTYPE = _descriptor.EnumDescriptor( - name='PolygonType', - full_name='efdi.Polygon.PolygonType', - filename=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - values=[ - _descriptor.EnumValueDescriptor( - name='A_NOTSET', index=0, number=0, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='A_PARTFIELD_BOUNDARY', index=1, number=1, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='A_TREATMENT_ZONE', index=2, number=2, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='A_WATER_SURFACE', index=3, number=3, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='A_BUILDING', index=4, number=4, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='A_ROAD', index=5, number=5, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='A_OBSTACLE', index=6, number=6, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='A_FLAG', index=7, number=7, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='A_OTHER', index=8, number=8, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='A_MAINFIELD', index=9, number=9, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='A_HEADLAND', index=10, number=10, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='A_BUFFER_ZONE', index=11, number=11, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='A_WINDBREAK', index=12, number=12, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - ], - containing_type=None, - serialized_options=None, - serialized_start=13053, - serialized_end=13287, + name='PolygonType', + full_name='efdi.Polygon.PolygonType', + filename=None, + file=DESCRIPTOR, + create_key=_descriptor._internal_create_key, + values=[ + _descriptor.EnumValueDescriptor( + name='A_NOTSET', index=0, number=0, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='A_PARTFIELD_BOUNDARY', index=1, number=1, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='A_TREATMENT_ZONE', index=2, number=2, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='A_WATER_SURFACE', index=3, number=3, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='A_BUILDING', index=4, number=4, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='A_ROAD', index=5, number=5, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='A_OBSTACLE', index=6, number=6, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='A_FLAG', index=7, number=7, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='A_OTHER', index=8, number=8, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='A_MAINFIELD', index=9, number=9, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='A_HEADLAND', index=10, number=10, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='A_BUFFER_ZONE', index=11, number=11, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='A_WINDBREAK', index=12, number=12, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + ], + containing_type=None, + serialized_options=None, + serialized_start=13053, + serialized_end=13287, ) _sym_db.RegisterEnumDescriptor(_POLYGON_POLYGONTYPE) _POSITION_POSITIONSTATUS = _descriptor.EnumDescriptor( - name='PositionStatus', - full_name='efdi.Position.PositionStatus', - filename=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - values=[ - _descriptor.EnumValueDescriptor( - name='D_NO_GPS', index=0, number=0, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='D_GNSS', index=1, number=1, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='D_DGNSS', index=2, number=2, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='D_PRECISE_GNSS', index=3, number=3, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='D_RTK_FINTEGER', index=4, number=4, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='D_RTK_FLOAT', index=5, number=5, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='D_EST_DR_MODE', index=6, number=6, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='D_MANUAL_INPUT', index=7, number=7, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='D_SIMULATE_MODE', index=8, number=8, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='D_ERROR', index=9, number=14, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='D_NOT_AVAILABLE', index=10, number=15, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - ], - containing_type=None, - serialized_options=None, - serialized_start=13582, - serialized_end=13788, + name='PositionStatus', + full_name='efdi.Position.PositionStatus', + filename=None, + file=DESCRIPTOR, + create_key=_descriptor._internal_create_key, + values=[ + _descriptor.EnumValueDescriptor( + name='D_NO_GPS', index=0, number=0, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='D_GNSS', index=1, number=1, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='D_DGNSS', index=2, number=2, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='D_PRECISE_GNSS', index=3, number=3, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='D_RTK_FINTEGER', index=4, number=4, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='D_RTK_FLOAT', index=5, number=5, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='D_EST_DR_MODE', index=6, number=6, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='D_MANUAL_INPUT', index=7, number=7, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='D_SIMULATE_MODE', index=8, number=8, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='D_ERROR', index=9, number=14, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='D_NOT_AVAILABLE', index=10, number=15, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + ], + containing_type=None, + serialized_options=None, + serialized_start=13582, + serialized_end=13788, ) _sym_db.RegisterEnumDescriptor(_POSITION_POSITIONSTATUS) _PRODUCT_PRODUCTTYPE = _descriptor.EnumDescriptor( - name='ProductType', - full_name='efdi.Product.ProductType', - filename=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - values=[ - _descriptor.EnumValueDescriptor( - name='F_NOTSET', index=0, number=0, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='F_SINGLE', index=1, number=1, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='F_MIXTURE', index=2, number=2, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='F_TEMPORARY_MIXTURE', index=3, number=3, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - ], - containing_type=None, - serialized_options=None, - serialized_start=14620, - serialized_end=14701, + name='ProductType', + full_name='efdi.Product.ProductType', + filename=None, + file=DESCRIPTOR, + create_key=_descriptor._internal_create_key, + values=[ + _descriptor.EnumValueDescriptor( + name='F_NOTSET', index=0, number=0, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='F_SINGLE', index=1, number=1, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='F_MIXTURE', index=2, number=2, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='F_TEMPORARY_MIXTURE', index=3, number=3, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + ], + containing_type=None, + serialized_options=None, + serialized_start=14620, + serialized_end=14701, ) _sym_db.RegisterEnumDescriptor(_PRODUCT_PRODUCTTYPE) _PRODUCTALLOCATION_TRANSFERMODE = _descriptor.EnumDescriptor( - name='TransferMode', - full_name='efdi.ProductAllocation.TransferMode', - filename=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - values=[ - _descriptor.EnumValueDescriptor( - name='D_NOTSET', index=0, number=0, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='D_FILLING', index=1, number=1, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='D_EMPTYING', index=2, number=2, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='D_REMAINDER', index=3, number=3, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - ], - containing_type=None, - serialized_options=None, - serialized_start=15090, - serialized_end=15166, + name='TransferMode', + full_name='efdi.ProductAllocation.TransferMode', + filename=None, + file=DESCRIPTOR, + create_key=_descriptor._internal_create_key, + values=[ + _descriptor.EnumValueDescriptor( + name='D_NOTSET', index=0, number=0, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='D_FILLING', index=1, number=1, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='D_EMPTYING', index=2, number=2, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='D_REMAINDER', index=3, number=3, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + ], + containing_type=None, + serialized_options=None, + serialized_start=15090, + serialized_end=15166, ) _sym_db.RegisterEnumDescriptor(_PRODUCTALLOCATION_TRANSFERMODE) _PRODUCTGROUP_PRODUCTGROUPTYPE = _descriptor.EnumDescriptor( - name='ProductGroupType', - full_name='efdi.ProductGroup.ProductGroupType', - filename=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - values=[ - _descriptor.EnumValueDescriptor( - name='C_NOTSET', index=0, number=0, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='C_PRODUCT_GROUP', index=1, number=1, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='C_CROP_TYPE', index=2, number=2, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - ], - containing_type=None, - serialized_options=None, - serialized_start=15363, - serialized_end=15433, + name='ProductGroupType', + full_name='efdi.ProductGroup.ProductGroupType', + filename=None, + file=DESCRIPTOR, + create_key=_descriptor._internal_create_key, + values=[ + _descriptor.EnumValueDescriptor( + name='C_NOTSET', index=0, number=0, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='C_PRODUCT_GROUP', index=1, number=1, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='C_CROP_TYPE', index=2, number=2, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + ], + containing_type=None, + serialized_options=None, + serialized_start=15363, + serialized_end=15433, ) _sym_db.RegisterEnumDescriptor(_PRODUCTGROUP_PRODUCTGROUPTYPE) _TASK_TASKSTATUS = _descriptor.EnumDescriptor( - name='TaskStatus', - full_name='efdi.Task.TaskStatus', - filename=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - values=[ - _descriptor.EnumValueDescriptor( - name='G_NOTSET', index=0, number=0, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='G_PLANNED', index=1, number=1, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='G_RUNNING', index=2, number=2, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='G_PAUSED', index=3, number=3, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='G_COMPLETED', index=4, number=4, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='G_TEMPLATE', index=5, number=5, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='G_CANCELED', index=6, number=6, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - ], - containing_type=None, - serialized_options=None, - serialized_start=16560, - serialized_end=16679, + name='TaskStatus', + full_name='efdi.Task.TaskStatus', + filename=None, + file=DESCRIPTOR, + create_key=_descriptor._internal_create_key, + values=[ + _descriptor.EnumValueDescriptor( + name='G_NOTSET', index=0, number=0, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='G_PLANNED', index=1, number=1, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='G_RUNNING', index=2, number=2, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='G_PAUSED', index=3, number=3, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='G_COMPLETED', index=4, number=4, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='G_TEMPLATE', index=5, number=5, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='G_CANCELED', index=6, number=6, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + ], + containing_type=None, + serialized_options=None, + serialized_start=16560, + serialized_end=16679, ) _sym_db.RegisterEnumDescriptor(_TASK_TASKSTATUS) _TASKCONTROLLERCAPABILITIES_VERSIONNUMBER = _descriptor.EnumDescriptor( - name='VersionNumber', - full_name='efdi.TaskControllerCapabilities.VersionNumber', - filename=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - values=[ - _descriptor.EnumValueDescriptor( - name='C_DIS', index=0, number=0, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='C_FDIS_1', index=1, number=1, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='C_FDIS_2', index=2, number=2, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='C_E2_DIS', index=3, number=3, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='C_E2_FDIS', index=4, number=4, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - ], - containing_type=None, - serialized_options=None, - serialized_start=17061, - serialized_end=17144, + name='VersionNumber', + full_name='efdi.TaskControllerCapabilities.VersionNumber', + filename=None, + file=DESCRIPTOR, + create_key=_descriptor._internal_create_key, + values=[ + _descriptor.EnumValueDescriptor( + name='C_DIS', index=0, number=0, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='C_FDIS_1', index=1, number=1, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='C_FDIS_2', index=2, number=2, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='C_E2_DIS', index=3, number=3, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='C_E2_FDIS', index=4, number=4, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + ], + containing_type=None, + serialized_options=None, + serialized_start=17061, + serialized_end=17144, ) _sym_db.RegisterEnumDescriptor(_TASKCONTROLLERCAPABILITIES_VERSIONNUMBER) _TIME_TIMETYPE = _descriptor.EnumDescriptor( - name='TimeType', - full_name='efdi.Time.TimeType', - filename=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - values=[ - _descriptor.EnumValueDescriptor( - name='D_NOTSET', index=0, number=0, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='D_PLANNED', index=1, number=1, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='D_PRELIMINARY', index=2, number=2, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='D_EFFECTIVE', index=3, number=4, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='D_INEFFECTIVE', index=4, number=5, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='D_REPAIR', index=5, number=6, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='D_CLEARING', index=6, number=7, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='D_POWERED_DOWN', index=7, number=8, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - ], - containing_type=None, - serialized_options=None, - serialized_start=17459, - serialized_end=17603, + name='TimeType', + full_name='efdi.Time.TimeType', + filename=None, + file=DESCRIPTOR, + create_key=_descriptor._internal_create_key, + values=[ + _descriptor.EnumValueDescriptor( + name='D_NOTSET', index=0, number=0, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='D_PLANNED', index=1, number=1, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='D_PRELIMINARY', index=2, number=2, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='D_EFFECTIVE', index=3, number=4, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='D_INEFFECTIVE', index=4, number=5, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='D_REPAIR', index=5, number=6, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='D_CLEARING', index=6, number=7, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='D_POWERED_DOWN', index=7, number=8, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + ], + containing_type=None, + serialized_options=None, + serialized_start=17459, + serialized_end=17603, ) _sym_db.RegisterEnumDescriptor(_TIME_TIMETYPE) _TIMELOG_TIMELOGTYPE = _descriptor.EnumDescriptor( - name='TimeLogType', - full_name='efdi.TimeLog.TimeLogType', - filename=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - values=[ - _descriptor.EnumValueDescriptor( - name='C_NOTSET', index=0, number=0, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='C_BINARY_TIMELOG', index=1, number=1, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - ], - containing_type=None, - serialized_options=None, - serialized_start=17773, - serialized_end=17822, + name='TimeLogType', + full_name='efdi.TimeLog.TimeLogType', + filename=None, + file=DESCRIPTOR, + create_key=_descriptor._internal_create_key, + values=[ + _descriptor.EnumValueDescriptor( + name='C_NOTSET', index=0, number=0, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='C_BINARY_TIMELOG', index=1, number=1, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + ], + containing_type=None, + serialized_options=None, + serialized_start=17773, + serialized_end=17822, ) _sym_db.RegisterEnumDescriptor(_TIMELOG_TIMELOGTYPE) _EXTERNALFILEREFERENCE_FILETYPE = _descriptor.EnumDescriptor( - name='FileType', - full_name='efdi.ExternalFileReference.FileType', - filename=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - values=[ - _descriptor.EnumValueDescriptor( - name='B_NOTSET', index=0, number=0, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - _descriptor.EnumValueDescriptor( - name='B_XML', index=1, number=1, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key), - ], - containing_type=None, - serialized_options=None, - serialized_start=18975, - serialized_end=19010, + name='FileType', + full_name='efdi.ExternalFileReference.FileType', + filename=None, + file=DESCRIPTOR, + create_key=_descriptor._internal_create_key, + values=[ + _descriptor.EnumValueDescriptor( + name='B_NOTSET', index=0, number=0, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='B_XML', index=1, number=1, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + ], + containing_type=None, + serialized_options=None, + serialized_start=18975, + serialized_end=19010, ) _sym_db.RegisterEnumDescriptor(_EXTERNALFILEREFERENCE_FILETYPE) - _UID = _descriptor.Descriptor( - name='UID', - full_name='efdi.UID', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='number', full_name='efdi.UID.number', index=0, - number=1, type=18, cpp_type=2, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='uri', full_name='efdi.UID.uri', index=1, - number=2, type=9, cpp_type=9, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=121, - serialized_end=155, + name='UID', + full_name='efdi.UID', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='number', full_name='efdi.UID.number', index=0, + number=1, type=18, cpp_type=2, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='uri', full_name='efdi.UID.uri', index=1, + number=2, type=9, cpp_type=9, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=121, + serialized_end=155, ) - _ALLOCATIONSTAMP = _descriptor.Descriptor( - name='AllocationStamp', - full_name='efdi.AllocationStamp', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='start', full_name='efdi.AllocationStamp.start', index=0, - number=1, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='stop', full_name='efdi.AllocationStamp.stop', index=1, - number=2, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='duration', full_name='efdi.AllocationStamp.duration', index=2, - number=3, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='type', full_name='efdi.AllocationStamp.type', index=3, - number=4, type=14, cpp_type=8, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='position', full_name='efdi.AllocationStamp.position', index=4, - number=5, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='extension', full_name='efdi.AllocationStamp.extension', index=5, - number=2048, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - _ALLOCATIONSTAMP_ALLOCATIONSTAMPTYPE, - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=158, - serialized_end=480, + name='AllocationStamp', + full_name='efdi.AllocationStamp', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='start', full_name='efdi.AllocationStamp.start', index=0, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='stop', full_name='efdi.AllocationStamp.stop', index=1, + number=2, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='duration', full_name='efdi.AllocationStamp.duration', index=2, + number=3, type=4, cpp_type=4, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='type', full_name='efdi.AllocationStamp.type', index=3, + number=4, type=14, cpp_type=8, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='position', full_name='efdi.AllocationStamp.position', index=4, + number=5, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='extension', full_name='efdi.AllocationStamp.extension', index=5, + number=2048, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + _ALLOCATIONSTAMP_ALLOCATIONSTAMPTYPE, + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=158, + serialized_end=480, ) - _ATTACHEDFILE = _descriptor.Descriptor( - name='AttachedFile', - full_name='efdi.AttachedFile', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='filename_with_extension', full_name='efdi.AttachedFile.filename_with_extension', index=0, - number=1, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='preserve', full_name='efdi.AttachedFile.preserve', index=1, - number=2, type=14, cpp_type=8, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='manufacturer_gln', full_name='efdi.AttachedFile.manufacturer_gln', index=2, - number=3, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='file_type', full_name='efdi.AttachedFile.file_type', index=3, - number=4, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='file_version', full_name='efdi.AttachedFile.file_version', index=4, - number=5, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='file_length', full_name='efdi.AttachedFile.file_length', index=5, - number=6, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='extension', full_name='efdi.AttachedFile.extension', index=6, - number=2048, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - _ATTACHEDFILE_PRESERVE, - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=483, - serialized_end=783, + name='AttachedFile', + full_name='efdi.AttachedFile', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='filename_with_extension', full_name='efdi.AttachedFile.filename_with_extension', index=0, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='preserve', full_name='efdi.AttachedFile.preserve', index=1, + number=2, type=14, cpp_type=8, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='manufacturer_gln', full_name='efdi.AttachedFile.manufacturer_gln', index=2, + number=3, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='file_type', full_name='efdi.AttachedFile.file_type', index=3, + number=4, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='file_version', full_name='efdi.AttachedFile.file_version', index=4, + number=5, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='file_length', full_name='efdi.AttachedFile.file_length', index=5, + number=6, type=4, cpp_type=4, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='extension', full_name='efdi.AttachedFile.extension', index=6, + number=2048, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + _ATTACHEDFILE_PRESERVE, + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=483, + serialized_end=783, ) - _BASESTATION = _descriptor.Descriptor( - name='BaseStation', - full_name='efdi.BaseStation', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='base_station_id', full_name='efdi.BaseStation.base_station_id', index=0, - number=1, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='base_station_designator', full_name='efdi.BaseStation.base_station_designator', index=1, - number=2, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='base_station_north', full_name='efdi.BaseStation.base_station_north', index=2, - number=3, type=1, cpp_type=5, label=1, - has_default_value=False, default_value=float(0), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='base_station_east', full_name='efdi.BaseStation.base_station_east', index=3, - number=4, type=1, cpp_type=5, label=1, - has_default_value=False, default_value=float(0), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='base_station_up', full_name='efdi.BaseStation.base_station_up', index=4, - number=5, type=18, cpp_type=2, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='extension', full_name='efdi.BaseStation.extension', index=5, - number=2048, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=786, - serialized_end=990, + name='BaseStation', + full_name='efdi.BaseStation', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='base_station_id', full_name='efdi.BaseStation.base_station_id', index=0, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='base_station_designator', full_name='efdi.BaseStation.base_station_designator', index=1, + number=2, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='base_station_north', full_name='efdi.BaseStation.base_station_north', index=2, + number=3, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='base_station_east', full_name='efdi.BaseStation.base_station_east', index=3, + number=4, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='base_station_up', full_name='efdi.BaseStation.base_station_up', index=4, + number=5, type=18, cpp_type=2, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='extension', full_name='efdi.BaseStation.extension', index=5, + number=2048, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=786, + serialized_end=990, ) - _CODEDCOMMENT = _descriptor.Descriptor( - name='CodedComment', - full_name='efdi.CodedComment', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='coded_comment_id', full_name='efdi.CodedComment.coded_comment_id', index=0, - number=1, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='coded_comment_designator', full_name='efdi.CodedComment.coded_comment_designator', index=1, - number=2, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='coded_comment_scope', full_name='efdi.CodedComment.coded_comment_scope', index=2, - number=3, type=14, cpp_type=8, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='coded_comment_group_id_ref', full_name='efdi.CodedComment.coded_comment_group_id_ref', index=3, - number=4, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='coded_comment_list_value', full_name='efdi.CodedComment.coded_comment_list_value', index=4, - number=5, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='extension', full_name='efdi.CodedComment.extension', index=5, - number=2048, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - _CODEDCOMMENT_CODEDCOMMENTSCOPE, - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=993, - serialized_end=1377, + name='CodedComment', + full_name='efdi.CodedComment', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='coded_comment_id', full_name='efdi.CodedComment.coded_comment_id', index=0, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='coded_comment_designator', full_name='efdi.CodedComment.coded_comment_designator', index=1, + number=2, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='coded_comment_scope', full_name='efdi.CodedComment.coded_comment_scope', index=2, + number=3, type=14, cpp_type=8, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='coded_comment_group_id_ref', full_name='efdi.CodedComment.coded_comment_group_id_ref', index=3, + number=4, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='coded_comment_list_value', full_name='efdi.CodedComment.coded_comment_list_value', index=4, + number=5, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='extension', full_name='efdi.CodedComment.extension', index=5, + number=2048, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + _CODEDCOMMENT_CODEDCOMMENTSCOPE, + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=993, + serialized_end=1377, ) - _CODEDCOMMENTGROUP = _descriptor.Descriptor( - name='CodedCommentGroup', - full_name='efdi.CodedCommentGroup', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='coded_comment_group_id', full_name='efdi.CodedCommentGroup.coded_comment_group_id', index=0, - number=1, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='coded_comment_group_designator', full_name='efdi.CodedCommentGroup.coded_comment_group_designator', index=1, - number=2, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='extension', full_name='efdi.CodedCommentGroup.extension', index=2, - number=2048, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=1380, - serialized_end=1524, + name='CodedCommentGroup', + full_name='efdi.CodedCommentGroup', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='coded_comment_group_id', full_name='efdi.CodedCommentGroup.coded_comment_group_id', index=0, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='coded_comment_group_designator', full_name='efdi.CodedCommentGroup.coded_comment_group_designator', + index=1, + number=2, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='extension', full_name='efdi.CodedCommentGroup.extension', index=2, + number=2048, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=1380, + serialized_end=1524, ) - _CODEDCOMMENTLISTVALUE = _descriptor.Descriptor( - name='CodedCommentListValue', - full_name='efdi.CodedCommentListValue', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='coded_comment_list_value_id', full_name='efdi.CodedCommentListValue.coded_comment_list_value_id', index=0, - number=1, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='coded_comment_list_value_designator', full_name='efdi.CodedCommentListValue.coded_comment_list_value_designator', index=1, - number=2, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='extension', full_name='efdi.CodedCommentListValue.extension', index=2, - number=2048, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=1527, - serialized_end=1685, + name='CodedCommentListValue', + full_name='efdi.CodedCommentListValue', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='coded_comment_list_value_id', full_name='efdi.CodedCommentListValue.coded_comment_list_value_id', + index=0, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='coded_comment_list_value_designator', + full_name='efdi.CodedCommentListValue.coded_comment_list_value_designator', index=1, + number=2, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='extension', full_name='efdi.CodedCommentListValue.extension', index=2, + number=2048, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=1527, + serialized_end=1685, ) - _COLOURLEGEND = _descriptor.Descriptor( - name='ColourLegend', - full_name='efdi.ColourLegend', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='colour_legend_id', full_name='efdi.ColourLegend.colour_legend_id', index=0, - number=1, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='default_colour', full_name='efdi.ColourLegend.default_colour', index=1, - number=2, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='colour_range', full_name='efdi.ColourLegend.colour_range', index=2, - number=3, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='extension', full_name='efdi.ColourLegend.extension', index=3, - number=2048, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=1688, - serialized_end=1846, + name='ColourLegend', + full_name='efdi.ColourLegend', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='colour_legend_id', full_name='efdi.ColourLegend.colour_legend_id', index=0, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='default_colour', full_name='efdi.ColourLegend.default_colour', index=1, + number=2, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='colour_range', full_name='efdi.ColourLegend.colour_range', index=2, + number=3, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='extension', full_name='efdi.ColourLegend.extension', index=3, + number=2048, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=1688, + serialized_end=1846, ) - _COLOURRANGE = _descriptor.Descriptor( - name='ColourRange', - full_name='efdi.ColourRange', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='minimum_value', full_name='efdi.ColourRange.minimum_value', index=0, - number=1, type=18, cpp_type=2, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='maximum_value', full_name='efdi.ColourRange.maximum_value', index=1, - number=2, type=18, cpp_type=2, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='colour', full_name='efdi.ColourRange.colour', index=2, - number=3, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='extension', full_name='efdi.ColourRange.extension', index=3, - number=2048, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=1848, - serialized_end=1965, + name='ColourRange', + full_name='efdi.ColourRange', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='minimum_value', full_name='efdi.ColourRange.minimum_value', index=0, + number=1, type=18, cpp_type=2, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='maximum_value', full_name='efdi.ColourRange.maximum_value', index=1, + number=2, type=18, cpp_type=2, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='colour', full_name='efdi.ColourRange.colour', index=2, + number=3, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='extension', full_name='efdi.ColourRange.extension', index=3, + number=2048, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=1848, + serialized_end=1965, ) - _COMMENTALLOCATION = _descriptor.Descriptor( - name='CommentAllocation', - full_name='efdi.CommentAllocation', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='coded_comment_id_ref', full_name='efdi.CommentAllocation.coded_comment_id_ref', index=0, - number=1, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='coded_comment_list_value', full_name='efdi.CommentAllocation.coded_comment_list_value', index=1, - number=2, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='free_comment_text', full_name='efdi.CommentAllocation.free_comment_text', index=2, - number=3, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='allocation_stamp', full_name='efdi.CommentAllocation.allocation_stamp', index=3, - number=4, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='extension', full_name='efdi.CommentAllocation.extension', index=4, - number=2048, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=1968, - serialized_end=2191, + name='CommentAllocation', + full_name='efdi.CommentAllocation', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='coded_comment_id_ref', full_name='efdi.CommentAllocation.coded_comment_id_ref', index=0, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='coded_comment_list_value', full_name='efdi.CommentAllocation.coded_comment_list_value', index=1, + number=2, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='free_comment_text', full_name='efdi.CommentAllocation.free_comment_text', index=2, + number=3, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='allocation_stamp', full_name='efdi.CommentAllocation.allocation_stamp', index=3, + number=4, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='extension', full_name='efdi.CommentAllocation.extension', index=4, + number=2048, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=1968, + serialized_end=2191, ) - _CONNECTION = _descriptor.Descriptor( - name='Connection', - full_name='efdi.Connection', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='device_id_ref_0', full_name='efdi.Connection.device_id_ref_0', index=0, - number=1, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='device_element_id_ref_0', full_name='efdi.Connection.device_element_id_ref_0', index=1, - number=2, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='device_id_ref_1', full_name='efdi.Connection.device_id_ref_1', index=2, - number=3, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='device_element_id_ref_1', full_name='efdi.Connection.device_element_id_ref_1', index=3, - number=4, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='extension', full_name='efdi.Connection.extension', index=4, - number=2048, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=2194, - serialized_end=2408, + name='Connection', + full_name='efdi.Connection', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='device_id_ref_0', full_name='efdi.Connection.device_id_ref_0', index=0, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='device_element_id_ref_0', full_name='efdi.Connection.device_element_id_ref_0', index=1, + number=2, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='device_id_ref_1', full_name='efdi.Connection.device_id_ref_1', index=2, + number=3, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='device_element_id_ref_1', full_name='efdi.Connection.device_element_id_ref_1', index=3, + number=4, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='extension', full_name='efdi.Connection.extension', index=4, + number=2048, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=2194, + serialized_end=2408, ) - _CONTROLASSIGNMENT = _descriptor.Descriptor( - name='ControlAssignment', - full_name='efdi.ControlAssignment', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='source_client_name', full_name='efdi.ControlAssignment.source_client_name', index=0, - number=1, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='user_client_name', full_name='efdi.ControlAssignment.user_client_name', index=1, - number=2, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='source_device_structure_label', full_name='efdi.ControlAssignment.source_device_structure_label', index=2, - number=3, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='user_device_structure_label', full_name='efdi.ControlAssignment.user_device_structure_label', index=3, - number=4, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='source_device_element_number', full_name='efdi.ControlAssignment.source_device_element_number', index=4, - number=5, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='user_device_element_number', full_name='efdi.ControlAssignment.user_device_element_number', index=5, - number=6, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='process_data_ddi', full_name='efdi.ControlAssignment.process_data_ddi', index=6, - number=7, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='allocation_stamp', full_name='efdi.ControlAssignment.allocation_stamp', index=7, - number=8, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='extension', full_name='efdi.ControlAssignment.extension', index=8, - number=2048, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=2411, - serialized_end=2751, + name='ControlAssignment', + full_name='efdi.ControlAssignment', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='source_client_name', full_name='efdi.ControlAssignment.source_client_name', index=0, + number=1, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=b"", + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='user_client_name', full_name='efdi.ControlAssignment.user_client_name', index=1, + number=2, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=b"", + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='source_device_structure_label', full_name='efdi.ControlAssignment.source_device_structure_label', + index=2, + number=3, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=b"", + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='user_device_structure_label', full_name='efdi.ControlAssignment.user_device_structure_label', index=3, + number=4, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=b"", + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='source_device_element_number', full_name='efdi.ControlAssignment.source_device_element_number', + index=4, + number=5, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='user_device_element_number', full_name='efdi.ControlAssignment.user_device_element_number', index=5, + number=6, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='process_data_ddi', full_name='efdi.ControlAssignment.process_data_ddi', index=6, + number=7, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='allocation_stamp', full_name='efdi.ControlAssignment.allocation_stamp', index=7, + number=8, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='extension', full_name='efdi.ControlAssignment.extension', index=8, + number=2048, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=2411, + serialized_end=2751, ) - _CROPTYPE = _descriptor.Descriptor( - name='CropType', - full_name='efdi.CropType', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='crop_type_id', full_name='efdi.CropType.crop_type_id', index=0, - number=1, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='crop_type_designator', full_name='efdi.CropType.crop_type_designator', index=1, - number=2, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='product_group_id_ref', full_name='efdi.CropType.product_group_id_ref', index=2, - number=3, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='crop_variety', full_name='efdi.CropType.crop_variety', index=3, - number=4, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='extension', full_name='efdi.CropType.extension', index=4, - number=2048, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=2754, - serialized_end=2951, + name='CropType', + full_name='efdi.CropType', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='crop_type_id', full_name='efdi.CropType.crop_type_id', index=0, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='crop_type_designator', full_name='efdi.CropType.crop_type_designator', index=1, + number=2, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='product_group_id_ref', full_name='efdi.CropType.product_group_id_ref', index=2, + number=3, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='crop_variety', full_name='efdi.CropType.crop_variety', index=3, + number=4, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='extension', full_name='efdi.CropType.extension', index=4, + number=2048, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=2754, + serialized_end=2951, ) - _CROPVARIETY = _descriptor.Descriptor( - name='CropVariety', - full_name='efdi.CropVariety', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='crop_variety_id', full_name='efdi.CropVariety.crop_variety_id', index=0, - number=1, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='crop_variety_designator', full_name='efdi.CropVariety.crop_variety_designator', index=1, - number=2, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='product_id_ref', full_name='efdi.CropVariety.product_id_ref', index=2, - number=3, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='extension', full_name='efdi.CropVariety.extension', index=3, - number=2048, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=2954, - serialized_end=3113, + name='CropVariety', + full_name='efdi.CropVariety', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='crop_variety_id', full_name='efdi.CropVariety.crop_variety_id', index=0, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='crop_variety_designator', full_name='efdi.CropVariety.crop_variety_designator', index=1, + number=2, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='product_id_ref', full_name='efdi.CropVariety.product_id_ref', index=2, + number=3, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='extension', full_name='efdi.CropVariety.extension', index=3, + number=2048, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=2954, + serialized_end=3113, ) - _CULTURALPRACTICE = _descriptor.Descriptor( - name='CulturalPractice', - full_name='efdi.CulturalPractice', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='cultural_practice_id', full_name='efdi.CulturalPractice.cultural_practice_id', index=0, - number=1, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='cultural_practice_designator', full_name='efdi.CulturalPractice.cultural_practice_designator', index=1, - number=2, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='operation_technique_reference', full_name='efdi.CulturalPractice.operation_technique_reference', index=2, - number=3, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=3116, - serialized_end=3287, + name='CulturalPractice', + full_name='efdi.CulturalPractice', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='cultural_practice_id', full_name='efdi.CulturalPractice.cultural_practice_id', index=0, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='cultural_practice_designator', full_name='efdi.CulturalPractice.cultural_practice_designator', + index=1, + number=2, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='operation_technique_reference', full_name='efdi.CulturalPractice.operation_technique_reference', + index=2, + number=3, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=3116, + serialized_end=3287, ) - _CUSTOMER = _descriptor.Descriptor( - name='Customer', - full_name='efdi.Customer', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='customer_id', full_name='efdi.Customer.customer_id', index=0, - number=1, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='customer_last_name', full_name='efdi.Customer.customer_last_name', index=1, - number=2, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='customer_first_name', full_name='efdi.Customer.customer_first_name', index=2, - number=3, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='customer_street', full_name='efdi.Customer.customer_street', index=3, - number=4, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='customer_po_box', full_name='efdi.Customer.customer_po_box', index=4, - number=5, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='customer_postal_code', full_name='efdi.Customer.customer_postal_code', index=5, - number=6, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='customer_city', full_name='efdi.Customer.customer_city', index=6, - number=7, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='customer_state', full_name='efdi.Customer.customer_state', index=7, - number=8, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='customer_country', full_name='efdi.Customer.customer_country', index=8, - number=9, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='customer_phone', full_name='efdi.Customer.customer_phone', index=9, - number=10, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='customer_mobile', full_name='efdi.Customer.customer_mobile', index=10, - number=11, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='customer_fax', full_name='efdi.Customer.customer_fax', index=11, - number=12, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='customer_email', full_name='efdi.Customer.customer_email', index=12, - number=13, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='extension', full_name='efdi.Customer.extension', index=13, - number=2048, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=3290, - serialized_end=3679, + name='Customer', + full_name='efdi.Customer', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='customer_id', full_name='efdi.Customer.customer_id', index=0, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='customer_last_name', full_name='efdi.Customer.customer_last_name', index=1, + number=2, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='customer_first_name', full_name='efdi.Customer.customer_first_name', index=2, + number=3, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='customer_street', full_name='efdi.Customer.customer_street', index=3, + number=4, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='customer_po_box', full_name='efdi.Customer.customer_po_box', index=4, + number=5, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='customer_postal_code', full_name='efdi.Customer.customer_postal_code', index=5, + number=6, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='customer_city', full_name='efdi.Customer.customer_city', index=6, + number=7, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='customer_state', full_name='efdi.Customer.customer_state', index=7, + number=8, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='customer_country', full_name='efdi.Customer.customer_country', index=8, + number=9, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='customer_phone', full_name='efdi.Customer.customer_phone', index=9, + number=10, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='customer_mobile', full_name='efdi.Customer.customer_mobile', index=10, + number=11, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='customer_fax', full_name='efdi.Customer.customer_fax', index=11, + number=12, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='customer_email', full_name='efdi.Customer.customer_email', index=12, + number=13, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='extension', full_name='efdi.Customer.extension', index=13, + number=2048, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=3290, + serialized_end=3679, ) - _DATALOGTRIGGER = _descriptor.Descriptor( - name='DataLogTrigger', - full_name='efdi.DataLogTrigger', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='data_log_ddi', full_name='efdi.DataLogTrigger.data_log_ddi', index=0, - number=1, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='data_log_method', full_name='efdi.DataLogTrigger.data_log_method', index=1, - number=2, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='data_log_distance_interval', full_name='efdi.DataLogTrigger.data_log_distance_interval', index=2, - number=3, type=18, cpp_type=2, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='data_log_time_interval', full_name='efdi.DataLogTrigger.data_log_time_interval', index=3, - number=4, type=18, cpp_type=2, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='data_log_threshold_minimum', full_name='efdi.DataLogTrigger.data_log_threshold_minimum', index=4, - number=5, type=18, cpp_type=2, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='data_log_threshold_maximum', full_name='efdi.DataLogTrigger.data_log_threshold_maximum', index=5, - number=6, type=18, cpp_type=2, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='data_log_threshold_change', full_name='efdi.DataLogTrigger.data_log_threshold_change', index=6, - number=7, type=18, cpp_type=2, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='device_element_id_ref', full_name='efdi.DataLogTrigger.device_element_id_ref', index=7, - number=8, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='value_presentation_id_ref', full_name='efdi.DataLogTrigger.value_presentation_id_ref', index=8, - number=9, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='data_log_pgn', full_name='efdi.DataLogTrigger.data_log_pgn', index=9, - number=10, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='data_log_pgn_start_bit', full_name='efdi.DataLogTrigger.data_log_pgn_start_bit', index=10, - number=11, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='data_log_pgn_stop_bit', full_name='efdi.DataLogTrigger.data_log_pgn_stop_bit', index=11, - number=12, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='extension', full_name='efdi.DataLogTrigger.extension', index=12, - number=2048, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=3682, - serialized_end=4135, + name='DataLogTrigger', + full_name='efdi.DataLogTrigger', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='data_log_ddi', full_name='efdi.DataLogTrigger.data_log_ddi', index=0, + number=1, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='data_log_method', full_name='efdi.DataLogTrigger.data_log_method', index=1, + number=2, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='data_log_distance_interval', full_name='efdi.DataLogTrigger.data_log_distance_interval', index=2, + number=3, type=18, cpp_type=2, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='data_log_time_interval', full_name='efdi.DataLogTrigger.data_log_time_interval', index=3, + number=4, type=18, cpp_type=2, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='data_log_threshold_minimum', full_name='efdi.DataLogTrigger.data_log_threshold_minimum', index=4, + number=5, type=18, cpp_type=2, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='data_log_threshold_maximum', full_name='efdi.DataLogTrigger.data_log_threshold_maximum', index=5, + number=6, type=18, cpp_type=2, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='data_log_threshold_change', full_name='efdi.DataLogTrigger.data_log_threshold_change', index=6, + number=7, type=18, cpp_type=2, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='device_element_id_ref', full_name='efdi.DataLogTrigger.device_element_id_ref', index=7, + number=8, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='value_presentation_id_ref', full_name='efdi.DataLogTrigger.value_presentation_id_ref', index=8, + number=9, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='data_log_pgn', full_name='efdi.DataLogTrigger.data_log_pgn', index=9, + number=10, type=4, cpp_type=4, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='data_log_pgn_start_bit', full_name='efdi.DataLogTrigger.data_log_pgn_start_bit', index=10, + number=11, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='data_log_pgn_stop_bit', full_name='efdi.DataLogTrigger.data_log_pgn_stop_bit', index=11, + number=12, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='extension', full_name='efdi.DataLogTrigger.extension', index=12, + number=2048, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=3682, + serialized_end=4135, ) - _DATALOGVALUE = _descriptor.Descriptor( - name='DataLogValue', - full_name='efdi.DataLogValue', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='process_data_ddi', full_name='efdi.DataLogValue.process_data_ddi', index=0, - number=1, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='process_data_value', full_name='efdi.DataLogValue.process_data_value', index=1, - number=2, type=18, cpp_type=2, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='device_element_id_ref', full_name='efdi.DataLogValue.device_element_id_ref', index=2, - number=3, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='data_log_pgn', full_name='efdi.DataLogValue.data_log_pgn', index=3, - number=4, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='data_log_pgn_start_bit', full_name='efdi.DataLogValue.data_log_pgn_start_bit', index=4, - number=5, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='data_log_pgn_stop_bit', full_name='efdi.DataLogValue.data_log_pgn_stop_bit', index=5, - number=6, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='extension', full_name='efdi.DataLogValue.extension', index=6, - number=2048, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=4138, - serialized_end=4375, + name='DataLogValue', + full_name='efdi.DataLogValue', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='process_data_ddi', full_name='efdi.DataLogValue.process_data_ddi', index=0, + number=1, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='process_data_value', full_name='efdi.DataLogValue.process_data_value', index=1, + number=2, type=18, cpp_type=2, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='device_element_id_ref', full_name='efdi.DataLogValue.device_element_id_ref', index=2, + number=3, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='data_log_pgn', full_name='efdi.DataLogValue.data_log_pgn', index=3, + number=4, type=4, cpp_type=4, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='data_log_pgn_start_bit', full_name='efdi.DataLogValue.data_log_pgn_start_bit', index=4, + number=5, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='data_log_pgn_stop_bit', full_name='efdi.DataLogValue.data_log_pgn_stop_bit', index=5, + number=6, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='extension', full_name='efdi.DataLogValue.extension', index=6, + number=2048, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=4138, + serialized_end=4375, ) - _DEVICE = _descriptor.Descriptor( - name='Device', - full_name='efdi.Device', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='device_id', full_name='efdi.Device.device_id', index=0, - number=1, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='device_designator', full_name='efdi.Device.device_designator', index=1, - number=2, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='device_software_version', full_name='efdi.Device.device_software_version', index=2, - number=3, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='client_name', full_name='efdi.Device.client_name', index=3, - number=4, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='device_serial_number', full_name='efdi.Device.device_serial_number', index=4, - number=5, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='device_structure_label', full_name='efdi.Device.device_structure_label', index=5, - number=6, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='device_localization_label', full_name='efdi.Device.device_localization_label', index=6, - number=7, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='device_element', full_name='efdi.Device.device_element', index=7, - number=8, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='device_process_data', full_name='efdi.Device.device_process_data', index=8, - number=9, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='device_property', full_name='efdi.Device.device_property', index=9, - number=10, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='device_value_presentation', full_name='efdi.Device.device_value_presentation', index=10, - number=11, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='extension', full_name='efdi.Device.extension', index=11, - number=2048, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=4378, - serialized_end=4848, + name='Device', + full_name='efdi.Device', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='device_id', full_name='efdi.Device.device_id', index=0, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='device_designator', full_name='efdi.Device.device_designator', index=1, + number=2, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='device_software_version', full_name='efdi.Device.device_software_version', index=2, + number=3, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='client_name', full_name='efdi.Device.client_name', index=3, + number=4, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=b"", + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='device_serial_number', full_name='efdi.Device.device_serial_number', index=4, + number=5, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='device_structure_label', full_name='efdi.Device.device_structure_label', index=5, + number=6, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=b"", + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='device_localization_label', full_name='efdi.Device.device_localization_label', index=6, + number=7, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=b"", + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='device_element', full_name='efdi.Device.device_element', index=7, + number=8, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='device_process_data', full_name='efdi.Device.device_process_data', index=8, + number=9, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='device_property', full_name='efdi.Device.device_property', index=9, + number=10, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='device_value_presentation', full_name='efdi.Device.device_value_presentation', index=10, + number=11, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='extension', full_name='efdi.Device.extension', index=11, + number=2048, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=4378, + serialized_end=4848, ) - _DEVICEALLOCATION = _descriptor.Descriptor( - name='DeviceAllocation', - full_name='efdi.DeviceAllocation', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='client_name_value', full_name='efdi.DeviceAllocation.client_name_value', index=0, - number=1, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='client_name_mask', full_name='efdi.DeviceAllocation.client_name_mask', index=1, - number=2, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='device_id_ref', full_name='efdi.DeviceAllocation.device_id_ref', index=2, - number=3, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='allocation_stamp', full_name='efdi.DeviceAllocation.allocation_stamp', index=3, - number=4, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='extension', full_name='efdi.DeviceAllocation.extension', index=4, - number=2048, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=4851, - serialized_end=5047, + name='DeviceAllocation', + full_name='efdi.DeviceAllocation', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='client_name_value', full_name='efdi.DeviceAllocation.client_name_value', index=0, + number=1, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=b"", + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='client_name_mask', full_name='efdi.DeviceAllocation.client_name_mask', index=1, + number=2, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=b"", + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='device_id_ref', full_name='efdi.DeviceAllocation.device_id_ref', index=2, + number=3, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='allocation_stamp', full_name='efdi.DeviceAllocation.allocation_stamp', index=3, + number=4, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='extension', full_name='efdi.DeviceAllocation.extension', index=4, + number=2048, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=4851, + serialized_end=5047, ) - _DEVICEELEMENT = _descriptor.Descriptor( - name='DeviceElement', - full_name='efdi.DeviceElement', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='device_element_id', full_name='efdi.DeviceElement.device_element_id', index=0, - number=1, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='device_element_object_id', full_name='efdi.DeviceElement.device_element_object_id', index=1, - number=2, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='device_element_type', full_name='efdi.DeviceElement.device_element_type', index=2, - number=3, type=14, cpp_type=8, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='device_element_designator', full_name='efdi.DeviceElement.device_element_designator', index=3, - number=4, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='device_element_number', full_name='efdi.DeviceElement.device_element_number', index=4, - number=5, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='parent_object_id', full_name='efdi.DeviceElement.parent_object_id', index=5, - number=6, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='device_object_reference', full_name='efdi.DeviceElement.device_object_reference', index=6, - number=7, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='extension', full_name='efdi.DeviceElement.extension', index=7, - number=2048, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - _DEVICEELEMENT_DEVICEELEMENTTYPE, - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=5050, - serialized_end=5540, + name='DeviceElement', + full_name='efdi.DeviceElement', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='device_element_id', full_name='efdi.DeviceElement.device_element_id', index=0, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='device_element_object_id', full_name='efdi.DeviceElement.device_element_object_id', index=1, + number=2, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='device_element_type', full_name='efdi.DeviceElement.device_element_type', index=2, + number=3, type=14, cpp_type=8, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='device_element_designator', full_name='efdi.DeviceElement.device_element_designator', index=3, + number=4, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='device_element_number', full_name='efdi.DeviceElement.device_element_number', index=4, + number=5, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='parent_object_id', full_name='efdi.DeviceElement.parent_object_id', index=5, + number=6, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='device_object_reference', full_name='efdi.DeviceElement.device_object_reference', index=6, + number=7, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='extension', full_name='efdi.DeviceElement.extension', index=7, + number=2048, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + _DEVICEELEMENT_DEVICEELEMENTTYPE, + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=5050, + serialized_end=5540, ) - _DEVICEOBJECTREFERENCE = _descriptor.Descriptor( - name='DeviceObjectReference', - full_name='efdi.DeviceObjectReference', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='device_object_id', full_name='efdi.DeviceObjectReference.device_object_id', index=0, - number=1, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='extension', full_name='efdi.DeviceObjectReference.extension', index=1, - number=2048, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=5542, - serialized_end=5633, + name='DeviceObjectReference', + full_name='efdi.DeviceObjectReference', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='device_object_id', full_name='efdi.DeviceObjectReference.device_object_id', index=0, + number=1, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='extension', full_name='efdi.DeviceObjectReference.extension', index=1, + number=2048, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=5542, + serialized_end=5633, ) - _DEVICEPROCESSDATA = _descriptor.Descriptor( - name='DeviceProcessData', - full_name='efdi.DeviceProcessData', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='device_process_data_object_id', full_name='efdi.DeviceProcessData.device_process_data_object_id', index=0, - number=1, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='device_process_data_ddi', full_name='efdi.DeviceProcessData.device_process_data_ddi', index=1, - number=2, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='device_process_data_property', full_name='efdi.DeviceProcessData.device_process_data_property', index=2, - number=3, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='device_process_data_trigger_methods', full_name='efdi.DeviceProcessData.device_process_data_trigger_methods', index=3, - number=4, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='device_process_data_designator', full_name='efdi.DeviceProcessData.device_process_data_designator', index=4, - number=5, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='device_value_presentation_object_id', full_name='efdi.DeviceProcessData.device_value_presentation_object_id', index=5, - number=6, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='extension', full_name='efdi.DeviceProcessData.extension', index=6, - number=2048, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=5636, - serialized_end=5937, + name='DeviceProcessData', + full_name='efdi.DeviceProcessData', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='device_process_data_object_id', full_name='efdi.DeviceProcessData.device_process_data_object_id', + index=0, + number=1, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='device_process_data_ddi', full_name='efdi.DeviceProcessData.device_process_data_ddi', index=1, + number=2, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='device_process_data_property', full_name='efdi.DeviceProcessData.device_process_data_property', + index=2, + number=3, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='device_process_data_trigger_methods', + full_name='efdi.DeviceProcessData.device_process_data_trigger_methods', index=3, + number=4, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='device_process_data_designator', full_name='efdi.DeviceProcessData.device_process_data_designator', + index=4, + number=5, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='device_value_presentation_object_id', + full_name='efdi.DeviceProcessData.device_value_presentation_object_id', index=5, + number=6, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='extension', full_name='efdi.DeviceProcessData.extension', index=6, + number=2048, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=5636, + serialized_end=5937, ) - _DEVICEPROPERTY = _descriptor.Descriptor( - name='DeviceProperty', - full_name='efdi.DeviceProperty', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='device_property_object_id', full_name='efdi.DeviceProperty.device_property_object_id', index=0, - number=1, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='device_property_ddi', full_name='efdi.DeviceProperty.device_property_ddi', index=1, - number=2, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='device_property_value', full_name='efdi.DeviceProperty.device_property_value', index=2, - number=3, type=18, cpp_type=2, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='device_property_designator', full_name='efdi.DeviceProperty.device_property_designator', index=3, - number=4, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='device_value_presentation_object_id', full_name='efdi.DeviceProperty.device_value_presentation_object_id', index=4, - number=5, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='extension', full_name='efdi.DeviceProperty.extension', index=5, - number=2048, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=5940, - serialized_end=6174, + name='DeviceProperty', + full_name='efdi.DeviceProperty', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='device_property_object_id', full_name='efdi.DeviceProperty.device_property_object_id', index=0, + number=1, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='device_property_ddi', full_name='efdi.DeviceProperty.device_property_ddi', index=1, + number=2, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='device_property_value', full_name='efdi.DeviceProperty.device_property_value', index=2, + number=3, type=18, cpp_type=2, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='device_property_designator', full_name='efdi.DeviceProperty.device_property_designator', index=3, + number=4, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='device_value_presentation_object_id', + full_name='efdi.DeviceProperty.device_value_presentation_object_id', index=4, + number=5, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='extension', full_name='efdi.DeviceProperty.extension', index=5, + number=2048, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=5940, + serialized_end=6174, ) - _DEVICEVALUEPRESENTATION = _descriptor.Descriptor( - name='DeviceValuePresentation', - full_name='efdi.DeviceValuePresentation', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='device_value_presentation_object_id', full_name='efdi.DeviceValuePresentation.device_value_presentation_object_id', index=0, - number=1, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='offset', full_name='efdi.DeviceValuePresentation.offset', index=1, - number=2, type=18, cpp_type=2, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='scale', full_name='efdi.DeviceValuePresentation.scale', index=2, - number=3, type=1, cpp_type=5, label=1, - has_default_value=False, default_value=float(0), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='number_of_decimals', full_name='efdi.DeviceValuePresentation.number_of_decimals', index=3, - number=4, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='unit_designator', full_name='efdi.DeviceValuePresentation.unit_designator', index=4, - number=5, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='extension', full_name='efdi.DeviceValuePresentation.extension', index=5, - number=2048, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=6177, - serialized_end=6373, + name='DeviceValuePresentation', + full_name='efdi.DeviceValuePresentation', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='device_value_presentation_object_id', + full_name='efdi.DeviceValuePresentation.device_value_presentation_object_id', index=0, + number=1, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='offset', full_name='efdi.DeviceValuePresentation.offset', index=1, + number=2, type=18, cpp_type=2, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='scale', full_name='efdi.DeviceValuePresentation.scale', index=2, + number=3, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='number_of_decimals', full_name='efdi.DeviceValuePresentation.number_of_decimals', index=3, + number=4, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='unit_designator', full_name='efdi.DeviceValuePresentation.unit_designator', index=4, + number=5, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='extension', full_name='efdi.DeviceValuePresentation.extension', index=5, + number=2048, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=6177, + serialized_end=6373, ) - _FARM = _descriptor.Descriptor( - name='Farm', - full_name='efdi.Farm', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='farm_id', full_name='efdi.Farm.farm_id', index=0, - number=1, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='farm_designator', full_name='efdi.Farm.farm_designator', index=1, - number=2, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='farm_street', full_name='efdi.Farm.farm_street', index=2, - number=3, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='farm_po_box', full_name='efdi.Farm.farm_po_box', index=3, - number=4, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='farm_postal_code', full_name='efdi.Farm.farm_postal_code', index=4, - number=5, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='farm_city', full_name='efdi.Farm.farm_city', index=5, - number=6, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='farm_state', full_name='efdi.Farm.farm_state', index=6, - number=7, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='farm_country', full_name='efdi.Farm.farm_country', index=7, - number=8, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='customer_id_ref', full_name='efdi.Farm.customer_id_ref', index=8, - number=9, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='extension', full_name='efdi.Farm.extension', index=9, - number=2048, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=6376, - serialized_end=6642, + name='Farm', + full_name='efdi.Farm', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='farm_id', full_name='efdi.Farm.farm_id', index=0, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='farm_designator', full_name='efdi.Farm.farm_designator', index=1, + number=2, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='farm_street', full_name='efdi.Farm.farm_street', index=2, + number=3, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='farm_po_box', full_name='efdi.Farm.farm_po_box', index=3, + number=4, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='farm_postal_code', full_name='efdi.Farm.farm_postal_code', index=4, + number=5, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='farm_city', full_name='efdi.Farm.farm_city', index=5, + number=6, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='farm_state', full_name='efdi.Farm.farm_state', index=6, + number=7, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='farm_country', full_name='efdi.Farm.farm_country', index=7, + number=8, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='customer_id_ref', full_name='efdi.Farm.customer_id_ref', index=8, + number=9, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='extension', full_name='efdi.Farm.extension', index=9, + number=2048, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=6376, + serialized_end=6642, ) - _GRID = _descriptor.Descriptor( - name='Grid', - full_name='efdi.Grid', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='grid_minimum_north_position', full_name='efdi.Grid.grid_minimum_north_position', index=0, - number=1, type=1, cpp_type=5, label=1, - has_default_value=False, default_value=float(0), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='grid_minimum_east_position', full_name='efdi.Grid.grid_minimum_east_position', index=1, - number=2, type=1, cpp_type=5, label=1, - has_default_value=False, default_value=float(0), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='grid_cell_north_size', full_name='efdi.Grid.grid_cell_north_size', index=2, - number=3, type=1, cpp_type=5, label=1, - has_default_value=False, default_value=float(0), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='grid_cell_east_size', full_name='efdi.Grid.grid_cell_east_size', index=3, - number=4, type=1, cpp_type=5, label=1, - has_default_value=False, default_value=float(0), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='grid_maximum_column', full_name='efdi.Grid.grid_maximum_column', index=4, - number=5, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='grid_maximum_row', full_name='efdi.Grid.grid_maximum_row', index=5, - number=6, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='filename', full_name='efdi.Grid.filename', index=6, - number=7, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='filelength', full_name='efdi.Grid.filelength', index=7, - number=8, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='grid_type', full_name='efdi.Grid.grid_type', index=8, - number=9, type=14, cpp_type=8, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='treatment_zone_code', full_name='efdi.Grid.treatment_zone_code', index=9, - number=10, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='extension', full_name='efdi.Grid.extension', index=10, - number=2048, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - _GRID_GRIDTYPE, - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=6645, - serialized_end=7062, + name='Grid', + full_name='efdi.Grid', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='grid_minimum_north_position', full_name='efdi.Grid.grid_minimum_north_position', index=0, + number=1, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='grid_minimum_east_position', full_name='efdi.Grid.grid_minimum_east_position', index=1, + number=2, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='grid_cell_north_size', full_name='efdi.Grid.grid_cell_north_size', index=2, + number=3, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='grid_cell_east_size', full_name='efdi.Grid.grid_cell_east_size', index=3, + number=4, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='grid_maximum_column', full_name='efdi.Grid.grid_maximum_column', index=4, + number=5, type=4, cpp_type=4, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='grid_maximum_row', full_name='efdi.Grid.grid_maximum_row', index=5, + number=6, type=4, cpp_type=4, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='filename', full_name='efdi.Grid.filename', index=6, + number=7, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='filelength', full_name='efdi.Grid.filelength', index=7, + number=8, type=4, cpp_type=4, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='grid_type', full_name='efdi.Grid.grid_type', index=8, + number=9, type=14, cpp_type=8, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='treatment_zone_code', full_name='efdi.Grid.treatment_zone_code', index=9, + number=10, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='extension', full_name='efdi.Grid.extension', index=10, + number=2048, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + _GRID_GRIDTYPE, + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=6645, + serialized_end=7062, ) - _GUIDANCEALLOCATION = _descriptor.Descriptor( - name='GuidanceAllocation', - full_name='efdi.GuidanceAllocation', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='guidance_group_id_ref', full_name='efdi.GuidanceAllocation.guidance_group_id_ref', index=0, - number=1, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='allocation_stamp', full_name='efdi.GuidanceAllocation.allocation_stamp', index=1, - number=2, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='guidance_shift', full_name='efdi.GuidanceAllocation.guidance_shift', index=2, - number=3, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='extension', full_name='efdi.GuidanceAllocation.extension', index=3, - number=2048, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=7065, - serialized_end=7263, + name='GuidanceAllocation', + full_name='efdi.GuidanceAllocation', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='guidance_group_id_ref', full_name='efdi.GuidanceAllocation.guidance_group_id_ref', index=0, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='allocation_stamp', full_name='efdi.GuidanceAllocation.allocation_stamp', index=1, + number=2, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='guidance_shift', full_name='efdi.GuidanceAllocation.guidance_shift', index=2, + number=3, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='extension', full_name='efdi.GuidanceAllocation.extension', index=3, + number=2048, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=7065, + serialized_end=7263, ) - _GUIDANCEGROUP = _descriptor.Descriptor( - name='GuidanceGroup', - full_name='efdi.GuidanceGroup', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='guidance_group_id', full_name='efdi.GuidanceGroup.guidance_group_id', index=0, - number=1, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='guidance_group_designator', full_name='efdi.GuidanceGroup.guidance_group_designator', index=1, - number=2, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='guidance_pattern', full_name='efdi.GuidanceGroup.guidance_pattern', index=2, - number=3, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='boundary_polygon', full_name='efdi.GuidanceGroup.boundary_polygon', index=3, - number=4, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='extension', full_name='efdi.GuidanceGroup.extension', index=4, - number=2048, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=7266, - serialized_end=7486, + name='GuidanceGroup', + full_name='efdi.GuidanceGroup', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='guidance_group_id', full_name='efdi.GuidanceGroup.guidance_group_id', index=0, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='guidance_group_designator', full_name='efdi.GuidanceGroup.guidance_group_designator', index=1, + number=2, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='guidance_pattern', full_name='efdi.GuidanceGroup.guidance_pattern', index=2, + number=3, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='boundary_polygon', full_name='efdi.GuidanceGroup.boundary_polygon', index=3, + number=4, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='extension', full_name='efdi.GuidanceGroup.extension', index=4, + number=2048, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=7266, + serialized_end=7486, ) - _GUIDANCEPATTERN = _descriptor.Descriptor( - name='GuidancePattern', - full_name='efdi.GuidancePattern', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='guidance_pattern_id', full_name='efdi.GuidancePattern.guidance_pattern_id', index=0, - number=1, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='guidance_pattern_designator', full_name='efdi.GuidancePattern.guidance_pattern_designator', index=1, - number=2, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='guidance_pattern_type', full_name='efdi.GuidancePattern.guidance_pattern_type', index=2, - number=3, type=14, cpp_type=8, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='guidance_pattern_options', full_name='efdi.GuidancePattern.guidance_pattern_options', index=3, - number=4, type=14, cpp_type=8, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='guidance_pattern_propagation_direction', full_name='efdi.GuidancePattern.guidance_pattern_propagation_direction', index=4, - number=5, type=14, cpp_type=8, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='guidance_pattern_extension', full_name='efdi.GuidancePattern.guidance_pattern_extension', index=5, - number=6, type=14, cpp_type=8, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='guidance_pattern_heading', full_name='efdi.GuidancePattern.guidance_pattern_heading', index=6, - number=7, type=1, cpp_type=5, label=1, - has_default_value=False, default_value=float(0), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='guidance_pattern_radius', full_name='efdi.GuidancePattern.guidance_pattern_radius', index=7, - number=8, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='guidance_pattern_gnss_method', full_name='efdi.GuidancePattern.guidance_pattern_gnss_method', index=8, - number=9, type=14, cpp_type=8, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='guidance_pattern_horizontal_accuracy', full_name='efdi.GuidancePattern.guidance_pattern_horizontal_accuracy', index=9, - number=10, type=1, cpp_type=5, label=1, - has_default_value=False, default_value=float(0), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='guidance_pattern_vertical_accuracy', full_name='efdi.GuidancePattern.guidance_pattern_vertical_accuracy', index=10, - number=11, type=1, cpp_type=5, label=1, - has_default_value=False, default_value=float(0), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='base_station_id_ref', full_name='efdi.GuidancePattern.base_station_id_ref', index=11, - number=12, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='original_srid', full_name='efdi.GuidancePattern.original_srid', index=12, - number=13, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='number_of_swaths_left', full_name='efdi.GuidancePattern.number_of_swaths_left', index=13, - number=14, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='number_of_swaths_right', full_name='efdi.GuidancePattern.number_of_swaths_right', index=14, - number=15, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='line_string', full_name='efdi.GuidancePattern.line_string', index=15, - number=16, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='boundary_polygon', full_name='efdi.GuidancePattern.boundary_polygon', index=16, - number=17, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='extension', full_name='efdi.GuidancePattern.extension', index=17, - number=2048, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - _GUIDANCEPATTERN_GUIDANCEPATTERNTYPE, - _GUIDANCEPATTERN_GUIDANCEPATTERNOPTIONS, - _GUIDANCEPATTERN_GUIDANCEPATTERNPROPAGATIONDIRECTION, - _GUIDANCEPATTERN_GUIDANCEPATTERNEXTENSION, - _GUIDANCEPATTERN_GUIDANCEPATTERNGNSSMETHOD, - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=7489, - serialized_end=9078, + name='GuidancePattern', + full_name='efdi.GuidancePattern', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='guidance_pattern_id', full_name='efdi.GuidancePattern.guidance_pattern_id', index=0, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='guidance_pattern_designator', full_name='efdi.GuidancePattern.guidance_pattern_designator', index=1, + number=2, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='guidance_pattern_type', full_name='efdi.GuidancePattern.guidance_pattern_type', index=2, + number=3, type=14, cpp_type=8, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='guidance_pattern_options', full_name='efdi.GuidancePattern.guidance_pattern_options', index=3, + number=4, type=14, cpp_type=8, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='guidance_pattern_propagation_direction', + full_name='efdi.GuidancePattern.guidance_pattern_propagation_direction', index=4, + number=5, type=14, cpp_type=8, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='guidance_pattern_extension', full_name='efdi.GuidancePattern.guidance_pattern_extension', index=5, + number=6, type=14, cpp_type=8, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='guidance_pattern_heading', full_name='efdi.GuidancePattern.guidance_pattern_heading', index=6, + number=7, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='guidance_pattern_radius', full_name='efdi.GuidancePattern.guidance_pattern_radius', index=7, + number=8, type=4, cpp_type=4, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='guidance_pattern_gnss_method', full_name='efdi.GuidancePattern.guidance_pattern_gnss_method', index=8, + number=9, type=14, cpp_type=8, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='guidance_pattern_horizontal_accuracy', + full_name='efdi.GuidancePattern.guidance_pattern_horizontal_accuracy', index=9, + number=10, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='guidance_pattern_vertical_accuracy', + full_name='efdi.GuidancePattern.guidance_pattern_vertical_accuracy', index=10, + number=11, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='base_station_id_ref', full_name='efdi.GuidancePattern.base_station_id_ref', index=11, + number=12, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='original_srid', full_name='efdi.GuidancePattern.original_srid', index=12, + number=13, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='number_of_swaths_left', full_name='efdi.GuidancePattern.number_of_swaths_left', index=13, + number=14, type=4, cpp_type=4, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='number_of_swaths_right', full_name='efdi.GuidancePattern.number_of_swaths_right', index=14, + number=15, type=4, cpp_type=4, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='line_string', full_name='efdi.GuidancePattern.line_string', index=15, + number=16, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='boundary_polygon', full_name='efdi.GuidancePattern.boundary_polygon', index=16, + number=17, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='extension', full_name='efdi.GuidancePattern.extension', index=17, + number=2048, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + _GUIDANCEPATTERN_GUIDANCEPATTERNTYPE, + _GUIDANCEPATTERN_GUIDANCEPATTERNOPTIONS, + _GUIDANCEPATTERN_GUIDANCEPATTERNPROPAGATIONDIRECTION, + _GUIDANCEPATTERN_GUIDANCEPATTERNEXTENSION, + _GUIDANCEPATTERN_GUIDANCEPATTERNGNSSMETHOD, + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=7489, + serialized_end=9078, ) - _GUIDANCESHIFT = _descriptor.Descriptor( - name='GuidanceShift', - full_name='efdi.GuidanceShift', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='guidance_group_id_ref', full_name='efdi.GuidanceShift.guidance_group_id_ref', index=0, - number=1, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='guidance_pattern_id_ref', full_name='efdi.GuidanceShift.guidance_pattern_id_ref', index=1, - number=2, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='guidance_east_shift', full_name='efdi.GuidanceShift.guidance_east_shift', index=2, - number=3, type=18, cpp_type=2, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='guidance_north_shift', full_name='efdi.GuidanceShift.guidance_north_shift', index=3, - number=4, type=18, cpp_type=2, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='propagation_offset', full_name='efdi.GuidanceShift.propagation_offset', index=4, - number=5, type=18, cpp_type=2, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='allocation_stamp', full_name='efdi.GuidanceShift.allocation_stamp', index=5, - number=6, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='extension', full_name='efdi.GuidanceShift.extension', index=6, - number=2048, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=9081, - serialized_end=9360, + name='GuidanceShift', + full_name='efdi.GuidanceShift', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='guidance_group_id_ref', full_name='efdi.GuidanceShift.guidance_group_id_ref', index=0, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='guidance_pattern_id_ref', full_name='efdi.GuidanceShift.guidance_pattern_id_ref', index=1, + number=2, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='guidance_east_shift', full_name='efdi.GuidanceShift.guidance_east_shift', index=2, + number=3, type=18, cpp_type=2, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='guidance_north_shift', full_name='efdi.GuidanceShift.guidance_north_shift', index=3, + number=4, type=18, cpp_type=2, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='propagation_offset', full_name='efdi.GuidanceShift.propagation_offset', index=4, + number=5, type=18, cpp_type=2, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='allocation_stamp', full_name='efdi.GuidanceShift.allocation_stamp', index=5, + number=6, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='extension', full_name='efdi.GuidanceShift.extension', index=6, + number=2048, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=9081, + serialized_end=9360, ) - _ISO11783_TASKDATA = _descriptor.Descriptor( - name='ISO11783_TaskData', - full_name='efdi.ISO11783_TaskData', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='version_major', full_name='efdi.ISO11783_TaskData.version_major', index=0, - number=1, type=14, cpp_type=8, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='version_minor', full_name='efdi.ISO11783_TaskData.version_minor', index=1, - number=2, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='management_software_manufacturer', full_name='efdi.ISO11783_TaskData.management_software_manufacturer', index=2, - number=3, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='management_software_version', full_name='efdi.ISO11783_TaskData.management_software_version', index=3, - number=4, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='task_controller_manufacturer', full_name='efdi.ISO11783_TaskData.task_controller_manufacturer', index=4, - number=5, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='task_controller_version', full_name='efdi.ISO11783_TaskData.task_controller_version', index=5, - number=6, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='data_transfer_origin', full_name='efdi.ISO11783_TaskData.data_transfer_origin', index=6, - number=7, type=14, cpp_type=8, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='data_transfer_language', full_name='efdi.ISO11783_TaskData.data_transfer_language', index=7, - number=8, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='attached_file', full_name='efdi.ISO11783_TaskData.attached_file', index=8, - number=9, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='base_station', full_name='efdi.ISO11783_TaskData.base_station', index=9, - number=10, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='coded_comment', full_name='efdi.ISO11783_TaskData.coded_comment', index=10, - number=11, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='coded_comment_group', full_name='efdi.ISO11783_TaskData.coded_comment_group', index=11, - number=12, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='colour_legend', full_name='efdi.ISO11783_TaskData.colour_legend', index=12, - number=13, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='crop_type', full_name='efdi.ISO11783_TaskData.crop_type', index=13, - number=14, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='cultural_practice', full_name='efdi.ISO11783_TaskData.cultural_practice', index=14, - number=15, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='customer', full_name='efdi.ISO11783_TaskData.customer', index=15, - number=16, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='device', full_name='efdi.ISO11783_TaskData.device', index=16, - number=17, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='farm', full_name='efdi.ISO11783_TaskData.farm', index=17, - number=18, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='operation_technique', full_name='efdi.ISO11783_TaskData.operation_technique', index=18, - number=19, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='partfield', full_name='efdi.ISO11783_TaskData.partfield', index=19, - number=20, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='product', full_name='efdi.ISO11783_TaskData.product', index=20, - number=21, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='product_group', full_name='efdi.ISO11783_TaskData.product_group', index=21, - number=22, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='task', full_name='efdi.ISO11783_TaskData.task', index=22, - number=23, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='task_controller_capabilities', full_name='efdi.ISO11783_TaskData.task_controller_capabilities', index=23, - number=24, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='value_presentation', full_name='efdi.ISO11783_TaskData.value_presentation', index=24, - number=25, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='worker', full_name='efdi.ISO11783_TaskData.worker', index=25, - number=26, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='external_file_reference', full_name='efdi.ISO11783_TaskData.external_file_reference', index=26, - number=27, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='extension', full_name='efdi.ISO11783_TaskData.extension', index=27, - number=2048, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - _ISO11783_TASKDATA_VERSIONMAJOR, - _ISO11783_TASKDATA_DATATRANSFERORIGIN, - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=9363, - serialized_end=10835, + name='ISO11783_TaskData', + full_name='efdi.ISO11783_TaskData', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='version_major', full_name='efdi.ISO11783_TaskData.version_major', index=0, + number=1, type=14, cpp_type=8, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='version_minor', full_name='efdi.ISO11783_TaskData.version_minor', index=1, + number=2, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='management_software_manufacturer', + full_name='efdi.ISO11783_TaskData.management_software_manufacturer', index=2, + number=3, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='management_software_version', full_name='efdi.ISO11783_TaskData.management_software_version', index=3, + number=4, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='task_controller_manufacturer', full_name='efdi.ISO11783_TaskData.task_controller_manufacturer', + index=4, + number=5, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='task_controller_version', full_name='efdi.ISO11783_TaskData.task_controller_version', index=5, + number=6, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='data_transfer_origin', full_name='efdi.ISO11783_TaskData.data_transfer_origin', index=6, + number=7, type=14, cpp_type=8, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='data_transfer_language', full_name='efdi.ISO11783_TaskData.data_transfer_language', index=7, + number=8, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='attached_file', full_name='efdi.ISO11783_TaskData.attached_file', index=8, + number=9, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='base_station', full_name='efdi.ISO11783_TaskData.base_station', index=9, + number=10, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='coded_comment', full_name='efdi.ISO11783_TaskData.coded_comment', index=10, + number=11, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='coded_comment_group', full_name='efdi.ISO11783_TaskData.coded_comment_group', index=11, + number=12, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='colour_legend', full_name='efdi.ISO11783_TaskData.colour_legend', index=12, + number=13, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='crop_type', full_name='efdi.ISO11783_TaskData.crop_type', index=13, + number=14, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='cultural_practice', full_name='efdi.ISO11783_TaskData.cultural_practice', index=14, + number=15, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='customer', full_name='efdi.ISO11783_TaskData.customer', index=15, + number=16, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='device', full_name='efdi.ISO11783_TaskData.device', index=16, + number=17, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='farm', full_name='efdi.ISO11783_TaskData.farm', index=17, + number=18, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='operation_technique', full_name='efdi.ISO11783_TaskData.operation_technique', index=18, + number=19, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='partfield', full_name='efdi.ISO11783_TaskData.partfield', index=19, + number=20, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='product', full_name='efdi.ISO11783_TaskData.product', index=20, + number=21, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='product_group', full_name='efdi.ISO11783_TaskData.product_group', index=21, + number=22, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='task', full_name='efdi.ISO11783_TaskData.task', index=22, + number=23, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='task_controller_capabilities', full_name='efdi.ISO11783_TaskData.task_controller_capabilities', + index=23, + number=24, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='value_presentation', full_name='efdi.ISO11783_TaskData.value_presentation', index=24, + number=25, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='worker', full_name='efdi.ISO11783_TaskData.worker', index=25, + number=26, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='external_file_reference', full_name='efdi.ISO11783_TaskData.external_file_reference', index=26, + number=27, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='extension', full_name='efdi.ISO11783_TaskData.extension', index=27, + number=2048, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + _ISO11783_TASKDATA_VERSIONMAJOR, + _ISO11783_TASKDATA_DATATRANSFERORIGIN, + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=9363, + serialized_end=10835, ) - _LINESTRING = _descriptor.Descriptor( - name='LineString', - full_name='efdi.LineString', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='line_string_type', full_name='efdi.LineString.line_string_type', index=0, - number=1, type=14, cpp_type=8, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='line_string_designator', full_name='efdi.LineString.line_string_designator', index=1, - number=2, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='line_string_width', full_name='efdi.LineString.line_string_width', index=2, - number=3, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='line_string_length', full_name='efdi.LineString.line_string_length', index=3, - number=4, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='line_string_colour', full_name='efdi.LineString.line_string_colour', index=4, - number=5, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='line_string_id', full_name='efdi.LineString.line_string_id', index=5, - number=6, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='point', full_name='efdi.LineString.point', index=6, - number=7, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='extension', full_name='efdi.LineString.extension', index=7, - number=2048, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - _LINESTRING_LINESTRINGTYPE, - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=10838, - serialized_end=11330, + name='LineString', + full_name='efdi.LineString', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='line_string_type', full_name='efdi.LineString.line_string_type', index=0, + number=1, type=14, cpp_type=8, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='line_string_designator', full_name='efdi.LineString.line_string_designator', index=1, + number=2, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='line_string_width', full_name='efdi.LineString.line_string_width', index=2, + number=3, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='line_string_length', full_name='efdi.LineString.line_string_length', index=3, + number=4, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='line_string_colour', full_name='efdi.LineString.line_string_colour', index=4, + number=5, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='line_string_id', full_name='efdi.LineString.line_string_id', index=5, + number=6, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='point', full_name='efdi.LineString.point', index=6, + number=7, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='extension', full_name='efdi.LineString.extension', index=7, + number=2048, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + _LINESTRING_LINESTRINGTYPE, + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=10838, + serialized_end=11330, ) - _OPERATIONTECHNIQUE = _descriptor.Descriptor( - name='OperationTechnique', - full_name='efdi.OperationTechnique', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='operation_technique_id', full_name='efdi.OperationTechnique.operation_technique_id', index=0, - number=1, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='operation_technique_designator', full_name='efdi.OperationTechnique.operation_technique_designator', index=1, - number=2, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='extension', full_name='efdi.OperationTechnique.extension', index=2, - number=2048, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=11333, - serialized_end=11478, + name='OperationTechnique', + full_name='efdi.OperationTechnique', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='operation_technique_id', full_name='efdi.OperationTechnique.operation_technique_id', index=0, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='operation_technique_designator', full_name='efdi.OperationTechnique.operation_technique_designator', + index=1, + number=2, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='extension', full_name='efdi.OperationTechnique.extension', index=2, + number=2048, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=11333, + serialized_end=11478, ) - _OPERATIONTECHNIQUEREFERENCE = _descriptor.Descriptor( - name='OperationTechniqueReference', - full_name='efdi.OperationTechniqueReference', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='operation_technique_id_ref', full_name='efdi.OperationTechniqueReference.operation_technique_id_ref', index=0, - number=1, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='extension', full_name='efdi.OperationTechniqueReference.extension', index=1, - number=2048, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=11480, - serialized_end=11598, + name='OperationTechniqueReference', + full_name='efdi.OperationTechniqueReference', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='operation_technique_id_ref', full_name='efdi.OperationTechniqueReference.operation_technique_id_ref', + index=0, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='extension', full_name='efdi.OperationTechniqueReference.extension', index=1, + number=2048, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=11480, + serialized_end=11598, ) - _OPERTECHPRACTICE = _descriptor.Descriptor( - name='OperTechPractice', - full_name='efdi.OperTechPractice', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='cultural_practice_id_ref', full_name='efdi.OperTechPractice.cultural_practice_id_ref', index=0, - number=1, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='operation_technique_id_ref', full_name='efdi.OperTechPractice.operation_technique_id_ref', index=1, - number=2, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='extension', full_name='efdi.OperTechPractice.extension', index=2, - number=2048, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=11601, - serialized_end=11753, + name='OperTechPractice', + full_name='efdi.OperTechPractice', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='cultural_practice_id_ref', full_name='efdi.OperTechPractice.cultural_practice_id_ref', index=0, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='operation_technique_id_ref', full_name='efdi.OperTechPractice.operation_technique_id_ref', index=1, + number=2, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='extension', full_name='efdi.OperTechPractice.extension', index=2, + number=2048, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=11601, + serialized_end=11753, ) - _PARTFIELD = _descriptor.Descriptor( - name='Partfield', - full_name='efdi.Partfield', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='partfield_id', full_name='efdi.Partfield.partfield_id', index=0, - number=1, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='partfield_code', full_name='efdi.Partfield.partfield_code', index=1, - number=2, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='partfield_designator', full_name='efdi.Partfield.partfield_designator', index=2, - number=3, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='partfield_area', full_name='efdi.Partfield.partfield_area', index=3, - number=4, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='customer_id_ref', full_name='efdi.Partfield.customer_id_ref', index=4, - number=5, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='farm_id_ref', full_name='efdi.Partfield.farm_id_ref', index=5, - number=6, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='crop_type_id_ref', full_name='efdi.Partfield.crop_type_id_ref', index=6, - number=7, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='crop_variety_id_ref', full_name='efdi.Partfield.crop_variety_id_ref', index=7, - number=8, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='field_id_ref', full_name='efdi.Partfield.field_id_ref', index=8, - number=9, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='polygon', full_name='efdi.Partfield.polygon', index=9, - number=10, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='line_string', full_name='efdi.Partfield.line_string', index=10, - number=11, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='point', full_name='efdi.Partfield.point', index=11, - number=12, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='guidance_group', full_name='efdi.Partfield.guidance_group', index=12, - number=13, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='extension', full_name='efdi.Partfield.extension', index=13, - number=2048, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=11756, - serialized_end=12242, + name='Partfield', + full_name='efdi.Partfield', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='partfield_id', full_name='efdi.Partfield.partfield_id', index=0, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='partfield_code', full_name='efdi.Partfield.partfield_code', index=1, + number=2, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='partfield_designator', full_name='efdi.Partfield.partfield_designator', index=2, + number=3, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='partfield_area', full_name='efdi.Partfield.partfield_area', index=3, + number=4, type=4, cpp_type=4, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='customer_id_ref', full_name='efdi.Partfield.customer_id_ref', index=4, + number=5, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='farm_id_ref', full_name='efdi.Partfield.farm_id_ref', index=5, + number=6, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='crop_type_id_ref', full_name='efdi.Partfield.crop_type_id_ref', index=6, + number=7, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='crop_variety_id_ref', full_name='efdi.Partfield.crop_variety_id_ref', index=7, + number=8, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='field_id_ref', full_name='efdi.Partfield.field_id_ref', index=8, + number=9, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='polygon', full_name='efdi.Partfield.polygon', index=9, + number=10, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='line_string', full_name='efdi.Partfield.line_string', index=10, + number=11, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='point', full_name='efdi.Partfield.point', index=11, + number=12, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='guidance_group', full_name='efdi.Partfield.guidance_group', index=12, + number=13, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='extension', full_name='efdi.Partfield.extension', index=13, + number=2048, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=11756, + serialized_end=12242, ) - _POINT = _descriptor.Descriptor( - name='Point', - full_name='efdi.Point', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='point_type', full_name='efdi.Point.point_type', index=0, - number=1, type=14, cpp_type=8, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='point_designator', full_name='efdi.Point.point_designator', index=1, - number=2, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='point_north', full_name='efdi.Point.point_north', index=2, - number=3, type=1, cpp_type=5, label=1, - has_default_value=False, default_value=float(0), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='point_east', full_name='efdi.Point.point_east', index=3, - number=4, type=1, cpp_type=5, label=1, - has_default_value=False, default_value=float(0), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='point_up', full_name='efdi.Point.point_up', index=4, - number=5, type=18, cpp_type=2, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='point_colour', full_name='efdi.Point.point_colour', index=5, - number=6, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='point_id', full_name='efdi.Point.point_id', index=6, - number=7, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='point_horizontal_accuracy', full_name='efdi.Point.point_horizontal_accuracy', index=7, - number=8, type=1, cpp_type=5, label=1, - has_default_value=False, default_value=float(0), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='point_vertical_accuracy', full_name='efdi.Point.point_vertical_accuracy', index=8, - number=9, type=1, cpp_type=5, label=1, - has_default_value=False, default_value=float(0), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='filename', full_name='efdi.Point.filename', index=9, - number=10, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='filelength', full_name='efdi.Point.filelength', index=10, - number=11, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='extension', full_name='efdi.Point.extension', index=11, - number=2048, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - _POINT_POINTTYPE, - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=12245, - serialized_end=12803, + name='Point', + full_name='efdi.Point', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='point_type', full_name='efdi.Point.point_type', index=0, + number=1, type=14, cpp_type=8, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='point_designator', full_name='efdi.Point.point_designator', index=1, + number=2, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='point_north', full_name='efdi.Point.point_north', index=2, + number=3, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='point_east', full_name='efdi.Point.point_east', index=3, + number=4, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='point_up', full_name='efdi.Point.point_up', index=4, + number=5, type=18, cpp_type=2, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='point_colour', full_name='efdi.Point.point_colour', index=5, + number=6, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='point_id', full_name='efdi.Point.point_id', index=6, + number=7, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='point_horizontal_accuracy', full_name='efdi.Point.point_horizontal_accuracy', index=7, + number=8, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='point_vertical_accuracy', full_name='efdi.Point.point_vertical_accuracy', index=8, + number=9, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='filename', full_name='efdi.Point.filename', index=9, + number=10, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='filelength', full_name='efdi.Point.filelength', index=10, + number=11, type=4, cpp_type=4, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='extension', full_name='efdi.Point.extension', index=11, + number=2048, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + _POINT_POINTTYPE, + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=12245, + serialized_end=12803, ) - _POLYGON = _descriptor.Descriptor( - name='Polygon', - full_name='efdi.Polygon', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='polygon_type', full_name='efdi.Polygon.polygon_type', index=0, - number=1, type=14, cpp_type=8, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='polygon_designator', full_name='efdi.Polygon.polygon_designator', index=1, - number=2, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='polygon_area', full_name='efdi.Polygon.polygon_area', index=2, - number=3, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='polygon_colour', full_name='efdi.Polygon.polygon_colour', index=3, - number=4, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='polygon_id', full_name='efdi.Polygon.polygon_id', index=4, - number=5, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='line_string', full_name='efdi.Polygon.line_string', index=5, - number=6, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='extension', full_name='efdi.Polygon.extension', index=6, - number=2048, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - _POLYGON_POLYGONTYPE, - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=12806, - serialized_end=13287, + name='Polygon', + full_name='efdi.Polygon', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='polygon_type', full_name='efdi.Polygon.polygon_type', index=0, + number=1, type=14, cpp_type=8, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='polygon_designator', full_name='efdi.Polygon.polygon_designator', index=1, + number=2, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='polygon_area', full_name='efdi.Polygon.polygon_area', index=2, + number=3, type=4, cpp_type=4, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='polygon_colour', full_name='efdi.Polygon.polygon_colour', index=3, + number=4, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='polygon_id', full_name='efdi.Polygon.polygon_id', index=4, + number=5, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='line_string', full_name='efdi.Polygon.line_string', index=5, + number=6, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='extension', full_name='efdi.Polygon.extension', index=6, + number=2048, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + _POLYGON_POLYGONTYPE, + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=12806, + serialized_end=13287, ) - _POSITION = _descriptor.Descriptor( - name='Position', - full_name='efdi.Position', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='position_north', full_name='efdi.Position.position_north', index=0, - number=1, type=1, cpp_type=5, label=1, - has_default_value=False, default_value=float(0), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='position_east', full_name='efdi.Position.position_east', index=1, - number=2, type=1, cpp_type=5, label=1, - has_default_value=False, default_value=float(0), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='position_up', full_name='efdi.Position.position_up', index=2, - number=3, type=18, cpp_type=2, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='position_status', full_name='efdi.Position.position_status', index=3, - number=4, type=14, cpp_type=8, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='pdop', full_name='efdi.Position.pdop', index=4, - number=5, type=1, cpp_type=5, label=1, - has_default_value=False, default_value=float(0), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='hdop', full_name='efdi.Position.hdop', index=5, - number=6, type=1, cpp_type=5, label=1, - has_default_value=False, default_value=float(0), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='number_of_satellites', full_name='efdi.Position.number_of_satellites', index=6, - number=7, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='gps_utc_timestamp', full_name='efdi.Position.gps_utc_timestamp', index=7, - number=8, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='extension', full_name='efdi.Position.extension', index=8, - number=2048, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - _POSITION_POSITIONSTATUS, - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=13290, - serialized_end=13788, + name='Position', + full_name='efdi.Position', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='position_north', full_name='efdi.Position.position_north', index=0, + number=1, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='position_east', full_name='efdi.Position.position_east', index=1, + number=2, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='position_up', full_name='efdi.Position.position_up', index=2, + number=3, type=18, cpp_type=2, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='position_status', full_name='efdi.Position.position_status', index=3, + number=4, type=14, cpp_type=8, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='pdop', full_name='efdi.Position.pdop', index=4, + number=5, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='hdop', full_name='efdi.Position.hdop', index=5, + number=6, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='number_of_satellites', full_name='efdi.Position.number_of_satellites', index=6, + number=7, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='gps_utc_timestamp', full_name='efdi.Position.gps_utc_timestamp', index=7, + number=8, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='extension', full_name='efdi.Position.extension', index=8, + number=2048, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + _POSITION_POSITIONSTATUS, + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=13290, + serialized_end=13788, ) - _PROCESSDATAVARIABLE = _descriptor.Descriptor( - name='ProcessDataVariable', - full_name='efdi.ProcessDataVariable', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='process_data_ddi', full_name='efdi.ProcessDataVariable.process_data_ddi', index=0, - number=1, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='process_data_value', full_name='efdi.ProcessDataVariable.process_data_value', index=1, - number=2, type=18, cpp_type=2, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='product_id_ref', full_name='efdi.ProcessDataVariable.product_id_ref', index=2, - number=3, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='device_element_id_ref', full_name='efdi.ProcessDataVariable.device_element_id_ref', index=3, - number=4, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='value_presentation_id_ref', full_name='efdi.ProcessDataVariable.value_presentation_id_ref', index=4, - number=5, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='actual_cultural_practice_value', full_name='efdi.ProcessDataVariable.actual_cultural_practice_value', index=5, - number=6, type=18, cpp_type=2, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='element_type_instance_value', full_name='efdi.ProcessDataVariable.element_type_instance_value', index=6, - number=7, type=18, cpp_type=2, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='process_data_variable', full_name='efdi.ProcessDataVariable.process_data_variable', index=7, - number=8, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='extension', full_name='efdi.ProcessDataVariable.extension', index=8, - number=2048, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=13791, - serialized_end=14166, + name='ProcessDataVariable', + full_name='efdi.ProcessDataVariable', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='process_data_ddi', full_name='efdi.ProcessDataVariable.process_data_ddi', index=0, + number=1, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='process_data_value', full_name='efdi.ProcessDataVariable.process_data_value', index=1, + number=2, type=18, cpp_type=2, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='product_id_ref', full_name='efdi.ProcessDataVariable.product_id_ref', index=2, + number=3, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='device_element_id_ref', full_name='efdi.ProcessDataVariable.device_element_id_ref', index=3, + number=4, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='value_presentation_id_ref', full_name='efdi.ProcessDataVariable.value_presentation_id_ref', index=4, + number=5, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='actual_cultural_practice_value', full_name='efdi.ProcessDataVariable.actual_cultural_practice_value', + index=5, + number=6, type=18, cpp_type=2, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='element_type_instance_value', full_name='efdi.ProcessDataVariable.element_type_instance_value', + index=6, + number=7, type=18, cpp_type=2, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='process_data_variable', full_name='efdi.ProcessDataVariable.process_data_variable', index=7, + number=8, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='extension', full_name='efdi.ProcessDataVariable.extension', index=8, + number=2048, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=13791, + serialized_end=14166, ) - _PRODUCT = _descriptor.Descriptor( - name='Product', - full_name='efdi.Product', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='product_id', full_name='efdi.Product.product_id', index=0, - number=1, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='product_designator', full_name='efdi.Product.product_designator', index=1, - number=2, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='product_group_id_ref', full_name='efdi.Product.product_group_id_ref', index=2, - number=3, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='value_presentation_id_ref', full_name='efdi.Product.value_presentation_id_ref', index=3, - number=4, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='quantity_ddi', full_name='efdi.Product.quantity_ddi', index=4, - number=5, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='product_type', full_name='efdi.Product.product_type', index=5, - number=6, type=14, cpp_type=8, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='mixture_recipe_quantity', full_name='efdi.Product.mixture_recipe_quantity', index=6, - number=7, type=18, cpp_type=2, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='density_mass_per_volume', full_name='efdi.Product.density_mass_per_volume', index=7, - number=8, type=18, cpp_type=2, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='density_mass_per_count', full_name='efdi.Product.density_mass_per_count', index=8, - number=9, type=18, cpp_type=2, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='density_volume_per_count', full_name='efdi.Product.density_volume_per_count', index=9, - number=10, type=18, cpp_type=2, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='product_relation', full_name='efdi.Product.product_relation', index=10, - number=11, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='extension', full_name='efdi.Product.extension', index=11, - number=2048, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - _PRODUCT_PRODUCTTYPE, - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=14169, - serialized_end=14701, + name='Product', + full_name='efdi.Product', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='product_id', full_name='efdi.Product.product_id', index=0, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='product_designator', full_name='efdi.Product.product_designator', index=1, + number=2, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='product_group_id_ref', full_name='efdi.Product.product_group_id_ref', index=2, + number=3, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='value_presentation_id_ref', full_name='efdi.Product.value_presentation_id_ref', index=3, + number=4, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='quantity_ddi', full_name='efdi.Product.quantity_ddi', index=4, + number=5, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='product_type', full_name='efdi.Product.product_type', index=5, + number=6, type=14, cpp_type=8, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='mixture_recipe_quantity', full_name='efdi.Product.mixture_recipe_quantity', index=6, + number=7, type=18, cpp_type=2, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='density_mass_per_volume', full_name='efdi.Product.density_mass_per_volume', index=7, + number=8, type=18, cpp_type=2, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='density_mass_per_count', full_name='efdi.Product.density_mass_per_count', index=8, + number=9, type=18, cpp_type=2, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='density_volume_per_count', full_name='efdi.Product.density_volume_per_count', index=9, + number=10, type=18, cpp_type=2, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='product_relation', full_name='efdi.Product.product_relation', index=10, + number=11, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='extension', full_name='efdi.Product.extension', index=11, + number=2048, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + _PRODUCT_PRODUCTTYPE, + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=14169, + serialized_end=14701, ) - _PRODUCTALLOCATION = _descriptor.Descriptor( - name='ProductAllocation', - full_name='efdi.ProductAllocation', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='product_id_ref', full_name='efdi.ProductAllocation.product_id_ref', index=0, - number=1, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='quantity_ddi', full_name='efdi.ProductAllocation.quantity_ddi', index=1, - number=2, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='quantity_value', full_name='efdi.ProductAllocation.quantity_value', index=2, - number=3, type=18, cpp_type=2, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='transfer_mode', full_name='efdi.ProductAllocation.transfer_mode', index=3, - number=4, type=14, cpp_type=8, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='device_element_id_ref', full_name='efdi.ProductAllocation.device_element_id_ref', index=4, - number=5, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='value_presentation_id_ref', full_name='efdi.ProductAllocation.value_presentation_id_ref', index=5, - number=6, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='product_sub_type_id_ref', full_name='efdi.ProductAllocation.product_sub_type_id_ref', index=6, - number=7, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='allocation_stamp', full_name='efdi.ProductAllocation.allocation_stamp', index=7, - number=8, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='extension', full_name='efdi.ProductAllocation.extension', index=8, - number=2048, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - _PRODUCTALLOCATION_TRANSFERMODE, - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=14704, - serialized_end=15166, + name='ProductAllocation', + full_name='efdi.ProductAllocation', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='product_id_ref', full_name='efdi.ProductAllocation.product_id_ref', index=0, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='quantity_ddi', full_name='efdi.ProductAllocation.quantity_ddi', index=1, + number=2, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='quantity_value', full_name='efdi.ProductAllocation.quantity_value', index=2, + number=3, type=18, cpp_type=2, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='transfer_mode', full_name='efdi.ProductAllocation.transfer_mode', index=3, + number=4, type=14, cpp_type=8, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='device_element_id_ref', full_name='efdi.ProductAllocation.device_element_id_ref', index=4, + number=5, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='value_presentation_id_ref', full_name='efdi.ProductAllocation.value_presentation_id_ref', index=5, + number=6, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='product_sub_type_id_ref', full_name='efdi.ProductAllocation.product_sub_type_id_ref', index=6, + number=7, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='allocation_stamp', full_name='efdi.ProductAllocation.allocation_stamp', index=7, + number=8, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='extension', full_name='efdi.ProductAllocation.extension', index=8, + number=2048, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + _PRODUCTALLOCATION_TRANSFERMODE, + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=14704, + serialized_end=15166, ) - _PRODUCTGROUP = _descriptor.Descriptor( - name='ProductGroup', - full_name='efdi.ProductGroup', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='product_group_id', full_name='efdi.ProductGroup.product_group_id', index=0, - number=1, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='product_group_designator', full_name='efdi.ProductGroup.product_group_designator', index=1, - number=2, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='product_group_type', full_name='efdi.ProductGroup.product_group_type', index=2, - number=3, type=14, cpp_type=8, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='extension', full_name='efdi.ProductGroup.extension', index=3, - number=2048, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - _PRODUCTGROUP_PRODUCTGROUPTYPE, - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=15169, - serialized_end=15433, + name='ProductGroup', + full_name='efdi.ProductGroup', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='product_group_id', full_name='efdi.ProductGroup.product_group_id', index=0, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='product_group_designator', full_name='efdi.ProductGroup.product_group_designator', index=1, + number=2, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='product_group_type', full_name='efdi.ProductGroup.product_group_type', index=2, + number=3, type=14, cpp_type=8, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='extension', full_name='efdi.ProductGroup.extension', index=3, + number=2048, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + _PRODUCTGROUP_PRODUCTGROUPTYPE, + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=15169, + serialized_end=15433, ) - _PRODUCTRELATION = _descriptor.Descriptor( - name='ProductRelation', - full_name='efdi.ProductRelation', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='product_id_ref', full_name='efdi.ProductRelation.product_id_ref', index=0, - number=1, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='quantity_value', full_name='efdi.ProductRelation.quantity_value', index=1, - number=2, type=18, cpp_type=2, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='extension', full_name='efdi.ProductRelation.extension', index=2, - number=2048, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=15435, - serialized_end=15553, + name='ProductRelation', + full_name='efdi.ProductRelation', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='product_id_ref', full_name='efdi.ProductRelation.product_id_ref', index=0, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='quantity_value', full_name='efdi.ProductRelation.quantity_value', index=1, + number=2, type=18, cpp_type=2, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='extension', full_name='efdi.ProductRelation.extension', index=2, + number=2048, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=15435, + serialized_end=15553, ) - _TASK = _descriptor.Descriptor( - name='Task', - full_name='efdi.Task', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='task_id', full_name='efdi.Task.task_id', index=0, - number=1, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='task_designator', full_name='efdi.Task.task_designator', index=1, - number=2, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='customer_id_ref', full_name='efdi.Task.customer_id_ref', index=2, - number=3, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='farm_id_ref', full_name='efdi.Task.farm_id_ref', index=3, - number=4, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='partfield_id_ref', full_name='efdi.Task.partfield_id_ref', index=4, - number=5, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='responsible_worker_id_ref', full_name='efdi.Task.responsible_worker_id_ref', index=5, - number=6, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='task_status', full_name='efdi.Task.task_status', index=6, - number=7, type=14, cpp_type=8, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='default_treatment_zone_code', full_name='efdi.Task.default_treatment_zone_code', index=7, - number=8, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='position_lost_treatment_zone_code', full_name='efdi.Task.position_lost_treatment_zone_code', index=8, - number=9, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='out_of_field_treatment_zone_code', full_name='efdi.Task.out_of_field_treatment_zone_code', index=9, - number=10, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='treatment_zone', full_name='efdi.Task.treatment_zone', index=10, - number=11, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='time', full_name='efdi.Task.time', index=11, - number=12, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='oper_tech_practice', full_name='efdi.Task.oper_tech_practice', index=12, - number=13, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='worker_allocation', full_name='efdi.Task.worker_allocation', index=13, - number=14, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='device_allocation', full_name='efdi.Task.device_allocation', index=14, - number=15, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='connection', full_name='efdi.Task.connection', index=15, - number=16, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='product_allocation', full_name='efdi.Task.product_allocation', index=16, - number=17, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='data_log_trigger', full_name='efdi.Task.data_log_trigger', index=17, - number=18, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='comment_allocation', full_name='efdi.Task.comment_allocation', index=18, - number=19, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='time_log', full_name='efdi.Task.time_log', index=19, - number=20, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='grid', full_name='efdi.Task.grid', index=20, - number=21, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='control_assignment', full_name='efdi.Task.control_assignment', index=21, - number=22, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='guidance_allocation', full_name='efdi.Task.guidance_allocation', index=22, - number=23, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='extension', full_name='efdi.Task.extension', index=23, - number=2048, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - _TASK_TASKSTATUS, - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=15556, - serialized_end=16679, + name='Task', + full_name='efdi.Task', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='task_id', full_name='efdi.Task.task_id', index=0, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='task_designator', full_name='efdi.Task.task_designator', index=1, + number=2, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='customer_id_ref', full_name='efdi.Task.customer_id_ref', index=2, + number=3, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='farm_id_ref', full_name='efdi.Task.farm_id_ref', index=3, + number=4, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='partfield_id_ref', full_name='efdi.Task.partfield_id_ref', index=4, + number=5, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='responsible_worker_id_ref', full_name='efdi.Task.responsible_worker_id_ref', index=5, + number=6, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='task_status', full_name='efdi.Task.task_status', index=6, + number=7, type=14, cpp_type=8, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='default_treatment_zone_code', full_name='efdi.Task.default_treatment_zone_code', index=7, + number=8, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='position_lost_treatment_zone_code', full_name='efdi.Task.position_lost_treatment_zone_code', index=8, + number=9, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='out_of_field_treatment_zone_code', full_name='efdi.Task.out_of_field_treatment_zone_code', index=9, + number=10, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='treatment_zone', full_name='efdi.Task.treatment_zone', index=10, + number=11, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='time', full_name='efdi.Task.time', index=11, + number=12, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='oper_tech_practice', full_name='efdi.Task.oper_tech_practice', index=12, + number=13, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='worker_allocation', full_name='efdi.Task.worker_allocation', index=13, + number=14, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='device_allocation', full_name='efdi.Task.device_allocation', index=14, + number=15, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='connection', full_name='efdi.Task.connection', index=15, + number=16, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='product_allocation', full_name='efdi.Task.product_allocation', index=16, + number=17, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='data_log_trigger', full_name='efdi.Task.data_log_trigger', index=17, + number=18, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='comment_allocation', full_name='efdi.Task.comment_allocation', index=18, + number=19, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='time_log', full_name='efdi.Task.time_log', index=19, + number=20, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='grid', full_name='efdi.Task.grid', index=20, + number=21, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='control_assignment', full_name='efdi.Task.control_assignment', index=21, + number=22, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='guidance_allocation', full_name='efdi.Task.guidance_allocation', index=22, + number=23, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='extension', full_name='efdi.Task.extension', index=23, + number=2048, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + _TASK_TASKSTATUS, + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=15556, + serialized_end=16679, ) - _TASKCONTROLLERCAPABILITIES = _descriptor.Descriptor( - name='TaskControllerCapabilities', - full_name='efdi.TaskControllerCapabilities', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='task_controller_control_function_name', full_name='efdi.TaskControllerCapabilities.task_controller_control_function_name', index=0, - number=1, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='task_controller_designator', full_name='efdi.TaskControllerCapabilities.task_controller_designator', index=1, - number=2, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='version_number', full_name='efdi.TaskControllerCapabilities.version_number', index=2, - number=3, type=14, cpp_type=8, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='provided_capabilities', full_name='efdi.TaskControllerCapabilities.provided_capabilities', index=3, - number=4, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='number_of_booms_section_control', full_name='efdi.TaskControllerCapabilities.number_of_booms_section_control', index=4, - number=5, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='number_of_sections_section_control', full_name='efdi.TaskControllerCapabilities.number_of_sections_section_control', index=5, - number=6, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='number_of_control_channels', full_name='efdi.TaskControllerCapabilities.number_of_control_channels', index=6, - number=7, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='extension', full_name='efdi.TaskControllerCapabilities.extension', index=7, - number=2048, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - _TASKCONTROLLERCAPABILITIES_VERSIONNUMBER, - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=16682, - serialized_end=17144, + name='TaskControllerCapabilities', + full_name='efdi.TaskControllerCapabilities', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='task_controller_control_function_name', + full_name='efdi.TaskControllerCapabilities.task_controller_control_function_name', index=0, + number=1, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=b"", + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='task_controller_designator', full_name='efdi.TaskControllerCapabilities.task_controller_designator', + index=1, + number=2, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='version_number', full_name='efdi.TaskControllerCapabilities.version_number', index=2, + number=3, type=14, cpp_type=8, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='provided_capabilities', full_name='efdi.TaskControllerCapabilities.provided_capabilities', index=3, + number=4, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='number_of_booms_section_control', + full_name='efdi.TaskControllerCapabilities.number_of_booms_section_control', index=4, + number=5, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='number_of_sections_section_control', + full_name='efdi.TaskControllerCapabilities.number_of_sections_section_control', index=5, + number=6, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='number_of_control_channels', full_name='efdi.TaskControllerCapabilities.number_of_control_channels', + index=6, + number=7, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='extension', full_name='efdi.TaskControllerCapabilities.extension', index=7, + number=2048, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + _TASKCONTROLLERCAPABILITIES_VERSIONNUMBER, + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=16682, + serialized_end=17144, ) - _TIME = _descriptor.Descriptor( - name='Time', - full_name='efdi.Time', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='start', full_name='efdi.Time.start', index=0, - number=1, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='stop', full_name='efdi.Time.stop', index=1, - number=2, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='duration', full_name='efdi.Time.duration', index=2, - number=3, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='type', full_name='efdi.Time.type', index=3, - number=4, type=14, cpp_type=8, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='position_start', full_name='efdi.Time.position_start', index=4, - number=5, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='position_stop', full_name='efdi.Time.position_stop', index=5, - number=6, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='data_log_value', full_name='efdi.Time.data_log_value', index=6, - number=7, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='extension', full_name='efdi.Time.extension', index=7, - number=2048, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - _TIME_TIMETYPE, - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=17147, - serialized_end=17603, + name='Time', + full_name='efdi.Time', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='start', full_name='efdi.Time.start', index=0, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='stop', full_name='efdi.Time.stop', index=1, + number=2, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='duration', full_name='efdi.Time.duration', index=2, + number=3, type=4, cpp_type=4, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='type', full_name='efdi.Time.type', index=3, + number=4, type=14, cpp_type=8, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='position_start', full_name='efdi.Time.position_start', index=4, + number=5, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='position_stop', full_name='efdi.Time.position_stop', index=5, + number=6, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='data_log_value', full_name='efdi.Time.data_log_value', index=6, + number=7, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='extension', full_name='efdi.Time.extension', index=7, + number=2048, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + _TIME_TIMETYPE, + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=17147, + serialized_end=17603, ) - _TIMELOG = _descriptor.Descriptor( - name='TimeLog', - full_name='efdi.TimeLog', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='filename', full_name='efdi.TimeLog.filename', index=0, - number=2, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='filelength', full_name='efdi.TimeLog.filelength', index=1, - number=3, type=4, cpp_type=4, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='time_log_type', full_name='efdi.TimeLog.time_log_type', index=2, - number=1, type=14, cpp_type=8, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='time', full_name='efdi.TimeLog.time', index=3, - number=4, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='extension', full_name='efdi.TimeLog.extension', index=4, - number=2048, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - _TIMELOG_TIMELOGTYPE, - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=17606, - serialized_end=17822, + name='TimeLog', + full_name='efdi.TimeLog', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='filename', full_name='efdi.TimeLog.filename', index=0, + number=2, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='filelength', full_name='efdi.TimeLog.filelength', index=1, + number=3, type=4, cpp_type=4, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='time_log_type', full_name='efdi.TimeLog.time_log_type', index=2, + number=1, type=14, cpp_type=8, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='time', full_name='efdi.TimeLog.time', index=3, + number=4, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='extension', full_name='efdi.TimeLog.extension', index=4, + number=2048, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + _TIMELOG_TIMELOGTYPE, + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=17606, + serialized_end=17822, ) - _TREATMENTZONE = _descriptor.Descriptor( - name='TreatmentZone', - full_name='efdi.TreatmentZone', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='treatment_zone_code', full_name='efdi.TreatmentZone.treatment_zone_code', index=0, - number=1, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='treatment_zone_designator', full_name='efdi.TreatmentZone.treatment_zone_designator', index=1, - number=2, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='treatment_zone_colour', full_name='efdi.TreatmentZone.treatment_zone_colour', index=2, - number=3, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='polygon', full_name='efdi.TreatmentZone.polygon', index=3, - number=4, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='process_data_variable', full_name='efdi.TreatmentZone.process_data_variable', index=4, - number=5, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='extension', full_name='efdi.TreatmentZone.extension', index=5, - number=2048, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=17825, - serialized_end=18067, + name='TreatmentZone', + full_name='efdi.TreatmentZone', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='treatment_zone_code', full_name='efdi.TreatmentZone.treatment_zone_code', index=0, + number=1, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='treatment_zone_designator', full_name='efdi.TreatmentZone.treatment_zone_designator', index=1, + number=2, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='treatment_zone_colour', full_name='efdi.TreatmentZone.treatment_zone_colour', index=2, + number=3, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='polygon', full_name='efdi.TreatmentZone.polygon', index=3, + number=4, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='process_data_variable', full_name='efdi.TreatmentZone.process_data_variable', index=4, + number=5, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='extension', full_name='efdi.TreatmentZone.extension', index=5, + number=2048, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=17825, + serialized_end=18067, ) - _VALUEPRESENTATION = _descriptor.Descriptor( - name='ValuePresentation', - full_name='efdi.ValuePresentation', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='value_presentation_id', full_name='efdi.ValuePresentation.value_presentation_id', index=0, - number=1, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='offset', full_name='efdi.ValuePresentation.offset', index=1, - number=2, type=18, cpp_type=2, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='scale', full_name='efdi.ValuePresentation.scale', index=2, - number=3, type=1, cpp_type=5, label=1, - has_default_value=False, default_value=float(0), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='number_of_decimals', full_name='efdi.ValuePresentation.number_of_decimals', index=3, - number=4, type=13, cpp_type=3, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='unit_designator', full_name='efdi.ValuePresentation.unit_designator', index=4, - number=5, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='colour_legend_id_ref', full_name='efdi.ValuePresentation.colour_legend_id_ref', index=5, - number=6, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='extension', full_name='efdi.ValuePresentation.extension', index=6, - number=2048, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=18070, - serialized_end=18298, + name='ValuePresentation', + full_name='efdi.ValuePresentation', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='value_presentation_id', full_name='efdi.ValuePresentation.value_presentation_id', index=0, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='offset', full_name='efdi.ValuePresentation.offset', index=1, + number=2, type=18, cpp_type=2, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='scale', full_name='efdi.ValuePresentation.scale', index=2, + number=3, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='number_of_decimals', full_name='efdi.ValuePresentation.number_of_decimals', index=3, + number=4, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='unit_designator', full_name='efdi.ValuePresentation.unit_designator', index=4, + number=5, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='colour_legend_id_ref', full_name='efdi.ValuePresentation.colour_legend_id_ref', index=5, + number=6, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='extension', full_name='efdi.ValuePresentation.extension', index=6, + number=2048, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=18070, + serialized_end=18298, ) - _WORKER = _descriptor.Descriptor( - name='Worker', - full_name='efdi.Worker', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='worker_id', full_name='efdi.Worker.worker_id', index=0, - number=1, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='worker_last_name', full_name='efdi.Worker.worker_last_name', index=1, - number=2, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='worker_first_name', full_name='efdi.Worker.worker_first_name', index=2, - number=3, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='worker_street', full_name='efdi.Worker.worker_street', index=3, - number=4, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='worker_po_box', full_name='efdi.Worker.worker_po_box', index=4, - number=5, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='worker_postal_code', full_name='efdi.Worker.worker_postal_code', index=5, - number=6, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='worker_city', full_name='efdi.Worker.worker_city', index=6, - number=7, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='worker_state', full_name='efdi.Worker.worker_state', index=7, - number=8, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='worker_country', full_name='efdi.Worker.worker_country', index=8, - number=9, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='worker_phone', full_name='efdi.Worker.worker_phone', index=9, - number=10, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='worker_mobile', full_name='efdi.Worker.worker_mobile', index=10, - number=11, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='worker_license_number', full_name='efdi.Worker.worker_license_number', index=11, - number=12, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='worker_email', full_name='efdi.Worker.worker_email', index=12, - number=13, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='extension', full_name='efdi.Worker.extension', index=13, - number=2048, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=18301, - serialized_end=18673, + name='Worker', + full_name='efdi.Worker', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='worker_id', full_name='efdi.Worker.worker_id', index=0, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='worker_last_name', full_name='efdi.Worker.worker_last_name', index=1, + number=2, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='worker_first_name', full_name='efdi.Worker.worker_first_name', index=2, + number=3, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='worker_street', full_name='efdi.Worker.worker_street', index=3, + number=4, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='worker_po_box', full_name='efdi.Worker.worker_po_box', index=4, + number=5, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='worker_postal_code', full_name='efdi.Worker.worker_postal_code', index=5, + number=6, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='worker_city', full_name='efdi.Worker.worker_city', index=6, + number=7, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='worker_state', full_name='efdi.Worker.worker_state', index=7, + number=8, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='worker_country', full_name='efdi.Worker.worker_country', index=8, + number=9, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='worker_phone', full_name='efdi.Worker.worker_phone', index=9, + number=10, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='worker_mobile', full_name='efdi.Worker.worker_mobile', index=10, + number=11, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='worker_license_number', full_name='efdi.Worker.worker_license_number', index=11, + number=12, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='worker_email', full_name='efdi.Worker.worker_email', index=12, + number=13, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='extension', full_name='efdi.Worker.extension', index=13, + number=2048, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=18301, + serialized_end=18673, ) - _WORKERALLOCATION = _descriptor.Descriptor( - name='WorkerAllocation', - full_name='efdi.WorkerAllocation', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='worker_id_ref', full_name='efdi.WorkerAllocation.worker_id_ref', index=0, - number=1, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='allocation_stamp', full_name='efdi.WorkerAllocation.allocation_stamp', index=1, - number=2, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='extension', full_name='efdi.WorkerAllocation.extension', index=2, - number=2048, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=18676, - serialized_end=18819, + name='WorkerAllocation', + full_name='efdi.WorkerAllocation', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='worker_id_ref', full_name='efdi.WorkerAllocation.worker_id_ref', index=0, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='allocation_stamp', full_name='efdi.WorkerAllocation.allocation_stamp', index=1, + number=2, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='extension', full_name='efdi.WorkerAllocation.extension', index=2, + number=2048, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=18676, + serialized_end=18819, ) - _EXTERNALFILEREFERENCE = _descriptor.Descriptor( - name='ExternalFileReference', - full_name='efdi.ExternalFileReference', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='filename', full_name='efdi.ExternalFileReference.filename', index=0, - number=1, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='file_type', full_name='efdi.ExternalFileReference.file_type', index=1, - number=2, type=14, cpp_type=8, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='extension', full_name='efdi.ExternalFileReference.extension', index=2, - number=2048, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - _EXTERNALFILEREFERENCE_FILETYPE, - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=18822, - serialized_end=19010, + name='ExternalFileReference', + full_name='efdi.ExternalFileReference', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='filename', full_name='efdi.ExternalFileReference.filename', index=0, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='file_type', full_name='efdi.ExternalFileReference.file_type', index=1, + number=2, type=14, cpp_type=8, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='extension', full_name='efdi.ExternalFileReference.extension', index=2, + number=2048, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + _EXTERNALFILEREFERENCE_FILETYPE, + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=18822, + serialized_end=19010, ) _ALLOCATIONSTAMP.fields_by_name['start'].message_type = google_dot_protobuf_dot_timestamp__pb2._TIMESTAMP @@ -5411,7 +5383,8 @@ _GUIDANCEPATTERN.fields_by_name['guidance_pattern_id'].message_type = _UID _GUIDANCEPATTERN.fields_by_name['guidance_pattern_type'].enum_type = _GUIDANCEPATTERN_GUIDANCEPATTERNTYPE _GUIDANCEPATTERN.fields_by_name['guidance_pattern_options'].enum_type = _GUIDANCEPATTERN_GUIDANCEPATTERNOPTIONS -_GUIDANCEPATTERN.fields_by_name['guidance_pattern_propagation_direction'].enum_type = _GUIDANCEPATTERN_GUIDANCEPATTERNPROPAGATIONDIRECTION +_GUIDANCEPATTERN.fields_by_name[ + 'guidance_pattern_propagation_direction'].enum_type = _GUIDANCEPATTERN_GUIDANCEPATTERNPROPAGATIONDIRECTION _GUIDANCEPATTERN.fields_by_name['guidance_pattern_extension'].enum_type = _GUIDANCEPATTERN_GUIDANCEPATTERNEXTENSION _GUIDANCEPATTERN.fields_by_name['guidance_pattern_gnss_method'].enum_type = _GUIDANCEPATTERN_GUIDANCEPATTERNGNSSMETHOD _GUIDANCEPATTERN.fields_by_name['base_station_id_ref'].message_type = _UID @@ -5621,382 +5594,383 @@ _sym_db.RegisterFileDescriptor(DESCRIPTOR) UID = _reflection.GeneratedProtocolMessageType('UID', (_message.Message,), { - 'DESCRIPTOR' : _UID, - '__module__' : 'agrirouter.protobuf.technicalmessagetype.efdi_pb2' - # @@protoc_insertion_point(class_scope:efdi.UID) - }) + 'DESCRIPTOR': _UID, + '__module__': 'agrirouter.protobuf.technicalmessagetype.efdi_pb2' + # @@protoc_insertion_point(class_scope:efdi.UID) +}) _sym_db.RegisterMessage(UID) AllocationStamp = _reflection.GeneratedProtocolMessageType('AllocationStamp', (_message.Message,), { - 'DESCRIPTOR' : _ALLOCATIONSTAMP, - '__module__' : 'agrirouter.protobuf.technicalmessagetype.efdi_pb2' - # @@protoc_insertion_point(class_scope:efdi.AllocationStamp) - }) + 'DESCRIPTOR': _ALLOCATIONSTAMP, + '__module__': 'agrirouter.protobuf.technicalmessagetype.efdi_pb2' + # @@protoc_insertion_point(class_scope:efdi.AllocationStamp) +}) _sym_db.RegisterMessage(AllocationStamp) AttachedFile = _reflection.GeneratedProtocolMessageType('AttachedFile', (_message.Message,), { - 'DESCRIPTOR' : _ATTACHEDFILE, - '__module__' : 'agrirouter.protobuf.technicalmessagetype.efdi_pb2' - # @@protoc_insertion_point(class_scope:efdi.AttachedFile) - }) + 'DESCRIPTOR': _ATTACHEDFILE, + '__module__': 'agrirouter.protobuf.technicalmessagetype.efdi_pb2' + # @@protoc_insertion_point(class_scope:efdi.AttachedFile) +}) _sym_db.RegisterMessage(AttachedFile) BaseStation = _reflection.GeneratedProtocolMessageType('BaseStation', (_message.Message,), { - 'DESCRIPTOR' : _BASESTATION, - '__module__' : 'agrirouter.protobuf.technicalmessagetype.efdi_pb2' - # @@protoc_insertion_point(class_scope:efdi.BaseStation) - }) + 'DESCRIPTOR': _BASESTATION, + '__module__': 'agrirouter.protobuf.technicalmessagetype.efdi_pb2' + # @@protoc_insertion_point(class_scope:efdi.BaseStation) +}) _sym_db.RegisterMessage(BaseStation) CodedComment = _reflection.GeneratedProtocolMessageType('CodedComment', (_message.Message,), { - 'DESCRIPTOR' : _CODEDCOMMENT, - '__module__' : 'agrirouter.protobuf.technicalmessagetype.efdi_pb2' - # @@protoc_insertion_point(class_scope:efdi.CodedComment) - }) + 'DESCRIPTOR': _CODEDCOMMENT, + '__module__': 'agrirouter.protobuf.technicalmessagetype.efdi_pb2' + # @@protoc_insertion_point(class_scope:efdi.CodedComment) +}) _sym_db.RegisterMessage(CodedComment) CodedCommentGroup = _reflection.GeneratedProtocolMessageType('CodedCommentGroup', (_message.Message,), { - 'DESCRIPTOR' : _CODEDCOMMENTGROUP, - '__module__' : 'agrirouter.protobuf.technicalmessagetype.efdi_pb2' - # @@protoc_insertion_point(class_scope:efdi.CodedCommentGroup) - }) + 'DESCRIPTOR': _CODEDCOMMENTGROUP, + '__module__': 'agrirouter.protobuf.technicalmessagetype.efdi_pb2' + # @@protoc_insertion_point(class_scope:efdi.CodedCommentGroup) +}) _sym_db.RegisterMessage(CodedCommentGroup) CodedCommentListValue = _reflection.GeneratedProtocolMessageType('CodedCommentListValue', (_message.Message,), { - 'DESCRIPTOR' : _CODEDCOMMENTLISTVALUE, - '__module__' : 'agrirouter.protobuf.technicalmessagetype.efdi_pb2' - # @@protoc_insertion_point(class_scope:efdi.CodedCommentListValue) - }) + 'DESCRIPTOR': _CODEDCOMMENTLISTVALUE, + '__module__': 'agrirouter.protobuf.technicalmessagetype.efdi_pb2' + # @@protoc_insertion_point(class_scope:efdi.CodedCommentListValue) +}) _sym_db.RegisterMessage(CodedCommentListValue) ColourLegend = _reflection.GeneratedProtocolMessageType('ColourLegend', (_message.Message,), { - 'DESCRIPTOR' : _COLOURLEGEND, - '__module__' : 'agrirouter.protobuf.technicalmessagetype.efdi_pb2' - # @@protoc_insertion_point(class_scope:efdi.ColourLegend) - }) + 'DESCRIPTOR': _COLOURLEGEND, + '__module__': 'agrirouter.protobuf.technicalmessagetype.efdi_pb2' + # @@protoc_insertion_point(class_scope:efdi.ColourLegend) +}) _sym_db.RegisterMessage(ColourLegend) ColourRange = _reflection.GeneratedProtocolMessageType('ColourRange', (_message.Message,), { - 'DESCRIPTOR' : _COLOURRANGE, - '__module__' : 'agrirouter.protobuf.technicalmessagetype.efdi_pb2' - # @@protoc_insertion_point(class_scope:efdi.ColourRange) - }) + 'DESCRIPTOR': _COLOURRANGE, + '__module__': 'agrirouter.protobuf.technicalmessagetype.efdi_pb2' + # @@protoc_insertion_point(class_scope:efdi.ColourRange) +}) _sym_db.RegisterMessage(ColourRange) CommentAllocation = _reflection.GeneratedProtocolMessageType('CommentAllocation', (_message.Message,), { - 'DESCRIPTOR' : _COMMENTALLOCATION, - '__module__' : 'agrirouter.protobuf.technicalmessagetype.efdi_pb2' - # @@protoc_insertion_point(class_scope:efdi.CommentAllocation) - }) + 'DESCRIPTOR': _COMMENTALLOCATION, + '__module__': 'agrirouter.protobuf.technicalmessagetype.efdi_pb2' + # @@protoc_insertion_point(class_scope:efdi.CommentAllocation) +}) _sym_db.RegisterMessage(CommentAllocation) Connection = _reflection.GeneratedProtocolMessageType('Connection', (_message.Message,), { - 'DESCRIPTOR' : _CONNECTION, - '__module__' : 'agrirouter.protobuf.technicalmessagetype.efdi_pb2' - # @@protoc_insertion_point(class_scope:efdi.Connection) - }) + 'DESCRIPTOR': _CONNECTION, + '__module__': 'agrirouter.protobuf.technicalmessagetype.efdi_pb2' + # @@protoc_insertion_point(class_scope:efdi.Connection) +}) _sym_db.RegisterMessage(Connection) ControlAssignment = _reflection.GeneratedProtocolMessageType('ControlAssignment', (_message.Message,), { - 'DESCRIPTOR' : _CONTROLASSIGNMENT, - '__module__' : 'agrirouter.protobuf.technicalmessagetype.efdi_pb2' - # @@protoc_insertion_point(class_scope:efdi.ControlAssignment) - }) + 'DESCRIPTOR': _CONTROLASSIGNMENT, + '__module__': 'agrirouter.protobuf.technicalmessagetype.efdi_pb2' + # @@protoc_insertion_point(class_scope:efdi.ControlAssignment) +}) _sym_db.RegisterMessage(ControlAssignment) CropType = _reflection.GeneratedProtocolMessageType('CropType', (_message.Message,), { - 'DESCRIPTOR' : _CROPTYPE, - '__module__' : 'agrirouter.protobuf.technicalmessagetype.efdi_pb2' - # @@protoc_insertion_point(class_scope:efdi.CropType) - }) + 'DESCRIPTOR': _CROPTYPE, + '__module__': 'agrirouter.protobuf.technicalmessagetype.efdi_pb2' + # @@protoc_insertion_point(class_scope:efdi.CropType) +}) _sym_db.RegisterMessage(CropType) CropVariety = _reflection.GeneratedProtocolMessageType('CropVariety', (_message.Message,), { - 'DESCRIPTOR' : _CROPVARIETY, - '__module__' : 'agrirouter.protobuf.technicalmessagetype.efdi_pb2' - # @@protoc_insertion_point(class_scope:efdi.CropVariety) - }) + 'DESCRIPTOR': _CROPVARIETY, + '__module__': 'agrirouter.protobuf.technicalmessagetype.efdi_pb2' + # @@protoc_insertion_point(class_scope:efdi.CropVariety) +}) _sym_db.RegisterMessage(CropVariety) CulturalPractice = _reflection.GeneratedProtocolMessageType('CulturalPractice', (_message.Message,), { - 'DESCRIPTOR' : _CULTURALPRACTICE, - '__module__' : 'agrirouter.protobuf.technicalmessagetype.efdi_pb2' - # @@protoc_insertion_point(class_scope:efdi.CulturalPractice) - }) + 'DESCRIPTOR': _CULTURALPRACTICE, + '__module__': 'agrirouter.protobuf.technicalmessagetype.efdi_pb2' + # @@protoc_insertion_point(class_scope:efdi.CulturalPractice) +}) _sym_db.RegisterMessage(CulturalPractice) Customer = _reflection.GeneratedProtocolMessageType('Customer', (_message.Message,), { - 'DESCRIPTOR' : _CUSTOMER, - '__module__' : 'agrirouter.protobuf.technicalmessagetype.efdi_pb2' - # @@protoc_insertion_point(class_scope:efdi.Customer) - }) + 'DESCRIPTOR': _CUSTOMER, + '__module__': 'agrirouter.protobuf.technicalmessagetype.efdi_pb2' + # @@protoc_insertion_point(class_scope:efdi.Customer) +}) _sym_db.RegisterMessage(Customer) DataLogTrigger = _reflection.GeneratedProtocolMessageType('DataLogTrigger', (_message.Message,), { - 'DESCRIPTOR' : _DATALOGTRIGGER, - '__module__' : 'agrirouter.protobuf.technicalmessagetype.efdi_pb2' - # @@protoc_insertion_point(class_scope:efdi.DataLogTrigger) - }) + 'DESCRIPTOR': _DATALOGTRIGGER, + '__module__': 'agrirouter.protobuf.technicalmessagetype.efdi_pb2' + # @@protoc_insertion_point(class_scope:efdi.DataLogTrigger) +}) _sym_db.RegisterMessage(DataLogTrigger) DataLogValue = _reflection.GeneratedProtocolMessageType('DataLogValue', (_message.Message,), { - 'DESCRIPTOR' : _DATALOGVALUE, - '__module__' : 'agrirouter.protobuf.technicalmessagetype.efdi_pb2' - # @@protoc_insertion_point(class_scope:efdi.DataLogValue) - }) + 'DESCRIPTOR': _DATALOGVALUE, + '__module__': 'agrirouter.protobuf.technicalmessagetype.efdi_pb2' + # @@protoc_insertion_point(class_scope:efdi.DataLogValue) +}) _sym_db.RegisterMessage(DataLogValue) Device = _reflection.GeneratedProtocolMessageType('Device', (_message.Message,), { - 'DESCRIPTOR' : _DEVICE, - '__module__' : 'agrirouter.protobuf.technicalmessagetype.efdi_pb2' - # @@protoc_insertion_point(class_scope:efdi.Device) - }) + 'DESCRIPTOR': _DEVICE, + '__module__': 'agrirouter.protobuf.technicalmessagetype.efdi_pb2' + # @@protoc_insertion_point(class_scope:efdi.Device) +}) _sym_db.RegisterMessage(Device) DeviceAllocation = _reflection.GeneratedProtocolMessageType('DeviceAllocation', (_message.Message,), { - 'DESCRIPTOR' : _DEVICEALLOCATION, - '__module__' : 'agrirouter.protobuf.technicalmessagetype.efdi_pb2' - # @@protoc_insertion_point(class_scope:efdi.DeviceAllocation) - }) + 'DESCRIPTOR': _DEVICEALLOCATION, + '__module__': 'agrirouter.protobuf.technicalmessagetype.efdi_pb2' + # @@protoc_insertion_point(class_scope:efdi.DeviceAllocation) +}) _sym_db.RegisterMessage(DeviceAllocation) DeviceElement = _reflection.GeneratedProtocolMessageType('DeviceElement', (_message.Message,), { - 'DESCRIPTOR' : _DEVICEELEMENT, - '__module__' : 'agrirouter.protobuf.technicalmessagetype.efdi_pb2' - # @@protoc_insertion_point(class_scope:efdi.DeviceElement) - }) + 'DESCRIPTOR': _DEVICEELEMENT, + '__module__': 'agrirouter.protobuf.technicalmessagetype.efdi_pb2' + # @@protoc_insertion_point(class_scope:efdi.DeviceElement) +}) _sym_db.RegisterMessage(DeviceElement) DeviceObjectReference = _reflection.GeneratedProtocolMessageType('DeviceObjectReference', (_message.Message,), { - 'DESCRIPTOR' : _DEVICEOBJECTREFERENCE, - '__module__' : 'agrirouter.protobuf.technicalmessagetype.efdi_pb2' - # @@protoc_insertion_point(class_scope:efdi.DeviceObjectReference) - }) + 'DESCRIPTOR': _DEVICEOBJECTREFERENCE, + '__module__': 'agrirouter.protobuf.technicalmessagetype.efdi_pb2' + # @@protoc_insertion_point(class_scope:efdi.DeviceObjectReference) +}) _sym_db.RegisterMessage(DeviceObjectReference) DeviceProcessData = _reflection.GeneratedProtocolMessageType('DeviceProcessData', (_message.Message,), { - 'DESCRIPTOR' : _DEVICEPROCESSDATA, - '__module__' : 'agrirouter.protobuf.technicalmessagetype.efdi_pb2' - # @@protoc_insertion_point(class_scope:efdi.DeviceProcessData) - }) + 'DESCRIPTOR': _DEVICEPROCESSDATA, + '__module__': 'agrirouter.protobuf.technicalmessagetype.efdi_pb2' + # @@protoc_insertion_point(class_scope:efdi.DeviceProcessData) +}) _sym_db.RegisterMessage(DeviceProcessData) DeviceProperty = _reflection.GeneratedProtocolMessageType('DeviceProperty', (_message.Message,), { - 'DESCRIPTOR' : _DEVICEPROPERTY, - '__module__' : 'agrirouter.protobuf.technicalmessagetype.efdi_pb2' - # @@protoc_insertion_point(class_scope:efdi.DeviceProperty) - }) + 'DESCRIPTOR': _DEVICEPROPERTY, + '__module__': 'agrirouter.protobuf.technicalmessagetype.efdi_pb2' + # @@protoc_insertion_point(class_scope:efdi.DeviceProperty) +}) _sym_db.RegisterMessage(DeviceProperty) DeviceValuePresentation = _reflection.GeneratedProtocolMessageType('DeviceValuePresentation', (_message.Message,), { - 'DESCRIPTOR' : _DEVICEVALUEPRESENTATION, - '__module__' : 'agrirouter.protobuf.technicalmessagetype.efdi_pb2' - # @@protoc_insertion_point(class_scope:efdi.DeviceValuePresentation) - }) + 'DESCRIPTOR': _DEVICEVALUEPRESENTATION, + '__module__': 'agrirouter.protobuf.technicalmessagetype.efdi_pb2' + # @@protoc_insertion_point(class_scope:efdi.DeviceValuePresentation) +}) _sym_db.RegisterMessage(DeviceValuePresentation) Farm = _reflection.GeneratedProtocolMessageType('Farm', (_message.Message,), { - 'DESCRIPTOR' : _FARM, - '__module__' : 'agrirouter.protobuf.technicalmessagetype.efdi_pb2' - # @@protoc_insertion_point(class_scope:efdi.Farm) - }) + 'DESCRIPTOR': _FARM, + '__module__': 'agrirouter.protobuf.technicalmessagetype.efdi_pb2' + # @@protoc_insertion_point(class_scope:efdi.Farm) +}) _sym_db.RegisterMessage(Farm) Grid = _reflection.GeneratedProtocolMessageType('Grid', (_message.Message,), { - 'DESCRIPTOR' : _GRID, - '__module__' : 'agrirouter.protobuf.technicalmessagetype.efdi_pb2' - # @@protoc_insertion_point(class_scope:efdi.Grid) - }) + 'DESCRIPTOR': _GRID, + '__module__': 'agrirouter.protobuf.technicalmessagetype.efdi_pb2' + # @@protoc_insertion_point(class_scope:efdi.Grid) +}) _sym_db.RegisterMessage(Grid) GuidanceAllocation = _reflection.GeneratedProtocolMessageType('GuidanceAllocation', (_message.Message,), { - 'DESCRIPTOR' : _GUIDANCEALLOCATION, - '__module__' : 'agrirouter.protobuf.technicalmessagetype.efdi_pb2' - # @@protoc_insertion_point(class_scope:efdi.GuidanceAllocation) - }) + 'DESCRIPTOR': _GUIDANCEALLOCATION, + '__module__': 'agrirouter.protobuf.technicalmessagetype.efdi_pb2' + # @@protoc_insertion_point(class_scope:efdi.GuidanceAllocation) +}) _sym_db.RegisterMessage(GuidanceAllocation) GuidanceGroup = _reflection.GeneratedProtocolMessageType('GuidanceGroup', (_message.Message,), { - 'DESCRIPTOR' : _GUIDANCEGROUP, - '__module__' : 'agrirouter.protobuf.technicalmessagetype.efdi_pb2' - # @@protoc_insertion_point(class_scope:efdi.GuidanceGroup) - }) + 'DESCRIPTOR': _GUIDANCEGROUP, + '__module__': 'agrirouter.protobuf.technicalmessagetype.efdi_pb2' + # @@protoc_insertion_point(class_scope:efdi.GuidanceGroup) +}) _sym_db.RegisterMessage(GuidanceGroup) GuidancePattern = _reflection.GeneratedProtocolMessageType('GuidancePattern', (_message.Message,), { - 'DESCRIPTOR' : _GUIDANCEPATTERN, - '__module__' : 'agrirouter.protobuf.technicalmessagetype.efdi_pb2' - # @@protoc_insertion_point(class_scope:efdi.GuidancePattern) - }) + 'DESCRIPTOR': _GUIDANCEPATTERN, + '__module__': 'agrirouter.protobuf.technicalmessagetype.efdi_pb2' + # @@protoc_insertion_point(class_scope:efdi.GuidancePattern) +}) _sym_db.RegisterMessage(GuidancePattern) GuidanceShift = _reflection.GeneratedProtocolMessageType('GuidanceShift', (_message.Message,), { - 'DESCRIPTOR' : _GUIDANCESHIFT, - '__module__' : 'agrirouter.protobuf.technicalmessagetype.efdi_pb2' - # @@protoc_insertion_point(class_scope:efdi.GuidanceShift) - }) + 'DESCRIPTOR': _GUIDANCESHIFT, + '__module__': 'agrirouter.protobuf.technicalmessagetype.efdi_pb2' + # @@protoc_insertion_point(class_scope:efdi.GuidanceShift) +}) _sym_db.RegisterMessage(GuidanceShift) ISO11783_TaskData = _reflection.GeneratedProtocolMessageType('ISO11783_TaskData', (_message.Message,), { - 'DESCRIPTOR' : _ISO11783_TASKDATA, - '__module__' : 'agrirouter.protobuf.technicalmessagetype.efdi_pb2' - # @@protoc_insertion_point(class_scope:efdi.ISO11783_TaskData) - }) + 'DESCRIPTOR': _ISO11783_TASKDATA, + '__module__': 'agrirouter.protobuf.technicalmessagetype.efdi_pb2' + # @@protoc_insertion_point(class_scope:efdi.ISO11783_TaskData) +}) _sym_db.RegisterMessage(ISO11783_TaskData) LineString = _reflection.GeneratedProtocolMessageType('LineString', (_message.Message,), { - 'DESCRIPTOR' : _LINESTRING, - '__module__' : 'agrirouter.protobuf.technicalmessagetype.efdi_pb2' - # @@protoc_insertion_point(class_scope:efdi.LineString) - }) + 'DESCRIPTOR': _LINESTRING, + '__module__': 'agrirouter.protobuf.technicalmessagetype.efdi_pb2' + # @@protoc_insertion_point(class_scope:efdi.LineString) +}) _sym_db.RegisterMessage(LineString) OperationTechnique = _reflection.GeneratedProtocolMessageType('OperationTechnique', (_message.Message,), { - 'DESCRIPTOR' : _OPERATIONTECHNIQUE, - '__module__' : 'agrirouter.protobuf.technicalmessagetype.efdi_pb2' - # @@protoc_insertion_point(class_scope:efdi.OperationTechnique) - }) + 'DESCRIPTOR': _OPERATIONTECHNIQUE, + '__module__': 'agrirouter.protobuf.technicalmessagetype.efdi_pb2' + # @@protoc_insertion_point(class_scope:efdi.OperationTechnique) +}) _sym_db.RegisterMessage(OperationTechnique) -OperationTechniqueReference = _reflection.GeneratedProtocolMessageType('OperationTechniqueReference', (_message.Message,), { - 'DESCRIPTOR' : _OPERATIONTECHNIQUEREFERENCE, - '__module__' : 'agrirouter.protobuf.technicalmessagetype.efdi_pb2' - # @@protoc_insertion_point(class_scope:efdi.OperationTechniqueReference) - }) +OperationTechniqueReference = _reflection.GeneratedProtocolMessageType('OperationTechniqueReference', + (_message.Message,), { + 'DESCRIPTOR': _OPERATIONTECHNIQUEREFERENCE, + '__module__': 'agrirouter.protobuf.technicalmessagetype.efdi_pb2' + # @@protoc_insertion_point(class_scope:efdi.OperationTechniqueReference) + }) _sym_db.RegisterMessage(OperationTechniqueReference) OperTechPractice = _reflection.GeneratedProtocolMessageType('OperTechPractice', (_message.Message,), { - 'DESCRIPTOR' : _OPERTECHPRACTICE, - '__module__' : 'agrirouter.protobuf.technicalmessagetype.efdi_pb2' - # @@protoc_insertion_point(class_scope:efdi.OperTechPractice) - }) + 'DESCRIPTOR': _OPERTECHPRACTICE, + '__module__': 'agrirouter.protobuf.technicalmessagetype.efdi_pb2' + # @@protoc_insertion_point(class_scope:efdi.OperTechPractice) +}) _sym_db.RegisterMessage(OperTechPractice) Partfield = _reflection.GeneratedProtocolMessageType('Partfield', (_message.Message,), { - 'DESCRIPTOR' : _PARTFIELD, - '__module__' : 'agrirouter.protobuf.technicalmessagetype.efdi_pb2' - # @@protoc_insertion_point(class_scope:efdi.Partfield) - }) + 'DESCRIPTOR': _PARTFIELD, + '__module__': 'agrirouter.protobuf.technicalmessagetype.efdi_pb2' + # @@protoc_insertion_point(class_scope:efdi.Partfield) +}) _sym_db.RegisterMessage(Partfield) Point = _reflection.GeneratedProtocolMessageType('Point', (_message.Message,), { - 'DESCRIPTOR' : _POINT, - '__module__' : 'agrirouter.protobuf.technicalmessagetype.efdi_pb2' - # @@protoc_insertion_point(class_scope:efdi.Point) - }) + 'DESCRIPTOR': _POINT, + '__module__': 'agrirouter.protobuf.technicalmessagetype.efdi_pb2' + # @@protoc_insertion_point(class_scope:efdi.Point) +}) _sym_db.RegisterMessage(Point) Polygon = _reflection.GeneratedProtocolMessageType('Polygon', (_message.Message,), { - 'DESCRIPTOR' : _POLYGON, - '__module__' : 'agrirouter.protobuf.technicalmessagetype.efdi_pb2' - # @@protoc_insertion_point(class_scope:efdi.Polygon) - }) + 'DESCRIPTOR': _POLYGON, + '__module__': 'agrirouter.protobuf.technicalmessagetype.efdi_pb2' + # @@protoc_insertion_point(class_scope:efdi.Polygon) +}) _sym_db.RegisterMessage(Polygon) Position = _reflection.GeneratedProtocolMessageType('Position', (_message.Message,), { - 'DESCRIPTOR' : _POSITION, - '__module__' : 'agrirouter.protobuf.technicalmessagetype.efdi_pb2' - # @@protoc_insertion_point(class_scope:efdi.Position) - }) + 'DESCRIPTOR': _POSITION, + '__module__': 'agrirouter.protobuf.technicalmessagetype.efdi_pb2' + # @@protoc_insertion_point(class_scope:efdi.Position) +}) _sym_db.RegisterMessage(Position) ProcessDataVariable = _reflection.GeneratedProtocolMessageType('ProcessDataVariable', (_message.Message,), { - 'DESCRIPTOR' : _PROCESSDATAVARIABLE, - '__module__' : 'agrirouter.protobuf.technicalmessagetype.efdi_pb2' - # @@protoc_insertion_point(class_scope:efdi.ProcessDataVariable) - }) + 'DESCRIPTOR': _PROCESSDATAVARIABLE, + '__module__': 'agrirouter.protobuf.technicalmessagetype.efdi_pb2' + # @@protoc_insertion_point(class_scope:efdi.ProcessDataVariable) +}) _sym_db.RegisterMessage(ProcessDataVariable) Product = _reflection.GeneratedProtocolMessageType('Product', (_message.Message,), { - 'DESCRIPTOR' : _PRODUCT, - '__module__' : 'agrirouter.protobuf.technicalmessagetype.efdi_pb2' - # @@protoc_insertion_point(class_scope:efdi.Product) - }) + 'DESCRIPTOR': _PRODUCT, + '__module__': 'agrirouter.protobuf.technicalmessagetype.efdi_pb2' + # @@protoc_insertion_point(class_scope:efdi.Product) +}) _sym_db.RegisterMessage(Product) ProductAllocation = _reflection.GeneratedProtocolMessageType('ProductAllocation', (_message.Message,), { - 'DESCRIPTOR' : _PRODUCTALLOCATION, - '__module__' : 'agrirouter.protobuf.technicalmessagetype.efdi_pb2' - # @@protoc_insertion_point(class_scope:efdi.ProductAllocation) - }) + 'DESCRIPTOR': _PRODUCTALLOCATION, + '__module__': 'agrirouter.protobuf.technicalmessagetype.efdi_pb2' + # @@protoc_insertion_point(class_scope:efdi.ProductAllocation) +}) _sym_db.RegisterMessage(ProductAllocation) ProductGroup = _reflection.GeneratedProtocolMessageType('ProductGroup', (_message.Message,), { - 'DESCRIPTOR' : _PRODUCTGROUP, - '__module__' : 'agrirouter.protobuf.technicalmessagetype.efdi_pb2' - # @@protoc_insertion_point(class_scope:efdi.ProductGroup) - }) + 'DESCRIPTOR': _PRODUCTGROUP, + '__module__': 'agrirouter.protobuf.technicalmessagetype.efdi_pb2' + # @@protoc_insertion_point(class_scope:efdi.ProductGroup) +}) _sym_db.RegisterMessage(ProductGroup) ProductRelation = _reflection.GeneratedProtocolMessageType('ProductRelation', (_message.Message,), { - 'DESCRIPTOR' : _PRODUCTRELATION, - '__module__' : 'agrirouter.protobuf.technicalmessagetype.efdi_pb2' - # @@protoc_insertion_point(class_scope:efdi.ProductRelation) - }) + 'DESCRIPTOR': _PRODUCTRELATION, + '__module__': 'agrirouter.protobuf.technicalmessagetype.efdi_pb2' + # @@protoc_insertion_point(class_scope:efdi.ProductRelation) +}) _sym_db.RegisterMessage(ProductRelation) Task = _reflection.GeneratedProtocolMessageType('Task', (_message.Message,), { - 'DESCRIPTOR' : _TASK, - '__module__' : 'agrirouter.protobuf.technicalmessagetype.efdi_pb2' - # @@protoc_insertion_point(class_scope:efdi.Task) - }) + 'DESCRIPTOR': _TASK, + '__module__': 'agrirouter.protobuf.technicalmessagetype.efdi_pb2' + # @@protoc_insertion_point(class_scope:efdi.Task) +}) _sym_db.RegisterMessage(Task) -TaskControllerCapabilities = _reflection.GeneratedProtocolMessageType('TaskControllerCapabilities', (_message.Message,), { - 'DESCRIPTOR' : _TASKCONTROLLERCAPABILITIES, - '__module__' : 'agrirouter.protobuf.technicalmessagetype.efdi_pb2' - # @@protoc_insertion_point(class_scope:efdi.TaskControllerCapabilities) - }) +TaskControllerCapabilities = _reflection.GeneratedProtocolMessageType('TaskControllerCapabilities', (_message.Message,), + { + 'DESCRIPTOR': _TASKCONTROLLERCAPABILITIES, + '__module__': 'agrirouter.protobuf.technicalmessagetype.efdi_pb2' + # @@protoc_insertion_point(class_scope:efdi.TaskControllerCapabilities) + }) _sym_db.RegisterMessage(TaskControllerCapabilities) Time = _reflection.GeneratedProtocolMessageType('Time', (_message.Message,), { - 'DESCRIPTOR' : _TIME, - '__module__' : 'agrirouter.protobuf.technicalmessagetype.efdi_pb2' - # @@protoc_insertion_point(class_scope:efdi.Time) - }) + 'DESCRIPTOR': _TIME, + '__module__': 'agrirouter.protobuf.technicalmessagetype.efdi_pb2' + # @@protoc_insertion_point(class_scope:efdi.Time) +}) _sym_db.RegisterMessage(Time) TimeLog = _reflection.GeneratedProtocolMessageType('TimeLog', (_message.Message,), { - 'DESCRIPTOR' : _TIMELOG, - '__module__' : 'agrirouter.protobuf.technicalmessagetype.efdi_pb2' - # @@protoc_insertion_point(class_scope:efdi.TimeLog) - }) + 'DESCRIPTOR': _TIMELOG, + '__module__': 'agrirouter.protobuf.technicalmessagetype.efdi_pb2' + # @@protoc_insertion_point(class_scope:efdi.TimeLog) +}) _sym_db.RegisterMessage(TimeLog) TreatmentZone = _reflection.GeneratedProtocolMessageType('TreatmentZone', (_message.Message,), { - 'DESCRIPTOR' : _TREATMENTZONE, - '__module__' : 'agrirouter.protobuf.technicalmessagetype.efdi_pb2' - # @@protoc_insertion_point(class_scope:efdi.TreatmentZone) - }) + 'DESCRIPTOR': _TREATMENTZONE, + '__module__': 'agrirouter.protobuf.technicalmessagetype.efdi_pb2' + # @@protoc_insertion_point(class_scope:efdi.TreatmentZone) +}) _sym_db.RegisterMessage(TreatmentZone) ValuePresentation = _reflection.GeneratedProtocolMessageType('ValuePresentation', (_message.Message,), { - 'DESCRIPTOR' : _VALUEPRESENTATION, - '__module__' : 'agrirouter.protobuf.technicalmessagetype.efdi_pb2' - # @@protoc_insertion_point(class_scope:efdi.ValuePresentation) - }) + 'DESCRIPTOR': _VALUEPRESENTATION, + '__module__': 'agrirouter.protobuf.technicalmessagetype.efdi_pb2' + # @@protoc_insertion_point(class_scope:efdi.ValuePresentation) +}) _sym_db.RegisterMessage(ValuePresentation) Worker = _reflection.GeneratedProtocolMessageType('Worker', (_message.Message,), { - 'DESCRIPTOR' : _WORKER, - '__module__' : 'agrirouter.protobuf.technicalmessagetype.efdi_pb2' - # @@protoc_insertion_point(class_scope:efdi.Worker) - }) + 'DESCRIPTOR': _WORKER, + '__module__': 'agrirouter.protobuf.technicalmessagetype.efdi_pb2' + # @@protoc_insertion_point(class_scope:efdi.Worker) +}) _sym_db.RegisterMessage(Worker) WorkerAllocation = _reflection.GeneratedProtocolMessageType('WorkerAllocation', (_message.Message,), { - 'DESCRIPTOR' : _WORKERALLOCATION, - '__module__' : 'agrirouter.protobuf.technicalmessagetype.efdi_pb2' - # @@protoc_insertion_point(class_scope:efdi.WorkerAllocation) - }) + 'DESCRIPTOR': _WORKERALLOCATION, + '__module__': 'agrirouter.protobuf.technicalmessagetype.efdi_pb2' + # @@protoc_insertion_point(class_scope:efdi.WorkerAllocation) +}) _sym_db.RegisterMessage(WorkerAllocation) ExternalFileReference = _reflection.GeneratedProtocolMessageType('ExternalFileReference', (_message.Message,), { - 'DESCRIPTOR' : _EXTERNALFILEREFERENCE, - '__module__' : 'agrirouter.protobuf.technicalmessagetype.efdi_pb2' - # @@protoc_insertion_point(class_scope:efdi.ExternalFileReference) - }) + 'DESCRIPTOR': _EXTERNALFILEREFERENCE, + '__module__': 'agrirouter.protobuf.technicalmessagetype.efdi_pb2' + # @@protoc_insertion_point(class_scope:efdi.ExternalFileReference) +}) _sym_db.RegisterMessage(ExternalFileReference) - # @@protoc_insertion_point(module_scope) diff --git a/src/agrirouter/service/dto/request/revoking.py b/src/agrirouter/service/dto/request/revoking.py index c4dc32e7..997def3a 100644 --- a/src/agrirouter/service/dto/request/revoking.py +++ b/src/agrirouter/service/dto/request/revoking.py @@ -15,8 +15,8 @@ def __init__(self, def get_header(self) -> dict: return self.params - def sign(self, signatute): - self.params["X-Agrirouter-Signature"] = signatute + def sign(self, signature): + self.params["X-Agrirouter-Signature"] = signature def _set_params(self, application_id: str, signature: str, content_type: str): header = dict() From 7251045e853fbb32ff04c30ab55508388408c112 Mon Sep 17 00:00:00 2001 From: Sascha Doemer Date: Thu, 2 May 2024 17:17:40 +0200 Subject: [PATCH 15/17] Refactor import statements across multiple modules The import statements in several modules have been refactored for better organization and clarity. Reorganization ensures relevant modules/classes are logically grouped together, improving code readability and maintainability. --- src/agrirouter/service/authorization.py | 4 ++-- src/agrirouter/service/dto/messaging.py | 2 +- src/agrirouter/service/dto/request/onboarding.py | 2 +- src/agrirouter/service/messaging/cloud.py | 4 ++-- src/agrirouter/service/messaging/common.py | 4 ++-- src/agrirouter/service/messaging/decoding.py | 2 +- src/agrirouter/service/messaging/encoding.py | 6 +++--- src/agrirouter/service/messaging/message_sending.py | 6 +++--- src/agrirouter/service/onboarding.py | 2 +- src/agrirouter/service/parameter/messaging.py | 2 +- src/agrirouter/service/revoking.py | 2 +- 11 files changed, 18 insertions(+), 18 deletions(-) diff --git a/src/agrirouter/service/authorization.py b/src/agrirouter/service/authorization.py index 3c4a5cd3..3090af99 100644 --- a/src/agrirouter/service/authorization.py +++ b/src/agrirouter/service/authorization.py @@ -1,8 +1,8 @@ from urllib.parse import urlparse, parse_qs -from agrirouter.service.parameter.authorization import AuthUrlParameter -from agrirouter.service.dto.response.authorization import AuthResponse from agrirouter.api.env import EnvironmentalService +from agrirouter.service.dto.response.authorization import AuthResponse +from agrirouter.service.parameter.authorization import AuthUrlParameter class AuthorizationService(EnvironmentalService): diff --git a/src/agrirouter/service/dto/messaging.py b/src/agrirouter/service/dto/messaging.py index b6658469..8256d159 100644 --- a/src/agrirouter/service/dto/messaging.py +++ b/src/agrirouter/service/dto/messaging.py @@ -1,8 +1,8 @@ from copy import deepcopy from typing import List -from agrirouter.generated.commons.chunk_pb2 import ChunkComponent from agrirouter.api.messages import EncodedMessage +from agrirouter.generated.commons.chunk_pb2 import ChunkComponent from agrirouter.service.dto.response.onboarding import BaseOnboardingResponse diff --git a/src/agrirouter/service/dto/request/onboarding.py b/src/agrirouter/service/dto/request/onboarding.py index 01bec442..911e4055 100644 --- a/src/agrirouter/service/dto/request/onboarding.py +++ b/src/agrirouter/service/dto/request/onboarding.py @@ -4,8 +4,8 @@ from agrirouter.api.enums import RequestHeaders, CertificateTypes, Gateways, ContentTypes from agrirouter.api.exceptions import WrongCertificationType, WrongGateWayType, MissingRegistrationCode -from agrirouter.service.signature import SignatureService from agrirouter.service.parameter.onboarding import OnboardParameters +from agrirouter.service.signature import SignatureService class SoftwareOnboardingHeader: diff --git a/src/agrirouter/service/messaging/cloud.py b/src/agrirouter/service/messaging/cloud.py index 37971ab6..9edc45ad 100644 --- a/src/agrirouter/service/messaging/cloud.py +++ b/src/agrirouter/service/messaging/cloud.py @@ -1,12 +1,12 @@ from agrirouter.api.enums import TechnicalMessageType +from agrirouter.api.messages import EncodedMessage from agrirouter.generated.cloud_provider_integration.cloud_virtualized_app_registration_pb2 import OnboardingRequest, \ OffboardingRequest from agrirouter.generated.messaging.request.request_pb2 import RequestEnvelope from agrirouter.service.messaging.encoding import EncodingService -from agrirouter.api.messages import EncodedMessage +from agrirouter.service.messaging.message_sending import AbstractService from agrirouter.service.parameter.messaging import MessageHeaderParameters, MessagePayloadParameters, \ CloudOnboardParameters, CloudOffboardParameters -from agrirouter.service.messaging.message_sending import AbstractService from agrirouter.util.type_url import TypeUrl from agrirouter.util.uuid_util import UUIDUtil diff --git a/src/agrirouter/service/messaging/common.py b/src/agrirouter/service/messaging/common.py index 9399c4cb..271c2d27 100644 --- a/src/agrirouter/service/messaging/common.py +++ b/src/agrirouter/service/messaging/common.py @@ -3,14 +3,14 @@ from abc import ABC, abstractmethod from agrirouter.api.exceptions import BadMessagingResult +from agrirouter.api.messages import Message, EncodedMessage from agrirouter.service.client.http import HttpClient from agrirouter.service.client.mqtt import MqttClient -from agrirouter.api.messages import Message, EncodedMessage from agrirouter.service.dto.messaging import MessagingParameters -from agrirouter.service.parameter.messaging import MessageParameters from agrirouter.service.dto.request.messaging import MessageRequest from agrirouter.service.dto.response.messaging import MessagingResult from agrirouter.service.dto.response.onboarding import OnboardResponse +from agrirouter.service.parameter.messaging import MessageParameters class AbstractService: diff --git a/src/agrirouter/service/messaging/decoding.py b/src/agrirouter/service/messaging/decoding.py index 6616db9c..cb67f11d 100644 --- a/src/agrirouter/service/messaging/decoding.py +++ b/src/agrirouter/service/messaging/decoding.py @@ -5,13 +5,13 @@ from google.protobuf.internal.decoder import _DecodeVarint from agrirouter.api.exceptions import CanNotDecodeMessage +from agrirouter.api.messages import DecodedMessage from agrirouter.generated.commons.message_pb2 import Messages from agrirouter.generated.messaging.response.payload.account.endpoints_pb2 import ListEndpointsResponse from agrirouter.generated.messaging.response.payload.feed.feed_response_pb2 import HeaderQueryResponse, \ MessageQueryResponse from agrirouter.generated.messaging.response.payload.feed.push_notification_pb2 import PushNotification from agrirouter.generated.messaging.response.response_pb2 import ResponseEnvelope, ResponsePayloadWrapper -from agrirouter.api.messages import DecodedMessage from agrirouter.util.type_url import TypeUrl diff --git a/src/agrirouter/service/messaging/encoding.py b/src/agrirouter/service/messaging/encoding.py index c88cfc87..ef05a828 100644 --- a/src/agrirouter/service/messaging/encoding.py +++ b/src/agrirouter/service/messaging/encoding.py @@ -5,12 +5,12 @@ from google.protobuf.any_pb2 import Any from google.protobuf.internal.encoder import _VarintBytes +from agrirouter.api.messages import MessageParameterTuple from agrirouter.generated.commons.chunk_pb2 import ChunkComponent from agrirouter.generated.messaging.request.request_pb2 import RequestEnvelope, RequestPayloadWrapper -from agrirouter.api.messages import MessageParameterTuple -from agrirouter.service.parameter.messaging import MessageHeaderParameters, MessagePayloadParameters -from agrirouter.service.messaging.sequence_numbers import SequenceNumberService from agrirouter.service.dto.response.onboarding import OnboardResponse +from agrirouter.service.messaging.sequence_numbers import SequenceNumberService +from agrirouter.service.parameter.messaging import MessageHeaderParameters, MessagePayloadParameters from agrirouter.util.utc_time_util import UtcTimeUtil from agrirouter.util.uuid_util import UUIDUtil diff --git a/src/agrirouter/service/messaging/message_sending.py b/src/agrirouter/service/messaging/message_sending.py index 0411e6d8..6583f75f 100644 --- a/src/agrirouter/service/messaging/message_sending.py +++ b/src/agrirouter/service/messaging/message_sending.py @@ -1,4 +1,5 @@ from agrirouter.api.enums import TechnicalMessageType, CapabilityType +from agrirouter.api.messages import EncodedMessage from agrirouter.generated.commons.chunk_pb2 import ChunkComponent from agrirouter.generated.commons.message_pb2 import Metadata from agrirouter.generated.messaging.request.payload.account.endpoints_pb2 import ListEndpointsQuery @@ -8,14 +9,13 @@ from agrirouter.generated.messaging.request.payload.feed.feed_requests_pb2 import MessageConfirm, MessageDelete, \ MessageQuery from agrirouter.generated.messaging.request.request_pb2 import RequestEnvelope -from agrirouter.service.messaging.encoding import EncodingService -from agrirouter.api.messages import EncodedMessage from agrirouter.service.dto.messaging import SendMessageParameters, ChunkedMessageParameters +from agrirouter.service.messaging.common import AbstractService +from agrirouter.service.messaging.encoding import EncodingService from agrirouter.service.parameter.messaging import MessageHeaderParameters, MessagePayloadParameters, \ CapabilitiesParameters, FeedConfirmParameters, FeedDeleteParameters, ListEndpointsParameters, \ SubscriptionParameters, QueryHeaderParameters, QueryMessageParameters, ImageParameters, TaskParameters, \ EfdiParameters -from agrirouter.service.messaging.common import AbstractService from agrirouter.util.type_url import TypeUrl from agrirouter.util.uuid_util import UUIDUtil diff --git a/src/agrirouter/service/onboarding.py b/src/agrirouter/service/onboarding.py index b682bb41..0edc3e43 100644 --- a/src/agrirouter/service/onboarding.py +++ b/src/agrirouter/service/onboarding.py @@ -1,10 +1,10 @@ import requests +from agrirouter.service.onboarding.request_headers import SoftwareOnboardingHeader from agrirouter.api.env import BaseEnvironment from agrirouter.api.env import EnvironmentalService from agrirouter.api.exceptions import UnexpectedErrorDuringOnboarding, RequestNotSigned from agrirouter.service.dto.request.onboarding import OnboardRequest, SoftwareOnboardingBody -from agrirouter.service.onboarding.request_headers import SoftwareOnboardingHeader from agrirouter.service.dto.response.onboarding import VerificationResponse, OnboardResponse from agrirouter.service.parameter.onboarding import OnboardParameters diff --git a/src/agrirouter/service/parameter/messaging.py b/src/agrirouter/service/parameter/messaging.py index 1dc61fdd..c5dafcef 100644 --- a/src/agrirouter/service/parameter/messaging.py +++ b/src/agrirouter/service/parameter/messaging.py @@ -6,8 +6,8 @@ from agrirouter.generated.messaging.request.payload.endpoint.capabilities_pb2 import CapabilitySpecification from agrirouter.generated.messaging.request.payload.endpoint.subscription_pb2 import Subscription from agrirouter.generated.messaging.request.payload.feed.feed_requests_pb2 import ValidityPeriod -from agrirouter.service.dto.response.onboarding import BaseOnboardingResponse from agrirouter.service.dto.messaging import MessageParameters +from agrirouter.service.dto.response.onboarding import BaseOnboardingResponse class Parameters: diff --git a/src/agrirouter/service/revoking.py b/src/agrirouter/service/revoking.py index ea42f284..958e4942 100644 --- a/src/agrirouter/service/revoking.py +++ b/src/agrirouter/service/revoking.py @@ -2,10 +2,10 @@ from agrirouter.api.env import EnvironmentalService from agrirouter.api.exceptions import RequestNotSigned -from agrirouter.service.parameter.revoking import RevokingParameter from agrirouter.service.dto.request.revoking import RevokingBody, RevokingHeader from agrirouter.service.dto.request.revoking import RevokingRequest from agrirouter.service.dto.response.revoking import RevokingResponse +from agrirouter.service.parameter.revoking import RevokingParameter class RevokingService(EnvironmentalService): From 0263758d373b65332072b7a846914690cc8b65b2 Mon Sep 17 00:00:00 2001 From: Sascha Doemer Date: Thu, 2 May 2024 17:19:16 +0200 Subject: [PATCH 16/17] Refactor import order in test modules Cleaned up the order of imports in various test modules. This process specifically prioritizes standard library imports, followed by related third party imports, and local application/library specific imports. --- tests/agrirouter/common/onboarding.py | 2 +- .../fixtures/update_http_onboard_responses.py | 6 +++--- .../fixtures/update_mqtt_onboard_responses.py | 10 +++++----- tests/agrirouter/internal/auth/test_auth_dto.py | 2 +- .../environments/test_environmental_services.py | 3 ++- tests/agrirouter/internal/messaging/test_decode.py | 1 - .../internal/onboarding/test_onboarding.py | 4 ++-- .../internal/onboarding/test_request_onboarding.py | 4 ++-- .../messaging/mqtt/test_capability_service.py | 8 ++++---- .../messaging/mqtt/test_feed_confirm_service.py | 9 +++++---- .../messaging/mqtt/test_feed_delete_service.py | 6 +++--- .../messaging/mqtt/test_list_endpoints_service.py | 6 +++--- .../messaging/mqtt/test_publish_message_service.py | 6 +++--- .../messaging/mqtt/test_query_header_service.py | 6 +++--- .../messaging/mqtt/test_query_message_service.py | 6 +++--- ...end_and_receive_chunked_messages_from_the_feed.py | 12 ++++++------ ...d_messages_and_receive_with_push_notifications.py | 12 ++++++------ .../mqtt/test_send_direct_message_service.py | 6 +++--- .../messaging/mqtt/test_subscription_service.py | 8 ++++---- 19 files changed, 59 insertions(+), 58 deletions(-) diff --git a/tests/agrirouter/common/onboarding.py b/tests/agrirouter/common/onboarding.py index e0487976..31123dbd 100644 --- a/tests/agrirouter/common/onboarding.py +++ b/tests/agrirouter/common/onboarding.py @@ -1,6 +1,6 @@ -from agrirouter.service.onboarding import OnboardingService from agrirouter.service.onboarding import OnboardParameters from agrirouter.service.onboarding import OnboardResponse +from agrirouter.service.onboarding import OnboardingService from tests.agrirouter.data.applications import CommunicationUnit diff --git a/tests/agrirouter/fixtures/update_http_onboard_responses.py b/tests/agrirouter/fixtures/update_http_onboard_responses.py index 78bcc017..7ab5757d 100644 --- a/tests/agrirouter/fixtures/update_http_onboard_responses.py +++ b/tests/agrirouter/fixtures/update_http_onboard_responses.py @@ -4,14 +4,14 @@ import pytest from agrirouter.api.enums import CapabilityType, CapabilityDirectionType +from agrirouter.api.enums import CertificateTypes, Gateways from agrirouter.api.env import Qa from agrirouter.generated.messaging.request.payload.endpoint.capabilities_pb2 import CapabilitySpecification -from agrirouter.service.parameter.messaging import CapabilitiesParameters +from agrirouter.service.messaging import CapabilitiesService from agrirouter.service.messaging import HttpMessagingService from agrirouter.service.messaging.http import FetchMessageService -from agrirouter.service.messaging import CapabilitiesService -from agrirouter.api.enums import CertificateTypes, Gateways from agrirouter.service.onboarding import OnboardResponse +from agrirouter.service.parameter.messaging import CapabilitiesParameters from agrirouter.util.uuid_util import UUIDUtil from tests.agrirouter.common.onboarding import onboard_communication_unit from tests.agrirouter.common.sleeper import Sleeper diff --git a/tests/agrirouter/fixtures/update_mqtt_onboard_responses.py b/tests/agrirouter/fixtures/update_mqtt_onboard_responses.py index 49b3dbdf..975a9542 100644 --- a/tests/agrirouter/fixtures/update_mqtt_onboard_responses.py +++ b/tests/agrirouter/fixtures/update_mqtt_onboard_responses.py @@ -1,15 +1,15 @@ import pytest from agrirouter.api.enums import CapabilityType, CapabilityDirectionType +from agrirouter.api.enums import CertificateTypes, Gateways from agrirouter.api.env import Qa -from agrirouter.generated.messaging.request.payload.endpoint.capabilities_pb2 import CapabilitySpecification -from agrirouter.service.messaging.decoding import DecodingService from agrirouter.api.messages import OutboxMessage -from agrirouter.service.parameter.messaging import CapabilitiesParameters -from agrirouter.service.messaging import MqttMessagingService +from agrirouter.generated.messaging.request.payload.endpoint.capabilities_pb2 import CapabilitySpecification from agrirouter.service.messaging import CapabilitiesService +from agrirouter.service.messaging import MqttMessagingService +from agrirouter.service.messaging.decoding import DecodingService from agrirouter.service.messaging.sequence_numbers import SequenceNumberService -from agrirouter.api.enums import CertificateTypes, Gateways +from agrirouter.service.parameter.messaging import CapabilitiesParameters from agrirouter.util.uuid_util import UUIDUtil from tests.agrirouter.common.onboarding import onboard_communication_unit from tests.agrirouter.common.sleeper import Sleeper diff --git a/tests/agrirouter/internal/auth/test_auth_dto.py b/tests/agrirouter/internal/auth/test_auth_dto.py index 409ff902..3640c0c3 100644 --- a/tests/agrirouter/internal/auth/test_auth_dto.py +++ b/tests/agrirouter/internal/auth/test_auth_dto.py @@ -1,8 +1,8 @@ """Tests agrirouter/auth/authorization.py""" import pytest -from agrirouter.service.dto.request.authorization import AuthorizationToken from agrirouter.api.exceptions import WrongField +from agrirouter.service.dto.request.authorization import AuthorizationToken class TestAuthorizationToken: diff --git a/tests/agrirouter/internal/environments/test_environmental_services.py b/tests/agrirouter/internal/environments/test_environmental_services.py index 84e21f22..66dce37e 100644 --- a/tests/agrirouter/internal/environments/test_environmental_services.py +++ b/tests/agrirouter/internal/environments/test_environmental_services.py @@ -1,8 +1,9 @@ """Test src/env/environmental_services.py""" -from src.agrirouter.api.env import Qa, Production from src.agrirouter.env.environmental_services import EnvironmentalService +from src.agrirouter.api.env import Qa, Production + def test_arclient_set_env(): assert EnvironmentalService(env=Qa())._set_env(Qa()) is None diff --git a/tests/agrirouter/internal/messaging/test_decode.py b/tests/agrirouter/internal/messaging/test_decode.py index af58b457..f2f1eeb3 100644 --- a/tests/agrirouter/internal/messaging/test_decode.py +++ b/tests/agrirouter/internal/messaging/test_decode.py @@ -1,7 +1,6 @@ import json from agrirouter.generated.messaging.response.response_pb2 import ResponseEnvelope - from agrirouter.service.messaging.decoding import DecodingService MESSAGING_RESULT = b'[{"sensorAlternateId":"185cd97b-ed0b-4e75-a6e2-6be1cdd38a06","capabilityAlternateId":"bbe9f361-b551-48d9-9fca-1b4dc768287c","command":{"message":"XwjIARAKGiQ5NWUzNWE0Zi1jNWM4LTQ1NDEtODE4OS03NmJlMzM0OTc0NDUiJDUzNzYyM2ZjLWY2NmYtNDc5Yi1hMmJhLWVjZjNlNWM3ZjhlMCoMCNTV5YsGEICI8LIDzQIKygIKTnR5cGVzLmFncmlyb3V0ZXIuY29tL2Fncmlyb3V0ZXIucmVzcG9uc2UucGF5bG9hZC5hY2NvdW50Lkxpc3RFbmRwb2ludHNSZXNwb25zZRL3AQp4CiRkNzA0YTQ0My05OWY3LTQ3YjQtYmU1NS1lMmZhMDk2ODllYmUSJFB5dGhvblNES19kZXYgLSAyMDIxLTEwLTI1LCAxMDo1MToxOBoLYXBwbGljYXRpb24iBmFjdGl2ZTIVdXJuOm15YXBwOnNucjAwMDAzMjM0CnsKJDE4NWNkOTdiLWVkMGItNGU3NS1hNmUyLTZiZTFjZGQzOGEwNhIkUHl0aG9uU0RLX2RldiAtIDIwMjEtMTAtMjEsIDIxOjQxOjI0GgthcHBsaWNhdGlvbiIGYWN0aXZlMhh1cm46bXlhcHA6c25yMDAwMDMyMzRzZGY="}}]' # noqa diff --git a/tests/agrirouter/internal/onboarding/test_onboarding.py b/tests/agrirouter/internal/onboarding/test_onboarding.py index abc6819a..ba5ad506 100644 --- a/tests/agrirouter/internal/onboarding/test_onboarding.py +++ b/tests/agrirouter/internal/onboarding/test_onboarding.py @@ -2,11 +2,11 @@ import pytest +from agrirouter.api.enums import Gateways, CertificateTypes from agrirouter.api.env import Qa from agrirouter.api.exceptions import WrongCertificationType, WrongGateWayType -from agrirouter.api.enums import Gateways, CertificateTypes -from agrirouter.service.onboarding import SecuredOnboardingService from agrirouter.service.onboarding import OnboardParameters +from agrirouter.service.onboarding import SecuredOnboardingService from tests.agrirouter.common.constants import PUBLIC_KEY, PRIVATE_KEY, APPLICATION_ID diff --git a/tests/agrirouter/internal/onboarding/test_request_onboarding.py b/tests/agrirouter/internal/onboarding/test_request_onboarding.py index 2829d73c..7c8ab46a 100644 --- a/tests/agrirouter/internal/onboarding/test_request_onboarding.py +++ b/tests/agrirouter/internal/onboarding/test_request_onboarding.py @@ -1,8 +1,8 @@ """Test src/onboarding/messaging.py""" -from agrirouter.api.env import Qa from agrirouter.api.enums import Gateways, CertificateTypes -from agrirouter.service.onboarding import SecuredOnboardingService +from agrirouter.api.env import Qa from agrirouter.service.onboarding import OnboardParameters +from agrirouter.service.onboarding import SecuredOnboardingService from tests.agrirouter.common.constants import APPLICATION_ID, PUBLIC_KEY, PRIVATE_KEY diff --git a/tests/agrirouter/service/messaging/mqtt/test_capability_service.py b/tests/agrirouter/service/messaging/mqtt/test_capability_service.py index 4c79defc..c415e764 100644 --- a/tests/agrirouter/service/messaging/mqtt/test_capability_service.py +++ b/tests/agrirouter/service/messaging/mqtt/test_capability_service.py @@ -3,15 +3,15 @@ import pytest -from agrirouter.generated.messaging.request.payload.endpoint.capabilities_pb2 import CapabilitySpecification -from agrirouter.service.messaging.decoding import DecodingService from agrirouter.api.enums import CapabilityDirectionType from agrirouter.api.enums import CapabilityType from agrirouter.api.messages import OutboxMessage -from agrirouter.service.parameter.messaging import CapabilitiesParameters -from agrirouter.service.messaging import MqttMessagingService +from agrirouter.generated.messaging.request.payload.endpoint.capabilities_pb2 import CapabilitySpecification from agrirouter.service.messaging import CapabilitiesService +from agrirouter.service.messaging import MqttMessagingService +from agrirouter.service.messaging.decoding import DecodingService from agrirouter.service.messaging.sequence_numbers import SequenceNumberService +from agrirouter.service.parameter.messaging import CapabilitiesParameters from agrirouter.util.uuid_util import UUIDUtil from tests.agrirouter.common.sleeper import Sleeper from tests.agrirouter.data.applications import CommunicationUnit diff --git a/tests/agrirouter/service/messaging/mqtt/test_feed_confirm_service.py b/tests/agrirouter/service/messaging/mqtt/test_feed_confirm_service.py index 3a290ea8..11e30c2f 100644 --- a/tests/agrirouter/service/messaging/mqtt/test_feed_confirm_service.py +++ b/tests/agrirouter/service/messaging/mqtt/test_feed_confirm_service.py @@ -4,15 +4,15 @@ import pytest from agrirouter.api.enums import CapabilityType -from agrirouter.generated.messaging.request.request_pb2 import RequestEnvelope -from agrirouter.service.messaging.decoding import DecodingService from agrirouter.api.messages import OutboxMessage +from agrirouter.generated.messaging.request.request_pb2 import RequestEnvelope from agrirouter.service.dto.messaging import SendMessageParameters -from agrirouter.service.parameter.messaging import FeedDeleteParameters, FeedConfirmParameters from agrirouter.service.messaging import MqttMessagingService from agrirouter.service.messaging import SendMessageService, FeedDeleteService, FeedConfirmService +from agrirouter.service.messaging.decoding import DecodingService from agrirouter.service.messaging.sequence_numbers import SequenceNumberService from agrirouter.service.onboarding import OnboardResponse +from agrirouter.service.parameter.messaging import FeedDeleteParameters, FeedConfirmParameters from agrirouter.util.uuid_util import UUIDUtil from tests.agrirouter.common.data_provider import DataProvider from tests.agrirouter.common.sleeper import Sleeper @@ -273,7 +273,8 @@ def _inner_function(client, userdata, msg): outbox_message = OutboxMessage() outbox_message.json_deserialize(msg.payload.decode().replace("'", '"')) decoded_message = DecodingService.decode_response(outbox_message.command.message.encode()) - feed_confirm_details_for_empty_messages = DecodingService.decode_details(decoded_message.response_payload.details) + feed_confirm_details_for_empty_messages = DecodingService.decode_details( + decoded_message.response_payload.details) self._log.info(f"Feed confirm details for empty messages: {feed_confirm_details_for_empty_messages}") assert decoded_message.response_envelope.response_code == 200 for _message in feed_confirm_details_for_empty_messages.messages: diff --git a/tests/agrirouter/service/messaging/mqtt/test_feed_delete_service.py b/tests/agrirouter/service/messaging/mqtt/test_feed_delete_service.py index c8a84aeb..265709d8 100644 --- a/tests/agrirouter/service/messaging/mqtt/test_feed_delete_service.py +++ b/tests/agrirouter/service/messaging/mqtt/test_feed_delete_service.py @@ -4,13 +4,13 @@ import pytest from agrirouter.api.enums import CapabilityType -from agrirouter.generated.messaging.request.request_pb2 import RequestEnvelope -from agrirouter.service.messaging.decoding import DecodingService from agrirouter.api.messages import OutboxMessage -from agrirouter.service.parameter.messaging import FeedDeleteParameters +from agrirouter.generated.messaging.request.request_pb2 import RequestEnvelope from agrirouter.service.messaging import MqttMessagingService from agrirouter.service.messaging import SendMessageService, SendMessageParameters, FeedDeleteService +from agrirouter.service.messaging.decoding import DecodingService from agrirouter.service.messaging.sequence_numbers import SequenceNumberService +from agrirouter.service.parameter.messaging import FeedDeleteParameters from agrirouter.util.utc_time_util import UtcTimeUtil from agrirouter.util.uuid_util import UUIDUtil from tests.agrirouter.common.data_provider import DataProvider diff --git a/tests/agrirouter/service/messaging/mqtt/test_list_endpoints_service.py b/tests/agrirouter/service/messaging/mqtt/test_list_endpoints_service.py index f61ebf71..d2cbac99 100644 --- a/tests/agrirouter/service/messaging/mqtt/test_list_endpoints_service.py +++ b/tests/agrirouter/service/messaging/mqtt/test_list_endpoints_service.py @@ -3,13 +3,13 @@ import pytest -from agrirouter.service.messaging.decoding import DecodingService from agrirouter.api.enums import CapabilityType, CapabilityDirectionType from agrirouter.api.messages import OutboxMessage -from agrirouter.service.parameter.messaging import ListEndpointsParameters -from agrirouter.service.messaging import MqttMessagingService from agrirouter.service.messaging import ListEndpointsService +from agrirouter.service.messaging import MqttMessagingService +from agrirouter.service.messaging.decoding import DecodingService from agrirouter.service.messaging.sequence_numbers import SequenceNumberService +from agrirouter.service.parameter.messaging import ListEndpointsParameters from agrirouter.util.uuid_util import UUIDUtil from tests.agrirouter.common.sleeper import Sleeper from tests.agrirouter.data.identifier import Identifier diff --git a/tests/agrirouter/service/messaging/mqtt/test_publish_message_service.py b/tests/agrirouter/service/messaging/mqtt/test_publish_message_service.py index a4a74570..098892a3 100644 --- a/tests/agrirouter/service/messaging/mqtt/test_publish_message_service.py +++ b/tests/agrirouter/service/messaging/mqtt/test_publish_message_service.py @@ -3,15 +3,15 @@ import pytest -from agrirouter.generated.messaging.request.request_pb2 import RequestEnvelope -from agrirouter.service.messaging.decoding import DecodingService from agrirouter.api.enums import CapabilityType from agrirouter.api.messages import OutboxMessage -from agrirouter.service.parameter.messaging import FeedDeleteParameters +from agrirouter.generated.messaging.request.request_pb2 import RequestEnvelope from agrirouter.service.messaging import MqttMessagingService from agrirouter.service.messaging import SendMessageService, SendMessageParameters, FeedDeleteService +from agrirouter.service.messaging.decoding import DecodingService from agrirouter.service.messaging.sequence_numbers import SequenceNumberService from agrirouter.service.onboarding import OnboardResponse +from agrirouter.service.parameter.messaging import FeedDeleteParameters from agrirouter.util.uuid_util import UUIDUtil from tests.agrirouter.common.data_provider import DataProvider from tests.agrirouter.common.sleeper import Sleeper diff --git a/tests/agrirouter/service/messaging/mqtt/test_query_header_service.py b/tests/agrirouter/service/messaging/mqtt/test_query_header_service.py index 0f42b8d0..5267c916 100644 --- a/tests/agrirouter/service/messaging/mqtt/test_query_header_service.py +++ b/tests/agrirouter/service/messaging/mqtt/test_query_header_service.py @@ -5,15 +5,15 @@ import pytest from agrirouter.api.enums import CapabilityType -from agrirouter.generated.messaging.request.request_pb2 import RequestEnvelope -from agrirouter.service.messaging.decoding import DecodingService from agrirouter.api.messages import OutboxMessage -from agrirouter.service.parameter.messaging import FeedDeleteParameters, QueryHeaderParameters +from agrirouter.generated.messaging.request.request_pb2 import RequestEnvelope from agrirouter.service.messaging import MqttMessagingService from agrirouter.service.messaging import SendMessageService, SendMessageParameters, FeedDeleteService, \ QueryHeaderService +from agrirouter.service.messaging.decoding import DecodingService from agrirouter.service.messaging.sequence_numbers import SequenceNumberService from agrirouter.service.onboarding import OnboardResponse +from agrirouter.service.parameter.messaging import FeedDeleteParameters, QueryHeaderParameters from agrirouter.util.utc_time_util import UtcTimeUtil from agrirouter.util.uuid_util import UUIDUtil from tests.agrirouter.common.data_provider import DataProvider diff --git a/tests/agrirouter/service/messaging/mqtt/test_query_message_service.py b/tests/agrirouter/service/messaging/mqtt/test_query_message_service.py index ede3f10d..4f972481 100644 --- a/tests/agrirouter/service/messaging/mqtt/test_query_message_service.py +++ b/tests/agrirouter/service/messaging/mqtt/test_query_message_service.py @@ -5,15 +5,15 @@ import pytest from agrirouter.api.enums import CapabilityType -from agrirouter.generated.messaging.request.request_pb2 import RequestEnvelope -from agrirouter.service.messaging.decoding import DecodingService from agrirouter.api.messages import OutboxMessage -from agrirouter.service.parameter.messaging import FeedDeleteParameters, QueryMessageParameters +from agrirouter.generated.messaging.request.request_pb2 import RequestEnvelope from agrirouter.service.messaging import MqttMessagingService from agrirouter.service.messaging import SendMessageService, SendMessageParameters, FeedDeleteService, \ QueryMessagesService +from agrirouter.service.messaging.decoding import DecodingService from agrirouter.service.messaging.sequence_numbers import SequenceNumberService from agrirouter.service.onboarding import OnboardResponse +from agrirouter.service.parameter.messaging import FeedDeleteParameters, QueryMessageParameters from agrirouter.util.utc_time_util import UtcTimeUtil from agrirouter.util.uuid_util import UUIDUtil from tests.agrirouter.common.data_provider import DataProvider diff --git a/tests/agrirouter/service/messaging/mqtt/test_send_and_receive_chunked_messages_from_the_feed.py b/tests/agrirouter/service/messaging/mqtt/test_send_and_receive_chunked_messages_from_the_feed.py index 5c35aac3..b715f690 100644 --- a/tests/agrirouter/service/messaging/mqtt/test_send_and_receive_chunked_messages_from_the_feed.py +++ b/tests/agrirouter/service/messaging/mqtt/test_send_and_receive_chunked_messages_from_the_feed.py @@ -5,17 +5,17 @@ import pytest from agrirouter.api.enums import CapabilityType, TechnicalMessageType -from agrirouter.generated.messaging.request.request_pb2 import RequestEnvelope -from agrirouter.service.messaging.decoding import DecodingService -from agrirouter.service.messaging.encoding import EncodingService from agrirouter.api.messages import OutboxMessage +from agrirouter.generated.messaging.request.request_pb2 import RequestEnvelope from agrirouter.service.dto.messaging import ChunkedMessageParameters -from agrirouter.service.parameter.messaging import FeedDeleteParameters, MessageHeaderParameters, \ - MessagePayloadParameters, QueryHeaderParameters -from agrirouter.service.messaging import MqttMessagingService from agrirouter.service.messaging import FeedDeleteService, SendChunkedMessageService, QueryHeaderService +from agrirouter.service.messaging import MqttMessagingService +from agrirouter.service.messaging.decoding import DecodingService +from agrirouter.service.messaging.encoding import EncodingService from agrirouter.service.messaging.sequence_numbers import SequenceNumberService from agrirouter.service.onboarding import OnboardResponse +from agrirouter.service.parameter.messaging import FeedDeleteParameters, MessageHeaderParameters, \ + MessagePayloadParameters, QueryHeaderParameters from agrirouter.util.uuid_util import UUIDUtil from tests.agrirouter.common.data_provider import DataProvider from tests.agrirouter.common.sleeper import Sleeper diff --git a/tests/agrirouter/service/messaging/mqtt/test_send_chunked_messages_and_receive_with_push_notifications.py b/tests/agrirouter/service/messaging/mqtt/test_send_chunked_messages_and_receive_with_push_notifications.py index 15df73e5..fa278463 100644 --- a/tests/agrirouter/service/messaging/mqtt/test_send_chunked_messages_and_receive_with_push_notifications.py +++ b/tests/agrirouter/service/messaging/mqtt/test_send_chunked_messages_and_receive_with_push_notifications.py @@ -4,17 +4,17 @@ import pytest from agrirouter.api.enums import CapabilityType, TechnicalMessageType -from agrirouter.generated.messaging.request.request_pb2 import RequestEnvelope -from agrirouter.service.messaging.decoding import DecodingService -from agrirouter.service.messaging.encoding import EncodingService from agrirouter.api.messages import OutboxMessage +from agrirouter.generated.messaging.request.request_pb2 import RequestEnvelope from agrirouter.service.dto.messaging import ChunkedMessageParameters -from agrirouter.service.parameter.messaging import FeedDeleteParameters, MessageHeaderParameters, \ - MessagePayloadParameters -from agrirouter.service.messaging import MqttMessagingService from agrirouter.service.messaging import FeedDeleteService, SendChunkedMessageService +from agrirouter.service.messaging import MqttMessagingService +from agrirouter.service.messaging.decoding import DecodingService +from agrirouter.service.messaging.encoding import EncodingService from agrirouter.service.messaging.sequence_numbers import SequenceNumberService from agrirouter.service.onboarding import OnboardResponse +from agrirouter.service.parameter.messaging import FeedDeleteParameters, MessageHeaderParameters, \ + MessagePayloadParameters from agrirouter.util.uuid_util import UUIDUtil from tests.agrirouter.common.data_provider import DataProvider from tests.agrirouter.common.sleeper import Sleeper diff --git a/tests/agrirouter/service/messaging/mqtt/test_send_direct_message_service.py b/tests/agrirouter/service/messaging/mqtt/test_send_direct_message_service.py index 175ca912..1ecb7791 100644 --- a/tests/agrirouter/service/messaging/mqtt/test_send_direct_message_service.py +++ b/tests/agrirouter/service/messaging/mqtt/test_send_direct_message_service.py @@ -3,15 +3,15 @@ import pytest -from agrirouter.generated.messaging.request.request_pb2 import RequestEnvelope -from agrirouter.service.messaging.decoding import DecodingService from agrirouter.api.enums import CapabilityType from agrirouter.api.messages import OutboxMessage -from agrirouter.service.parameter.messaging import FeedDeleteParameters +from agrirouter.generated.messaging.request.request_pb2 import RequestEnvelope from agrirouter.service.messaging import MqttMessagingService from agrirouter.service.messaging import SendMessageService, SendMessageParameters, FeedDeleteService +from agrirouter.service.messaging.decoding import DecodingService from agrirouter.service.messaging.sequence_numbers import SequenceNumberService from agrirouter.service.onboarding import OnboardResponse +from agrirouter.service.parameter.messaging import FeedDeleteParameters from agrirouter.util.uuid_util import UUIDUtil from tests.agrirouter.common.data_provider import DataProvider from tests.agrirouter.common.sleeper import Sleeper diff --git a/tests/agrirouter/service/messaging/mqtt/test_subscription_service.py b/tests/agrirouter/service/messaging/mqtt/test_subscription_service.py index 8fca94b0..26db400a 100644 --- a/tests/agrirouter/service/messaging/mqtt/test_subscription_service.py +++ b/tests/agrirouter/service/messaging/mqtt/test_subscription_service.py @@ -3,15 +3,15 @@ import pytest -from agrirouter.generated.messaging.request.payload.endpoint.capabilities_pb2 import CapabilitySpecification -from agrirouter.generated.messaging.request.payload.endpoint.subscription_pb2 import Subscription -from agrirouter.service.messaging.decoding import DecodingService from agrirouter.api.enums import CapabilityType, CapabilityDirectionType from agrirouter.api.messages import OutboxMessage -from agrirouter.service.parameter.messaging import SubscriptionParameters, CapabilitiesParameters +from agrirouter.generated.messaging.request.payload.endpoint.capabilities_pb2 import CapabilitySpecification +from agrirouter.generated.messaging.request.payload.endpoint.subscription_pb2 import Subscription from agrirouter.service.messaging import MqttMessagingService from agrirouter.service.messaging import SubscriptionService, CapabilitiesService +from agrirouter.service.messaging.decoding import DecodingService from agrirouter.service.messaging.sequence_numbers import SequenceNumberService +from agrirouter.service.parameter.messaging import SubscriptionParameters, CapabilitiesParameters from agrirouter.util.uuid_util import UUIDUtil from tests.agrirouter.common.sleeper import Sleeper from tests.agrirouter.data.applications import CommunicationUnit From dadbcb17823f778fd5b2820e20040f9ca344f2f2 Mon Sep 17 00:00:00 2001 From: Sascha Doemer Date: Thu, 2 May 2024 17:41:46 +0200 Subject: [PATCH 17/17] Refactor messaging services and minor changes in file structures Made several changes in messaging services including restructuring and moving certain classes to align with design patterns. Also made minor changes and updates in file structures of various test scripts and source files. Improved unified decoding strategy with EncodingService class. --- example_script.py | 8 +- src/agrirouter/service/certification.py | 2 +- src/agrirouter/service/client/http.py | 2 +- src/agrirouter/service/dto/messaging.py | 217 ------------------ src/agrirouter/service/messaging/cloud.py | 2 +- src/agrirouter/service/messaging/encoding.py | 2 +- .../service/messaging/message_sending.py | 3 +- src/agrirouter/service/onboarding.py | 5 +- src/agrirouter/service/parameter/messaging.py | 4 +- tests/agrirouter/common/onboarding.py | 2 +- .../onboard_response_integration_service.py | 2 +- .../fixtures/update_http_onboard_responses.py | 6 +- .../fixtures/update_mqtt_onboard_responses.py | 4 +- .../test_environmental_services.py | 4 +- .../internal/messaging/test_decode.py | 2 +- .../onboarding/test_onboarding_dto.py | 2 +- .../messaging/mqtt/test_capability_service.py | 4 +- .../mqtt/test_feed_confirm_service.py | 7 +- .../mqtt/test_feed_delete_service.py | 6 +- .../mqtt/test_list_endpoints_service.py | 4 +- .../mqtt/test_publish_message_service.py | 6 +- .../mqtt/test_query_header_service.py | 7 +- .../mqtt/test_query_message_service.py | 7 +- ..._receive_chunked_messages_from_the_feed.py | 8 +- ...ges_and_receive_with_push_notifications.py | 7 +- .../mqtt/test_send_direct_message_service.py | 6 +- .../mqtt/test_subscription_service.py | 4 +- 27 files changed, 54 insertions(+), 279 deletions(-) delete mode 100644 src/agrirouter/service/dto/messaging.py diff --git a/example_script.py b/example_script.py index 01c6ab86..1bc25bc1 100644 --- a/example_script.py +++ b/example_script.py @@ -1,21 +1,21 @@ import time import agrirouter as ar from agrirouter.api.enums import CapabilityType +from agrirouter.service.dto.response.messaging import OnboardResponse +from agrirouter.service.messaging.common import MqttMessagingService, HttpMessagingService +from agrirouter.service.messaging.message_sending import ListEndpointsService, CapabilitiesService, SubscriptionService, \ + QueryHeaderService from agrirouter.service.parameter.messaging import QueryHeaderParameters, ListEndpointsParameters, \ CapabilitiesParameters, SubscriptionParameters -from agrirouter.service.messaging import QueryHeaderService, ListEndpointsService, CapabilitiesService, \ - SubscriptionService from agrirouter.api.enums import Gateways from agrirouter.generated.messaging.request.payload.endpoint.subscription_pb2 import Subscription from agrirouter.generated.messaging.request.payload.endpoint.capabilities_pb2 import CapabilitySpecification -from agrirouter.service.messaging import HttpMessagingService, MqttMessagingService from agrirouter.util.uuid_util import UUIDUtil from google.protobuf.timestamp_pb2 import Timestamp from agrirouter.generated.messaging.request.payload.account.endpoints_pb2 import ListEndpointsQuery from agrirouter.generated.messaging.request.payload.feed.feed_requests_pb2 import ValidityPeriod -from agrirouter.service.onboarding import OnboardResponse public_key = """-----BEGIN PUBLIC KEY----- MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzGt41/+kSOTlO1sJvLIN diff --git a/src/agrirouter/service/certification.py b/src/agrirouter/service/certification.py index 35e7092d..2a6550bf 100644 --- a/src/agrirouter/service/certification.py +++ b/src/agrirouter/service/certification.py @@ -1,7 +1,7 @@ import os import tempfile -from agrirouter.service.dto.response.onboarding import OnboardResponse +from agrirouter.service.dto.response.messaging import OnboardResponse class CertificationService: diff --git a/src/agrirouter/service/client/http.py b/src/agrirouter/service/client/http.py index 7842552f..fb866bc4 100644 --- a/src/agrirouter/service/client/http.py +++ b/src/agrirouter/service/client/http.py @@ -5,7 +5,7 @@ from urllib.parse import urlparse from agrirouter.service.certification import CertificationService -from agrirouter.service.dto.response.onboarding import OnboardResponse +from agrirouter.service.dto.response.messaging import OnboardResponse class HttpClient: diff --git a/src/agrirouter/service/dto/messaging.py b/src/agrirouter/service/dto/messaging.py deleted file mode 100644 index 8256d159..00000000 --- a/src/agrirouter/service/dto/messaging.py +++ /dev/null @@ -1,217 +0,0 @@ -from copy import deepcopy -from typing import List - -from agrirouter.api.messages import EncodedMessage -from agrirouter.generated.commons.chunk_pb2 import ChunkComponent -from agrirouter.service.dto.response.onboarding import BaseOnboardingResponse - - -class Parameters: - def __init__(self, - *, - application_message_seq_no: int, - application_message_id: str = None, - team_set_context_id: str - ): - self.application_message_seq_no = application_message_seq_no - self.application_message_id = application_message_id - self.team_set_context_id = team_set_context_id - - def get_application_message_seq_no(self): - return self.application_message_seq_no - - def get_application_message_id(self): - return self.application_message_id - - def get_team_set_context_id(self): - return self.team_set_context_id - - def set_application_message_seq_no(self, application_message_seq_no): - self.application_message_seq_no = application_message_seq_no - - def set_application_message_id(self, application_message_id): - self.application_message_id = application_message_id - - def set_team_set_context_id(self, team_set_context_id): - self.team_set_context_id = team_set_context_id - - def validate(self): - pass - - -class MessageParameters(Parameters): - def __init__(self, - *, - application_message_seq_no: int, - application_message_id: str, - team_set_context_id: str = None, - onboarding_response: BaseOnboardingResponse - ): - super(MessageParameters, self).__init__( - application_message_seq_no=application_message_seq_no, - application_message_id=application_message_id, - team_set_context_id=team_set_context_id, - ) - - self.onboarding_response = onboarding_response - - def get_onboarding_response(self) -> BaseOnboardingResponse: - return self.onboarding_response - - -class MessagingParameters(MessageParameters): - - def __init__(self, - *, - application_message_seq_no: int = None, - application_message_id: str = None, - team_set_context_id: str = None, - onboarding_response: BaseOnboardingResponse, - encoded_messages=None - ): - super(MessagingParameters, self).__init__( - application_message_seq_no=application_message_seq_no, - application_message_id=application_message_id, - team_set_context_id=team_set_context_id, - onboarding_response=onboarding_response, - ) - - self._encoded_messages = encoded_messages if encoded_messages else [] - - def get_encoded_messages(self): - return deepcopy(self._encoded_messages) - - def set_encoded_messages(self, encoded_messages: List[EncodedMessage]): - self._encoded_messages = encoded_messages - - def append_encoded_messages(self, encoded_message: EncodedMessage): - self._encoded_messages.append(encoded_message) - - def extend_encoded_messages(self, encoded_messages: List[EncodedMessage]): - self._encoded_messages.extend(encoded_messages) - - -class SendMessageParameters(MessageParameters): - """ - Parameters to send messages to the agrirouter - The class inherits from MessageParameters class - """ - - def __init__(self, - *, - onboarding_response: BaseOnboardingResponse, - technical_message_type: str, - recipients: list = None, - chunk_component=None, - base64_message_content: bytes, - type_url: str = None, - chunk_size: int = None, - application_message_id: str, - application_message_seq_no: int, - mode - ): - """ - onboarding_response: Onboarding response of the sender - technical_message_type: TechnicalMessageType class to be sent - recipients: List of recipients - chunk_components: Chunk Information - base64_message_content: Message content that is sent - type_url: Url needed for MessagePayloadParameters - chunk_size: Define the size of the chunks - application_message_id: The application message ID - application_message_seq_no: Sequence number while sending the messages - to the agrirouter with SequenceNumberService - """ - - super(SendMessageParameters, self).__init__(application_message_id=application_message_id, - application_message_seq_no=application_message_seq_no, - onboarding_response=onboarding_response) - - self._technical_message_type = technical_message_type - self._base64_message_content = base64_message_content - self._type_url = type_url - self._mode = mode - - if recipients: - self._recipients = recipients - - if chunk_component: - self._chunk_component = chunk_component - else: - self._chunk_component = None - - if chunk_size: - self._chunk_size = chunk_size - - def get_technical_message_type(self): - return self._technical_message_type - - def get_recipients(self) -> list: - return self._recipients - - def get_chunk_component(self) -> ChunkComponent: - return self._chunk_component - - def get_base64_message_content(self): - return self._base64_message_content - - def get_type_url(self) -> str: - return self._type_url - - def get_chunk_size(self) -> int: - return self._chunk_size - - def get_mode(self): - return self._mode - - -class ChunkedMessageParameters(MessageParameters): - """ - Parameters to send chunked messages to the agrirouter - The class inherits from MessageParameters class - """ - - def __init__(self, - *, - onboarding_response: BaseOnboardingResponse, - technical_message_type: str = None, - recipients: List = None, - application_message_id: str = None, - application_message_seq_no: int = None, - encoded_chunked_messages: List[str] = None, - ): - """ - onboarding_response: Onboarding response of the sender - technical_message_type: TechnicalMessageType class to be sent - recipients: List of recipients - application_message_id: The application message ID - application_message_seq_no: Sequence number while sending the messages - to the agrirouter with SequenceNumberService - encoded_chunked_messages: List of encoded chunked messages - """ - - super(ChunkedMessageParameters, self).__init__(application_message_id=application_message_id, - application_message_seq_no=application_message_seq_no, - onboarding_response=onboarding_response) - - self._technical_message_type = technical_message_type - self._recipients = recipients - self._encoded_chunked_messages = encoded_chunked_messages - - def get_technical_message_type(self): - return self._technical_message_type - - def set_technical_message_type(self, technical_message_type: str): - self._technical_message_type = technical_message_type - - def get_recipients(self) -> list: - return self._recipients - - def set_recipients(self, recipients: list): - self._recipients = recipients - - def get_encoded_chunked_messages(self) -> List[str]: - return self._encoded_chunked_messages - - def set_encoded_chunked_messages(self, encoded_chunked_messages: List[str]): - self._encoded_chunked_messages = encoded_chunked_messages diff --git a/src/agrirouter/service/messaging/cloud.py b/src/agrirouter/service/messaging/cloud.py index 9edc45ad..f5120b7e 100644 --- a/src/agrirouter/service/messaging/cloud.py +++ b/src/agrirouter/service/messaging/cloud.py @@ -62,7 +62,7 @@ def encode(parameters: CloudOffboardParameters) -> EncodedMessage: value=offboarding_request.SerializeToString() ) - message_content = encode_message(message_header_parameters, message_payload_parameters) + message_content = EncodingService.encode_message(message_header_parameters, message_payload_parameters) encoded_message = EncodedMessage( id_=UUIDUtil.new_uuid(), content=message_content diff --git a/src/agrirouter/service/messaging/encoding.py b/src/agrirouter/service/messaging/encoding.py index ef05a828..65445a0e 100644 --- a/src/agrirouter/service/messaging/encoding.py +++ b/src/agrirouter/service/messaging/encoding.py @@ -8,7 +8,7 @@ from agrirouter.api.messages import MessageParameterTuple from agrirouter.generated.commons.chunk_pb2 import ChunkComponent from agrirouter.generated.messaging.request.request_pb2 import RequestEnvelope, RequestPayloadWrapper -from agrirouter.service.dto.response.onboarding import OnboardResponse +from agrirouter.service.dto.response.messaging import OnboardResponse from agrirouter.service.messaging.sequence_numbers import SequenceNumberService from agrirouter.service.parameter.messaging import MessageHeaderParameters, MessagePayloadParameters from agrirouter.util.utc_time_util import UtcTimeUtil diff --git a/src/agrirouter/service/messaging/message_sending.py b/src/agrirouter/service/messaging/message_sending.py index 6583f75f..72369bf3 100644 --- a/src/agrirouter/service/messaging/message_sending.py +++ b/src/agrirouter/service/messaging/message_sending.py @@ -9,13 +9,12 @@ from agrirouter.generated.messaging.request.payload.feed.feed_requests_pb2 import MessageConfirm, MessageDelete, \ MessageQuery from agrirouter.generated.messaging.request.request_pb2 import RequestEnvelope -from agrirouter.service.dto.messaging import SendMessageParameters, ChunkedMessageParameters from agrirouter.service.messaging.common import AbstractService from agrirouter.service.messaging.encoding import EncodingService from agrirouter.service.parameter.messaging import MessageHeaderParameters, MessagePayloadParameters, \ CapabilitiesParameters, FeedConfirmParameters, FeedDeleteParameters, ListEndpointsParameters, \ SubscriptionParameters, QueryHeaderParameters, QueryMessageParameters, ImageParameters, TaskParameters, \ - EfdiParameters + EfdiParameters, SendMessageParameters, ChunkedMessageParameters from agrirouter.util.type_url import TypeUrl from agrirouter.util.uuid_util import UUIDUtil diff --git a/src/agrirouter/service/onboarding.py b/src/agrirouter/service/onboarding.py index 0edc3e43..cfb9c40f 100644 --- a/src/agrirouter/service/onboarding.py +++ b/src/agrirouter/service/onboarding.py @@ -1,11 +1,10 @@ import requests -from agrirouter.service.onboarding.request_headers import SoftwareOnboardingHeader from agrirouter.api.env import BaseEnvironment from agrirouter.api.env import EnvironmentalService from agrirouter.api.exceptions import UnexpectedErrorDuringOnboarding, RequestNotSigned -from agrirouter.service.dto.request.onboarding import OnboardRequest, SoftwareOnboardingBody -from agrirouter.service.dto.response.onboarding import VerificationResponse, OnboardResponse +from agrirouter.service.dto.request.onboarding import OnboardRequest, SoftwareOnboardingBody, SoftwareOnboardingHeader +from agrirouter.service.dto.response.messaging import VerificationResponse, OnboardResponse from agrirouter.service.parameter.onboarding import OnboardParameters diff --git a/src/agrirouter/service/parameter/messaging.py b/src/agrirouter/service/parameter/messaging.py index c5dafcef..bc7c0afd 100644 --- a/src/agrirouter/service/parameter/messaging.py +++ b/src/agrirouter/service/parameter/messaging.py @@ -1,13 +1,13 @@ from copy import deepcopy from typing import List +from agrirouter.api.messages import EncodedMessage from agrirouter.generated.commons.chunk_pb2 import ChunkComponent from agrirouter.generated.commons.message_pb2 import Metadata from agrirouter.generated.messaging.request.payload.endpoint.capabilities_pb2 import CapabilitySpecification from agrirouter.generated.messaging.request.payload.endpoint.subscription_pb2 import Subscription from agrirouter.generated.messaging.request.payload.feed.feed_requests_pb2 import ValidityPeriod -from agrirouter.service.dto.messaging import MessageParameters -from agrirouter.service.dto.response.onboarding import BaseOnboardingResponse +from agrirouter.service.dto.response.messaging import BaseOnboardingResponse class Parameters: diff --git a/tests/agrirouter/common/onboarding.py b/tests/agrirouter/common/onboarding.py index 31123dbd..842aaa65 100644 --- a/tests/agrirouter/common/onboarding.py +++ b/tests/agrirouter/common/onboarding.py @@ -1,5 +1,5 @@ +from agrirouter.service.dto.response.messaging import OnboardResponse from agrirouter.service.onboarding import OnboardParameters -from agrirouter.service.onboarding import OnboardResponse from agrirouter.service.onboarding import OnboardingService from tests.agrirouter.data.applications import CommunicationUnit diff --git a/tests/agrirouter/data/onboard_response_integration_service.py b/tests/agrirouter/data/onboard_response_integration_service.py index dc4d53bb..754d6c06 100644 --- a/tests/agrirouter/data/onboard_response_integration_service.py +++ b/tests/agrirouter/data/onboard_response_integration_service.py @@ -2,7 +2,7 @@ import os import tests -from agrirouter.service.onboarding import OnboardResponse +from agrirouter.service.dto.response.messaging import OnboardResponse def read_onboard_response(identifier: str) -> OnboardResponse: diff --git a/tests/agrirouter/fixtures/update_http_onboard_responses.py b/tests/agrirouter/fixtures/update_http_onboard_responses.py index 7ab5757d..cbcb4231 100644 --- a/tests/agrirouter/fixtures/update_http_onboard_responses.py +++ b/tests/agrirouter/fixtures/update_http_onboard_responses.py @@ -7,9 +7,9 @@ from agrirouter.api.enums import CertificateTypes, Gateways from agrirouter.api.env import Qa from agrirouter.generated.messaging.request.payload.endpoint.capabilities_pb2 import CapabilitySpecification -from agrirouter.service.messaging import CapabilitiesService -from agrirouter.service.messaging import HttpMessagingService -from agrirouter.service.messaging.http import FetchMessageService +from agrirouter.service.messaging.common import HttpMessagingService +from agrirouter.service.messaging.http.message_fetching import FetchMessageService +from agrirouter.service.messaging.message_sending import CapabilitiesService from agrirouter.service.onboarding import OnboardResponse from agrirouter.service.parameter.messaging import CapabilitiesParameters from agrirouter.util.uuid_util import UUIDUtil diff --git a/tests/agrirouter/fixtures/update_mqtt_onboard_responses.py b/tests/agrirouter/fixtures/update_mqtt_onboard_responses.py index 975a9542..e5034ccf 100644 --- a/tests/agrirouter/fixtures/update_mqtt_onboard_responses.py +++ b/tests/agrirouter/fixtures/update_mqtt_onboard_responses.py @@ -5,9 +5,9 @@ from agrirouter.api.env import Qa from agrirouter.api.messages import OutboxMessage from agrirouter.generated.messaging.request.payload.endpoint.capabilities_pb2 import CapabilitySpecification -from agrirouter.service.messaging import CapabilitiesService -from agrirouter.service.messaging import MqttMessagingService +from agrirouter.service.messaging.common import MqttMessagingService from agrirouter.service.messaging.decoding import DecodingService +from agrirouter.service.messaging.message_sending import CapabilitiesService from agrirouter.service.messaging.sequence_numbers import SequenceNumberService from agrirouter.service.parameter.messaging import CapabilitiesParameters from agrirouter.util.uuid_util import UUIDUtil diff --git a/tests/agrirouter/internal/environments/test_environmental_services.py b/tests/agrirouter/internal/environments/test_environmental_services.py index 66dce37e..7f4011fe 100644 --- a/tests/agrirouter/internal/environments/test_environmental_services.py +++ b/tests/agrirouter/internal/environments/test_environmental_services.py @@ -1,8 +1,6 @@ """Test src/env/environmental_services.py""" -from src.agrirouter.env.environmental_services import EnvironmentalService - -from src.agrirouter.api.env import Qa, Production +from src.agrirouter.api.env import Qa, Production, EnvironmentalService def test_arclient_set_env(): diff --git a/tests/agrirouter/internal/messaging/test_decode.py b/tests/agrirouter/internal/messaging/test_decode.py index f2f1eeb3..779fb26d 100644 --- a/tests/agrirouter/internal/messaging/test_decode.py +++ b/tests/agrirouter/internal/messaging/test_decode.py @@ -31,7 +31,7 @@ def test_decode_details(): json_response = json.loads(MESSAGING_RESULT) message = DecodingService.decode_response(json_response[0]["command"]["message"].encode()) details = message.response_payload.details - decoded_details = decode_details(details) + decoded_details = DecodingService.decode_details(details) assert decoded_details.endpoints assert len(decoded_details.endpoints) == 2 diff --git a/tests/agrirouter/internal/onboarding/test_onboarding_dto.py b/tests/agrirouter/internal/onboarding/test_onboarding_dto.py index aeef7479..294c0eee 100644 --- a/tests/agrirouter/internal/onboarding/test_onboarding_dto.py +++ b/tests/agrirouter/internal/onboarding/test_onboarding_dto.py @@ -2,7 +2,7 @@ import pytest from agrirouter.api.exceptions import WrongField -from agrirouter.service.onboarding import ConnectionCriteria, Authentication, ErrorResponse +from agrirouter.service.dto.response.onboarding import Authentication, ConnectionCriteria, ErrorResponse class TestConnectionCriteria: diff --git a/tests/agrirouter/service/messaging/mqtt/test_capability_service.py b/tests/agrirouter/service/messaging/mqtt/test_capability_service.py index c415e764..e07851a0 100644 --- a/tests/agrirouter/service/messaging/mqtt/test_capability_service.py +++ b/tests/agrirouter/service/messaging/mqtt/test_capability_service.py @@ -7,9 +7,9 @@ from agrirouter.api.enums import CapabilityType from agrirouter.api.messages import OutboxMessage from agrirouter.generated.messaging.request.payload.endpoint.capabilities_pb2 import CapabilitySpecification -from agrirouter.service.messaging import CapabilitiesService -from agrirouter.service.messaging import MqttMessagingService +from agrirouter.service.messaging.common import MqttMessagingService from agrirouter.service.messaging.decoding import DecodingService +from agrirouter.service.messaging.message_sending import CapabilitiesService from agrirouter.service.messaging.sequence_numbers import SequenceNumberService from agrirouter.service.parameter.messaging import CapabilitiesParameters from agrirouter.util.uuid_util import UUIDUtil diff --git a/tests/agrirouter/service/messaging/mqtt/test_feed_confirm_service.py b/tests/agrirouter/service/messaging/mqtt/test_feed_confirm_service.py index 11e30c2f..4aaa8b8a 100644 --- a/tests/agrirouter/service/messaging/mqtt/test_feed_confirm_service.py +++ b/tests/agrirouter/service/messaging/mqtt/test_feed_confirm_service.py @@ -6,13 +6,12 @@ from agrirouter.api.enums import CapabilityType from agrirouter.api.messages import OutboxMessage from agrirouter.generated.messaging.request.request_pb2 import RequestEnvelope -from agrirouter.service.dto.messaging import SendMessageParameters -from agrirouter.service.messaging import MqttMessagingService -from agrirouter.service.messaging import SendMessageService, FeedDeleteService, FeedConfirmService +from agrirouter.service.messaging.common import MqttMessagingService from agrirouter.service.messaging.decoding import DecodingService +from agrirouter.service.messaging.message_sending import SendMessageService, FeedDeleteService, FeedConfirmService from agrirouter.service.messaging.sequence_numbers import SequenceNumberService from agrirouter.service.onboarding import OnboardResponse -from agrirouter.service.parameter.messaging import FeedDeleteParameters, FeedConfirmParameters +from agrirouter.service.parameter.messaging import FeedDeleteParameters, FeedConfirmParameters, SendMessageParameters from agrirouter.util.uuid_util import UUIDUtil from tests.agrirouter.common.data_provider import DataProvider from tests.agrirouter.common.sleeper import Sleeper diff --git a/tests/agrirouter/service/messaging/mqtt/test_feed_delete_service.py b/tests/agrirouter/service/messaging/mqtt/test_feed_delete_service.py index 265709d8..9ca32196 100644 --- a/tests/agrirouter/service/messaging/mqtt/test_feed_delete_service.py +++ b/tests/agrirouter/service/messaging/mqtt/test_feed_delete_service.py @@ -6,11 +6,11 @@ from agrirouter.api.enums import CapabilityType from agrirouter.api.messages import OutboxMessage from agrirouter.generated.messaging.request.request_pb2 import RequestEnvelope -from agrirouter.service.messaging import MqttMessagingService -from agrirouter.service.messaging import SendMessageService, SendMessageParameters, FeedDeleteService +from agrirouter.service.messaging.common import MqttMessagingService from agrirouter.service.messaging.decoding import DecodingService +from agrirouter.service.messaging.message_sending import SendMessageService, FeedDeleteService from agrirouter.service.messaging.sequence_numbers import SequenceNumberService -from agrirouter.service.parameter.messaging import FeedDeleteParameters +from agrirouter.service.parameter.messaging import FeedDeleteParameters, SendMessageParameters from agrirouter.util.utc_time_util import UtcTimeUtil from agrirouter.util.uuid_util import UUIDUtil from tests.agrirouter.common.data_provider import DataProvider diff --git a/tests/agrirouter/service/messaging/mqtt/test_list_endpoints_service.py b/tests/agrirouter/service/messaging/mqtt/test_list_endpoints_service.py index d2cbac99..51377b57 100644 --- a/tests/agrirouter/service/messaging/mqtt/test_list_endpoints_service.py +++ b/tests/agrirouter/service/messaging/mqtt/test_list_endpoints_service.py @@ -5,9 +5,9 @@ from agrirouter.api.enums import CapabilityType, CapabilityDirectionType from agrirouter.api.messages import OutboxMessage -from agrirouter.service.messaging import ListEndpointsService -from agrirouter.service.messaging import MqttMessagingService +from agrirouter.service.messaging.common import MqttMessagingService from agrirouter.service.messaging.decoding import DecodingService +from agrirouter.service.messaging.message_sending import ListEndpointsService from agrirouter.service.messaging.sequence_numbers import SequenceNumberService from agrirouter.service.parameter.messaging import ListEndpointsParameters from agrirouter.util.uuid_util import UUIDUtil diff --git a/tests/agrirouter/service/messaging/mqtt/test_publish_message_service.py b/tests/agrirouter/service/messaging/mqtt/test_publish_message_service.py index 098892a3..b130a7c1 100644 --- a/tests/agrirouter/service/messaging/mqtt/test_publish_message_service.py +++ b/tests/agrirouter/service/messaging/mqtt/test_publish_message_service.py @@ -6,12 +6,12 @@ from agrirouter.api.enums import CapabilityType from agrirouter.api.messages import OutboxMessage from agrirouter.generated.messaging.request.request_pb2 import RequestEnvelope -from agrirouter.service.messaging import MqttMessagingService -from agrirouter.service.messaging import SendMessageService, SendMessageParameters, FeedDeleteService +from agrirouter.service.messaging.common import MqttMessagingService from agrirouter.service.messaging.decoding import DecodingService +from agrirouter.service.messaging.message_sending import SendMessageService, FeedDeleteService from agrirouter.service.messaging.sequence_numbers import SequenceNumberService from agrirouter.service.onboarding import OnboardResponse -from agrirouter.service.parameter.messaging import FeedDeleteParameters +from agrirouter.service.parameter.messaging import FeedDeleteParameters, SendMessageParameters from agrirouter.util.uuid_util import UUIDUtil from tests.agrirouter.common.data_provider import DataProvider from tests.agrirouter.common.sleeper import Sleeper diff --git a/tests/agrirouter/service/messaging/mqtt/test_query_header_service.py b/tests/agrirouter/service/messaging/mqtt/test_query_header_service.py index 5267c916..8ecd7ec9 100644 --- a/tests/agrirouter/service/messaging/mqtt/test_query_header_service.py +++ b/tests/agrirouter/service/messaging/mqtt/test_query_header_service.py @@ -7,13 +7,12 @@ from agrirouter.api.enums import CapabilityType from agrirouter.api.messages import OutboxMessage from agrirouter.generated.messaging.request.request_pb2 import RequestEnvelope -from agrirouter.service.messaging import MqttMessagingService -from agrirouter.service.messaging import SendMessageService, SendMessageParameters, FeedDeleteService, \ - QueryHeaderService +from agrirouter.service.messaging.common import MqttMessagingService from agrirouter.service.messaging.decoding import DecodingService +from agrirouter.service.messaging.message_sending import FeedDeleteService, QueryHeaderService, SendMessageService from agrirouter.service.messaging.sequence_numbers import SequenceNumberService from agrirouter.service.onboarding import OnboardResponse -from agrirouter.service.parameter.messaging import FeedDeleteParameters, QueryHeaderParameters +from agrirouter.service.parameter.messaging import FeedDeleteParameters, QueryHeaderParameters, SendMessageParameters from agrirouter.util.utc_time_util import UtcTimeUtil from agrirouter.util.uuid_util import UUIDUtil from tests.agrirouter.common.data_provider import DataProvider diff --git a/tests/agrirouter/service/messaging/mqtt/test_query_message_service.py b/tests/agrirouter/service/messaging/mqtt/test_query_message_service.py index 4f972481..62528c42 100644 --- a/tests/agrirouter/service/messaging/mqtt/test_query_message_service.py +++ b/tests/agrirouter/service/messaging/mqtt/test_query_message_service.py @@ -7,13 +7,12 @@ from agrirouter.api.enums import CapabilityType from agrirouter.api.messages import OutboxMessage from agrirouter.generated.messaging.request.request_pb2 import RequestEnvelope -from agrirouter.service.messaging import MqttMessagingService -from agrirouter.service.messaging import SendMessageService, SendMessageParameters, FeedDeleteService, \ - QueryMessagesService +from agrirouter.service.messaging.common import MqttMessagingService from agrirouter.service.messaging.decoding import DecodingService +from agrirouter.service.messaging.message_sending import SendMessageService, FeedDeleteService, QueryMessagesService from agrirouter.service.messaging.sequence_numbers import SequenceNumberService from agrirouter.service.onboarding import OnboardResponse -from agrirouter.service.parameter.messaging import FeedDeleteParameters, QueryMessageParameters +from agrirouter.service.parameter.messaging import FeedDeleteParameters, QueryMessageParameters, SendMessageParameters from agrirouter.util.utc_time_util import UtcTimeUtil from agrirouter.util.uuid_util import UUIDUtil from tests.agrirouter.common.data_provider import DataProvider diff --git a/tests/agrirouter/service/messaging/mqtt/test_send_and_receive_chunked_messages_from_the_feed.py b/tests/agrirouter/service/messaging/mqtt/test_send_and_receive_chunked_messages_from_the_feed.py index b715f690..8f0a2470 100644 --- a/tests/agrirouter/service/messaging/mqtt/test_send_and_receive_chunked_messages_from_the_feed.py +++ b/tests/agrirouter/service/messaging/mqtt/test_send_and_receive_chunked_messages_from_the_feed.py @@ -7,15 +7,15 @@ from agrirouter.api.enums import CapabilityType, TechnicalMessageType from agrirouter.api.messages import OutboxMessage from agrirouter.generated.messaging.request.request_pb2 import RequestEnvelope -from agrirouter.service.dto.messaging import ChunkedMessageParameters -from agrirouter.service.messaging import FeedDeleteService, SendChunkedMessageService, QueryHeaderService -from agrirouter.service.messaging import MqttMessagingService +from agrirouter.service.messaging.common import MqttMessagingService from agrirouter.service.messaging.decoding import DecodingService from agrirouter.service.messaging.encoding import EncodingService +from agrirouter.service.messaging.message_sending import FeedDeleteService, SendChunkedMessageService, \ + QueryHeaderService from agrirouter.service.messaging.sequence_numbers import SequenceNumberService from agrirouter.service.onboarding import OnboardResponse from agrirouter.service.parameter.messaging import FeedDeleteParameters, MessageHeaderParameters, \ - MessagePayloadParameters, QueryHeaderParameters + MessagePayloadParameters, QueryHeaderParameters, ChunkedMessageParameters from agrirouter.util.uuid_util import UUIDUtil from tests.agrirouter.common.data_provider import DataProvider from tests.agrirouter.common.sleeper import Sleeper diff --git a/tests/agrirouter/service/messaging/mqtt/test_send_chunked_messages_and_receive_with_push_notifications.py b/tests/agrirouter/service/messaging/mqtt/test_send_chunked_messages_and_receive_with_push_notifications.py index fa278463..438c4970 100644 --- a/tests/agrirouter/service/messaging/mqtt/test_send_chunked_messages_and_receive_with_push_notifications.py +++ b/tests/agrirouter/service/messaging/mqtt/test_send_chunked_messages_and_receive_with_push_notifications.py @@ -6,15 +6,14 @@ from agrirouter.api.enums import CapabilityType, TechnicalMessageType from agrirouter.api.messages import OutboxMessage from agrirouter.generated.messaging.request.request_pb2 import RequestEnvelope -from agrirouter.service.dto.messaging import ChunkedMessageParameters -from agrirouter.service.messaging import FeedDeleteService, SendChunkedMessageService -from agrirouter.service.messaging import MqttMessagingService +from agrirouter.service.messaging.common import MqttMessagingService from agrirouter.service.messaging.decoding import DecodingService from agrirouter.service.messaging.encoding import EncodingService +from agrirouter.service.messaging.message_sending import FeedDeleteService, SendChunkedMessageService from agrirouter.service.messaging.sequence_numbers import SequenceNumberService from agrirouter.service.onboarding import OnboardResponse from agrirouter.service.parameter.messaging import FeedDeleteParameters, MessageHeaderParameters, \ - MessagePayloadParameters + MessagePayloadParameters, ChunkedMessageParameters from agrirouter.util.uuid_util import UUIDUtil from tests.agrirouter.common.data_provider import DataProvider from tests.agrirouter.common.sleeper import Sleeper diff --git a/tests/agrirouter/service/messaging/mqtt/test_send_direct_message_service.py b/tests/agrirouter/service/messaging/mqtt/test_send_direct_message_service.py index 1ecb7791..57e14e4c 100644 --- a/tests/agrirouter/service/messaging/mqtt/test_send_direct_message_service.py +++ b/tests/agrirouter/service/messaging/mqtt/test_send_direct_message_service.py @@ -6,12 +6,12 @@ from agrirouter.api.enums import CapabilityType from agrirouter.api.messages import OutboxMessage from agrirouter.generated.messaging.request.request_pb2 import RequestEnvelope -from agrirouter.service.messaging import MqttMessagingService -from agrirouter.service.messaging import SendMessageService, SendMessageParameters, FeedDeleteService +from agrirouter.service.messaging.common import MqttMessagingService from agrirouter.service.messaging.decoding import DecodingService +from agrirouter.service.messaging.message_sending import SendMessageService, FeedDeleteService from agrirouter.service.messaging.sequence_numbers import SequenceNumberService from agrirouter.service.onboarding import OnboardResponse -from agrirouter.service.parameter.messaging import FeedDeleteParameters +from agrirouter.service.parameter.messaging import FeedDeleteParameters, SendMessageParameters from agrirouter.util.uuid_util import UUIDUtil from tests.agrirouter.common.data_provider import DataProvider from tests.agrirouter.common.sleeper import Sleeper diff --git a/tests/agrirouter/service/messaging/mqtt/test_subscription_service.py b/tests/agrirouter/service/messaging/mqtt/test_subscription_service.py index 26db400a..7031dcdc 100644 --- a/tests/agrirouter/service/messaging/mqtt/test_subscription_service.py +++ b/tests/agrirouter/service/messaging/mqtt/test_subscription_service.py @@ -7,9 +7,9 @@ from agrirouter.api.messages import OutboxMessage from agrirouter.generated.messaging.request.payload.endpoint.capabilities_pb2 import CapabilitySpecification from agrirouter.generated.messaging.request.payload.endpoint.subscription_pb2 import Subscription -from agrirouter.service.messaging import MqttMessagingService -from agrirouter.service.messaging import SubscriptionService, CapabilitiesService +from agrirouter.service.messaging.common import MqttMessagingService from agrirouter.service.messaging.decoding import DecodingService +from agrirouter.service.messaging.message_sending import CapabilitiesService, SubscriptionService from agrirouter.service.messaging.sequence_numbers import SequenceNumberService from agrirouter.service.parameter.messaging import SubscriptionParameters, CapabilitiesParameters from agrirouter.util.uuid_util import UUIDUtil