diff options
author | inmarket <andrewh@inmarket.com.au> | 2014-08-20 17:42:53 +1000 |
---|---|---|
committer | inmarket <andrewh@inmarket.com.au> | 2014-08-20 17:42:53 +1000 |
commit | 0f3f8f68f87233bf59c3fa68c3dfe1f492a1a478 (patch) | |
tree | 3dc625e7dfcfc620e83827ccd18423be1b5334f4 /src/ginput/dial.c | |
parent | fcbb66a9394eaf4059bc942df6729b4b55a057d8 (diff) | |
download | uGFX-0f3f8f68f87233bf59c3fa68c3dfe1f492a1a478.tar.gz uGFX-0f3f8f68f87233bf59c3fa68c3dfe1f492a1a478.tar.bz2 uGFX-0f3f8f68f87233bf59c3fa68c3dfe1f492a1a478.zip |
Rename lots of files to help prevent compile time name conflicts.
Diffstat (limited to 'src/ginput/dial.c')
-rw-r--r-- | src/ginput/dial.c | 153 |
1 files changed, 0 insertions, 153 deletions
diff --git a/src/ginput/dial.c b/src/ginput/dial.c deleted file mode 100644 index 410efc1a..00000000 --- a/src/ginput/dial.c +++ /dev/null @@ -1,153 +0,0 @@ -/* - * This file is subject to the terms of the GFX License. If a copy of - * the license was not distributed with this file, you can obtain one at: - * - * http://ugfx.org/license.html - */ - -/** - * @file src/ginput/dial.c - * @brief GINPUT dial code. - * - * @defgroup Dial Dial - * @ingroup GINPUT - * @{ - */ -#include "gfx.h" - -#if GFX_USE_GINPUT && GINPUT_NEED_DIAL - -#include "src/ginput/driver_dial.h" - -static GTIMER_DECL(DialTimer); -static struct DialStatus_t { - uint16_t sensitivity; - uint16_t lastvalue; - uint16_t max; -} DialStatus[GINPUT_DIAL_NUM_PORTS]; - -// The reading callback function -static void DialCallback(uint16_t instance, uint16_t rawvalue) { - struct DialStatus_t *pds; - GSourceListener *psl; - GEventDial *pe; - - /* Get the information we need */ - pds = DialStatus+instance; - - /* Range scale - if needed */ - if (pds->max != GINPUT_DIAL_MAX_VALUE) - rawvalue = (uint16_t)((uint32_t)rawvalue * pds->max / GINPUT_DIAL_MAX_VALUE); - - /* Forget about changes below our sensitivity threshold */ - if (rawvalue >= pds->lastvalue) { - if (rawvalue - pds->lastvalue < pds->sensitivity) return; - } else { - if (pds->lastvalue - rawvalue < pds->sensitivity) return; - } - - /* Save the value */ - pds->lastvalue = rawvalue; - - // Send the event to the listeners that are interested. - psl = 0; - while ((psl = geventGetSourceListener((GSourceHandle)(DialStatus+instance), psl))) { - if (!(pe = (GEventDial *)geventGetEventBuffer(psl))) - continue; - pe->type = GEVENT_DIAL; - pe->instance = instance; - pe->value = pds->lastvalue; - pe->maxvalue = pds->max; - geventSendEvent(psl); - } -} - -GSourceHandle ginputGetDial(uint16_t instance) { - struct DialStatus_t *pds; - - if (instance >= GINPUT_DIAL_NUM_PORTS) - return 0; - - // Do we need to initialise the dial subsystem? - if (!gtimerIsActive(&DialTimer)) { - for(pds = DialStatus; pds < DialStatus+GINPUT_DIAL_NUM_PORTS; pds++) { - pds->max = GINPUT_DIAL_MAX_VALUE; -#if GINPUT_DIAL_MAX_VALUE < 100 - pds->sensitivity = 1; -#else - pds->sensitivity = GINPUT_DIAL_MAX_VALUE/100; -#endif - pds->lastvalue = 0; - } - ginput_lld_dial_init(); - gtimerStart(&DialTimer, (GTimerFunction)ginput_lld_dial_poll, DialCallback, TRUE, GINPUT_DIAL_POLL_PERIOD); - } - - // OK - return this input - return (GSourceHandle)(DialStatus+instance); -} - -void ginputResetDialRange(uint16_t instance) { - if (instance >= GINPUT_DIAL_NUM_PORTS) - return; - - ginputSetDialRange(instance, GINPUT_DIAL_MAX_VALUE); -} - -uint16_t ginputGetDialRange(uint16_t instance) { - if (instance >= GINPUT_DIAL_NUM_PORTS) - return 0; - - return DialStatus[instance].max; -} - -void ginputSetDialRange(uint16_t instance, uint16_t max) { - struct DialStatus_t *pds; - - if (instance >= GINPUT_DIAL_NUM_PORTS) - return; - - pds = DialStatus+instance; - - // Rescale the last value and the sensitivity - if (max != pds->max) { - pds->lastvalue = (uint16_t)((uint32_t)pds->lastvalue * max / pds->max); - pds->sensitivity = (uint16_t)((uint32_t)pds->sensitivity * max / pds->max); - pds->max = max; - } -} - -/** - * @brief Set the level change required before a dial even is generated (threshold) - * @note This is done after range scaling - * - * @param[in] instance The ID of the dial input instance - * @param[in] diff The amount of level changes - */ -void ginputSetDialSensitivity(uint16_t instance, uint16_t diff) { - if (instance >= GINPUT_DIAL_NUM_PORTS) - return; - - DialStatus[instance].sensitivity = diff; -} - -/** - * @brief Get the current dial status - * - * @param[in] instance The ID of the dial input instance - * @param[in] pdial The dial event struct - * - * @return Returns FALSE on an error (eg invalid instance) - */ -bool_t ginputGetDialStatus(uint16_t instance, GEventDial *pdial) { - if (instance >= GINPUT_DIAL_NUM_PORTS) - return FALSE; - pdial->type = GEVENT_DIAL; - pdial->instance = instance; - pdial->value = DialStatus[instance].lastvalue; - pdial->maxvalue = DialStatus[instance].max; - return TRUE; -} - -#endif /* GFX_USE_GINPUT && GINPUT_NEED_DIAL */ -/** @} */ |