DUDS
Distributed Update of Data from Something
DigitalPortDependentPins.hpp
Go to the documentation of this file.
1 /*
2  * This file is part of the DUDS project. It is subject to the BSD-style
3  * license terms in the LICENSE file found in the top-level directory of this
4  * distribution and at https://github.com/jjackowski/duds/blob/master/LICENSE.
5  * No part of DUDS, including this file, may be copied, modified, propagated,
6  * or distributed except according to the terms contained in the LICENSE file.
7  *
8  * Copyright (C) 2017 Jeff Jackowski
9  */
10 #ifndef DIGITALPORTDEPENDENTPINS_HPP
11 #define DIGITALPORTDEPENDENTPINS_HPP
13 
14 namespace duds { namespace hardware { namespace interface {
15 
32 protected:
33  DigitalPortDependentPins(unsigned int numpins, unsigned int firstid) :
34  DigitalPort(numpins, firstid) { }
75  unsigned int localPinId,
76  std::vector<DigitalPinConfig> &proposed,
77  std::vector<DigitalPinConfig> &initial
78  ) const = 0;
86  unsigned int gid,
87  DigitalPinConfig &pconf,
88  DigitalPinConfig &iconf
89  ) const;
95  virtual bool proposeConfigImpl(
96  const std::vector<unsigned int> &pins,
97  std::vector<DigitalPinConfig> &propConf,
98  std::vector<DigitalPinConfig> &initConf,
99  std::function<void(DigitalPinRejectedConfiguration::Reason)> insertReason
100  = std::function<void(DigitalPinRejectedConfiguration::Reason)>()
101  ) const;
108  virtual bool proposeFullConfigImpl(
109  std::vector<DigitalPinConfig> &propConf,
110  std::vector<DigitalPinConfig> &initConf,
111  std::function<void(DigitalPinRejectedConfiguration::Reason)> insertReason
112  = std::function<void(DigitalPinRejectedConfiguration::Reason)>()
113  ) const;
114 public:
119  virtual bool independentConfig() const;
120  // a reminder to C++ that this function has been declared; bother
121  virtual bool independentConfig(
122  unsigned int gid,
123  const DigitalPinConfig &newcfg,
124  const DigitalPinConfig &initcfg
125  ) const = 0;
126 };
127 
128 } } }
129 
130 #endif // #ifndef DIGITALPORTDEPENDENTPINS_HPP
Defines the configuration for a digital general purpose I/O pin.
Represents an interface to a group of hardware related digital GPIO lines.
Definition: DigitalPort.hpp:47
virtual DigitalPinRejectedConfiguration::Reason proposeConfigImpl(unsigned int gid, DigitalPinConfig &pconf, DigitalPinConfig &iconf) const
Considers the proposed configuration for one pin, but may consider changes to other pins if the chang...
virtual bool independentConfig() const
Some pins have a configuration that is dependent on other pins, so this function always returns false...
A type-safe bit flag storage class.
Definition: BitFlags.hpp:101
virtual DigitalPinRejectedConfiguration::Reason inspectProposal(unsigned int localPinId, std::vector< DigitalPinConfig > &proposed, std::vector< DigitalPinConfig > &initial) const =0
Inspects a proposed change to the pin configuration to assure it meets all requirements and constrain...
A partial DigitalPort implementation for ports where the configuration of one pin may affect the conf...
virtual bool proposeFullConfigImpl(std::vector< DigitalPinConfig > &propConf, std::vector< DigitalPinConfig > &initConf, std::function< void(DigitalPinRejectedConfiguration::Reason)> insertReason=std::function< void(DigitalPinRejectedConfiguration::Reason)>()) const
Considers the proposed configuration one pin at a time for all pins in the port.
PinVector pins
Data on each pin handled by the port.
DigitalPortDependentPins(unsigned int numpins, unsigned int firstid)