aqhome-cgi: rewrite of the page module.
This commit is contained in:
@@ -11,7 +11,7 @@
|
||||
#endif
|
||||
|
||||
|
||||
#include "./mdevices.h"
|
||||
#include "./mdevices_p.h"
|
||||
|
||||
#include "aqhome-cgi/modules/devices/mdevices_index.h"
|
||||
#include "aqhome-cgi/modules/devices/mdevices_valuestable.h"
|
||||
@@ -22,6 +22,7 @@
|
||||
#include "aqhome-cgi/modules/devices/mdevices_device.h"
|
||||
#include "aqhome-cgi/modules/devices/mdevices_setdevice.h"
|
||||
#include "aqhome-cgi/modules/devices/mdevices_page.h"
|
||||
#include "aqhome-cgi/modules/devices/mdevices_page2.h"
|
||||
#include "aqhome-cgi/modules/mdataclient.h"
|
||||
|
||||
#include <aqcgi/service/module.h>
|
||||
@@ -46,12 +47,21 @@
|
||||
#define P_VALUEWRITE AQH_MODDEVICES_PERMS_VALUEWRITE
|
||||
|
||||
|
||||
/* ------------------------------------------------------------------------------------------------
|
||||
* global vars
|
||||
* ------------------------------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
GWEN_INHERIT(AQCGI_MODULE, AQH_MOD_DEVICES)
|
||||
|
||||
|
||||
|
||||
/* ------------------------------------------------------------------------------------------------
|
||||
* forward declarations
|
||||
* ------------------------------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
static void GWENHYWFAR_CB _freeData(void *bp, void *p);
|
||||
static AQCGI_MODULE *_loadSubModule(AQCGI_MODULE *m, AQCGI_REQUEST *rq, AQCGI_SESSION *session, const char *sModuleName);
|
||||
static int _handleRequest(AQCGI_MODULE *m, AQCGI_REQUEST *rq, AQCGI_SESSION *session, const char *sLastPathElem);
|
||||
|
||||
@@ -103,13 +113,94 @@ static AQH_MODSERVICE_HANDLER_ENTRY _requestTable[]={
|
||||
|
||||
void AQH_ModDevices_Extend(AQCGI_MODULE *m, AQCGI_SERVICE *sv, const char *baseFolder)
|
||||
{
|
||||
AQH_MOD_DEVICES *xm;
|
||||
|
||||
AQH_ModService_Extend(m, sv, baseFolder);
|
||||
|
||||
GWEN_NEW_OBJECT(AQH_MOD_DEVICES, xm);
|
||||
GWEN_INHERIT_SETDATA(AQCGI_MODULE, AQH_MOD_DEVICES, m, xm, _freeData);
|
||||
|
||||
AQH_ModService_SetHandleRequestFn(m, _handleRequest);
|
||||
AQH_ModService_SetLoadSubModuleFn(m, _loadSubModule);
|
||||
}
|
||||
|
||||
|
||||
|
||||
void _freeData(GWEN_UNUSED void *bp, void *p)
|
||||
{
|
||||
AQH_MOD_DEVICES *xm;
|
||||
|
||||
xm=(AQH_MOD_DEVICES*) p;
|
||||
AQH_Value_List_free(xm->valueList);
|
||||
AQH_Device_List_free(xm->deviceList);
|
||||
GWEN_FREE_OBJECT(xm);
|
||||
}
|
||||
|
||||
|
||||
|
||||
AQH_DEVICE_LIST *AQH_ModDevices_GetDeviceList(const AQCGI_MODULE *m)
|
||||
{
|
||||
if (m) {
|
||||
AQH_MOD_DEVICES *xm;
|
||||
|
||||
xm=GWEN_INHERIT_GETDATA(AQCGI_MODULE, AQH_MOD_DEVICES, m);
|
||||
if (xm) {
|
||||
return xm->deviceList;
|
||||
}
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
|
||||
void AQH_ModDevices_SetDeviceList(AQCGI_MODULE *m, AQH_DEVICE_LIST *deviceList)
|
||||
{
|
||||
if (m) {
|
||||
AQH_MOD_DEVICES *xm;
|
||||
|
||||
xm=GWEN_INHERIT_GETDATA(AQCGI_MODULE, AQH_MOD_DEVICES, m);
|
||||
if (xm) {
|
||||
AQH_Device_List_free(xm->deviceList);
|
||||
xm->deviceList=deviceList;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
AQH_VALUE_LIST *AQH_ModDevices_GetValueList(const AQCGI_MODULE *m)
|
||||
{
|
||||
if (m) {
|
||||
AQH_MOD_DEVICES *xm;
|
||||
|
||||
xm=GWEN_INHERIT_GETDATA(AQCGI_MODULE, AQH_MOD_DEVICES, m);
|
||||
if (xm) {
|
||||
return xm->valueList;
|
||||
}
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
|
||||
void AQH_ModDevices_SetValueList(AQCGI_MODULE *m, AQH_VALUE_LIST *valueList)
|
||||
{
|
||||
if (m) {
|
||||
AQH_MOD_DEVICES *xm;
|
||||
|
||||
xm=GWEN_INHERIT_GETDATA(AQCGI_MODULE, AQH_MOD_DEVICES, m);
|
||||
if (xm) {
|
||||
AQH_Value_List_free(xm->valueList);
|
||||
xm->valueList=valueList;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
AQCGI_MODULE *_loadSubModule(AQCGI_MODULE *m, AQCGI_REQUEST *rq, AQCGI_SESSION *session, const char *sModuleName)
|
||||
{
|
||||
return NULL;
|
||||
@@ -183,7 +274,7 @@ void _handleRqDevicePost(AQCGI_MODULE *m, AQCGI_REQUEST *rq, AQCGI_SESSION *sess
|
||||
|
||||
void _handleRqPageGet(AQCGI_MODULE *m, AQCGI_REQUEST *rq, AQCGI_SESSION *session, GWEN_BUFFER *dbuf)
|
||||
{
|
||||
AQH_ModDataClient_HandleRequest(m, rq, session, AQH_ModDevices_RunPageGet, dbuf);
|
||||
AQH_ModDataClient_HandleRequest(m, rq, session, AQH_ModDevices_RunPage2Get, dbuf);
|
||||
}
|
||||
|
||||
|
||||
@@ -197,7 +288,7 @@ void _handleRqPagePost(AQCGI_MODULE *m, AQCGI_REQUEST *rq, AQCGI_SESSION *sessio
|
||||
|
||||
void _handleRqPageGraphGet(AQCGI_MODULE *m, AQCGI_REQUEST *rq, AQCGI_SESSION *session, GWEN_BUFFER *dbuf)
|
||||
{
|
||||
AQH_ModDataClient_HandleRequest(m, rq, session, AQH_ModDevices_RunPageGraph, dbuf);
|
||||
AQH_ModDataClient_HandleRequest(m, rq, session, AQH_ModDevices_RunPage2Graph, dbuf);
|
||||
}
|
||||
|
||||
|
||||
@@ -583,3 +674,41 @@ AQDG_GRAPH_DATAPAIR_LIST *_createDataPairListFromDataPoints(const uint64_t *data
|
||||
|
||||
|
||||
|
||||
void AQH_ModDevices_ReadDevicesAndValues(AQCGI_MODULE *m, AQH_DATACLIENT *dc)
|
||||
{
|
||||
AQH_DEVICE_LIST *deviceList;
|
||||
AQH_VALUE_LIST *valueList;
|
||||
|
||||
deviceList=AQH_DataClient_GetDevices(dc, NULL);
|
||||
AQH_ModDevices_SetDeviceList(m, deviceList);
|
||||
|
||||
valueList=AQH_DataClient_GetValues(dc, NULL, 0);
|
||||
AQH_ModDevices_SetValueList(m, valueList);
|
||||
if (deviceList && valueList) {
|
||||
AQH_VALUE *v;
|
||||
|
||||
v=AQH_Value_List_First(valueList);
|
||||
while(v) {
|
||||
const char *s;
|
||||
|
||||
s=AQH_Value_GetDeviceNameForSystem(v);
|
||||
if (s && *s) {
|
||||
AQH_DEVICE *device;
|
||||
|
||||
device=AQH_Device_List_GetByNameForSystem(deviceList, s);
|
||||
if (device) {
|
||||
AQH_Value_SetDevicePtr(v, device);
|
||||
}
|
||||
else {
|
||||
DBG_ERROR(NULL, "Device %s not found in list", s);
|
||||
}
|
||||
}
|
||||
|
||||
v=AQH_Value_List_Next(v);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user