Skip to content
Snippets Groups Projects
Select Git revision
  • 5f0edac9feb6d146ed67cb6c7e55a0b552aa659d
  • main default protected
  • SOAPP_2.0_development
  • Developement_Karger
4 results

IntrfGpio.h

Blame
  • IntrfGpio.h 3.55 KiB
    //-----------------------------------------------------------------------------
    // Thema:   Social Manufacturing Network / Development Environment
    // Datei:   IntrfGpio.h
    // Editor:  Robert Patzke
    // URI/URL: www.mfp-portal.de
    //-----------------------------------------------------------------------------
    // Lizenz:  CC-BY-SA  (wikipedia: Creative Commons)
    // Datum:   04. April 2022
    //
    // Eine Schnittstelle zu den unterschiedlichen Ports in Mikrocontrollern
    //
    
    #ifndef IntrfGpio_h
    #define IntrfGpio_h
    // ----------------------------------------------------------------------------
    
    #include "arduinoDefs.h"
    
    typedef enum _ifPortNumber
    {
      ifPort0,
      ifPort1,
      ifPort2,
      ifPort3,
      ifPort4,
      ifPort5,
      ifPort6,
      ifPort7,
      ifPort8,
      ifPort9
    } ifPortNumber;
    
    // Fehler bei der Parameterübergabe (Konfiguration)
    //
    typedef enum
    {
      GEnoError,      // Kein Fehler
      GEcdictPar      // Widersprüchliche Parameter
    } GpioError;
    
    typedef struct _GpioMask
    {
      dword       port;
      dword       pins;
    } GpioMask, *GpioMaskPtr;
    
    typedef struct _GpioExtMask
    {
      dword         port;
      dword         pins;
      _GpioExtMask  *next;
    } GpioExtMask, *GpioExtMaskPtr;
    
    typedef struct _GpioRef
    {
      dword     *ioPtr;
      dword     pins;
    } GpioRef, *GpioRefPtr;
    
    typedef struct _GpioExtRef
    {
      dword       *ioPtr;
      dword       pins;
      _GpioExtRef *next;
    } GpioExtRef, *GpioExtRefPtr;
    
    typedef struct _GpioExtVal
    {
      dword       value;
      _GpioExtVal *next;
    } GpioExtVal, *GpioExtValPtr;
    
    // Spezifikation der Schnittstellentreiber (Konfiguration)
    //
    #define IfDrvInput          0x0000        // Pin ist ein Eingang (Default)
    #define IfDrvOutput         0x0001        // Pin ist ein Ausgnag
    #define IfDrvStrongHigh     0x0002        // Großer Strom bei High (VCC)
    #define IfDrvStrongLow      0x0004        // Großer Strom bei Low (0)
    #define IfDrvOpenDrain      0x0008        // Open-Drain-Anschluss
    #define IfDrvOpenSource     0x0010        // Open-Source-Anschluss
    #define IfDrvPullUp         0x0020        // Pull-Up-Widerstand aktiv
    #define IfDrvPullDown       0x0040        // Pull-Down-Widerstand aktiv
    #define IfDrvPullStrong     0x0080        // Niederohmige Pull-Widerstände
    
    typedef enum
    {
      ArdD2D5,
      ArdA0A3,
      ArdA4A5,
      ArdA0A5,
      ArdA4A7,
      ArdA0A7
    } ArdMask;
    
    class IntrfGpio
    {
    public:
    
      //virtual ~IntrfGpio();
    
      // --------------------------------------------------------------------------
      // Konfigurationen
      // --------------------------------------------------------------------------
      //
      virtual GpioError config(int nr, unsigned int cnfBits, GpioExtRefPtr refPtr);
      virtual GpioError config(int nrFrom, int nrTo, unsigned int cnfBits, GpioExtRefPtr refPtr);
      virtual GpioError config(GpioExtMaskPtr maskPtr, unsigned int cnfBits, GpioExtRefPtr refPtr);
      virtual GpioError configArd(ArdMask ardMask, unsigned int cnfBits);
    
      // --------------------------------------------------------------------------
      // Anwendungsfunktionen
      // --------------------------------------------------------------------------
      //
      virtual bool      isSet(GpioExtRefPtr refPtr);
      virtual bool      allSet(GpioExtRefPtr refPtr);
      virtual bool      anySet(GpioExtRefPtr refPtr);
      virtual void      read(GpioExtRefPtr refPtr, GpioExtValPtr valPtr);
      virtual dword     readArd(ArdMask ardMask);
    
      virtual void      write(GpioExtRefPtr refPtr, GpioExtValPtr valPtr);
      virtual void      writeArd(ArdMask ardMask, dword value);
      virtual void      set(GpioExtRefPtr refPtr);
      virtual void      clr(GpioExtRefPtr refPtr);
    };
    
    // ----------------------------------------------------------------------------
    #endif //IntrfGpio_h