mirror of https://github.com/joan2937/pigpio
45 lines
1.1 KiB
C++
45 lines
1.1 KiB
C++
#ifndef IR_RX_HASHER_HPP
|
|
#define IR_RX_HASHER_HPP
|
|
|
|
#include <stdint.h>
|
|
|
|
typedef void (*HasherCB_t)(uint32_t);
|
|
|
|
class Hasher
|
|
{
|
|
|
|
/*
|
|
This class forms a hash over the IR pulses generated by an
|
|
IR remote.
|
|
|
|
The remote key press is not converted into a code in the manner of
|
|
the lirc module. No attempt is made to decode the type of protocol
|
|
used by the remote. The hash is likely to be unique for different
|
|
keys and different remotes but this is not guaranteed.
|
|
|
|
This hashing process works for some remotes/protocols but not for
|
|
others. The only way to find out if it works for one or more of
|
|
your remotes is to try it and see.
|
|
*/
|
|
|
|
int mygpio, mytimeout;
|
|
HasherCB_t mycallback;
|
|
int in_code;
|
|
uint32_t hash_val;
|
|
int edges;
|
|
uint32_t t1, t2, t3, t4;
|
|
|
|
void _hash(int old_val, int new_val);
|
|
void _callback(int gpio, int level, uint32_t tick);
|
|
|
|
/* Need a static callback to link with C. */
|
|
static void _callbackExt(int gpio, int level, uint32_t tick, void *user);
|
|
|
|
public:
|
|
|
|
Hasher(int gpio, HasherCB_t callback, int timeout=5);
|
|
};
|
|
|
|
#endif
|
|
|