ssdpd: align with dm_data

This commit is contained in:
Suvendhu Hansa 2024-06-04 17:45:41 +05:30 committed by Amin Ben Romdhane
parent 1ae6eb33e9
commit b2d07e6e30

View file

@ -14,7 +14,6 @@ struct upnpdiscovery {
char *uuid; char *uuid;
char *urn; char *urn;
char *descurl; char *descurl;
struct uci_section *dmmap_sect;
}; };
struct upnp_device_inst { struct upnp_device_inst {
@ -32,7 +31,6 @@ struct upnp_device_inst {
char *preentation_url; char *preentation_url;
char *parentudn; char *parentudn;
char *upc; char *upc;
struct uci_section *dmmap_sect;
}; };
struct upnp_service_inst { struct upnp_service_inst {
@ -42,12 +40,10 @@ struct upnp_service_inst {
char *scpdurl; char *scpdurl;
char *controlurl; char *controlurl;
char *eventsuburl; char *eventsuburl;
struct uci_section *dmmap_sect;
}; };
struct upnp_description_file_info { struct upnp_description_file_info {
char *desc_url; char *desc_url;
struct uci_section *dmmap_sect;
}; };
/************************************************************* /*************************************************************
@ -58,9 +54,9 @@ static int browseUPnPDiscoveryRootDeviceInst(struct dmctx *dmctx, DMNODE *parent
json_object *res = NULL, *root_devices = NULL, *device = NULL; json_object *res = NULL, *root_devices = NULL, *device = NULL;
struct upnpdiscovery upnp_dev = {0}; struct upnpdiscovery upnp_dev = {0};
char *descurl = NULL, *st = NULL, *usn = NULL, *inst = NULL; char *descurl = NULL, *st = NULL, *usn = NULL, *inst = NULL;
struct uci_section *dmmap_sect = NULL;
char buf[512] = {0}; char buf[512] = {0};
int root_inst = 0; int root_inst = 0;
struct dm_data data = {0};
dmubus_call("upnp", "discovery", UBUS_ARGS{{}}, 0, &res); dmubus_call("upnp", "discovery", UBUS_ARGS{{}}, 0, &res);
if (res == NULL) if (res == NULL)
@ -97,16 +93,11 @@ static int browseUPnPDiscoveryRootDeviceInst(struct dmctx *dmctx, DMNODE *parent
upnp_dev.st = dmstrdup(st); upnp_dev.st = dmstrdup(st);
upnp_dev.usn = dmstrdup(usn); upnp_dev.usn = dmstrdup(usn);
if ((dmmap_sect = get_dup_section_in_dmmap_opt("dmmap_upnp", "upnp_root_device", "uuid", upnp_dev.urn)) == NULL) { data.additional_data = (void *)&upnp_dev;
dmuci_add_section_bbfdm("dmmap_upnp", "upnp_root_device", &dmmap_sect);
dmuci_set_value_by_section_bbfdm(dmmap_sect, "uuid", upnp_dev.urn);
}
upnp_dev.dmmap_sect = dmmap_sect;
inst = handle_instance_without_section(dmctx, parent_node, ++root_inst); inst = handle_instance_without_section(dmctx, parent_node, ++root_inst);
if (DM_LINK_INST_OBJ(dmctx, parent_node, &upnp_dev, inst) == DM_STOP) if (DM_LINK_INST_OBJ(dmctx, parent_node, (void *)&data, inst) == DM_STOP)
break; break;
} }
return 0; return 0;
@ -117,8 +108,8 @@ static int browseUPnPDiscoveryDeviceInst(struct dmctx *dmctx, DMNODE *parent_nod
json_object *res = NULL, *devices = NULL, *device = NULL; json_object *res = NULL, *devices = NULL, *device = NULL;
struct upnpdiscovery upnp_dev = {0}; struct upnpdiscovery upnp_dev = {0};
char *dev_descurl = NULL, *dev_st = NULL, *dev_usn = NULL, *inst = NULL; char *dev_descurl = NULL, *dev_st = NULL, *dev_usn = NULL, *inst = NULL;
struct uci_section *dmmap_sect = NULL;
char buf[512] = {0}; char buf[512] = {0};
struct dm_data data = {0};
dmubus_call("upnp", "discovery", UBUS_ARGS{{}}, 0, &res); dmubus_call("upnp", "discovery", UBUS_ARGS{{}}, 0, &res);
if (res == NULL) if (res == NULL)
@ -155,16 +146,11 @@ static int browseUPnPDiscoveryDeviceInst(struct dmctx *dmctx, DMNODE *parent_nod
upnp_dev.st = dmstrdup(dev_st); upnp_dev.st = dmstrdup(dev_st);
upnp_dev.usn = dmstrdup(dev_usn); upnp_dev.usn = dmstrdup(dev_usn);
if ((dmmap_sect = get_dup_section_in_dmmap_opt("dmmap_upnp", "upnp_device", "uuid", upnp_dev.uuid)) == NULL) { data.additional_data = (void *)&upnp_dev;
dmuci_add_section_bbfdm("dmmap_upnp", "upnp_device", &dmmap_sect);
dmuci_set_value_by_section_bbfdm(dmmap_sect, "uuid", upnp_dev.uuid);
}
upnp_dev.dmmap_sect = dmmap_sect;
inst = handle_instance_without_section(dmctx, parent_node, i+1); inst = handle_instance_without_section(dmctx, parent_node, i+1);
if (DM_LINK_INST_OBJ(dmctx, parent_node, &upnp_dev, inst) == DM_STOP) if (DM_LINK_INST_OBJ(dmctx, parent_node, (void *)&data, inst) == DM_STOP)
break; break;
} }
return 0; return 0;
@ -175,8 +161,8 @@ static int browseUPnPDiscoveryServiceInst(struct dmctx *dmctx, DMNODE *parent_no
json_object *res = NULL, *services = NULL, *service = NULL; json_object *res = NULL, *services = NULL, *service = NULL;
struct upnpdiscovery upnp_dev = {0}; struct upnpdiscovery upnp_dev = {0};
char *srv_descurl = NULL, *srv_st = NULL, *srv_usn = NULL, *inst = NULL; char *srv_descurl = NULL, *srv_st = NULL, *srv_usn = NULL, *inst = NULL;
struct uci_section* dmmap_sect = NULL;
char buf[512] = {0}; char buf[512] = {0};
struct dm_data data = {0};
dmubus_call("upnp", "discovery", UBUS_ARGS{{}}, 0, &res); dmubus_call("upnp", "discovery", UBUS_ARGS{{}}, 0, &res);
if (res == NULL) if (res == NULL)
@ -214,16 +200,11 @@ static int browseUPnPDiscoveryServiceInst(struct dmctx *dmctx, DMNODE *parent_no
upnp_dev.st = dmstrdup(srv_st); upnp_dev.st = dmstrdup(srv_st);
upnp_dev.usn = dmstrdup(srv_usn); upnp_dev.usn = dmstrdup(srv_usn);
if ((dmmap_sect = get_dup_section_in_dmmap_opt("dmmap_upnp", "upnp_service", "usn", srv_usn)) == NULL) { data.additional_data = (void *)&upnp_dev;
dmuci_add_section_bbfdm("dmmap_upnp", "upnp_service", &dmmap_sect);
dmuci_set_value_by_section_bbfdm(dmmap_sect, "usn", srv_usn);
}
upnp_dev.dmmap_sect = dmmap_sect;
inst = handle_instance_without_section(dmctx, parent_node, i+1); inst = handle_instance_without_section(dmctx, parent_node, i+1);
if (DM_LINK_INST_OBJ(dmctx, parent_node, &upnp_dev, inst) == DM_STOP) if (DM_LINK_INST_OBJ(dmctx, parent_node, (void *)&data, inst) == DM_STOP)
break; break;
} }
return 0; return 0;
@ -234,7 +215,7 @@ static int browseUPnPDescriptionDeviceDescriptionInst(struct dmctx *dmctx, DMNOD
json_object *res = NULL, *descriptions = NULL, *description = NULL; json_object *res = NULL, *descriptions = NULL, *description = NULL;
struct upnp_description_file_info upnp_desc = {0}; struct upnp_description_file_info upnp_desc = {0};
char *descurl = NULL, *inst = NULL; char *descurl = NULL, *inst = NULL;
struct uci_section* dmmap_sect = NULL; struct dm_data data = {0};
dmubus_call("upnp", "description", UBUS_ARGS{{}}, 0, &res); dmubus_call("upnp", "description", UBUS_ARGS{{}}, 0, &res);
if (res == NULL) if (res == NULL)
@ -249,15 +230,11 @@ static int browseUPnPDescriptionDeviceDescriptionInst(struct dmctx *dmctx, DMNOD
descurl = dmjson_get_value(description, 1, "desc_url"); descurl = dmjson_get_value(description, 1, "desc_url");
upnp_desc.desc_url = dmstrdup(descurl); upnp_desc.desc_url = dmstrdup(descurl);
if ((dmmap_sect = get_dup_section_in_dmmap_opt("dmmap_upnp", "upnp_description", "descurl", descurl)) == NULL) { data.additional_data = (void *)&upnp_desc;
dmuci_add_section_bbfdm("dmmap_upnp", "upnp_description", &dmmap_sect);
dmuci_set_value_by_section_bbfdm(dmmap_sect, "descurl", descurl);
}
upnp_desc.dmmap_sect = dmmap_sect;
inst = handle_instance_without_section(dmctx, parent_node, i+1); inst = handle_instance_without_section(dmctx, parent_node, i+1);
if (DM_LINK_INST_OBJ(dmctx, parent_node, &upnp_desc, inst) == DM_STOP) if (DM_LINK_INST_OBJ(dmctx, parent_node, (void *)&data, inst) == DM_STOP)
break; break;
} }
return 0; return 0;
@ -268,8 +245,8 @@ static int browseUPnPDescriptionDeviceInstanceInst(struct dmctx *dmctx, DMNODE *
json_object *res = NULL, *devices_instances = NULL, *device_inst = NULL; json_object *res = NULL, *devices_instances = NULL, *device_inst = NULL;
struct upnp_device_inst upnp_dev_inst = {}; struct upnp_device_inst upnp_dev_inst = {};
char *inst = NULL; char *inst = NULL;
struct uci_section* dmmap_sect = NULL;
int i; int i;
struct dm_data data = {0};
dmubus_call("upnp", "description", UBUS_ARGS{{}}, 0, &res); dmubus_call("upnp", "description", UBUS_ARGS{{}}, 0, &res);
if (res == NULL) if (res == NULL)
@ -294,16 +271,11 @@ static int browseUPnPDescriptionDeviceInstanceInst(struct dmctx *dmctx, DMNODE *
dmasprintf(&upnp_dev_inst.udn, "%s", dmjson_get_value(device_inst, 1, "UDN")); dmasprintf(&upnp_dev_inst.udn, "%s", dmjson_get_value(device_inst, 1, "UDN"));
dmasprintf(&upnp_dev_inst.upc, "%s", dmjson_get_value(device_inst, 1, "UPC")); dmasprintf(&upnp_dev_inst.upc, "%s", dmjson_get_value(device_inst, 1, "UPC"));
if ((dmmap_sect = get_dup_section_in_dmmap_opt("dmmap_upnp", "upnp_device_inst", "udn", dmjson_get_value(device_inst, 1, "UDN"))) == NULL) { data.additional_data = (void *)&upnp_dev_inst;
dmuci_add_section_bbfdm("dmmap_upnp", "upnp_device_inst", &dmmap_sect);
dmuci_set_value_by_section_bbfdm(dmmap_sect, "udn", dmjson_get_value(device_inst, 1, "UDN"));
}
upnp_dev_inst.dmmap_sect = dmmap_sect;
inst = handle_instance_without_section(dmctx, parent_node, i+1); inst = handle_instance_without_section(dmctx, parent_node, i+1);
if (DM_LINK_INST_OBJ(dmctx, parent_node, &upnp_dev_inst, inst) == DM_STOP) if (DM_LINK_INST_OBJ(dmctx, parent_node, (void *)&data, inst) == DM_STOP)
break; break;
} }
return 0; return 0;
@ -314,8 +286,8 @@ static int browseUPnPDescriptionServiceInstanceInst(struct dmctx *dmctx, DMNODE
json_object *res = NULL, *services_instances = NULL, *service_inst = NULL; json_object *res = NULL, *services_instances = NULL, *service_inst = NULL;
struct upnp_service_inst upnp_services_inst = {}; struct upnp_service_inst upnp_services_inst = {};
char *inst = NULL; char *inst = NULL;
struct uci_section* dmmap_sect = NULL;
int i; int i;
struct dm_data data = {0};
dmubus_call("upnp", "description", UBUS_ARGS{{}}, 0, &res); dmubus_call("upnp", "description", UBUS_ARGS{{}}, 0, &res);
if (res == NULL) if (res == NULL)
@ -333,16 +305,11 @@ static int browseUPnPDescriptionServiceInstanceInst(struct dmctx *dmctx, DMNODE
dmasprintf(&upnp_services_inst.controlurl, "%s", dmjson_get_value(service_inst, 1, "controlURL")); dmasprintf(&upnp_services_inst.controlurl, "%s", dmjson_get_value(service_inst, 1, "controlURL"));
dmasprintf(&upnp_services_inst.eventsuburl, "%s", dmjson_get_value(service_inst, 1, "eventSubURL")); dmasprintf(&upnp_services_inst.eventsuburl, "%s", dmjson_get_value(service_inst, 1, "eventSubURL"));
if ((dmmap_sect = get_dup_section_in_dmmap_opt("dmmap_upnp", "upnp_service_inst", "serviceid", dmjson_get_value(service_inst, 1, "serviceId"))) == NULL) { data.additional_data = (void *)&upnp_services_inst;
dmuci_add_section_bbfdm("dmmap_upnp", "upnp_service_inst", &dmmap_sect);
dmuci_set_value_by_section_bbfdm(dmmap_sect, "serviceid", dmjson_get_value(service_inst, 1, "serviceId"));
}
upnp_services_inst.dmmap_sect = dmmap_sect;
inst = handle_instance_without_section(dmctx, parent_node, i+1); inst = handle_instance_without_section(dmctx, parent_node, i+1);
if (DM_LINK_INST_OBJ(dmctx, parent_node, &upnp_services_inst, inst) == DM_STOP) if (DM_LINK_INST_OBJ(dmctx, parent_node, (void *)&data, inst) == DM_STOP)
break; break;
} }
return 0; return 0;
@ -417,67 +384,76 @@ static int get_UPnPDiscovery_ServiceNumberOfEntries(char *refparam, struct dmctx
/*#Device.UPnP.Discovery.RootDevice.{i}.UUID!UBUS:upnpc/discovery//devices[i-1].st*/ /*#Device.UPnP.Discovery.RootDevice.{i}.UUID!UBUS:upnpc/discovery//devices[i-1].st*/
static int get_UPnPDiscoveryRootDevice_UUID(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value) static int get_UPnPDiscoveryRootDevice_UUID(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value)
{ {
*value = ((struct upnpdiscovery *)data)->uuid; struct dm_data *p = (struct dm_data *)data;
*value = ((struct upnpdiscovery *)(p->additional_data))->uuid;
return 0; return 0;
} }
/*#Device.UPnP.Discovery.RootDevice.{i}.USN!UBUS:upnpc/discovery//devices[i-1].usn*/ /*#Device.UPnP.Discovery.RootDevice.{i}.USN!UBUS:upnpc/discovery//devices[i-1].usn*/
static int get_UPnPDiscoveryRootDevice_USN(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value) static int get_UPnPDiscoveryRootDevice_USN(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value)
{ {
*value = ((struct upnpdiscovery *)data)->usn; struct dm_data *p = (struct dm_data *)data;
*value = ((struct upnpdiscovery *)(p->additional_data))->usn;
return 0; return 0;
} }
/*#Device.UPnP.Discovery.RootDevice.{i}.Location!UBUS:upnpc/discovery//devices[i-1].descurl*/ /*#Device.UPnP.Discovery.RootDevice.{i}.Location!UBUS:upnpc/discovery//devices[i-1].descurl*/
static int get_UPnPDiscoveryRootDevice_Location(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value) static int get_UPnPDiscoveryRootDevice_Location(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value)
{ {
*value = ((struct upnpdiscovery *)data)->descurl; struct dm_data *p = (struct dm_data *)data;
*value = ((struct upnpdiscovery *)(p->additional_data))->descurl;
return 0; return 0;
} }
/*#Device.UPnP.Discovery.Device.{i}.UUID!UBUS:upnpc/discovery//devices[i-1].st*/ /*#Device.UPnP.Discovery.Device.{i}.UUID!UBUS:upnpc/discovery//devices[i-1].st*/
static int get_UPnPDiscoveryDevice_UUID(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value) static int get_UPnPDiscoveryDevice_UUID(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value)
{ {
*value = ((struct upnpdiscovery *)data)->uuid; struct dm_data *p = (struct dm_data *)data;
*value = ((struct upnpdiscovery *)(p->additional_data))->uuid;
return 0; return 0;
} }
/*#Device.UPnP.Discovery.Device.{i}.USN!UBUS:upnpc/discovery//devices[i-1].usn*/ /*#Device.UPnP.Discovery.Device.{i}.USN!UBUS:upnpc/discovery//devices[i-1].usn*/
static int get_UPnPDiscoveryDevice_USN(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value) static int get_UPnPDiscoveryDevice_USN(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value)
{ {
*value = ((struct upnpdiscovery *)data)->usn; struct dm_data *p = (struct dm_data *)data;
*value = ((struct upnpdiscovery *)(p->additional_data))->usn;
return 0; return 0;
} }
/*#Device.UPnP.Discovery.Device.{i}.Location!UBUS:upnpc/discovery//devices[i-1].descurl*/ /*#Device.UPnP.Discovery.Device.{i}.Location!UBUS:upnpc/discovery//devices[i-1].descurl*/
static int get_UPnPDiscoveryDevice_Location(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value) static int get_UPnPDiscoveryDevice_Location(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value)
{ {
*value = ((struct upnpdiscovery *)data)->descurl; struct dm_data *p = (struct dm_data *)data;
*value = ((struct upnpdiscovery *)(p->additional_data))->descurl;
return 0; return 0;
} }
/*#Device.UPnP.Discovery.Service.{i}.USN!UBUS:upnpc/discovery//services[i-1].usn*/ /*#Device.UPnP.Discovery.Service.{i}.USN!UBUS:upnpc/discovery//services[i-1].usn*/
static int get_UPnPDiscoveryService_USN(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value) static int get_UPnPDiscoveryService_USN(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value)
{ {
*value = ((struct upnpdiscovery *)data)->usn; struct dm_data *p = (struct dm_data *)data;
*value = ((struct upnpdiscovery *)(p->additional_data))->usn;
return 0; return 0;
} }
/*#Device.UPnP.Discovery.Service.{i}.Location!UBUS:upnpc/discovery//services[i-1].descurl*/ /*#Device.UPnP.Discovery.Service.{i}.Location!UBUS:upnpc/discovery//services[i-1].descurl*/
static int get_UPnPDiscoveryService_Location(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value) static int get_UPnPDiscoveryService_Location(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value)
{ {
*value = ((struct upnpdiscovery *)data)->descurl; struct dm_data *p = (struct dm_data *)data;
*value = ((struct upnpdiscovery *)(p->additional_data))->descurl;
return 0; return 0;
} }
static int get_UPnPDiscoveryService_ParentDevice(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value) static int get_UPnPDiscoveryService_ParentDevice(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value)
{ {
char buf[256] = {0}; char buf[256] = {0};
struct dm_data *p = (struct dm_data *)data;
bbfdm_get_references(ctx, MATCH_FIRST, "Device.UPnP.Discovery.Device.", "UUID", ((struct upnpdiscovery *)data)->uuid, buf, sizeof(buf)); bbfdm_get_references(ctx, MATCH_FIRST, "Device.UPnP.Discovery.Device.", "UUID", ((struct upnpdiscovery *)(p->additional_data))->uuid, buf, sizeof(buf));
if (!DM_STRLEN(buf)) if (!DM_STRLEN(buf))
bbfdm_get_references(ctx, MATCH_FIRST, "Device.UPnP.Discovery.RootDevice.", "UUID", ((struct upnpdiscovery *)data)->uuid, buf, sizeof(buf)); bbfdm_get_references(ctx, MATCH_FIRST, "Device.UPnP.Discovery.RootDevice.", "UUID", ((struct upnpdiscovery *)(p->additional_data))->uuid, buf, sizeof(buf));
*value = dmstrdup(buf); *value = dmstrdup(buf);
return 0; return 0;
@ -507,26 +483,30 @@ static int get_UPnPDescription_ServiceInstanceNumberOfEntries(char *refparam, st
/*#Device.UPnP.Description.DeviceDescription.{i}.URLBase!UBUS:upnpc/description//descriptions[i-1].descurl*/ /*#Device.UPnP.Description.DeviceDescription.{i}.URLBase!UBUS:upnpc/description//descriptions[i-1].descurl*/
static int get_UPnPDescriptionDeviceDescription_URLBase(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value) static int get_UPnPDescriptionDeviceDescription_URLBase(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value)
{ {
*value = ((struct upnp_description_file_info *)data)->desc_url; struct dm_data *p = (struct dm_data *)data;
*value = ((struct upnp_description_file_info *)(p->additional_data))->desc_url;
return 0; return 0;
} }
/*#Device.UPnP.Description.DeviceInstance.{i}.UDN!UBUS:upnpc/description//devicesinstances[i-1].UDN*/ /*#Device.UPnP.Description.DeviceInstance.{i}.UDN!UBUS:upnpc/description//devicesinstances[i-1].UDN*/
static int get_UPnPDescriptionDeviceInstance_UDN(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value) static int get_UPnPDescriptionDeviceInstance_UDN(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value)
{ {
*value = ((struct upnp_device_inst *)data)->udn; struct dm_data *p = (struct dm_data *)data;
*value = ((struct upnp_device_inst *)(p->additional_data))->udn;
return 0; return 0;
} }
static int get_UPnPDescriptionDeviceInstance_ParentDevice(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value) static int get_UPnPDescriptionDeviceInstance_ParentDevice(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value)
{ {
_bbfdm_get_references(ctx, "Device.UPnP.Description.DeviceInstance.", "UDN", ((struct upnp_device_inst *)data)->parentudn, value); struct dm_data *p = (struct dm_data *)data;
_bbfdm_get_references(ctx, "Device.UPnP.Description.DeviceInstance.", "UDN", ((struct upnp_device_inst *)(p->additional_data))->parentudn, value);
return 0; return 0;
} }
static int get_UPnPDescriptionDeviceInstance_DiscoveryDevice(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value) static int get_UPnPDescriptionDeviceInstance_DiscoveryDevice(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value)
{ {
struct upnp_device_inst *upnpdevinst = (struct upnp_device_inst *)data; struct dm_data *p = (struct dm_data *)data;
struct upnp_device_inst *upnpdevinst = (struct upnp_device_inst *)(p->additional_data);
if (upnpdevinst->udn && upnpdevinst->udn[0]) { if (upnpdevinst->udn && upnpdevinst->udn[0]) {
char buf[256] = {0}; char buf[256] = {0};
@ -551,98 +531,112 @@ static int get_UPnPDescriptionDeviceInstance_DiscoveryDevice(char *refparam, str
/*#Device.UPnP.Description.DeviceInstance.{i}.DeviceType!UBUS:upnpc/description//devicesinstances[i-1].deviceType*/ /*#Device.UPnP.Description.DeviceInstance.{i}.DeviceType!UBUS:upnpc/description//devicesinstances[i-1].deviceType*/
static int get_UPnPDescriptionDeviceInstance_DeviceType(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value) static int get_UPnPDescriptionDeviceInstance_DeviceType(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value)
{ {
*value = ((struct upnp_device_inst *)data)->device_type; struct dm_data *p = (struct dm_data *)data;
*value = ((struct upnp_device_inst *)(p->additional_data))->device_type;
return 0; return 0;
} }
/*#Device.UPnP.Description.DeviceInstance.{i}.FriendlyName!UBUS:upnpc/description//devicesinstances[i-1].friendlyName*/ /*#Device.UPnP.Description.DeviceInstance.{i}.FriendlyName!UBUS:upnpc/description//devicesinstances[i-1].friendlyName*/
static int get_UPnPDescriptionDeviceInstance_FriendlyName(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value) static int get_UPnPDescriptionDeviceInstance_FriendlyName(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value)
{ {
*value = ((struct upnp_device_inst *)data)->friendly_name; struct dm_data *p = (struct dm_data *)data;
*value = ((struct upnp_device_inst *)(p->additional_data))->friendly_name;
return 0; return 0;
} }
/*#Device.UPnP.Description.DeviceInstance.{i}.Manufacturer!UBUS:upnpc/description//devicesinstances[i-1].manufacturer*/ /*#Device.UPnP.Description.DeviceInstance.{i}.Manufacturer!UBUS:upnpc/description//devicesinstances[i-1].manufacturer*/
static int get_UPnPDescriptionDeviceInstance_Manufacturer(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value) static int get_UPnPDescriptionDeviceInstance_Manufacturer(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value)
{ {
*value = ((struct upnp_device_inst *)data)->manufacturer; struct dm_data *p = (struct dm_data *)data;
*value = ((struct upnp_device_inst *)(p->additional_data))->manufacturer;
return 0; return 0;
} }
/*#Device.UPnP.Description.DeviceInstance.{i}.ManufacturerURL!UBUS:upnpc/description//devicesinstances[i-1].manufacturerURL*/ /*#Device.UPnP.Description.DeviceInstance.{i}.ManufacturerURL!UBUS:upnpc/description//devicesinstances[i-1].manufacturerURL*/
static int get_UPnPDescriptionDeviceInstance_ManufacturerURL(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value) static int get_UPnPDescriptionDeviceInstance_ManufacturerURL(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value)
{ {
*value = ((struct upnp_device_inst *)data)->manufacturer_url; struct dm_data *p = (struct dm_data *)data;
*value = ((struct upnp_device_inst *)(p->additional_data))->manufacturer_url;
return 0; return 0;
} }
/*#Device.UPnP.Description.DeviceInstance.{i}.ModelDescription!UBUS:upnpc/description//devicesinstances[i-1].modelDescription*/ /*#Device.UPnP.Description.DeviceInstance.{i}.ModelDescription!UBUS:upnpc/description//devicesinstances[i-1].modelDescription*/
static int get_UPnPDescriptionDeviceInstance_ModelDescription(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value) static int get_UPnPDescriptionDeviceInstance_ModelDescription(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value)
{ {
*value = ((struct upnp_device_inst *)data)->model_description; struct dm_data *p = (struct dm_data *)data;
*value = ((struct upnp_device_inst *)(p->additional_data))->model_description;
return 0; return 0;
} }
/*#Device.UPnP.Description.DeviceInstance.{i}.ModelName!UBUS:upnpc/description//devicesinstances[i-1].modelName*/ /*#Device.UPnP.Description.DeviceInstance.{i}.ModelName!UBUS:upnpc/description//devicesinstances[i-1].modelName*/
static int get_UPnPDescriptionDeviceInstance_ModelName(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value) static int get_UPnPDescriptionDeviceInstance_ModelName(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value)
{ {
*value = ((struct upnp_device_inst *)data)->model_name; struct dm_data *p = (struct dm_data *)data;
*value = ((struct upnp_device_inst *)(p->additional_data))->model_name;
return 0; return 0;
} }
/*#Device.UPnP.Description.DeviceInstance.{i}.ModelNumber!UBUS:upnpc/description//devicesinstances[i-1].modelNumber*/ /*#Device.UPnP.Description.DeviceInstance.{i}.ModelNumber!UBUS:upnpc/description//devicesinstances[i-1].modelNumber*/
static int get_UPnPDescriptionDeviceInstance_ModelNumber(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value) static int get_UPnPDescriptionDeviceInstance_ModelNumber(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value)
{ {
*value = ((struct upnp_device_inst *)data)->model_number; struct dm_data *p = (struct dm_data *)data;
*value = ((struct upnp_device_inst *)(p->additional_data))->model_number;
return 0; return 0;
} }
/*#Device.UPnP.Description.DeviceInstance.{i}.ModelURL!UBUS:upnpc/description//devicesinstances[i-1].modelURL*/ /*#Device.UPnP.Description.DeviceInstance.{i}.ModelURL!UBUS:upnpc/description//devicesinstances[i-1].modelURL*/
static int get_UPnPDescriptionDeviceInstance_ModelURL(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value) static int get_UPnPDescriptionDeviceInstance_ModelURL(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value)
{ {
*value = ((struct upnp_device_inst *)data)->model_url; struct dm_data *p = (struct dm_data *)data;
*value = ((struct upnp_device_inst *)(p->additional_data))->model_url;
return 0; return 0;
} }
/*#Device.UPnP.Description.DeviceInstance.{i}.SerialNumber!UBUS:upnpc/description//devicesinstances[i-1].serialNumber*/ /*#Device.UPnP.Description.DeviceInstance.{i}.SerialNumber!UBUS:upnpc/description//devicesinstances[i-1].serialNumber*/
static int get_UPnPDescriptionDeviceInstance_SerialNumber(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value) static int get_UPnPDescriptionDeviceInstance_SerialNumber(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value)
{ {
*value = ((struct upnp_device_inst *)data)->serial_number; struct dm_data *p = (struct dm_data *)data;
*value = ((struct upnp_device_inst *)(p->additional_data))->serial_number;
return 0; return 0;
} }
/*#Device.UPnP.Description.DeviceInstance.{i}.UPC!UBUS:upnpc/description//devicesinstances[i-1].UPC*/ /*#Device.UPnP.Description.DeviceInstance.{i}.UPC!UBUS:upnpc/description//devicesinstances[i-1].UPC*/
static int get_UPnPDescriptionDeviceInstance_UPC(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value) static int get_UPnPDescriptionDeviceInstance_UPC(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value)
{ {
*value = ((struct upnp_device_inst *)data)->upc; struct dm_data *p = (struct dm_data *)data;
*value = ((struct upnp_device_inst *)(p->additional_data))->upc;
return 0; return 0;
} }
/*#Device.UPnP.Description.DeviceInstance.{i}.PresentationURL!UBUS:upnpc/description//devicesinstances[i-1].preentation_url*/ /*#Device.UPnP.Description.DeviceInstance.{i}.PresentationURL!UBUS:upnpc/description//devicesinstances[i-1].preentation_url*/
static int get_UPnPDescriptionDeviceInstance_PresentationURL(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value) static int get_UPnPDescriptionDeviceInstance_PresentationURL(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value)
{ {
*value = ((struct upnp_device_inst *)data)->preentation_url; struct dm_data *p = (struct dm_data *)data;
*value = ((struct upnp_device_inst *)(p->additional_data))->preentation_url;
return 0; return 0;
} }
static int get_UPnPDescriptionServiceInstance_ParentDevice(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value) static int get_UPnPDescriptionServiceInstance_ParentDevice(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value)
{ {
_bbfdm_get_references(ctx, "Device.UPnP.Description.DeviceInstance.", "UDN", ((struct upnp_service_inst *)data)->parentudn, value); struct dm_data *p = (struct dm_data *)data;
_bbfdm_get_references(ctx, "Device.UPnP.Description.DeviceInstance.", "UDN", ((struct upnp_service_inst *)(p->additional_data))->parentudn, value);
return 0; return 0;
} }
/*#Device.UPnP.Description.ServiceInstance.{i}.ServiceId!UBUS:upnpc/description//servicesinstances[i-1].serviceId*/ /*#Device.UPnP.Description.ServiceInstance.{i}.ServiceId!UBUS:upnpc/description//servicesinstances[i-1].serviceId*/
static int get_UPnPDescriptionServiceInstance_ServiceId(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value) static int get_UPnPDescriptionServiceInstance_ServiceId(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value)
{ {
*value = ((struct upnp_service_inst *)data)->serviceid; struct dm_data *p = (struct dm_data *)data;
*value = ((struct upnp_service_inst *)(p->additional_data))->serviceid;
return 0; return 0;
} }
static int get_UPnPDescriptionServiceInstance_ServiceDiscovery(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value) static int get_UPnPDescriptionServiceInstance_ServiceDiscovery(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value)
{ {
char usn[512] = {0}; char usn[512] = {0};
struct dm_data *p = (struct dm_data *)data;
snprintf(usn, sizeof(usn), "%s::%s", ((struct upnp_service_inst *)data)->parentudn, ((struct upnp_service_inst *)data)->servicetype); snprintf(usn, sizeof(usn), "%s::%s", ((struct upnp_service_inst *)(p->additional_data))->parentudn, ((struct upnp_service_inst *)(p->additional_data))->servicetype);
_bbfdm_get_references(ctx, "Device.UPnP.Discovery.Service.", "USN", usn, value); _bbfdm_get_references(ctx, "Device.UPnP.Discovery.Service.", "USN", usn, value);
return 0; return 0;
@ -651,28 +645,32 @@ static int get_UPnPDescriptionServiceInstance_ServiceDiscovery(char *refparam, s
/*#Device.UPnP.Description.ServiceInstance.{i}.ServiceType!UBUS:upnpc/description//servicesinstances[i-1].serviceType*/ /*#Device.UPnP.Description.ServiceInstance.{i}.ServiceType!UBUS:upnpc/description//servicesinstances[i-1].serviceType*/
static int get_UPnPDescriptionServiceInstance_ServiceType(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value) static int get_UPnPDescriptionServiceInstance_ServiceType(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value)
{ {
*value = ((struct upnp_service_inst *)data)->servicetype; struct dm_data *p = (struct dm_data *)data;
*value = ((struct upnp_service_inst *)(p->additional_data))->servicetype;
return 0; return 0;
} }
/*#Device.UPnP.Description.ServiceInstance.{i}.SCPDURL!UBUS:upnpc/description//servicesinstances[i-1].SCPDURL*/ /*#Device.UPnP.Description.ServiceInstance.{i}.SCPDURL!UBUS:upnpc/description//servicesinstances[i-1].SCPDURL*/
static int get_UPnPDescriptionServiceInstance_SCPDURL(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value) static int get_UPnPDescriptionServiceInstance_SCPDURL(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value)
{ {
*value = ((struct upnp_service_inst *)data)->scpdurl; struct dm_data *p = (struct dm_data *)data;
*value = ((struct upnp_service_inst *)(p->additional_data))->scpdurl;
return 0; return 0;
} }
/*#Device.UPnP.Description.ServiceInstance.{i}.ControlURL!UBUS:upnpc/description//servicesinstances[i-1].controlURL*/ /*#Device.UPnP.Description.ServiceInstance.{i}.ControlURL!UBUS:upnpc/description//servicesinstances[i-1].controlURL*/
static int get_UPnPDescriptionServiceInstance_ControlURL(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value) static int get_UPnPDescriptionServiceInstance_ControlURL(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value)
{ {
*value = ((struct upnp_service_inst *)data)->controlurl; struct dm_data *p = (struct dm_data *)data;
*value = ((struct upnp_service_inst *)(p->additional_data))->controlurl;
return 0; return 0;
} }
/*#Device.UPnP.Description.ServiceInstance.{i}.EventSubURL!UBUS:upnpc/description//servicesinstances[i-1].eventSubURL*/ /*#Device.UPnP.Description.ServiceInstance.{i}.EventSubURL!UBUS:upnpc/description//servicesinstances[i-1].eventSubURL*/
static int get_UPnPDescriptionServiceInstance_EventSubURL(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value) static int get_UPnPDescriptionServiceInstance_EventSubURL(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value)
{ {
*value = ((struct upnp_service_inst *)data)->eventsuburl; struct dm_data *p = (struct dm_data *)data;
*value = ((struct upnp_service_inst *)(p->additional_data))->eventsuburl;
return 0; return 0;
} }