Lodestar
An integrated real-time control package in C++
BlockType.hpp
1 //
2 // Created by Hamza El-Kebir on 12/25/21.
3 //
4 
5 #ifndef LODESTAR_BLOCKTYPE_HPP
6 #define LODESTAR_BLOCKTYPE_HPP
7 
8 #define ADD_BLOCKTYPE_CASE(TYPE) case BlockType::TYPE: return #TYPE
9 
10 #include <string>
11 
12 namespace ls {
13  namespace blocks {
25  enum class BlockType {
32  /* Standard blocks */
42  DelayBlock,
44  DemuxBlock,
52  GainBlock,
60  MuxBlock,
72  SumBlock,
79  };
80 
81  static
82  ::std::string blockTypeToString(const BlockType type)
83  {
84  switch (type) {
85  default:
86  return "UnknownBlock";
87  ADD_BLOCKTYPE_CASE(GenericBlock);
88  ADD_BLOCKTYPE_CASE(CustomBlock);
89  ADD_BLOCKTYPE_CASE(BufferBlock);
90  ADD_BLOCKTYPE_CASE(ConstantBlock);
91  ADD_BLOCKTYPE_CASE(ConverterBlock);
92  ADD_BLOCKTYPE_CASE(DeadzoneBlock);
93  ADD_BLOCKTYPE_CASE(DelayBlock);
94  ADD_BLOCKTYPE_CASE(DemuxBlock);
95  ADD_BLOCKTYPE_CASE(DifferentiatorBlock);
96  ADD_BLOCKTYPE_CASE(DiscreteStateSpaceBlock);
97  ADD_BLOCKTYPE_CASE(FunctionBlock);
98  ADD_BLOCKTYPE_CASE(GainBlock);
99  ADD_BLOCKTYPE_CASE(IntegratorBlock);
100  ADD_BLOCKTYPE_CASE(MinMaxBlock);
101  ADD_BLOCKTYPE_CASE(MinMaxIdxBlock);
102  ADD_BLOCKTYPE_CASE(MuxBlock);
103  ADD_BLOCKTYPE_CASE(ProtoMsgOutBlock);
104  ADD_BLOCKTYPE_CASE(ReImToComplexBlock);
105  ADD_BLOCKTYPE_CASE(SaturationBlock);
106  ADD_BLOCKTYPE_CASE(SignumBlock);
107  ADD_BLOCKTYPE_CASE(SimplePIDBlock);
108  ADD_BLOCKTYPE_CASE(SumBlock);
109  ADD_BLOCKTYPE_CASE(SwitchBlock);
110  ADD_BLOCKTYPE_CASE(UnaryAbsBlock);
111  ADD_BLOCKTYPE_CASE(UnaryMeanBlock);
112  }
113 
114  return "UnknownBlock";
115  }
116  }
117 }
118 
119 #endif //LODESTAR_BLOCKTYPE_HPP
ls::blocks::BlockType::GenericBlock
@ GenericBlock
Generic block (for debug purposes).
ls::blocks::BlockType::SaturationBlock
@ SaturationBlock
Saturation block.
ls::blocks::BlockType::ReImToComplexBlock
@ ReImToComplexBlock
Real and imaginary to complex block.
ls::blocks::BlockType::IntegratorBlock
@ IntegratorBlock
Integrator block.
ls::blocks::BlockType::MinMaxIdxBlock
@ MinMaxIdxBlock
Min/max index block.
ls::blocks::BlockType
BlockType
Block type information.
Definition: BlockType.hpp:25
ls::blocks::BlockType::MuxBlock
@ MuxBlock
Multiplexer block.
ls::blocks::BlockType::DemuxBlock
@ DemuxBlock
Demultiplexer block.
ls::blocks::BlockType::SignumBlock
@ SignumBlock
Signum block.
ls::blocks::BlockType::DeadzoneBlock
@ DeadzoneBlock
Dead zone block.
ls
Main Lodestar code.
Definition: BilinearTransformation.hpp:12
ls::blocks::BlockType::ConverterBlock
@ ConverterBlock
Converter block.
ls::blocks::BlockType::FunctionBlock
@ FunctionBlock
Function block.
ls::blocks::BlockType::ConstantBlock
@ ConstantBlock
Constant block.
ls::blocks::BlockType::BufferBlock
@ BufferBlock
Buffer block.
ls::blocks::BlockType::SimplePIDBlock
@ SimplePIDBlock
Simple PID controller block.
ls::blocks::BlockType::DifferentiatorBlock
@ DifferentiatorBlock
Differentiator block.
ls::blocks::BlockType::DelayBlock
@ DelayBlock
Delay block.
ls::blocks::BlockType::MinMaxBlock
@ MinMaxBlock
Min/max block.
ls::blocks::BlockType::SumBlock
@ SumBlock
Summation block.
ls::blocks::BlockType::SwitchBlock
@ SwitchBlock
Switch (manual) block.
ls::blocks::BlockType::UnknownBlock
@ UnknownBlock
Unknown block.
ls::blocks::BlockType::UnaryAbsBlock
@ UnaryAbsBlock
Unary absolute value block.
ls::blocks::BlockType::UnaryMeanBlock
@ UnaryMeanBlock
Unary mean value block.
ls::blocks::BlockType::CustomBlock
@ CustomBlock
Custom block (user-defined blocks).
ls::blocks::BlockType::DiscreteStateSpaceBlock
@ DiscreteStateSpaceBlock
Discrete state-space block.
ls::blocks::BlockType::ProtoMsgOutBlock
@ ProtoMsgOutBlock
Protocol Buffers output block.
ls::blocks::BlockType::GainBlock
@ GainBlock
Gain block.