diff --git a/apps/aqhome-nodes/db.c b/apps/aqhome-nodes/db.c index 339737b..12522ef 100644 --- a/apps/aqhome-nodes/db.c +++ b/apps/aqhome-nodes/db.c @@ -90,6 +90,21 @@ void AqHomed_NodeMsgToDb(AQHOMED *aqh, const GWEN_MSG *msg) +void AqHomed_WriteNodeDb(AQHOMED *aqh) +{ + if (aqh->dbFile) { + GWEN_DB_NODE *dbNodeDb; + + AQH_NodeDb_ClearModified(aqh->nodeDb); + dbNodeDb=GWEN_DB_Group_new("nodeDb"); + AQH_NodeDb_toDb(aqh->nodeDb, dbNodeDb); + GWEN_DB_WriteFile(dbNodeDb, aqh->dbFile, GWEN_DB_FLAGS_DEFAULT); + GWEN_DB_Group_free(dbNodeDb); + } +} + + + void _handleMsgValue2(AQHOMED *aqh, const GWEN_MSG *msg) { AQH_NODE_INFO *ni; @@ -192,7 +207,14 @@ void _handleMsgDevice(AQHOMED *aqh, const GWEN_MSG *msg) uid=AQH_DeviceMsg_GetUid(msg); ni=_getOrCreateNodeAndUpdateUidAddr(aqh, msg, uid); if (ni) { - // TODO + AQH_NodeInfo_SetManufacturer(ni, AQH_DeviceMsg_GetManufacturer(msg)); + AQH_NodeInfo_SetDeviceType(ni, AQH_DeviceMsg_GetDeviceType(msg)); + AQH_NodeInfo_SetDeviceVersion(ni, (AQH_DeviceMsg_GetDeviceVersion(msg)<<8)+AQH_DeviceMsg_GetDeviceRevision(msg)); + AQH_NodeInfo_SetFirmwareVersion(ni, + (AQH_DeviceMsg_GetFirmwareVariant(msg)<<24) | + (AQH_DeviceMsg_GetFirmwareVersionMajor(msg)<<16) | + (AQH_DeviceMsg_GetFirmwareVersionMinor(msg)<<8) | + AQH_DeviceMsg_GetFirmwareVersionPatchlevel(msg)); _updateTimestampLastChange(ni); AQH_NodeDb_SetModified(aqh->nodeDb); } diff --git a/apps/aqhome-nodes/db.h b/apps/aqhome-nodes/db.h index cdd5f01..4b12c76 100644 --- a/apps/aqhome-nodes/db.h +++ b/apps/aqhome-nodes/db.h @@ -16,6 +16,8 @@ void AqHomed_NodeMsgToDb(AQHOMED *aqh, const GWEN_MSG *msg); +void AqHomed_WriteNodeDb(AQHOMED *aqh); + #endif diff --git a/apps/aqhome-nodes/fini.c b/apps/aqhome-nodes/fini.c index f066186..9b6411b 100644 --- a/apps/aqhome-nodes/fini.c +++ b/apps/aqhome-nodes/fini.c @@ -12,6 +12,7 @@ #include "./fini.h" +#include "./db.h" #include "./aqhomed_p.h" #include @@ -61,6 +62,8 @@ void AqHomed_Fini(AQHOMED *aqh) aqh->ipcdEndpoint=NULL; aqh->brokerEndpoint=NULL; + AqHomed_WriteNodeDb(aqh); + if (aqh->pidFile) remove(aqh->pidFile); } diff --git a/apps/aqhome-nodes/loop.c b/apps/aqhome-nodes/loop.c index 21dc684..369f0ad 100644 --- a/apps/aqhome-nodes/loop.c +++ b/apps/aqhome-nodes/loop.c @@ -78,16 +78,8 @@ void AqHomed_Loop(AQHOMED *aqh, int timeoutInMsecs) GWEN_Msg_List_GetCount(GWEN_MsgEndpoint_GetSendMessageList(aqh->brokerEndpoint))); #endif - if (AQH_NodeDb_IsModified(aqh->nodeDb)) { - if (aqh->dbFile) { - GWEN_DB_NODE *dbNodeDb; - - dbNodeDb=GWEN_DB_Group_new("nodeDb"); - AQH_NodeDb_toDb(aqh->nodeDb, dbNodeDb); - GWEN_DB_WriteFile(dbNodeDb, aqh->dbFile, GWEN_DB_FLAGS_DEFAULT); - GWEN_DB_Group_free(dbNodeDb); - } - } + if (AQH_NodeDb_IsModified(aqh->nodeDb)) + AqHomed_WriteNodeDb(aqh); } }