aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/PPC/Modules/Tango.PPC.JobsV2/UndoRedoCommands/UnGroupSegmentsCommand.cs
blob: cbf801266ca5a249b811a283ccf161b6e80df736 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Tango.PPC.Jobs.Models;

namespace Tango.PPC.Jobs.UndoRedoCommands
{
    public class UnGroupSegmentsCommand : IUndoRedoCommand
    {
        private JobModel _jobModel;
        private SegmentsGroupModel _segmentsGroupModel;
        private int _index;

        public UnGroupSegmentsCommand(JobModel jobModel, SegmentsGroupModel segmentsGroup)
        {
            _jobModel = jobModel;
            _segmentsGroupModel = segmentsGroup;
            _index = _jobModel.GroupingSegments.IndexOf(_segmentsGroupModel);
        }
        public void Execute()
        {
            int index = _index;
            foreach( var segment in _segmentsGroupModel.Segments)
            {
                segment.SegmentsGroupModel = null;
                 _jobModel.GroupingSegments.Insert(index++, segment);
            }
            _jobModel.SegmentsGroups.Remove(_segmentsGroupModel);
            _jobModel.GroupingSegments.Remove(_segmentsGroupModel);
            _jobModel.ArrangeSegmentsIndixes();
        }

        public void UnExecute()
        {
            _jobModel.SegmentsGroups.Add(_segmentsGroupModel);
            foreach (var segment in _segmentsGroupModel.Segments)
            {
                segment.SegmentsGroupModel = _segmentsGroupModel;
                _jobModel.GroupingSegments.Remove(segment);
            }

            if (_jobModel.GroupingSegments.Count <= _index)
                _jobModel.GroupingSegments.Add(_segmentsGroupModel);
            else
            {
                _jobModel.GroupingSegments.Insert(_index, _segmentsGroupModel);
            }
           
            _jobModel.ArrangeSegmentsIndixes();
        }
    }
}
// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: HardwareMotor.proto

#define INTERNAL_SUPPRESS_PROTOBUF_FIELD_DEPRECATION
#include "HardwareMotor.pb.h"

#include <algorithm>

#include <google/protobuf/stubs/common.h>
#include <google/protobuf/stubs/port.h>
#include <google/protobuf/stubs/once.h>
#include <google/protobuf/io/coded_stream.h>
#include <google/protobuf/wire_format_lite_inl.h>
#include <google/protobuf/descriptor.h>
#include <google/protobuf/generated_message_reflection.h>
#include <google/protobuf/reflection_ops.h>
#include <google/protobuf/wire_format.h>
// @@protoc_insertion_point(includes)

namespace Tango {
namespace PMR {
namespace Hardware {
class HardwareMotorDefaultTypeInternal {
public:
 ::google::protobuf::internal::ExplicitlyConstructed<HardwareMotor>
     _instance;
} _HardwareMotor_default_instance_;

namespace protobuf_HardwareMotor_2eproto {


namespace {

::google::protobuf::Metadata file_level_metadata[1];

}  // namespace

PROTOBUF_CONSTEXPR_VAR ::google::protobuf::internal::ParseTableField
    const TableStruct::entries[] GOOGLE_ATTRIBUTE_SECTION_VARIABLE(protodesc_cold) = {
  {0, 0, 0, ::google::protobuf::internal::kInvalidMask, 0, 0},
};

PROTOBUF_CONSTEXPR_VAR ::google::protobuf::internal::AuxillaryParseTableField
    const TableStruct::aux[] GOOGLE_ATTRIBUTE_SECTION_VARIABLE(protodesc_cold) = {
  ::google::protobuf::internal::AuxillaryParseTableField(),
};
PROTOBUF_CONSTEXPR_VAR ::google::protobuf::internal::ParseTable const
    TableStruct::schema[] GOOGLE_ATTRIBUTE_SECTION_VARIABLE(protodesc_cold) = {
  { NULL, NULL, 0, -1, -1, -1, -1, NULL, false },
};

const ::google::protobuf::uint32 TableStruct::offsets[] GOOGLE_ATTRIBUTE_SECTION_VARIABLE(protodesc_cold) = {
  ~0u,  // no _has_bits_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(HardwareMotor, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(HardwareMotor, hardwaremotortype_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(HardwareMotor, minfrequency_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(HardwareMotor, maxfrequency_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(HardwareMotor, setmicrostep_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(HardwareMotor, microstep_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(HardwareMotor, maxchangeslope_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(HardwareMotor, highlengthmicrosecond_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(HardwareMotor, speedmaster_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(HardwareMotor, pulseperround_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(HardwareMotor, pulleyradius_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(HardwareMotor, configword_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(HardwareMotor, directionthreadwize_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(HardwareMotor, kvalhold_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(HardwareMotor, kvalrun_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(HardwareMotor, kvalacc_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(HardwareMotor, kvaldec_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(HardwareMotor, overcurrentthreshold_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(HardwareMotor, stallthreshold_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(HardwareMotor, thermalcompensationfactor_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(HardwareMotor, lowspeedoptimization_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(HardwareMotor, stslp_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(HardwareMotor, intspd_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(HardwareMotor, fnslpacc_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(HardwareMotor, fnslpdec_),
};
static const ::google::protobuf::internal::MigrationSchema schemas[] GOOGLE_ATTRIBUTE_SECTION_VARIABLE(protodesc_cold) = {
  { 0, -1, sizeof(HardwareMotor)},
};

static ::google::protobuf::Message const * const file_default_instances[] = {
  reinterpret_cast<const ::google::protobuf::Message*>(&_HardwareMotor_default_instance_),
};

namespace {

void protobuf_AssignDescriptors() {
  AddDescriptors();
  ::google::protobuf::MessageFactory* factory = NULL;
  AssignDescriptors(
      "HardwareMotor.proto", schemas, file_default_instances, TableStruct::offsets, factory,
      file_level_metadata, NULL, NULL);
}

void protobuf_AssignDescriptorsOnce() {
  static GOOGLE_PROTOBUF_DECLARE_ONCE(once);
  ::google::protobuf::GoogleOnceInit(&once, &protobuf_AssignDescriptors);
}

void protobuf_RegisterTypes(const ::std::string&) GOOGLE_ATTRIBUTE_COLD;
void protobuf_RegisterTypes(const ::std::string&) {
  protobuf_AssignDescriptorsOnce();
  ::google::protobuf::internal::RegisterAllTypes(file_level_metadata, 1);
}

}  // namespace
void TableStruct::InitDefaultsImpl() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  ::google::protobuf::internal::InitProtobufDefaults();
  ::Tango::PMR::Hardware::protobuf_HardwareMotorType_2eproto::InitDefaults();
  _HardwareMotor_default_instance_._instance.DefaultConstruct();
  ::google::protobuf::internal::OnShutdownDestroyMessage(
      &_HardwareMotor_default_instance_);}

void InitDefaults() {
  static GOOGLE_PROTOBUF_DECLARE_ONCE(once);
  ::google::protobuf::GoogleOnceInit(&once, &TableStruct::InitDefaultsImpl);
}
namespace {
void AddDescriptorsImpl() {
  InitDefaults();
  static const char descriptor[] GOOGLE_ATTRIBUTE_SECTION_VARIABLE(protodesc_cold) = {
      "\n\023HardwareMotor.proto\022\022Tango.PMR.Hardwar"
      "e\032\027HardwareMotorType.proto\"\317\004\n\rHardwareM"
      "otor\022@\n\021HardwareMotorType\030\001 \001(\0162%.Tango."
      "PMR.Hardware.HardwareMotorType\022\024\n\014MinFre"
      "quency\030\002 \001(\005\022\024\n\014MaxFrequency\030\003 \001(\005\022\024\n\014Se"
      "tMicroStep\030\004 \001(\005\022\021\n\tMicroStep\030\005 \001(\005\022\026\n\016M"
      "axChangeSlope\030\006 \001(\001\022\035\n\025HighLengthMicroSe"
      "cond\030\007 \001(\001\022\023\n\013SpeedMaster\030\010 \001(\010\022\025\n\rPulse"
      "PerRound\030\t \001(\005\022\024\n\014PulleyRadius\030\n \001(\001\022\022\n\n"
      "ConfigWord\030\013 \001(\005\022\033\n\023DirectionThreadWize\030"
      "\014 \001(\010\022\020\n\010KvalHold\030\r \001(\005\022\017\n\007KvalRun\030\016 \001(\005"
      "\022\017\n\007KvalAcc\030\017 \001(\005\022\017\n\007KvalDec\030\020 \001(\005\022\034\n\024Ov"
      "erCurrentThreshold\030\021 \001(\005\022\026\n\016StallThresho"
      "ld\030\022 \001(\005\022!\n\031ThermalCompensationFactor\030\023 "
      "\001(\005\022\034\n\024LowSpeedOptimization\030\024 \001(\010\022\r\n\005StS"
      "lp\030\025 \001(\005\022\016\n\006IntSpd\030\026 \001(\005\022\020\n\010FnSlpAcc\030\027 \001"
      "(\005\022\020\n\010FnSlpDec\030\030 \001(\005B\036\n\034com.twine.tango."
      "pmr.hardwareb\006proto3"
  };
  ::google::protobuf::DescriptorPool::InternalAddGeneratedFile(
      descriptor, 700);
  ::google::protobuf::MessageFactory::InternalRegisterGeneratedFile(
    "HardwareMotor.proto", &protobuf_RegisterTypes);
  ::Tango::PMR::Hardware::protobuf_HardwareMotorType_2eproto::AddDescriptors();
}
} // anonymous namespace

void AddDescriptors() {
  static GOOGLE_PROTOBUF_DECLARE_ONCE(once);
  ::google::protobuf::GoogleOnceInit(&once, &AddDescriptorsImpl);
}
// Force AddDescriptors() to be called at dynamic initialization time.
struct StaticDescriptorInitializer {
  StaticDescriptorInitializer() {
    AddDescriptors();
  }
} static_descriptor_initializer;

}  // namespace protobuf_HardwareMotor_2eproto


// ===================================================================

#if !defined(_MSC_VER) || _MSC_VER >= 1900
const int HardwareMotor::kHardwareMotorTypeFieldNumber;
const int HardwareMotor::kMinFrequencyFieldNumber;
const int HardwareMotor::kMaxFrequencyFieldNumber;
const int HardwareMotor::kSetMicroStepFieldNumber;
const int HardwareMotor::kMicroStepFieldNumber;
const int HardwareMotor::kMaxChangeSlopeFieldNumber;
const int HardwareMotor::kHighLengthMicroSecondFieldNumber;
const int HardwareMotor::kSpeedMasterFieldNumber;
const int HardwareMotor::kPulsePerRoundFieldNumber;
const int HardwareMotor::kPulleyRadiusFieldNumber;
const int HardwareMotor::kConfigWordFieldNumber;
const int HardwareMotor::kDirectionThreadWizeFieldNumber;
const int HardwareMotor::kKvalHoldFieldNumber;
const int HardwareMotor::kKvalRunFieldNumber;
const int HardwareMotor::kKvalAccFieldNumber;
const int HardwareMotor::kKvalDecFieldNumber;
const int HardwareMotor::kOverCurrentThresholdFieldNumber;
const int HardwareMotor::kStallThresholdFieldNumber;
const int HardwareMotor::kThermalCompensationFactorFieldNumber;
const int HardwareMotor::kLowSpeedOptimizationFieldNumber;
const int HardwareMotor::kStSlpFieldNumber;
const int HardwareMotor::kIntSpdFieldNumber;
const int HardwareMotor::kFnSlpAccFieldNumber;
const int HardwareMotor::kFnSlpDecFieldNumber;
#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900

HardwareMotor::HardwareMotor()
  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
  if (GOOGLE_PREDICT_TRUE(this != internal_default_instance())) {
    protobuf_HardwareMotor_2eproto::InitDefaults();
  }
  SharedCtor();
  // @@protoc_insertion_point(constructor:Tango.PMR.Hardware.HardwareMotor)
}
HardwareMotor::HardwareMotor(const HardwareMotor& from)
  : ::google::protobuf::Message(),
      _internal_metadata_(NULL),
      _cached_size_(0) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  ::memcpy(&hardwaremotortype_, &from.hardwaremotortype_,
    static_cast<size_t>(reinterpret_cast<char*>(&fnslpdec_) -
    reinterpret_cast<char*>(&hardwaremotortype_)) + sizeof(fnslpdec_));
  // @@protoc_insertion_point(copy_constructor:Tango.PMR.Hardware.HardwareMotor)
}

void HardwareMotor::SharedCtor() {
  ::memset(&hardwaremotortype_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&fnslpdec_) -
      reinterpret_cast<char*>(&hardwaremotortype_)) + sizeof(fnslpdec_));
  _cached_size_ = 0;
}

HardwareMotor::~HardwareMotor() {
  // @@protoc_insertion_point(destructor:Tango.PMR.Hardware.HardwareMotor)
  SharedDtor();
}

void HardwareMotor::SharedDtor() {
}

void HardwareMotor::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const ::google::protobuf::Descriptor* HardwareMotor::descriptor() {
  protobuf_HardwareMotor_2eproto::protobuf_AssignDescriptorsOnce();
  return protobuf_HardwareMotor_2eproto::file_level_metadata[kIndexInFileMessages].descriptor;
}

const HardwareMotor& HardwareMotor::default_instance() {
  protobuf_HardwareMotor_2eproto::InitDefaults();
  return *internal_default_instance();
}

HardwareMotor* HardwareMotor::New(::google::protobuf::Arena* arena) const {
  HardwareMotor* n = new HardwareMotor;
  if (arena != NULL) {
    arena->Own(n);
  }
  return n;
}

void HardwareMotor::Clear() {
// @@protoc_insertion_point(message_clear_start:Tango.PMR.Hardware.HardwareMotor)
  ::google::protobuf::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  ::memset(&hardwaremotortype_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&fnslpdec_) -
      reinterpret_cast<char*>(&hardwaremotortype_)) + sizeof(fnslpdec_));
  _internal_metadata_.Clear();
}

bool HardwareMotor::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
  ::google::protobuf::uint32 tag;
  // @@protoc_insertion_point(parse_start:Tango.PMR.Hardware.HardwareMotor)
  for (;;) {
    ::std::pair< ::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(16383u);
    tag = p.first;
    if (!p.second) goto handle_unusual;
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // .Tango.PMR.Hardware.HardwareMotorType HardwareMotorType = 1;
      case 1: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(8u /* 8 & 0xFF */)) {
          int value;
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
                 input, &value)));
          set_hardwaremotortype(static_cast< ::Tango::PMR::Hardware::HardwareMotorType >(value));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // int32 MinFrequency = 2;
      case 2: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(16u /* 16 & 0xFF */)) {

          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
                 input, &minfrequency_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // int32 MaxFrequency = 3;
      case 3: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(24u /* 24 & 0xFF */)) {

          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
                 input, &maxfrequency_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // int32 SetMicroStep = 4;
      case 4: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(32u /* 32 & 0xFF */)) {

          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
                 input, &setmicrostep_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // int32 MicroStep = 5;
      case 5: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(40u /* 40 & 0xFF */)) {

          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
                 input, &microstep_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // double MaxChangeSlope = 6;
      case 6: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(49u /* 49 & 0xFF */)) {

          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   double, ::google::protobuf::internal::WireFormatLite::TYPE_DOUBLE>(
                 input, &maxchangeslope_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // double HighLengthMicroSecond = 7;
      case 7: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(57u /* 57 & 0xFF */)) {

          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   double, ::google::protobuf::internal::WireFormatLite::TYPE_DOUBLE>(
                 input, &highlengthmicrosecond_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // bool SpeedMaster = 8;
      case 8: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(64u /* 64 & 0xFF */)) {

          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
                 input, &speedmaster_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // int32 PulsePerRound = 9;
      case 9: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(72u /* 72 & 0xFF */)) {

          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
                 input, &pulseperround_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // double PulleyRadius = 10;
      case 10: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(81u /* 81 & 0xFF */)) {

          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   double, ::google::protobuf::internal::WireFormatLite::TYPE_DOUBLE>(
                 input, &pulleyradius_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // int32 ConfigWord = 11;
      case 11: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(88u /* 88 & 0xFF */)) {

          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
                 input, &configword_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // bool DirectionThreadWize = 12;
      case 12: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(96u /* 96 & 0xFF */)) {

          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
                 input, &directionthreadwize_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // int32 KvalHold = 13;
      case 13: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(104u /* 104 & 0xFF */)) {

          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
                 input, &kvalhold_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // int32 KvalRun = 14;
      case 14: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(112u /* 112 & 0xFF */)) {

          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
                 input, &kvalrun_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // int32 KvalAcc = 15;
      case 15: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(120u /* 120 & 0xFF */)) {

          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
                 input, &kvalacc_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // int32 KvalDec = 16;
      case 16: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(128u /* 128 & 0xFF */)) {

          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
                 input, &kvaldec_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // int32 OverCurrentThreshold = 17;
      case 17: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(136u /* 136 & 0xFF */)) {

          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
                 input, &overcurrentthreshold_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // int32 StallThreshold = 18;
      case 18: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(144u /* 144 & 0xFF */)) {

          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
                 input, &stallthreshold_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // int32 ThermalCompensationFactor = 19;
      case 19: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(152u /* 152 & 0xFF */)) {

          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
                 input, &thermalcompensationfactor_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // bool LowSpeedOptimization = 20;
      case 20: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(160u /* 160 & 0xFF */)) {

          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
                 input, &lowspeedoptimization_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // int32 StSlp = 21;
      case 21: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(168u /* 168 & 0xFF */)) {

          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
                 input, &stslp_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // int32 IntSpd = 22;
      case 22: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(176u /* 176 & 0xFF */)) {

          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
                 input, &intspd_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // int32 FnSlpAcc = 23;
      case 23: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(184u /* 184 & 0xFF */)) {

          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
                 input, &fnslpacc_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // int32 FnSlpDec = 24;
      case 24: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(192u /* 192 & 0xFF */)) {

          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
                 input, &fnslpdec_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      default: {
      handle_unusual:
        if (tag == 0) {
          goto success;
        }
        DO_(::google::protobuf::internal::WireFormat::SkipField(
              input, tag, _internal_metadata_.mutable_unknown_fields()));
        break;
      }
    }
  }
success:
  // @@protoc_insertion_point(parse_success:Tango.PMR.Hardware.HardwareMotor)
  return true;
failure:
  // @@protoc_insertion_point(parse_failure:Tango.PMR.Hardware.HardwareMotor)
  return false;
#undef DO_
}

void HardwareMotor::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // @@protoc_insertion_point(serialize_start:Tango.PMR.Hardware.HardwareMotor)
  ::google::protobuf::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  // .Tango.PMR.Hardware.HardwareMotorType HardwareMotorType = 1;
  if (this->hardwaremotortype() != 0) {
    ::google::protobuf::internal::WireFormatLite::WriteEnum(
      1, this->hardwaremotortype(), output);
  }

  // int32 MinFrequency = 2;
  if (this->minfrequency() != 0) {
    ::google::protobuf::internal::WireFormatLite::WriteInt32(2, this->minfrequency(), output);
  }

  // int32 MaxFrequency = 3;
  if (this->maxfrequency() != 0) {
    ::google::protobuf::internal::WireFormatLite::WriteInt32(3, this->maxfrequency(), output);
  }

  // int32 SetMicroStep = 4;
  if (this->setmicrostep() != 0) {
    ::google::protobuf::internal::WireFormatLite::WriteInt32(4, this->setmicrostep(), output);
  }

  // int32 MicroStep = 5;
  if (this->microstep() != 0) {
    ::google::protobuf::internal::WireFormatLite::WriteInt32(5, this->microstep(), output);
  }

  // double MaxChangeSlope = 6;
  if (this->maxchangeslope() != 0) {
    ::google::protobuf::internal::WireFormatLite::WriteDouble(6, this->maxchangeslope(), output);
  }

  // double HighLengthMicroSecond = 7;
  if (this->highlengthmicrosecond() != 0) {
    ::google::protobuf::internal::WireFormatLite::WriteDouble(7, this->highlengthmicrosecond(), output);
  }

  // bool SpeedMaster = 8;
  if (this->speedmaster() != 0) {
    ::google::protobuf::internal::WireFormatLite::WriteBool(8, this->speedmaster(), output);
  }

  // int32 PulsePerRound = 9;
  if (this->pulseperround() != 0) {
    ::google::protobuf::internal::WireFormatLite::WriteInt32(9, this->pulseperround(), output);
  }

  // double PulleyRadius = 10;
  if (this->pulleyradius() != 0) {
    ::google::protobuf::internal::WireFormatLite::WriteDouble(10, this->pulleyradius(), output);
  }

  // int32 ConfigWord = 11;
  if (this->configword() != 0) {
    ::google::protobuf::internal::WireFormatLite::WriteInt32(11, this->configword(), output);
  }

  // bool DirectionThreadWize = 12;
  if (this->directionthreadwize() != 0) {
    ::google::protobuf::internal::WireFormatLite::WriteBool(12, this->directionthreadwize(), output);
  }

  // int32 KvalHold = 13;
  if (this->kvalhold() != 0) {
    ::google::protobuf::internal::WireFormatLite::WriteInt32(13, this->kvalhold(), output);
  }

  // int32 KvalRun = 14;
  if (this->kvalrun() != 0) {
    ::google::protobuf::internal::WireFormatLite::WriteInt32(14, this->kvalrun(), output);
  }

  // int32 KvalAcc = 15;
  if (this->kvalacc() != 0) {
    ::google::protobuf::internal::WireFormatLite::WriteInt32(15, this->kvalacc(), output);
  }

  // int32 KvalDec = 16;
  if (this->kvaldec() != 0) {
    ::google::protobuf::internal::WireFormatLite::WriteInt32(16, this->kvaldec(), output);
  }

  // int32 OverCurrentThreshold = 17;
  if (this->overcurrentthreshold() != 0) {
    ::google::protobuf::internal::WireFormatLite::WriteInt32(17, this->overcurrentthreshold(), output);
  }

  // int32 StallThreshold = 18;
  if (this->stallthreshold() != 0) {
    ::google::protobuf::internal::WireFormatLite::WriteInt32(18, this->stallthreshold(), output);
  }

  // int32 ThermalCompensationFactor = 19;
  if (this->thermalcompensationfactor() != 0) {
    ::google::protobuf::internal::WireFormatLite::WriteInt32(19, this->thermalcompensationfactor(), output);
  }

  // bool LowSpeedOptimization = 20;
  if (this->lowspeedoptimization() != 0) {
    ::google::protobuf::internal::WireFormatLite::WriteBool(20, this->lowspeedoptimization(), output);
  }

  // int32 StSlp = 21;
  if (this->stslp() != 0) {
    ::google::protobuf::internal::WireFormatLite::WriteInt32(21, this->stslp(), output);
  }

  // int32 IntSpd = 22;
  if (this->intspd() != 0) {
    ::google::protobuf::internal::WireFormatLite::WriteInt32(22, this->intspd(), output);
  }

  // int32 FnSlpAcc = 23;
  if (this->fnslpacc() != 0) {
    ::google::protobuf::internal::WireFormatLite::WriteInt32(23, this->fnslpacc(), output);
  }

  // int32 FnSlpDec = 24;
  if (this->fnslpdec() != 0) {
    ::google::protobuf::internal::WireFormatLite::WriteInt32(24, this->fnslpdec(), output);
  }

  if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
        (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()), output);
  }
  // @@protoc_insertion_point(serialize_end:Tango.PMR.Hardware.HardwareMotor)
}

::google::protobuf::uint8* HardwareMotor::InternalSerializeWithCachedSizesToArray(
    bool deterministic, ::google::protobuf::uint8* target) const {
  (void)deterministic; // Unused
  // @@protoc_insertion_point(serialize_to_array_start:Tango.PMR.Hardware.HardwareMotor)
  ::google::protobuf::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  // .Tango.PMR.Hardware.HardwareMotorType HardwareMotorType = 1;
  if (this->hardwaremotortype() != 0) {
    target = ::google::protobuf::internal::WireFormatLite::WriteEnumToArray(
      1, this->hardwaremotortype(), target);
  }

  // int32 MinFrequency = 2;
  if (this->minfrequency() != 0) {
    target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(2, this->minfrequency(), target);
  }

  // int32 MaxFrequency = 3;
  if (this->maxfrequency() != 0) {
    target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(3, this->maxfrequency(), target);
  }

  // int32 SetMicroStep = 4;
  if (this->setmicrostep() != 0) {
    target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(4, this->setmicrostep(), target);
  }

  // int32 MicroStep = 5;
  if (this->microstep() != 0) {
    target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(5, this->microstep(), target);
  }

  // double MaxChangeSlope = 6;
  if (this->maxchangeslope() != 0) {
    target = ::google::protobuf::internal::WireFormatLite::WriteDoubleToArray(6, this->maxchangeslope(), target);
  }

  // double HighLengthMicroSecond = 7;
  if (this->highlengthmicrosecond() != 0) {
    target = ::google::protobuf::internal::WireFormatLite::WriteDoubleToArray(7, this->highlengthmicrosecond(), target);
  }

  // bool SpeedMaster = 8;
  if (this->speedmaster() != 0) {
    target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(8, this->speedmaster(), target);
  }

  // int32 PulsePerRound = 9;
  if (this->pulseperround() != 0) {
    target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(9, this->pulseperround(), target);
  }

  // double PulleyRadius = 10;
  if (this->pulleyradius() != 0) {
    target = ::google::protobuf::internal::WireFormatLite::WriteDoubleToArray(10, this->pulleyradius(), target);
  }

  // int32 ConfigWord = 11;
  if (this->configword() != 0) {
    target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(11, this->configword(), target);
  }

  // bool DirectionThreadWize = 12;
  if (this->directionthreadwize() != 0) {
    target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(12, this->directionthreadwize(), target);
  }

  // int32 KvalHold = 13;
  if (this->kvalhold() != 0) {
    target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(13, this->kvalhold(), target);
  }

  // int32 KvalRun = 14;
  if (this->kvalrun() != 0) {
    target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(14, this->kvalrun(), target);
  }

  // int32 KvalAcc = 15;
  if (this->kvalacc() != 0) {
    target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(15, this->kvalacc(), target);
  }

  // int32 KvalDec = 16;
  if (this->kvaldec() != 0) {
    target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(16, this->kvaldec(), target);
  }

  // int32 OverCurrentThreshold = 17;
  if (this->overcurrentthreshold() != 0) {
    target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(17, this->overcurrentthreshold(), target);
  }

  // int32 StallThreshold = 18;
  if (this->stallthreshold() != 0) {
    target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(18, this->stallthreshold(), target);
  }

  // int32 ThermalCompensationFactor = 19;
  if (this->thermalcompensationfactor() != 0) {
    target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(19, this->thermalcompensationfactor(), target);
  }

  // bool LowSpeedOptimization = 20;
  if (this->lowspeedoptimization() != 0) {
    target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(20, this->lowspeedoptimization(), target);
  }

  // int32 StSlp = 21;
  if (this->stslp() != 0) {
    target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(21, this->stslp(), target);
  }

  // int32 IntSpd = 22;
  if (this->intspd() != 0) {
    target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(22, this->intspd(), target);
  }

  // int32 FnSlpAcc = 23;
  if (this->fnslpacc() != 0) {
    target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(23, this->fnslpacc(), target);
  }

  // int32 FnSlpDec = 24;
  if (this->fnslpdec() != 0) {
    target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(24, this->fnslpdec(), target);
  }

  if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
        (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()), target);
  }
  // @@protoc_insertion_point(serialize_to_array_end:Tango.PMR.Hardware.HardwareMotor)
  return target;
}

size_t HardwareMotor::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:Tango.PMR.Hardware.HardwareMotor)
  size_t total_size = 0;

  if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
    total_size +=
      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
        (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()));
  }
  // .Tango.PMR.Hardware.HardwareMotorType HardwareMotorType = 1;
  if (this->hardwaremotortype() != 0) {
    total_size += 1 +
      ::google::protobuf::internal::WireFormatLite::EnumSize(this->hardwaremotortype());
  }

  // int32 MinFrequency = 2;
  if (this->minfrequency() != 0) {
    total_size += 1 +
      ::google::protobuf::internal::WireFormatLite::Int32Size(
        this->minfrequency());
  }

  // int32 MaxFrequency = 3;
  if (this->maxfrequency() != 0) {
    total_size += 1 +
      ::google::protobuf::internal::WireFormatLite::Int32Size(
        this->maxfrequency());
  }

  // int32 SetMicroStep = 4;
  if (this->setmicrostep() != 0) {
    total_size += 1 +
      ::google::protobuf::internal::WireFormatLite::Int32Size(
        this->setmicrostep());
  }

  // double MaxChangeSlope = 6;
  if (this->maxchangeslope() != 0) {
    total_size += 1 + 8;
  }

  // double HighLengthMicroSecond = 7;
  if (this->highlengthmicrosecond() != 0) {
    total_size += 1 + 8;
  }

  // int32 MicroStep = 5;
  if (this->microstep() != 0) {
    total_size += 1 +
      ::google::protobuf::internal::WireFormatLite::Int32Size(
        this->microstep());
  }

  // int32 PulsePerRound = 9;
  if (this->pulseperround() != 0) {
    total_size += 1 +
      ::google::protobuf::internal::WireFormatLite::Int32Size(
        this->pulseperround());
  }

  // double PulleyRadius = 10;
  if (this->pulleyradius() != 0) {
    total_size += 1 + 8;
  }

  // int32 ConfigWord = 11;
  if (this->configword() != 0) {
    total_size += 1 +
      ::google::protobuf::internal::WireFormatLite::Int32Size(
        this->configword());
  }

  // int32 KvalHold = 13;
  if (this->kvalhold() != 0) {
    total_size += 1 +
      ::google::protobuf::internal::WireFormatLite::Int32Size(
        this->kvalhold());
  }

  // bool SpeedMaster = 8;
  if (this->speedmaster() != 0) {
    total_size += 1 + 1;
  }

  // bool DirectionThreadWize = 12;
  if (this->directionthreadwize() != 0) {
    total_size += 1 + 1;
  }

  // bool LowSpeedOptimization = 20;
  if (this->lowspeedoptimization() != 0) {
    total_size += 2 + 1;
  }

  // int32 KvalRun = 14;
  if (this->kvalrun() != 0) {
    total_size += 1 +
      ::google::protobuf::internal::WireFormatLite::Int32Size(
        this->kvalrun());
  }

  // int32 KvalAcc = 15;
  if (this->kvalacc() != 0) {
    total_size += 1 +
      ::google::protobuf::internal::WireFormatLite::Int32Size(
        this->kvalacc());
  }

  // int32 KvalDec = 16;
  if (this->kvaldec() != 0) {
    total_size += 2 +
      ::google::protobuf::internal::WireFormatLite::Int32Size(
        this->kvaldec());
  }

  // int32 OverCurrentThreshold = 17;
  if (this->overcurrentthreshold() != 0) {
    total_size += 2 +
      ::google::protobuf::internal::WireFormatLite::Int32Size(
        this->overcurrentthreshold());
  }

  // int32 StallThreshold = 18;
  if (this->stallthreshold() != 0) {
    total_size += 2 +
      ::google::protobuf::internal::WireFormatLite::Int32Size(
        this->stallthreshold());
  }

  // int32 ThermalCompensationFactor = 19;
  if (this->thermalcompensationfactor() != 0) {
    total_size += 2 +
      ::google::protobuf::internal::WireFormatLite::Int32Size(
        this->thermalcompensationfactor());
  }

  // int32 StSlp = 21;
  if (this->stslp() != 0) {
    total_size += 2 +
      ::google::protobuf::internal::WireFormatLite::Int32Size(
        this->stslp());
  }

  // int32 IntSpd = 22;
  if (this->intspd() != 0) {
    total_size += 2 +
      ::google::protobuf::internal::WireFormatLite::Int32Size(
        this->intspd());
  }

  // int32 FnSlpAcc = 23;
  if (this->fnslpacc() != 0) {
    total_size += 2 +
      ::google::protobuf::internal::WireFormatLite::Int32Size(
        this->fnslpacc());
  }

  // int32 FnSlpDec = 24;
  if (this->fnslpdec() != 0) {
    total_size += 2 +
      ::google::protobuf::internal::WireFormatLite::Int32Size(
        this->fnslpdec());
  }

  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = cached_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void HardwareMotor::MergeFrom(const ::google::protobuf::Message& from) {
// @@protoc_insertion_point(generalized_merge_from_start:Tango.PMR.Hardware.HardwareMotor)
  GOOGLE_DCHECK_NE(&from, this);
  const HardwareMotor* source =
      ::google::protobuf::internal::DynamicCastToGenerated<const HardwareMotor>(
          &from);
  if (source == NULL) {
  // @@protoc_insertion_point(generalized_merge_from_cast_fail:Tango.PMR.Hardware.HardwareMotor)
    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
  } else {
  // @@protoc_insertion_point(generalized_merge_from_cast_success:Tango.PMR.Hardware.HardwareMotor)
    MergeFrom(*source);
  }
}

void HardwareMotor::MergeFrom(const HardwareMotor& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:Tango.PMR.Hardware.HardwareMotor)
  GOOGLE_DCHECK_NE(&from, this);
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  ::google::protobuf::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  if (from.hardwaremotortype() != 0) {
    set_hardwaremotortype(from.hardwaremotortype());
  }
  if (from.minfrequency() != 0) {
    set_minfrequency(from.minfrequency());
  }
  if (from.maxfrequency() != 0) {
    set_maxfrequency(from.maxfrequency());
  }
  if (from.setmicrostep() != 0) {
    set_setmicrostep(from.setmicrostep());
  }
  if (from.maxchangeslope() != 0) {
    set_maxchangeslope(from.maxchangeslope());
  }
  if (from.highlengthmicrosecond() != 0) {
    set_highlengthmicrosecond(from.highlengthmicrosecond());
  }
  if (from.microstep() != 0) {
    set_microstep(from.microstep());
  }
  if (from.pulseperround() != 0) {
    set_pulseperround(from.pulseperround());
  }
  if (from.pulleyradius() != 0) {
    set_pulleyradius(from.pulleyradius());
  }
  if (from.configword() != 0) {
    set_configword(from.configword());
  }
  if (from.kvalhold() != 0) {
    set_kvalhold(from.kvalhold());
  }
  if (from.speedmaster() != 0) {
    set_speedmaster(from.speedmaster());
  }
  if (from.directionthreadwize() != 0) {
    set_directionthreadwize(from.directionthreadwize());
  }
  if (from.lowspeedoptimization() != 0) {
    set_lowspeedoptimization(from.lowspeedoptimization());
  }
  if (from.kvalrun() != 0) {
    set_kvalrun(from.kvalrun());
  }
  if (from.kvalacc() != 0) {
    set_kvalacc(from.kvalacc());
  }
  if (from.kvaldec() != 0) {
    set_kvaldec(from.kvaldec());
  }
  if (from.overcurrentthreshold() != 0) {
    set_overcurrentthreshold(from.overcurrentthreshold());
  }
  if (from.stallthreshold() != 0) {
    set_stallthreshold(from.stallthreshold());
  }
  if (from.thermalcompensationfactor() != 0) {
    set_thermalcompensationfactor(from.thermalcompensationfactor());
  }
  if (from.stslp() != 0) {
    set_stslp(from.stslp());
  }
  if (from.intspd() != 0) {
    set_intspd(from.intspd());
  }
  if (from.fnslpacc() != 0) {
    set_fnslpacc(from.fnslpacc());
  }
  if (from.fnslpdec() != 0) {
    set_fnslpdec(from.fnslpdec());
  }
}

void HardwareMotor::CopyFrom(const ::google::protobuf::Message& from) {
// @@protoc_insertion_point(generalized_copy_from_start:Tango.PMR.Hardware.HardwareMotor)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

void HardwareMotor::CopyFrom(const HardwareMotor& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:Tango.PMR.Hardware.HardwareMotor)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool HardwareMotor::IsInitialized() const {
  return true;
}

void HardwareMotor::Swap(HardwareMotor* other) {
  if (other == this) return;
  InternalSwap(other);
}
void HardwareMotor::InternalSwap(HardwareMotor* other) {
  using std::swap;
  swap(hardwaremotortype_, other->hardwaremotortype_);
  swap(minfrequency_, other->minfrequency_);
  swap(maxfrequency_, other->maxfrequency_);
  swap(setmicrostep_, other->setmicrostep_);
  swap(maxchangeslope_, other->maxchangeslope_);
  swap(highlengthmicrosecond_, other->highlengthmicrosecond_);
  swap(microstep_, other->microstep_);
  swap(pulseperround_, other->pulseperround_);
  swap(pulleyradius_, other->pulleyradius_);
  swap(configword_, other->configword_);
  swap(kvalhold_, other->kvalhold_);
  swap(speedmaster_, other->speedmaster_);
  swap(directionthreadwize_, other->directionthreadwize_);
  swap(lowspeedoptimization_, other->lowspeedoptimization_);
  swap(kvalrun_, other->kvalrun_);
  swap(kvalacc_, other->kvalacc_);
  swap(kvaldec_, other->kvaldec_);
  swap(overcurrentthreshold_, other->overcurrentthreshold_);
  swap(stallthreshold_, other->stallthreshold_);
  swap(thermalcompensationfactor_, other->thermalcompensationfactor_);
  swap(stslp_, other->stslp_);
  swap(intspd_, other->intspd_);
  swap(fnslpacc_, other->fnslpacc_);
  swap(fnslpdec_, other->fnslpdec_);
  _internal_metadata_.Swap(&other->_internal_metadata_);
  swap(_cached_size_, other->_cached_size_);
}

::google::protobuf::Metadata HardwareMotor::GetMetadata() const {
  protobuf_HardwareMotor_2eproto::protobuf_AssignDescriptorsOnce();
  return protobuf_HardwareMotor_2eproto::file_level_metadata[kIndexInFileMessages];
}

#if PROTOBUF_INLINE_NOT_IN_HEADERS
// HardwareMotor

// .Tango.PMR.Hardware.HardwareMotorType HardwareMotorType = 1;
void HardwareMotor::clear_hardwaremotortype() {
  hardwaremotortype_ = 0;
}
::Tango::PMR::Hardware::HardwareMotorType HardwareMotor::hardwaremotortype() const {
  // @@protoc_insertion_point(field_get:Tango.PMR.Hardware.HardwareMotor.HardwareMotorType)
  return static_cast< ::Tango::PMR::Hardware::HardwareMotorType >(hardwaremotortype_);
}
void HardwareMotor::set_hardwaremotortype(::Tango::PMR::Hardware::HardwareMotorType value) {
  
  hardwaremotortype_ = value;
  // @@protoc_insertion_point(field_set:Tango.PMR.Hardware.HardwareMotor.HardwareMotorType)
}

// int32 MinFrequency = 2;
void HardwareMotor::clear_minfrequency() {
  minfrequency_ = 0;
}
::google::protobuf::int32 HardwareMotor::minfrequency() const {
  // @@protoc_insertion_point(field_get:Tango.PMR.Hardware.HardwareMotor.MinFrequency)
  return minfrequency_;
}
void HardwareMotor::set_minfrequency(::google::protobuf::int32 value) {
  
  minfrequency_ = value;
  // @@protoc_insertion_point(field_set:Tango.PMR.Hardware.HardwareMotor.MinFrequency)
}

// int32 MaxFrequency = 3;
void HardwareMotor::clear_maxfrequency() {
  maxfrequency_ = 0;
}
::google::protobuf::int32 HardwareMotor::maxfrequency() const {
  // @@protoc_insertion_point(field_get:Tango.PMR.Hardware.HardwareMotor.MaxFrequency)
  return maxfrequency_;
}
void HardwareMotor::set_maxfrequency(::google::protobuf::int32 value) {
  
  maxfrequency_ = value;
  // @@protoc_insertion_point(field_set:Tango.PMR.Hardware.HardwareMotor.MaxFrequency)
}

// int32 SetMicroStep = 4;
void HardwareMotor::clear_setmicrostep() {
  setmicrostep_ = 0;
}
::google::protobuf::int32 HardwareMotor::setmicrostep() const {
  // @@protoc_insertion_point(field_get:Tango.PMR.Hardware.HardwareMotor.SetMicroStep)
  return setmicrostep_;
}
void HardwareMotor::set_setmicrostep(::google::protobuf::int32 value) {
  
  setmicrostep_ = value;
  // @@protoc_insertion_point(field_set:Tango.PMR.Hardware.HardwareMotor.SetMicroStep)
}

// int32 MicroStep = 5;
void HardwareMotor::clear_microstep() {
  microstep_ = 0;
}
::google::protobuf::int32 HardwareMotor::microstep() const {
  // @@protoc_insertion_point(field_get:Tango.PMR.Hardware.HardwareMotor.MicroStep)
  return microstep_;
}
void HardwareMotor::set_microstep(::google::protobuf::int32 value) {
  
  microstep_ = value;
  // @@protoc_insertion_point(field_set:Tango.PMR.Hardware.HardwareMotor.MicroStep)
}

// double MaxChangeSlope = 6;
void HardwareMotor::clear_maxchangeslope() {
  maxchangeslope_ = 0;
}
double HardwareMotor::maxchangeslope() const {
  // @@protoc_insertion_point(field_get:Tango.PMR.Hardware.HardwareMotor.MaxChangeSlope)
  return maxchangeslope_;
}
void HardwareMotor::set_maxchangeslope(double value) {
  
  maxchangeslope_ = value;
  // @@protoc_insertion_point(field_set:Tango.PMR.Hardware.HardwareMotor.MaxChangeSlope)
}

// double HighLengthMicroSecond = 7;
void HardwareMotor::clear_highlengthmicrosecond() {
  highlengthmicrosecond_ = 0;
}
double HardwareMotor::highlengthmicrosecond() const {
  // @@protoc_insertion_point(field_get:Tango.PMR.Hardware.HardwareMotor.HighLengthMicroSecond)
  return highlengthmicrosecond_;
}
void HardwareMotor::set_highlengthmicrosecond(double value) {
  
  highlengthmicrosecond_ = value;
  // @@protoc_insertion_point(field_set:Tango.PMR.Hardware.HardwareMotor.HighLengthMicroSecond)
}

// bool SpeedMaster = 8;
void HardwareMotor::clear_speedmaster() {
  speedmaster_ = false;
}
bool HardwareMotor::speedmaster() const {
  // @@protoc_insertion_point(field_get:Tango.PMR.Hardware.HardwareMotor.SpeedMaster)
  return speedmaster_;
}
void HardwareMotor::set_speedmaster(bool value) {
  
  speedmaster_ = value;
  // @@protoc_insertion_point(field_set:Tango.PMR.Hardware.HardwareMotor.SpeedMaster)
}

// int32 PulsePerRound = 9;
void HardwareMotor::clear_pulseperround() {
  pulseperround_ = 0;
}
::google::protobuf::int32 HardwareMotor::pulseperround() const {
  // @@protoc_insertion_point(field_get:Tango.PMR.Hardware.HardwareMotor.PulsePerRound)
  return pulseperround_;
}
void HardwareMotor::set_pulseperround(::google::protobuf::int32 value) {
  
  pulseperround_ = value;
  // @@protoc_insertion_point(field_set:Tango.PMR.Hardware.HardwareMotor.PulsePerRound)
}

// double PulleyRadius = 10;
void HardwareMotor::clear_pulleyradius() {
  pulleyradius_ = 0;
}
double HardwareMotor::pulleyradius() const {
  // @@protoc_insertion_point(field_get:Tango.PMR.Hardware.HardwareMotor.PulleyRadius)
  return pulleyradius_;
}
void HardwareMotor::set_pulleyradius(double value) {
  
  pulleyradius_ = value;
  // @@protoc_insertion_point(field_set:Tango.PMR.Hardware.HardwareMotor.PulleyRadius)
}

// int32 ConfigWord = 11;
void HardwareMotor::clear_configword() {
  configword_ = 0;
}
::google::protobuf::int32 HardwareMotor::configword() const {
  // @@protoc_insertion_point(field_get:Tango.PMR.Hardware.HardwareMotor.ConfigWord)
  return configword_;
}
void HardwareMotor::set_configword(::google::protobuf::int32 value) {
  
  configword_ = value;
  // @@protoc_insertion_point(field_set:Tango.PMR.Hardware.HardwareMotor.ConfigWord)
}

// bool DirectionThreadWize = 12;
void HardwareMotor::clear_directionthreadwize() {
  directionthreadwize_ = false;
}
bool HardwareMotor::directionthreadwize() const {
  // @@protoc_insertion_point(field_get:Tango.PMR.Hardware.HardwareMotor.DirectionThreadWize)
  return directionthreadwize_;
}
void HardwareMotor::set_directionthreadwize(bool value) {
  
  directionthreadwize_ = value;
  // @@protoc_insertion_point(field_set:Tango.PMR.Hardware.HardwareMotor.DirectionThreadWize)
}

// int32 KvalHold = 13;
void HardwareMotor::clear_kvalhold() {
  kvalhold_ = 0;
}
::google::protobuf::int32 HardwareMotor::kvalhold() const {
  // @@protoc_insertion_point(field_get:Tango.PMR.Hardware.HardwareMotor.KvalHold)
  return kvalhold_;
}
void HardwareMotor::set_kvalhold(::google::protobuf::int32 value) {
  
  kvalhold_ = value;
  // @@protoc_insertion_point(field_set:Tango.PMR.Hardware.HardwareMotor.KvalHold)
}

// int32 KvalRun = 14;
void HardwareMotor::clear_kvalrun() {
  kvalrun_ = 0;
}
::google::protobuf::int32 HardwareMotor::kvalrun() const {
  // @@protoc_insertion_point(field_get:Tango.PMR.Hardware.HardwareMotor.KvalRun)
  return kvalrun_;
}
void HardwareMotor::set_kvalrun(::google::protobuf::int32 value) {
  
  kvalrun_ = value;
  // @@protoc_insertion_point(field_set:Tango.PMR.Hardware.HardwareMotor.KvalRun)
}

// int32 KvalAcc = 15;
void HardwareMotor::clear_kvalacc() {
  kvalacc_ = 0;
}
::google::protobuf::int32 HardwareMotor::kvalacc() const {
  // @@protoc_insertion_point(field_get:Tango.PMR.Hardware.HardwareMotor.KvalAcc)
  return kvalacc_;
}
void HardwareMotor::set_kvalacc(::google::protobuf::int32 value) {
  
  kvalacc_ = value;
  // @@protoc_insertion_point(field_set:Tango.PMR.Hardware.HardwareMotor.KvalAcc)
}

// int32 KvalDec = 16;
void HardwareMotor::clear_kvaldec() {
  kvaldec_ = 0;
}
::google::protobuf::int32 HardwareMotor::kvaldec() const {
  // @@protoc_insertion_point(field_get:Tango.PMR.Hardware.HardwareMotor.KvalDec)
  return kvaldec_;
}
void HardwareMotor::set_kvaldec(::google::protobuf::int32 value) {
  
  kvaldec_ = value;
  // @@protoc_insertion_point(field_set:Tango.PMR.Hardware.HardwareMotor.KvalDec)
}

// int32 OverCurrentThreshold = 17;
void HardwareMotor::clear_overcurrentthreshold() {
  overcurrentthreshold_ = 0;
}
::google::protobuf::int32 HardwareMotor::overcurrentthreshold() const {
  // @@protoc_insertion_point(field_get:Tango.PMR.Hardware.HardwareMotor.OverCurrentThreshold)
  return overcurrentthreshold_;
}
void HardwareMotor::set_overcurrentthreshold(::google::protobuf::int32 value) {
  
  overcurrentthreshold_ = value;
  // @@protoc_insertion_point(field_set:Tango.PMR.Hardware.HardwareMotor.OverCurrentThreshold)
}

// int32 StallThreshold = 18;
void HardwareMotor::clear_stallthreshold() {
  stallthreshold_ = 0;
}
::google::protobuf::int32 HardwareMotor::stallthreshold() const {
  // @@protoc_insertion_point(field_get:Tango.PMR.Hardware.HardwareMotor.StallThreshold)
  return stallthreshold_;
}
void HardwareMotor::set_stallthreshold(::google::protobuf::int32 value) {
  
  stallthreshold_ = value;
  // @@protoc_insertion_point(field_set:Tango.PMR.Hardware.HardwareMotor.StallThreshold)
}

// int32 ThermalCompensationFactor = 19;
void HardwareMotor::clear_thermalcompensationfactor() {
  thermalcompensationfactor_ = 0;
}
::google::protobuf::int32 HardwareMotor::thermalcompensationfactor() const {
  // @@protoc_insertion_point(field_get:Tango.PMR.Hardware.HardwareMotor.ThermalCompensationFactor)
  return thermalcompensationfactor_;
}
void HardwareMotor::set_thermalcompensationfactor(::google::protobuf::int32 value) {
  
  thermalcompensationfactor_ = value;
  // @@protoc_insertion_point(field_set:Tango.PMR.Hardware.HardwareMotor.ThermalCompensationFactor)
}

// bool LowSpeedOptimization = 20;
void HardwareMotor::clear_lowspeedoptimization() {
  lowspeedoptimization_ = false;
}
bool HardwareMotor::lowspeedoptimization() const {
  // @@protoc_insertion_point(field_get:Tango.PMR.Hardware.HardwareMotor.LowSpeedOptimization)
  return lowspeedoptimization_;
}
void HardwareMotor::set_lowspeedoptimization(bool value) {
  
  lowspeedoptimization_ = value;
  // @@protoc_insertion_point(field_set:Tango.PMR.Hardware.HardwareMotor.LowSpeedOptimization)
}

// int32 StSlp = 21;
void HardwareMotor::clear_stslp() {
  stslp_ = 0;
}
::google::protobuf::int32 HardwareMotor::stslp() const {
  // @@protoc_insertion_point(field_get:Tango.PMR.Hardware.HardwareMotor.StSlp)
  return stslp_;
}
void HardwareMotor::set_stslp(::google::protobuf::int32 value) {
  
  stslp_ = value;
  // @@protoc_insertion_point(field_set:Tango.PMR.Hardware.HardwareMotor.StSlp)
}

// int32 IntSpd = 22;
void HardwareMotor::clear_intspd() {
  intspd_ = 0;
}
::google::protobuf::int32 HardwareMotor::intspd() const {
  // @@protoc_insertion_point(field_get:Tango.PMR.Hardware.HardwareMotor.IntSpd)
  return intspd_;
}
void HardwareMotor::set_intspd(::google::protobuf::int32 value) {
  
  intspd_ = value;
  // @@protoc_insertion_point(field_set:Tango.PMR.Hardware.HardwareMotor.IntSpd)
}

// int32 FnSlpAcc = 23;
void HardwareMotor::clear_fnslpacc() {
  fnslpacc_ = 0;
}
::google::protobuf::int32 HardwareMotor::fnslpacc() const {
  // @@protoc_insertion_point(field_get:Tango.PMR.Hardware.HardwareMotor.FnSlpAcc)
  return fnslpacc_;
}
void HardwareMotor::set_fnslpacc(::google::protobuf::int32 value) {
  
  fnslpacc_ = value;
  // @@protoc_insertion_point(field_set:Tango.PMR.Hardware.HardwareMotor.FnSlpAcc)
}

// int32 FnSlpDec = 24;
void HardwareMotor::clear_fnslpdec() {
  fnslpdec_ = 0;
}
::google::protobuf::int32 HardwareMotor::fnslpdec() const {
  // @@protoc_insertion_point(field_get:Tango.PMR.Hardware.HardwareMotor.FnSlpDec)
  return fnslpdec_;
}
void HardwareMotor::set_fnslpdec(::google::protobuf::int32 value) {
  
  fnslpdec_ = value;
  // @@protoc_insertion_point(field_set:Tango.PMR.Hardware.HardwareMotor.FnSlpDec)
}

#endif  // PROTOBUF_INLINE_NOT_IN_HEADERS

// @@protoc_insertion_point(namespace_scope)

}  // namespace Hardware
}  // namespace PMR
}  // namespace Tango

// @@protoc_insertion_point(global_scope)