at master 2.1 kB view raw
1/* 2Copyright (C) 2020 Ryan Caltabiano <https://github.com/XScorpion2> 3 4Permission is hereby granted, free of charge, to any person obtaining a copy of 5this software and associated documentation files (the "Software"), to deal in 6the Software without restriction, including without limitation the rights to 7use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies 8of the Software, and to permit persons to whom the Software is furnished to do 9so, subject to the following conditions: 10 11The above copyright notice and this permission notice shall be included in all 12copies or substantial portions of the Software. 13 14If you happen to meet one of the copyright holders in a bar you are obligated 15to buy them one pint of beer. 16 17THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 18IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 19FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 20AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 21LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 22OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 23SOFTWARE. 24*/ 25 26#include "sync_timer.h" 27#include "keyboard.h" 28 29#if defined(SPLIT_KEYBOARD) && !defined(DISABLE_SYNC_TIMER) 30volatile int32_t sync_timer_ms; 31 32void sync_timer_init(void) { 33 sync_timer_ms = 0; 34} 35 36void sync_timer_update(uint32_t time) { 37 if (is_keyboard_master()) return; 38 sync_timer_ms = time - timer_read32(); 39} 40 41uint16_t sync_timer_read(void) { 42 if (is_keyboard_master()) return timer_read(); 43 return sync_timer_read32(); 44} 45 46uint32_t sync_timer_read32(void) { 47 if (is_keyboard_master()) return timer_read32(); 48 return sync_timer_ms + timer_read32(); 49} 50 51uint16_t sync_timer_elapsed(uint16_t last) { 52 if (is_keyboard_master()) return timer_elapsed(last); 53 return TIMER_DIFF_16(sync_timer_read(), last); 54} 55 56uint32_t sync_timer_elapsed32(uint32_t last) { 57 if (is_keyboard_master()) return timer_elapsed32(last); 58 return TIMER_DIFF_32(sync_timer_read32(), last); 59} 60#endif