コード例 #1
0
static struct xmldoc *generate_desc(struct upnp_device_descriptor *device_def)
{
	struct xmldoc *doc;
	struct xmlelement *root;
	struct xmlelement *child;
	struct xmlelement *parent;

	doc = xmldoc_new();

	root=xmldoc_new_topelement(doc, "root", "urn:schemas-upnp-org:device-1-0");
	child=gen_specversion(doc,1,0);
	xmlelement_add_element(doc, root, child);
	parent=xmlelement_new(doc, "device");
	xmlelement_add_element(doc, root, parent);
	add_value_element(doc,parent,"deviceType", device_def->device_type);
	add_value_element(doc,parent,"presentationURL", device_def->presentation_url);
	add_value_element(doc,parent,"friendlyName", device_def->friendly_name);
	add_value_element(doc,parent,"manufacturer", device_def->manufacturer);
	add_value_element(doc,parent,"manufacturerURL", device_def->manufacturer_url);
	add_value_element(doc,parent,"modelDescription", device_def->model_description);
	add_value_element(doc,parent,"modelName", device_def->model_name);
	add_value_element(doc,parent,"modelNumber", device_def->model_number);
	add_value_element(doc,parent,"modelURL", device_def->model_url);
	add_value_element(doc,parent,"UDN", device_def->udn);
	//add_value_element(doc,parent,"serialNumber", device_def->serial_number);
	//add_value_element(doc,parent,"UPC", device_def->upc);
	if (device_def->icons) {
		child=gen_desc_iconlist(doc,device_def->icons);
		xmlelement_add_element(doc,parent,child);
	}
	child=gen_desc_servicelist(device_def, doc);
	xmlelement_add_element(doc, parent, child);

	return doc;
}
コード例 #2
0
void add_value_element_int(struct xmldoc *doc,
                           struct xmlelement *parent,
                           const char *tagname, int value)
{
        char *buf;
        if (asprintf(&buf,"%d",value) >= 0) {
		add_value_element(doc, parent, tagname, buf);
		free(buf);
	}
}
コード例 #3
0
ファイル: xmldoc.c プロジェクト: LeePorte/gmrender-resurrect
void add_value_element_long(struct xmldoc *doc,
                            struct xmlelement *parent,
                            const char *tagname, long long value)
{
        char *buf;

        asprintf(&buf,"%lld",value);
        add_value_element(doc, parent, tagname, buf);
        free(buf);
}
コード例 #4
0
static struct xmlelement *gen_desc_iconlist(struct xmldoc *doc,
					    struct icon **icons) {
	struct xmlelement *top;
	struct xmlelement *parent;
	struct icon *icon_entry;

	top=xmlelement_new(doc, "iconList");

	for (int i = 0; (icon_entry=icons[i]); i++) {
		parent=xmlelement_new(doc, "icon");
		add_value_element(doc,parent,"mimetype", icon_entry->mimetype);
		add_value_element_int(doc,parent,"width",icon_entry->width);
		add_value_element_int(doc,parent,"height",icon_entry->height);
		add_value_element_int(doc,parent,"depth",icon_entry->depth);
		add_value_element(doc,parent,"url",icon_entry->url);
		xmlelement_add_element(doc, top, parent);
	}

	return top;
}
コード例 #5
0
static struct xmlelement *gen_desc_servicelist(struct device *device_def,
                                          struct xmldoc *doc)
{
	int i;
	struct service *srv;
	struct xmlelement *top;
	struct xmlelement *parent;

	top=xmlelement_new(doc, "serviceList");

        for (i=0; (srv = device_def->services[i]); i++) {
		parent=xmlelement_new(doc, "service");
		add_value_element(doc,parent,"serviceType",srv->type);
		add_value_element(doc,parent,"serviceId", srv->service_name);
		add_value_element(doc,parent,"SCPDURL", srv->scpd_url);
		add_value_element(doc,parent,"controlURL", srv->control_url);
		add_value_element(doc,parent,"eventSubURL", srv->event_url);
		xmlelement_add_element(doc, top, parent);
        }

	return top;
}