/**************************************************************************** * 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. ****************************************************************************/ #ifdef HAVE_CONFIG_H # include #endif #include "./loop_ipc.h" #include "./aqhome_mqtt_p.h" #include "./c_setdata.h" #include "aqhome/ipc/data/ipc_data.h" #include #include #include #include #include #include #define FULL_DEBUG /* ------------------------------------------------------------------------------------------------ * forward declarations * ------------------------------------------------------------------------------------------------ */ static void _handleIpcMsg(AQHOME_MQTT *aqh, GWEN_MSG_ENDPOINT *ep, GWEN_MSG *msg); /* ------------------------------------------------------------------------------------------------ * implementations * ------------------------------------------------------------------------------------------------ */ void AqHomeMqttLog_ReadAndHandleIpcMessages(AQHOME_MQTT *aqh) { GWEN_MSG_ENDPOINT *epTcp; GWEN_MSG *msg; epTcp=aqh->brokerEndpoint; while( (msg=GWEN_MsgEndpoint_TakeFirstReceivedMessage(epTcp)) ) { _handleIpcMsg(aqh, epTcp, msg); GWEN_Msg_free(msg); } } void _handleIpcMsg(AQHOME_MQTT *aqh, GWEN_MSG_ENDPOINT *ep, GWEN_MSG *msg) { uint16_t code; uint8_t protoId; /* exec IPC message */ code=GWEN_IpcMsg_GetCode(msg); protoId=GWEN_IpcMsg_GetProtoId(msg); if (protoId==AQH_IPC_PROTOCOL_DATA_ID) { DBG_DEBUG(AQH_LOGDOMAIN, "Received IPC packet %d (%x)", (int) code, code); switch(code) { case AQH_MSGTYPE_IPC_DATA_SETDATA: AqHomeMqttLog_HandleSetData(aqh, ep, msg); break; default: break; } } else if (protoId==0 && code==AQH_MSGTYPE_IPC_DATA_RESULT) { /* result received */ } else { DBG_ERROR(NULL, "Invalid IPC protocol %d (%02x)", protoId, protoId); } }