/****************************************************************************
 * This file is part of the project AqHome.
 * AqHome (c) by 2025 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 AQH_M_IPCD_MULTIDATA_H
#define AQH_M_IPCD_MULTIDATA_H



#include <aqhome/api.h>
#include <aqhome/ipc2/message.h>
#include <aqhome/data/value.h>

#include <gwenhywfar/tag16.h>
#include <gwenhywfar/buffer.h>



#define AQH_MSGDATA_MULTIDATA_FLAGS_LASTMSG 0x0001

#define AQH_MSGDATA_MULTIDATA_TAGS_FLAGS 0x01
#define AQH_MSGDATA_MULTIDATA_TAGS_VALUE 0xc1
#define AQH_MSGDATA_MULTIDATA_TAGS_DATA  0xc2



AQHOME_API AQH_MESSAGE *AQH_IpcdMessageMultiData_new(uint16_t code, uint32_t msgId, uint32_t refMsgId, uint32_t flags,
                                                     const AQH_VALUE *value, const uint64_t *i64Ptr, int numOfDataPoints);
AQHOME_API AQH_MESSAGE *AQH_IpcdMessageMultiData_newForOne(uint16_t code, uint32_t msgId, uint32_t refMsgId, uint32_t flags,
                                                           const AQH_VALUE *value, uint64_t timeStamp, double dataPoint);

AQHOME_API uint32_t AQH_IpcdMessageMultiData_GetFlags(const GWEN_TAG16_LIST *tagList);
AQHOME_API AQH_VALUE *AQH_IpcdMessageMultiData_ReadValue(const GWEN_TAG16_LIST *tagList);
AQHOME_API void AQH_IpcdMessageMultiData_ReadDatapoints(const GWEN_TAG16_LIST *tagList,
                                                        const uint64_t **pDataPtr, uint64_t *pNumberOfPoints);

AQHOME_API void AQH_IpcdMessageMultiData_DumpToBuffer(const AQH_MESSAGE *msg, const GWEN_TAG16_LIST *tagList,
                                                      GWEN_BUFFER *dbuf, const char *sText);



#endif
