ReduxLib C++ 2026.1.2
Loading...
Searching...
No Matches
DigoutPinConfig.h
1// Copyright (c) Bagholders of Redux Robotics and other contributors.
2// This is open source and can be modified and shared under the Mozilla Public License v2.0.
3
4#pragma once
5
6#include <cstdint>
7
9
10/**
11 * Base class for digital output pin behavior configuration.
12 *
13 * Use CanandcolorSettings::SetDigoutPinConfig() to apply these to the device.
14 */
16 public:
17 virtual ~DigoutPinConfig() = default;
18
19 /**
20 * Converts this config into the raw setting payload expected by the device.
21 * @return raw setting payload
22 */
23 virtual uint64_t ToOutputSettingData() const = 0;
24
25 /**
26 * Compares this config with another config for logical equality.
27 * @param other other config
28 * @return true if logically equal
29 */
30 virtual bool Equals(const DigoutPinConfig& other) const = 0;
31};
32
33/**
34 * Disables a digital output pin.
35 */
37 public:
38 uint64_t ToOutputSettingData() const override {
39 return 0;
40 }
41 bool Equals(const DigoutPinConfig& other) const override {
42 return dynamic_cast<const DisabledDigoutPinConfig*>(&other) != nullptr;
43 }
44};
45
46/**
47 * Configures a digital output pin as active-high.
48 */
50 public:
51 uint64_t ToOutputSettingData() const override {
52 return 1;
53 }
54 bool Equals(const DigoutPinConfig& other) const override {
55 return dynamic_cast<const ActiveHighDigoutPinConfig*>(&other) != nullptr;
56 }
57};
58
59/**
60 * Configures a digital output pin as active-low.
61 */
63 public:
64 uint64_t ToOutputSettingData() const override {
65 return 2;
66 }
67 bool Equals(const DigoutPinConfig& other) const override {
68 return dynamic_cast<const ActiveLowDigoutPinConfig*>(&other) != nullptr;
69 }
70};
71
72} // namespace redux::sensors::canandcolor
bool Equals(const DigoutPinConfig &other) const override
Definition DigoutPinConfig.h:54
uint64_t ToOutputSettingData() const override
Definition DigoutPinConfig.h:51
uint64_t ToOutputSettingData() const override
Definition DigoutPinConfig.h:64
bool Equals(const DigoutPinConfig &other) const override
Definition DigoutPinConfig.h:67
Definition DigoutPinConfig.h:15
virtual uint64_t ToOutputSettingData() const =0
virtual bool Equals(const DigoutPinConfig &other) const =0
uint64_t ToOutputSettingData() const override
Definition DigoutPinConfig.h:38
bool Equals(const DigoutPinConfig &other) const override
Definition DigoutPinConfig.h:41
Definition Canandcolor.h:19