Files
aqhomecontrol/apps/aqhome-tool/client.h

78 lines
2.6 KiB
C

/****************************************************************************
* This file is part of the project AqHome.
* AqHome (c) by 2023 Martin Preuss, all rights reserved.
*
* The license for this file can be found in the file COPYING which you
* should have received along with this file.
****************************************************************************/
#ifndef AQHOME_TOOL_CLIENT_H
#define AQHOME_TOOL_CLIENT_H
#include "aqhome/msg/ipc/m_ipc_tag16.h"
#include <gwenhywfar/args.h>
#define AQH_TOOL_CLIENT_NODEADDR 240
#define AQH_TOOL_CLIENT_CONNECTFLAGS_WITHCONNECTMSG 0x0001
#define AQH_TOOL_CLIENT_CONNECTFLAGS_WITHGRPMSG 0x0002
typedef AQH_MESSAGE* (*AQH_TOOLCLIENT_CREATEREQUESTMESSAGE_FN)(AQH_OBJECT *o, uint32_t msgId);
typedef int (*AQH_TOOLCLIENT_HANDLERESPONSEMESSAGE_FN)(AQH_OBJECT *o, const AQH_MESSAGE *msg, const GWEN_TAG16_LIST *tagList, int first);
AQH_OBJECT *AQH_ToolClient_new(AQH_EVENT_LOOP *eventLoop,
uint8_t protoId, uint8_t protoVer,
GWEN_DB_NODE *dbGlobalArgs, const GWEN_ARGS *argDescrs);
int AQH_ToolClient_ReadLocalArgs(AQH_OBJECT *o, int argc, char **argv);
int AQH_ToolClient_Run(AQH_OBJECT *o);
int AQH_ToolClient_Watch(AQH_OBJECT *o);
int AQH_ToolClient_Connect(AQH_OBJECT *o, uint32_t connFlags, uint32_t connMsgFlags, uint32_t grps);
int AQH_ToolClient_RunConnected(AQH_OBJECT *o);
int AQH_ToolClient_WatchConnected(AQH_OBJECT *o);
int AQH_ToolClient_RunConnectedWithNodeMsgs(AQH_OBJECT *o);
void AQH_ToolClient_SendNodeMsg(AQH_OBJECT *o, const AQH_MESSAGE *nodeMsg);
AQH_MESSAGE *AQH_ToolClient_WaitForNodeMsg(AQH_OBJECT *o, int nodeSrcAddr, uint8_t nodeMsgType, int timeoutInSeconds);
AQH_OBJECT *AQH_ToolClient_GetEndpoint(const AQH_OBJECT *o);
GWEN_DB_NODE *AQH_ToolClient_GetDbGlobalArgs(const AQH_OBJECT *o);
GWEN_DB_NODE *AQH_ToolClient_GetDbLocalArgs(const AQH_OBJECT *o);
uint32_t AQH_ToolClient_GetFlags(const AQH_OBJECT *o);
void AQH_ToolClient_SetFlags(AQH_OBJECT *o, uint32_t f);
void AQH_ToolClient_AddFlags(AQH_OBJECT *o, uint32_t f);
void AQH_ToolClient_SubFlags(AQH_OBJECT *o, uint32_t f);
void AQH_ToolClient_SetAcceptedGroups(AQH_OBJECT *o, uint32_t f);
/**
* @param o client object
* @param msg received message
* @param tagList list of GWEN_TAG16 objects
* @param first msg is the first response received
*/
int AQH_ToolClient_HandleResultMsg(const AQH_MESSAGE *msg, const GWEN_TAG16_LIST *tagList, int first);
void AQH_ToolClient_SetCreateRequestMessageFn(AQH_OBJECT *o, AQH_TOOLCLIENT_CREATEREQUESTMESSAGE_FN f);
void AQH_ToolClient_SetHandleResponseMessageFn(AQH_OBJECT *o, AQH_TOOLCLIENT_HANDLERESPONSEMESSAGE_FN f);
#endif