modm API documentation
modm::ds1631< I2cMaster > Class Template Reference

#include <modm/driver/temperature/ds1631.hpp>

Inheritance diagram for modm::ds1631< I2cMaster >:
modm::I2cDevice< I2cMaster, 2 > modm::pt::Protothread modm::NestedResumable< 10+1 > modm::Fiber< MODM_PROTOTHREAD_STACK_SIZE > modm::fiber::Task

Public Typedefs

typedef lm75::Data Data
 

Public Types

enum  ConversionMode : uint8_t { Continous = 0, OneShot = int(Config::OneShot) }
 
enum  AlertPolarity : uint8_t { ActiveLow = 0, ActiveHigh = int(Config::Polarity) }
 
enum  Resolution : uint8_t { Resolution::Bits9 = 0, Resolution::Bits10 = Bit0, Resolution::Bits11 = Bit1, Resolution::Bits12 = Bit1 | Bit0 }
 

Public Member Functions

 Ds1631 (Data &data, uint8_t address=0x90)
 
bool update ()
 
modm::ResumableResult< bool > initialize ()
 
modm::ResumableResult< bool > setUpdateRate (uint8_t rate)
 
modm::ResumableResult< bool > setResolution (Resolution resolution)
 
modm::ResumableResult< bool > setAlertPolarity (AlertPolarity polarity)
 
modm::ResumableResult< bool > setConversionMode (ConversionMode mode)
 
modm::ResumableResult< bool > setUpperLimit (float temperature)
 Writes the upper limit of the alarm.
 
modm::ResumableResult< bool > setLowerLimit (float temperature)
 Writes the lower limit of the alarm.
 
modm::ResumableResult< bool > readTemperature ()
 reads the Temperature registers and buffers the results
 
modm::ResumableResult< bool > startConversion ()
 
modm::ResumableResult< bool > stopConversion ()
 
modm::ResumableResult< bool > reset ()
 
DatagetData ()
 
void attachConfigurationHandler (I2c::ConfigurationHandler handler)
 
modm::ResumableResult< bool > ping ()
 
modm::ResumableResult< bool > read (uint8_t *buffer, std::size_t size)
 Starts a write transaction and waits until finished.
 
void setAddress (uint8_t address)
 
modm::ResumableResult< bool > write (const uint8_t *buffer, std::size_t size)
 Starts a write transaction and waits until finished.
 
modm::ResumableResult< bool > writeRead (const uint8_t *writeBuffer, std::size_t writeSize, uint8_t *readBuffer, std::size_t readSize)
 Starts a write-read transaction and waits until finished.
 

Protected Typedefs

using id = uintptr_t
 
using binary_semaphore = counting_semaphore< 1 >
 

Protected Types

enum  Start
 

Protected Member Functions

int8_t getResumableDepth () const
 
bool isResumableRunning () const
 
bool isTransactionRunning ()
 
modm::ResumableResult< bool > runTransaction ()
 Starts our own transaction and waits until finished.
 
bool startRead (uint8_t *buffer, std::size_t size)
 Configures the transaction with a read operation and starts it.
 
bool startTransaction ()
 Starts the transaction with our own transaction object.
 
bool startTransaction (modm::I2cTransaction *transaction)
 Starts the transaction with a separate transaction object.
 
bool startWrite (const uint8_t *buffer, std::size_t size)
 Configures the transaction with a write operation and starts it.
 
bool startWriteRead (const uint8_t *writeBuffer, std::size_t writeSize, uint8_t *readBuffer, std::size_t readSize)
 Configures the transaction with a write/read operation and starts it.
 
void stopResumable ()
 
bool wasTransactionSuccessful ()
 
modm::fiber::id get_id () const
 
stop_source get_stop_source ()
 
stop_token get_stop_token ()
 
bool isRunning () const
 
void join ()
 
bool joinable () const
 Checks if the Task object identifies an active fiber of execution.
 
bool request_stop ()
 
void restart ()
 
virtual bool run ()
 
size_t stack_usage () const
 
void stack_watermark ()
 
bool start ()
 
void stop ()
 

Static Protected Member Functions

static constexpr unsigned int hardware_concurrency ()
 Returns the number of concurrent threads supported by the implementation.
 

Protected Attributes

I2cWriteReadTransaction transaction
 

Static Protected Attributes

static constexpr size_t StackAlignment
 Alignment requirements for the bottom and top of the stack.
 
static constexpr size_t StackSizeDefault
 
static constexpr size_t StackSizeMinimum
 Minimum stack size required to push one full fiber context.
 
enum  cv_status
 
using condition_variable = condition_variable_any
 There is no specialization for std::unique_lock<fiber::mutex>.
 

Detailed Description

template<typename I2cMaster>
class modm::ds1631< I2cMaster >

DS1631, DS1631A and DS1731 temperature sensor driver.

See also
ds1631
Author
Fabian Greif
Niklas Hauser

Member Typedef Documentation

using modm::Fiber< fiber::StackSizeDefault >::binary_semaphore = counting_semaphore<1>
inherited

Implements the std::binary_semaphore interface for fibers.

See also
https://en.cppreference.com/w/cpp/thread/counting_semaphore
using modm::Fiber< fiber::StackSizeDefault >::id = uintptr_t
inherited

Identifier of a fiber task.

Member Enumeration Documentation

template<typename I2cMaster >
enum modm::ds1631::Resolution : uint8_t
strong
Enum ValuesDocumentation
Bits9 

Conversion Time: 94ms.

Bits10 

Conversion Time: 188ms.

Bits11 

Conversion Time: 375ms.

Bits12 

Conversion Time: 750ms.

enum modm::Fiber::Start
inheritedstrong

The Fiber scheduling policy.

Member Function Documentation

void modm::I2cDevice< I2cMaster, 10 , I2cWriteReadTransaction >::attachConfigurationHandler ( I2c::ConfigurationHandler  handler)
inheritedinline

Attaches a configuration handler, which is called before a transaction, whenever the configuration has to be changed.

modm::fiber::id modm::fiber::Task::get_id ( ) const
inheritednodiscardinline

Returns a value of std::thread::id identifying the thread associated with *this.

Note
This function can be called from an interrupt.
bool modm::fiber::Task::isRunning ( ) const
inheritednodiscardinline
Returns
if the fiber is attached to a scheduler.
bool modm::I2cDevice< I2cMaster, 10 , I2cWriteReadTransaction >::isTransactionRunning ( )
inheritedinlineprotected
Returns
true when transaction is busy.
void modm::fiber::Task::join ( )
inheritedinline

Blocks the current fiber until the fiber identified by *this finishes its execution. Returns immediately if the thread is not joinable.

modm::ResumableResult<bool> modm::I2cDevice< I2cMaster, 10 , I2cWriteReadTransaction >::ping ( )
inheritedinline
Return Values
truedevice responds to address
falseno device with address found
bool modm::fiber::Task::request_stop ( )
inheritedinline
Note
This function can be called from an interrupt.
void modm::I2cDevice< I2cMaster, 10 , I2cWriteReadTransaction >::setAddress ( uint8_t  address)
inheritedinline

Sets a new address of the slave device.

Parameters
addressthe slave address not yet shifted left (address < 128).
size_t modm::fiber::Task::stack_usage ( ) const
inheritednodiscardinline
Returns
the stack usage as measured by a watermark level.
See also
modm_context_stack_usage().
void modm::fiber::Task::stack_watermark ( )
inheritedinline

Watermarks the stack to measure stack_usage() later.

See also
modm_context_stack_watermark().
bool modm::fiber::Task::start ( )
inherited

Adds the task to the currently active scheduler, if not already running.

Returns
if the fiber has been scheduled.
bool modm::I2cDevice< I2cMaster, 10 , I2cWriteReadTransaction >::wasTransactionSuccessful ( )
inheritedinlineprotected
Returns
true when transaction did not return an error.

Member Data Documentation

constexpr size_t modm::Fiber< fiber::StackSizeDefault >::StackSizeDefault
inheritedstaticconstexpr

The default stack size is estimated experimentally so that a fiber can use modm::IOStream to log out information, which is fairly stack intensive. Use modm::fiber::Task::stack_usage() to determine the real stack usage.


The documentation for this class was generated from the following file: