Skip to content

Move time handling code from arduino.cpp to new independent classes #12

@end2endzone

Description

@end2endzone
class ITimeStrategy
{
public:
  virtual uint32_t millis() = 0;
  virtual uint32_t micros() = 0;
};

//milliseconds are realtime. Microseconds are evaluated from elapsed milliseconds (increments of 1000)
class RealtimeStrategy : public virtual ITimeStrategy
{
private:
  RealtimeStrategy();
  ~RealtimeStrategy();
public:
  static RealtimeStrategy & getInstance();
public:
  virtual uint32_t millis();
  virtual uint32_t micros();
};

//microseconds increases by a constant amount for every call to micros() functions. milliseconds are evaluated from microseconds.
class IncrementalTimeStrategy : public virtual ITimeStrategy
{
private:
  IncrementalTimeStrategy();
  ~IncrementalTimeStrategy();
public:
  static IncrementalTimeStrategy & getInstance();
public:
  virtual uint32_t millis();
  virtual uint32_t micros();
  void setMicrosecondsResolution(uint32_t iResolution);
  uint32_t getMicrosecondsResolution() const;
  void setMicrosecondsCounter(uint32_t iCounter);
  uint32_t getMicrosecondsCounter() const;
};

testarduino::setTimeStrategy(ITimeStrategy * strategy);

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions