Issue 2 move folders and use deep path include file names to prevent collisions (#4)
* moving folders and files and adjust server demo build * Fix Makefile for apps/server on Linux * fix unit test source file folders * fix datetime convert UTC functions. Add Code::Blocks project for datetime testing * added some ignore extensions * disable parallel make option * fix build for abort, dcc, and epics apps * fix build for dcc, epics, error, and getevent apps. * Fixed building of all apps * fix the ipv4 to ipv6 router app build * Change indent style from Google to Webkit * make pretty to re-format style * removed common Makefile since we already had one and two was too many * remove scripts from root folder that are no longer maintained or used * remove mercurial EOL and ignore files for git repo * remove .vscodeconfig files from repo * tweak clang-format style * clang-format src and apps with tweaked style * added clang-tidy to fix readability if braces in src * result of make tidy for src and apps * fix clang-tidy mangling * Added code::blocks project for BACnet server simulation * added code::blocks linux project for WhoIs app * update text files for EOL * fix EOL in some files * fixed make win32 apps for older gcc * Removed Borland C++ Makefile in apps. Unable to maintain support for Borland C++ compiler. * created codeblocks project for apps/epics for Windows * fixing ports/xplained to work with new data structure. * fix ports/xplained example for Atmel Studio compile * fix ports/stm32f10x example for gcc Makefile compile * fix ports/stm32f10x example for IAR EWARM compile * fix ports/xplained timer callback * fix ports/bdk_atxx_mspt build with subdirs * fix ports/bdk_atxx_mspt build with subdirs * updated git ignore for IAR build artifacts * updated gitignore for non-tracked files and folders * fixed bdk-atxx4-mstp port for Rowley Crossworks project file * fixed bdk-atxx4-mstp port for GCC AVR Makefile * fixed atmega168 port for IAR AVR and GCC AVR Makefile * fixed at91sam7s port for IAR ARM and GCC ARM Makefile * removed unmaintainable DOS, RTOS32, and atmega8 ports. Updated rx62n (untested). * changed arm7 to uip port
This commit is contained in:
@@ -0,0 +1,123 @@
|
||||
/**
|
||||
* @file
|
||||
* @author Steve Karg
|
||||
* @date 2009
|
||||
* @brief Millisecond timer library header file.
|
||||
*
|
||||
* @section DESCRIPTION
|
||||
*
|
||||
* The mstimer library provides functions for setting, resetting and
|
||||
* restarting timers, and for checking if a timer has expired. An
|
||||
* application must "manually" check if its timers have expired; this
|
||||
* is not done automatically.
|
||||
*
|
||||
* A timer is declared as a \c struct \c mstimer and all access to the
|
||||
* timer is made by a pointer to the declared timer.
|
||||
*
|
||||
* Adapted from the Contiki operating system.
|
||||
* Original Authors: Adam Dunkels <adam@sics.se>, Nicolas Tsiftes <nvt@sics.se>
|
||||
*/
|
||||
#include <stdio.h>
|
||||
#include <stdbool.h>
|
||||
#include <stdint.h>
|
||||
#include <time.h>
|
||||
#include "mstimer.h"
|
||||
|
||||
/**
|
||||
* @brief Set a timer for a time sometime in the future
|
||||
*
|
||||
* This function is used to set a timer for a time sometime in the
|
||||
* future. The function mstimer_expired() will evaluate to true after
|
||||
* the timer has expired.
|
||||
*
|
||||
* @param t A pointer to the timer
|
||||
* @param interval The interval before the timer expires.
|
||||
*/
|
||||
void mstimer_set(struct mstimer *t, unsigned long interval)
|
||||
{
|
||||
t->interval = interval;
|
||||
t->start = mstimer_now();
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Reset the timer with the same interval.
|
||||
*
|
||||
* This function resets the timer with the same interval that was
|
||||
* given to the mstimer_set() function. The start point of the interval
|
||||
* is the exact time that the timer last expired. Therefore, this
|
||||
* function will cause the timer to be stable over time, unlike the
|
||||
* mstimer_restart() function.
|
||||
*
|
||||
* @param t A pointer to the timer.
|
||||
* @sa mstimer_restart()
|
||||
*/
|
||||
void mstimer_reset(struct mstimer *t)
|
||||
{
|
||||
t->start += t->interval;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Restart the timer from the current point in time
|
||||
*
|
||||
* This function restarts a timer with the same interval that was
|
||||
* given to the mstimer_set() function. The timer will start at the
|
||||
* current time.
|
||||
*
|
||||
* @note A periodic timer will drift if this function is used to reset
|
||||
* it. For preioric timers, use the mstimer_reset() function instead.
|
||||
* @param t A pointer to the timer.
|
||||
* @sa mstimer_reset()
|
||||
*/
|
||||
void mstimer_restart(struct mstimer *t)
|
||||
{
|
||||
t->start = mstimer_now();
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Check if a timer has expired.
|
||||
*
|
||||
* This function tests if a timer has expired and returns true or
|
||||
* false depending on its status.
|
||||
*
|
||||
* @param t A pointer to the timer
|
||||
* @return Non-zero if the timer has expired, zero otherwise.
|
||||
*/
|
||||
int mstimer_expired(struct mstimer *t)
|
||||
{
|
||||
if (t->interval) {
|
||||
return ((unsigned long)((mstimer_now()) - (t->start + t->interval)) <
|
||||
((unsigned long)(~((unsigned long)0)) >> 1));
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
/*---------------------------------------------------------------------------*/
|
||||
/**
|
||||
* The time until the timer expires
|
||||
*
|
||||
* This function returns the time until the timer expires.
|
||||
*
|
||||
* @param t A pointer to the timer
|
||||
*
|
||||
* @return The time until the timer expires
|
||||
*
|
||||
*/
|
||||
unsigned long mstimer_remaining(struct mstimer *t)
|
||||
{
|
||||
return t->start + t->interval - mstimer_now();
|
||||
}
|
||||
|
||||
/**
|
||||
* The value of the interval
|
||||
*
|
||||
* This function returns the interval value
|
||||
*
|
||||
* @param t A pointer to the timer
|
||||
*
|
||||
* @return The interval value
|
||||
*
|
||||
*/
|
||||
unsigned long mstimer_interval(struct mstimer *t)
|
||||
{
|
||||
return t->interval;
|
||||
}
|
||||
Reference in New Issue
Block a user