1#ifndef IV_SRC_CHANNELS_ABSTRACTCHANNEL_HPP_
2#define IV_SRC_CHANNELS_ABSTRACTCHANNEL_HPP_
9#include "model/enums.hpp"
34 virtual std::shared_ptr<AbstractChannel>
clone() = 0;
37 virtual void processAlarm(std::shared_ptr<iv::alarms::AlarmsManager> alarmManager) = 0;
40 void setValue(std::optional<iv::types::channelValue> value,
const std::optional<iv::alarms::Alarm> &alarm,
41 const std::optional<iv::types::networkId> &networkOrigin);
46 requires std::is_same_v<T, bool> || std::is_same_v<T, int32_t> || std::is_same_v<T, uint32_t> ||
47 std::is_same_v<T, float> || std::is_same_v<T, uint64_t> || std::is_same_v<T, double> ||
48 std::is_same_v<T, std::string> || std::is_same_v<T, const char *>
57 [[nodiscard]]
const std::map<iv::types::networkId, std::shared_ptr<iv::channels::INetworkInfo>> &
60 [[nodiscard]]
bool isWired()
const;
77 [[nodiscard]] std::weak_ptr<iv::units::Unit>
getUnit()
const;
125 std::unique_ptr<iv::channels::controller::AbstractChannel>
m_controller;
140 static constexpr std::string_view
isEnabled {
"Enabled"};
141 static constexpr std::string_view
baseType {
"BaseType"};
143 static constexpr std::string_view
area {
"Area"};
145 static constexpr std::string_view
idUnit {
"IdUnit"};
151 static constexpr std::string
string {};
155 static constexpr std::string
baseType {
"WiredAnalog"};
157 static constexpr std::string
area {
"All"};
165 static constexpr std::string_view
dataflow {
"DataFlow"};
166 static constexpr std::string_view
flow {
"Flow"};
171 requires std::is_same_v<T, bool> || std::is_same_v<T, int32_t> || std::is_same_v<T, uint32_t> ||
172 std::is_same_v<T, float> || std::is_same_v<T, uint64_t> || std::is_same_v<T, double> ||
173 std::is_same_v<T, std::string> || std::is_same_v<T, const char *>
178 if constexpr (std::is_same_v<T, bool>)
180 return static_cast<bool>(value);
182 else if constexpr (std::is_same_v<T, int32_t>)
184 return static_cast<int32_t
>(value);
186 else if constexpr (std::is_same_v<T, float>)
188 return static_cast<float>(value);
190 else if constexpr (std::is_same_v<T, double>)
194 else if constexpr (std::is_same_v<T, std::string>)
196 return std::to_string(value);
198 else if constexpr (std::is_same_v<T, const char *>)
200 const std::string strValue = std::to_string(value);
201 return strValue.c_str();
204 return T(
m_value.load().value);
static const std::string kPrvStrNoChannelValue
Definition AbstractChannel.hpp:13
Definition AbstractChannel.hpp:24
std::optional< iv::types::stationId > m_lastStationOrigin
Definition AbstractChannel.hpp:121
iv::types::unitId m_idUnit
Definition AbstractChannel.hpp:130
virtual void calculateAlarm()
Definition AbstractChannel.cpp:432
iv::types::channelOrder getChannelOrder() const
Definition AbstractChannel.cpp:161
std::atomic< iv::channels::Value > m_value
Definition AbstractChannel.hpp:113
iv::channels::ChannelInfo m_info
Definition AbstractChannel.hpp:102
virtual void processAlarm(std::shared_ptr< iv::alarms::AlarmsManager > alarmManager)=0
std::string m_shipyardTag
Definition AbstractChannel.hpp:92
std::atomic< iv::alarms::Alarm > m_alarm
Definition AbstractChannel.hpp:114
virtual std::shared_ptr< AbstractChannel > clone()=0
iv::alarms::eAlarmState getAlarmState() const
Definition AbstractChannel.cpp:226
virtual iv::types::channelValue setRawData(iv::types::channelValue value)
Definition AbstractChannel.cpp:523
virtual std::string formatValue() const =0
std::weak_ptr< iv::units::Unit > getUnit() const
Definition AbstractChannel.cpp:263
std::mutex m_mutexUpdate
Definition AbstractChannel.hpp:112
std::string getAlarmIconName() const
Definition AbstractChannel.cpp:206
virtual std::string getRawDataUnit() const
Definition AbstractChannel.cpp:533
iv::channels::eChannelBaseType m_baseType
Definition AbstractChannel.hpp:98
bool isWired() const
Definition AbstractChannel.cpp:177
iv::types::milliseconds m_deinitTimeout
Definition AbstractChannel.hpp:132
bool hasValue() const
Definition AbstractChannel.cpp:325
std::atomic< iv::channels::Value > m_lastReceivedValue
Definition AbstractChannel.hpp:118
iv::types::channelValue getRawData() const
Definition AbstractChannel.cpp:528
void deinitialize()
Definition AbstractChannel.cpp:269
iv::types::channelOrder m_channelOrder
Definition AbstractChannel.hpp:93
bool shouldStoreAlarm(iv::alarms::Alarm &alarm) const
Definition AbstractChannel.cpp:436
void setValue(std::optional< iv::types::channelValue > value, const std::optional< iv::alarms::Alarm > &alarm, const std::optional< iv::types::networkId > &networkOrigin)
Definition AbstractChannel.cpp:361
bool m_isEnabled
Definition AbstractChannel.hpp:94
iv::alarms::eAlarmType getAlarmType() const
TODO: Por defecto tal vez debería haber un undefined o algo así, pq en detalles del canal se dibuja —...
Definition AbstractChannel.cpp:241
T getValue() const
Definition AbstractChannel.hpp:174
friend class iv::channels::controller::AbstractChannel
Definition AbstractChannel.hpp:25
std::optional< iv::types::networkId > m_networkOrigin
Definition AbstractChannel.hpp:115
const iv::channels::ChannelAlarmParameters & getAlarmParameters() const
Definition AbstractChannel.cpp:166
iv::channels::ChannelAlarmParameters m_alarmParameters
Definition AbstractChannel.hpp:103
iv::model::diamar::eVerificationStatus m_verificationStatus
Definition AbstractChannel.hpp:105
bool isAlarmCalculated() const
Definition AbstractChannel.cpp:351
std::optional< iv::types::networkId > m_lastNetworkOrigin
Definition AbstractChannel.hpp:120
iv::channels::eInhibitionCondition getInhibitionConditionState() const
Definition AbstractChannel.cpp:251
iv::channels::eChannelArea m_area
Definition AbstractChannel.hpp:101
bool isString() const
Definition AbstractChannel.cpp:201
virtual std::string getEngineeringUnitsStr() const
Definition AbstractChannel.cpp:330
virtual bool save(iv::file::xml::node &nodeChannel) const
Definition AbstractChannel.cpp:129
std::unique_ptr< iv::channels::controller::AbstractChannel > m_controller
Definition AbstractChannel.hpp:125
std::map< iv::types::networkId, std::shared_ptr< iv::channels::INetworkInfo > > m_channelsNetwork
Definition AbstractChannel.hpp:107
virtual void update(AbstractChannel &other)
Definition AbstractChannel.cpp:486
virtual bool load(const iv::file::xml::node &nodeChannel)
Definition AbstractChannel.cpp:55
std::weak_ptr< AbstractChannel > m_inhibitionChannel
Definition AbstractChannel.hpp:96
virtual iv::channels::FormattedValue formattedValue() const =0
virtual void processValue()=0
bool isVirtual() const
Definition AbstractChannel.cpp:183
iv::channels::eChannelSpecificType m_specificType
Definition AbstractChannel.hpp:99
bool isAnalog() const
Definition AbstractChannel.cpp:189
virtual ~AbstractChannel()=default
const iv::types::channelId & getChannelId() const
Definition AbstractChannel.cpp:156
iv::alarms::eAlarmPriority getAlarmPriority() const
Definition AbstractChannel.cpp:216
std::optional< iv::types::stationId > m_stationOrigin
Definition AbstractChannel.hpp:116
iv::types::indexChannel m_indexChannel
Definition AbstractChannel.hpp:131
std::atomic< bool > m_shouldCalculateAlarm
Definition AbstractChannel.hpp:123
iv::types::color getColorStateRgb() const
Definition AbstractChannel.cpp:211
const std::map< iv::types::networkId, std::shared_ptr< iv::channels::INetworkInfo > > & channelsNetwork() const
Definition AbstractChannel.cpp:172
bool isSerialLine() const
Definition AbstractChannel.cpp:335
std::atomic< iv::alarms::Alarm > m_lastReceivedAlarm
Definition AbstractChannel.hpp:119
iv::types::channelId m_tag
Definition AbstractChannel.hpp:91
bool isDigital() const
Definition AbstractChannel.cpp:195
Definition AbstractChannel.hpp:19
Definition xmlFile.hpp:15
eAlarmPriority
Definition enums.hpp:13
eAlarmType
Definition enums.hpp:56
eAlarmState
Definition enums.hpp:20
Definition AlarmsManager.hpp:17
eInhibitionCondition
Definition enums.hpp:11
eChannelSpecificType
Definition enums.hpp:72
eChannelBaseType
Definition enums.hpp:63
eChannelArea
Definition enums.hpp:55
eVerificationStatus
Definition enums.hpp:90
uint32_t indexChannel
Definition types.hpp:87
uint16_t unitId
Definition types.hpp:77
uint16_t channelOrder
Definition types.hpp:68
double channelValue
Definition types.hpp:67
uint64_t milliseconds
Definition types.hpp:22
std::string channelId
Definition types.hpp:66
uint32_t color
Definition types.hpp:12
Definition AbstractChannel.hpp:16
Definition structs.hpp:16
Definition AbstractChannel.hpp:150
static constexpr std::string baseType
Definition AbstractChannel.hpp:155
static constexpr iv::types::unitId idUnit
Definition AbstractChannel.hpp:159
static constexpr std::string area
Definition AbstractChannel.hpp:157
static constexpr uint16_t indexChannel
Definition AbstractChannel.hpp:160
static constexpr iv::types::channelOrder channelOrder
Definition AbstractChannel.hpp:153
static constexpr std::string specificType
Definition AbstractChannel.hpp:156
static constexpr iv::types::milliseconds deinitTimeout
Definition AbstractChannel.hpp:161
static constexpr bool isEnabled
Definition AbstractChannel.hpp:154
static constexpr iv::types::channelId channelId
Definition AbstractChannel.hpp:152
static constexpr std::string verificationStatus
Definition AbstractChannel.hpp:158
Definition AbstractChannel.hpp:136
static constexpr std::string_view idUnit
Definition AbstractChannel.hpp:145
static constexpr std::string_view indexChannel
Definition AbstractChannel.hpp:146
static constexpr std::string_view verificationStatus
Definition AbstractChannel.hpp:144
static constexpr std::string_view deinitTimeout
Definition AbstractChannel.hpp:147
static constexpr std::string_view channelId
Definition AbstractChannel.hpp:137
static constexpr std::string_view area
Definition AbstractChannel.hpp:143
static constexpr std::string_view baseType
Definition AbstractChannel.hpp:141
static constexpr std::string_view shipyardTag
Definition AbstractChannel.hpp:138
static constexpr std::string_view specificType
Definition AbstractChannel.hpp:142
static constexpr std::string_view isEnabled
Definition AbstractChannel.hpp:140
static constexpr std::string_view channelOrder
Definition AbstractChannel.hpp:139
Definition AbstractChannel.hpp:164
static constexpr std::string_view dataflow
Definition AbstractChannel.hpp:165
static constexpr std::string_view flow
Definition AbstractChannel.hpp:166
Definition structs.hpp:123
Definition structs.hpp:45