DUDS
Distributed Update of Data from Something
DigitalPortIndependentPins.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 DIGITALPORTINDEPENDENTPINS_HPP
11 #define DIGITALPORTINDEPENDENTPINS_HPP
12 
14 
15 namespace duds { namespace hardware { namespace interface {
16 
23 public:
27  virtual bool independentConfig() const;
31  virtual bool independentConfig(
32  unsigned int,
33  const DigitalPinConfig &,
34  const DigitalPinConfig &
35  ) const;
36 protected:
37  DigitalPortIndependentPins(unsigned int numpins, unsigned int firstid) :
38  DigitalPort(numpins, firstid) { }
45  unsigned int gid,
46  DigitalPinConfig &pconf,
47  DigitalPinConfig &iconf
48  ) const;
54  virtual bool proposeConfigImpl(
55  const std::vector<unsigned int> &localPinIds,
56  std::vector<DigitalPinConfig> &propConf,
57  std::vector<DigitalPinConfig> &initConf,
58  std::function<void(DigitalPinRejectedConfiguration::Reason)> insertReason
59  = std::function<void(DigitalPinRejectedConfiguration::Reason)>()
60  ) const;
66  virtual bool proposeFullConfigImpl(
67  std::vector<DigitalPinConfig> &propConf,
68  std::vector<DigitalPinConfig> &initConf,
69  std::function<void(DigitalPinRejectedConfiguration::Reason)> insertReason
70  = std::function<void(DigitalPinRejectedConfiguration::Reason)>()
71  ) const;
84  virtual void configurePort(
85  const std::vector<DigitalPinConfig> &cfgs,
87  );
88  // a reminder to C++ that this function has been declared; bother
89  virtual void configurePort(
90  unsigned int localPinId,
91  const DigitalPinConfig &cfg,
93  ) = 0;
94 };
95 
96 } } }
97 
98 #endif // #ifndef DIGITALPORTINDEPENDENTPINS_HPP
virtual DigitalPinRejectedConfiguration::Reason proposeConfigImpl(unsigned int gid, DigitalPinConfig &pconf, DigitalPinConfig &iconf) const
Considers the proposed configuration for one pin.
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
DigitalPortIndependentPins(unsigned int numpins, unsigned int firstid)
A type for holding arbitrary port-specific data within a DigitalPinAccess or DigitalPinSetAccess obje...
A type-safe bit flag storage class.
Definition: BitFlags.hpp:101
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.
A partial DigitalPort implementation for ports where the configuration of each pin is independent of ...
virtual void configurePort(const std::vector< DigitalPinConfig > &cfgs, DigitalPinAccessBase::PortData *pdata)
Changes the hardware configuration for the whole port by calling configurePort(const DigitalPinConfig...