text: ////////////////////////////////////////////////////////////////////////////////
  /// \file tick.h
  /// Author: Ronald Sousa (@Opticalworm)
  ////////////////////////////////////////////////////////////////////////////////
  
  #ifndef __TICK_H__
  #define __TICK_H__
  #include "universal.h"
  
  
  /////////////////////////////////////////////////////////////////////////
  /// \brief defines a non-blocking delay data type.
  /////////////////////////////////////////////////////////////////////////
  typedef struct {
  	uint32_t StartMs;       ///< do not modify directly. Use Tick_DelayMs_NonBlocking
  	uint32_t DelayMs;       ///< Set the desire delay
  } TickType;
  
  class Tick {
  	/////////////////////////////////////////////////////////////////////////
  	/// \brief Current system tick count since boot-up.
  	/// \note tick is expected to overflow.
  	/////////////////////////////////////////////////////////////////////////
  	static volatile uint32_t TickCounter;
  public:
  	static void Init(void);
  	static uint32_t GetMs(void);
  	static int_fast8_t DelayMs_NonBlocking(uint_fast8_t reset, TickType * config);
  	static void DelayMs(uint32_t delayMs);
  };
  #endif /* __TICK_H__ */
  