GeezerVisonThe World Wide Web, restored to 800 pixels of glory. |
| Home|About|Gaming cabinet|Archives|How it works|Starter sites |
GeezerVison is showing github.com — ArduinoThread/Thread.cpp at master · CptPackage/ArduinoThread Expand file tree/ Copy pathThread.cppMore file actions 52 lines (40 loc) · 1.06 KB / Copy pathThread.cppFile metadata and controls52 lines (40 loc) · 1.06 KB 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 #include "Thread.h" Thread::Thread(void (*callback)(void), unsigned long _interval){ enabled = true; onRun(callback); _cached_next_run = 0; last_run = 0; ThreadID = (int)this; #ifdef USE_THREAD_NAMES ThreadName = "Thread "; ThreadName = ThreadName + ThreadID; #endif setInterval(_interval); }; void Thread::runned(unsigned long time){ // Saves last_run last_run = time; // Cache next run _cached_next_run = last_run + interval; } void Thread::setInterval(unsigned long _interval){ // Save interval interval = _interval; // Cache the next run based on the last_run _cached_next_run = last_run + interval; } bool Thread::shouldRun(unsigned long time){ // If the "sign" bit is set the signed difference would be negative bool time_remaining = (time - _cached_next_run) & 0x80000000; // Exceeded the time limit, AND is enabled? Then should run... return !time_remaining && enabled; } void Thread::onRun(void (*callback)(void)){ _onRun = callback; } void Thread::run(){ if(_onRun != NULL) _onRun(); // Update last_run and _cached_next_run runned(); } |
| You are visitor 01402520 — GeezerVison does not store the pages you look up. Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required. |