mirror of
https://github.com/digistump/DigistumpArduino.git
synced 2025-09-17 17:32:25 -07:00
switch to setup for Arduino Boards Manager
This commit is contained in:
@@ -0,0 +1,84 @@
|
||||
|
||||
/*
|
||||
Copyright (C) 2011 James Coliz, Jr. <maniacbug@ymail.com>
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License
|
||||
version 2 as published by the Free Software Foundation.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file sleep.h
|
||||
*
|
||||
* Declaration of the sleep_c class.
|
||||
*/
|
||||
|
||||
#ifndef __SLEEP_H__
|
||||
#define __SLEEP_H__
|
||||
|
||||
/**
|
||||
* Enums for the duration of the watchdog timer
|
||||
*/
|
||||
|
||||
typedef enum { wdt_16ms = 0, wdt_32ms, wdt_64ms, wdt_128ms, wdt_250ms, wdt_500ms, wdt_1s, wdt_2s, wdt_4s, wdt_8s } wdt_prescalar_e;
|
||||
|
||||
/**
|
||||
* Simplified sleeping handler
|
||||
*/
|
||||
|
||||
class sleep_c
|
||||
{
|
||||
public:
|
||||
/**
|
||||
* Enable the system to be able to sleep
|
||||
*
|
||||
* Does not actually do any sleeping.
|
||||
*
|
||||
* For example, to do something roughly evert minute, configure
|
||||
* it like this:
|
||||
*
|
||||
* @code
|
||||
* Sleep.begin(wdt_8s,7);
|
||||
* @endcode
|
||||
*
|
||||
* @param prescalar Duration of the watchdog timer interrupt.
|
||||
* The system will actually sleep for this long.
|
||||
* @param cycles Number of times the system will wake up before
|
||||
* returning from @p go().
|
||||
*/
|
||||
void begin(wdt_prescalar_e prescalar,short cycles);
|
||||
|
||||
/**
|
||||
* Go to sleep
|
||||
*
|
||||
* This will return after the watchdog has awoken for the number
|
||||
* of times specified in begin().
|
||||
*/
|
||||
void go(void);
|
||||
|
||||
/**
|
||||
* Test whether the node sleeps
|
||||
*
|
||||
* @retval true if the node will sleep
|
||||
*/
|
||||
operator bool(void) const
|
||||
{
|
||||
return sleep_cycles_per_transmission;
|
||||
}
|
||||
|
||||
private:
|
||||
volatile short sleep_cycles_remaining;
|
||||
short sleep_cycles_per_transmission;
|
||||
};
|
||||
|
||||
/**
|
||||
* Singleton instance for general use
|
||||
*
|
||||
* @warning: This class is hard-coded to ONLY work with this singleton.
|
||||
* Any other instances will fail.
|
||||
*/
|
||||
|
||||
extern sleep_c Sleep;
|
||||
|
||||
#endif // __SLEEP_H__
|
||||
// vim:ai:cin:sts=2 sw=2 ft=cpp
|
Reference in New Issue
Block a user