#ifndef RESPONSECLASSES_H
#define RESPONSECLASSES_H
#include <QByteArray>
#include <QString>
#include <QVariant>
#include <QMap>
#include <QList>
#include <QHash>
//#include "zigateplugin.h"

//void (*propertyManager)(QByteArray);
class ZigatePlugin;
class Response
{
public:
    QByteArray code;
    QByteArray datas;
    QString description;
    void manager(Response *);
};

class ResponseProperties
{
public:
    QByteArray code;
    QByteArray datas;
    QString description;
    QMap <uint, QList<QVariant>> properties;
    QMap <uint, QMap<uint,QString>> propertyDetail;
    QHash <uint, void (*)(QByteArray)> propertyManagerList;
    void (*manager)(ResponseProperties *);
};

void infoOutput(ResponseProperties *);
void defaultManager(ResponseProperties *);
//void (*manager)(Response *);
void macCapabilityManager(QByteArray);
//void deviceAnnounceManager(ResponseProperties *);
//void commandReturnStatusManager(ResponseProperties *);
//void logMessageManager(ResponseProperties *);
//void dataIndicationManager(ResponseProperties *);
void clustersListManager(ResponseProperties *);
//void attributesListManager(ResponseProperties *);
//void commandsListManager(ResponseProperties *);
//void statusManager(ResponseProperties *);
//void status2Manager(ResponseProperties *);
//void versionListManager(ResponseProperties *);
//void permitJoinManager(ResponseProperties *);
//void networkJoinedFormedManager(ResponseProperties *);
//void bindResponseManager(ResponseProperties *);
//void unbindResponseManager(ResponseProperties *);
//void networkAddressManager(ResponseProperties *);
void iEEEAddressManager(ResponseProperties *);
void nodeDescriptorManager(ResponseProperties *);
void simpleDescriptorManager(ResponseProperties *);
//void powerDescriptorManager(ResponseProperties *);
//void activeEndpointManager(ResponseProperties *);
//void matchDescriptorManager(ResponseProperties *);
//void userDescriptorNotifyManager(ResponseProperties *);
//void userDescriptorManager(ResponseProperties *);
//void complexDescriptorManager(ResponseProperties *);
//void managementLeaveManager(ResponseProperties *);
//void leaveIndicationManager(ResponseProperties *);
//void managementNetworkUpdateManager(ResponseProperties *);
//void systemServerDiscoveryManager(ResponseProperties *);
//void managementLQIManager(ResponseProperties *);
//void attributeDiscoveryManager(ResponseProperties *);
void deviceListManager(ResponseProperties *);
void networkAddressManager(ResponseProperties *);
void dataIndicationManager(ResponseProperties *);
void macCapabilityManager(QByteArray mac);

#endif // RESPONSECLASSES_H
