/***************************************************************************** source::worx libPiGPio Copyright © 2022 c.holzheuer chris@sourceworx.org This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. Uses: pigpiod_if2 by joan2937, pigpio @ abyz.me.uk https://abyz.me.uk/rpi/pigpio sigslot by 2017 Pierre-Antoine Lacaze https://github.com/palacaze/sigslot ***************************************************************************/ #ifndef PIGPIN_H #define PIGPIN_H #include using namespace pigpio; //class pigCall; struct LIBPIGPIO_EXPORT pigPin { bcm_t bcm = bcm_t::bcm_off; io_t mode = io_t::io_off; pud_t pud = pud_t::pull_off; int cbId = -1; pigPin() = default; explicit pigPin( bcm_t bcmNo, io_t modType, pud_t pudType = pull_off ); virtual ~pigPin(); // delete copy/assign const? void init( bcm_t bcmNo, io_t modType, pud_t pudType = pull_off ); virtual void dump(); // pin operations int get_level(); void set_level( level_t level ); int trigger_level( level_t level, uint32_t pulseLen ); int wait_for_edge( edge_t edge, double timeout = TimeoutDef ); // pin config int set_io_mode( io_t modType ); int get_io_mode(); int set_pud_mode( pud_t pudType ); int set_glitch_filter( uint32_t glitch = GlitchDef ); int set_noise_filter( uint32_t steady, uint32_t active ); // reality interface int set_callback( pigCall* fn, edge_t = either ); int cancel_callback( int cbId ); }; struct LIBPIGPIO_EXPORT pigPinIn : public pigPin { pigPinIn(); pigPinIn( bcm_t bcmNo, pud_t pudType = pull_off ); virtual ~pigPinIn(); void init( bcm_t bcmNo, pud_t pudType = pull_off ); }; struct LIBPIGPIO_EXPORT pigPinOut : public pigPin { pigPinOut(); pigPinOut( pigpio::bcm_t bcmNo, pud_t pudType = pull_off ); virtual ~pigPinOut(); void init( bcm_t bcmNo, pud_t pudType = pull_off ); }; #endif // PIGPIN_H