Skip to content
Snippets Groups Projects
Select Git revision
  • c7a7b62aea3107a0af214118634a47a94cd14153
  • main default protected
2 results

main_server.py

Blame
  • Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    DidacticNetPSN.h 2.89 KiB
    /**************************************************************************
        @file     DidacticNet.h
        @author   anian buehler @ letsgoING
    **************************************************************************/
    
    #ifndef _DIDACTICNET_PSN_
    #define _DIDACTICNET_PSN_
    
    #include "Arduino.h"
    #include "Config.h"
    #include "DidacticNetTransmit.h"
    #include "Detector.h"
    
    class DidacticNetPSNClient : public DidacticNetTransmit
    {
    private:
        EdgeDetector eDetector;
        ChangeDetector cDetector;
    
        PSNET_CALLBACK_SIGNATURE;
    
        char _topic[PS_MAX_NR_TOPICS_CLIENT][PS_MAX_LEN_TOPICS + 1] = {{0}};
        char _payload[PS_MAX_NR_TOPICS_CLIENT][PS_MAX_LEN_PAYLOAD + 1] = {{0}};
    
        char _bufferTopic[PS_MAX_LEN_TOPICS + 1] = {0};
        char _bufferPayload[PS_MAX_LEN_TOPICS + 1] = {0};
    
        bool _clientMode = PS_CLIENT_MODE_ADVANCED;
        bool _newMessageAvailable = false;
        int _newMessageTopicNr = 0;
        char _currentTopic[PS_MAX_LEN_TOPICS + 1] = {0};
        char _currentPayload[PS_MAX_LEN_PAYLOAD + 1] = {0};
    
        bool savePayload(char *, int);
        bool getMessageFilter(char);
        bool handleData();
        int getTopicNr(char *);
        int getFreeTopicNr();
    
        int edgeDetected(bool);
        bool valueChanged(int, int);
    
        DidacticNetPSNClient &setCallback(PSNET_CALLBACK_SIGNATURE);
    
    public:
        DidacticNetPSNClient();
        ~DidacticNetPSNClient();
    
        void begin(Stream &_port);
        void begin(Stream &_port, PSNET_CALLBACK_SIGNATURE);
    
        DidacticNetPSNClient setCallback();
    
        bool available();
        int readLatestTopicNr();
        void readTopic(char *);
        void readTopic(int, char *);
        void readPayload(char *);
        void readPayload(int, char *);
        void readPayload(char *, char *);
        bool readBooleanPayload();
        int readIntegerPayload();
    
        int getMaxNrTopics();
        int getSubscribedTopic(char *, int);
    
        int publish(char *, char *);
        int publish(char *, int, char *, int);
        int publish(char *, int);
        int publish(char *, bool);
        int publishOnChange(char *, bool);
        int publishOnChange(char *, int, int);
        int subscribe(char *);
        int subscribe(char *, int);
        bool unsubscribe(char *);
        bool unsubscribe(char *, int);
    };
    
    class DidacticNetPSNBroker : public DidacticNetTransmit
    {
    private:
        Stream *_verbosePort;
        char _topic[PS_MAX_NR_TOPICS_BROKER][PS_MAX_LEN_TOPICS + 1] = {{0}};
        char _data[PS_MAX_NR_TOPICS_BROKER][PS_MAX_LEN_PAYLOAD + 1] = {{0}};
    
        char _bufferTopic[PS_MAX_LEN_TOPICS + 1] = {0};
        char _bufferPayload[PS_MAX_LEN_TOPICS + 1] = {0};
    
        bool _isVerbose = false;
    
        bool savePayload(char *, int);
        bool getMessageFilter(char);
        void writeDataToTopic(int, char *, char *);
        bool handleData();
        int getTopicNr(char *);
        int getFreeTopicNr();
        bool update(char *, int, char *, int);
        bool printVerbose(char *);
    
    public:
        DidacticNetPSNBroker();
        ~DidacticNetPSNBroker();
    
        void setVerbose(Stream &_port);
        void setNoneVerbose();
    };
    
    #endif