You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
82 lines
2.0 KiB
82 lines
2.0 KiB
/** @file navswitch.h
|
|
@author M. P. Hayes, UCECE
|
|
@date 15 Feb 2003
|
|
@brief Navswitch polling (no debouncing).
|
|
|
|
@defgroup navswitch Navswitch driver
|
|
|
|
This module implements a simple navswitch driver. Note, no
|
|
debouncing is performed.
|
|
|
|
Here's an example application where the navswitches are polled at 50 Hz:
|
|
|
|
@code
|
|
#include "pacer.h"
|
|
#include "navswitch.h"
|
|
|
|
void main (void)
|
|
{
|
|
system_init ();
|
|
navswitch_init ();
|
|
pacer_init (50);
|
|
|
|
while (1)
|
|
{
|
|
pacer_wait ();
|
|
navswitch_update ();
|
|
|
|
if (navswitch_push_event_p (NAVSWITCH_EAST))
|
|
// Do something
|
|
|
|
if (navswitch_push_event_p (NAVSWITCH_WEST))
|
|
// Do something
|
|
}
|
|
}
|
|
@endcode
|
|
*/
|
|
|
|
|
|
#ifndef NAVSWITCH_H
|
|
#define NAVSWITCH_H
|
|
|
|
#include "system.h"
|
|
|
|
|
|
enum {NAVSWITCH_NORTH, NAVSWITCH_EAST, NAVSWITCH_SOUTH, NAVSWITCH_WEST,
|
|
NAVSWITCH_PUSH};
|
|
|
|
|
|
/** Poll all the navswitches and update their state. */
|
|
void navswitch_update (void);
|
|
|
|
|
|
/** Return true if navswitch state changed from up to down since
|
|
last call to navswitch_update
|
|
@param navswitch index of navswitch to select
|
|
@return 1 if navswitch changed from up to down otherwise 0 */
|
|
bool navswitch_push_event_p (uint8_t navswitch);
|
|
|
|
|
|
/** Return true if navswitch state changed from down to up since
|
|
last call to navswitch_update
|
|
@param navswitch index of navswitch to select
|
|
@return 1 if navswitch changed from down to up otherwise 0 */
|
|
bool navswitch_release_event_p (uint8_t navswitch);
|
|
|
|
|
|
/** Return true if navswitch down (pushed).
|
|
@param navswitch index of navswitch to select
|
|
@return 1 if navswitch down otherwise 0 */
|
|
bool navswitch_down_p (uint8_t navswitch);
|
|
|
|
|
|
/** Return true if navswitch up (released).
|
|
@param navswitch index of navswitch to select
|
|
@return 1 if navswitch down otherwise 0 */
|
|
bool navswitch_up_p (uint8_t navswitch);
|
|
|
|
|
|
/** Initialise navswitch driver. */
|
|
void navswitch_init (void);
|
|
#endif
|