From 3094867d3ed2437323f43adb737ec2a6b9e8d2e2 Mon Sep 17 00:00:00 2001 From: Omar Kallel Date: Thu, 2 Apr 2020 10:52:04 +0100 Subject: [PATCH] Ticket refs #2337: Device.USB. TR181 object: fix issues related to Set/Get of some parameters --- dmtree/tr181/usb.c | 22 ++++++++++++++++------ libbbf_api/dmcommon.c | 3 ++- 2 files changed, 18 insertions(+), 7 deletions(-) diff --git a/dmtree/tr181/usb.c b/dmtree/tr181/usb.c index d6abe1da..3970d8cb 100644 --- a/dmtree/tr181/usb.c +++ b/dmtree/tr181/usb.c @@ -126,7 +126,7 @@ static int browseUSBInterfaceInst(struct dmctx *dmctx, DMNODE *parent_node, void LIST_HEAD(dup_list); struct sysfs_dmsection *p; - synchronize_system_folders_with_dmmap_opt(SYSFS_USB_DEVICES_PATH, "dmmap_usb", "dmmap_interface", "port_link", "usb_iface_instance", &dup_list); + synchronize_system_folders_with_dmmap_opt(SYSFS_USB_DEVICES_PATH, "dmmap_usb", "dmmap_interface", "usb_iface_link", "usb_iface_instance", &dup_list); list_for_each_entry(p, &dup_list, list) { char netfolderpath[256]; char port_link[128]; @@ -143,7 +143,6 @@ static int browseUSBInterfaceInst(struct dmctx *dmctx, DMNODE *parent_node, void if(p->dm){ foldersplit= strsplit(p->sysfs_folder_name, ":", &length); snprintf(port_link, sizeof(port_link), "%s", foldersplit[0]); - DMUCI_SET_VALUE_BY_SECTION(bbfdm, p->dm, "port_link", port_link); } sysfs_foreach_file(netfolderpath, dir, ent) { if(strcmp(ent->d_name, ".")==0 || strcmp(ent->d_name, "..")==0) @@ -342,6 +341,7 @@ static int browseUSBUSBHostsHostDeviceConfigurationInst(struct dmctx *dmctx, DMN s = is_dmmap_section_exist("dmmap_usb", "usb_device_conf"); if (!s) dmuci_add_section_bbfdm("dmmap_usb", "usb_device_conf", &s, &v); + DMUCI_SET_VALUE_BY_SECTION(bbfdm, s, "usb_parent_device", usb_dev->folder_path); init_usb_port(s, usb_dev->folder_name, usb_dev->folder_path, &port); handle_update_instance(1, dmctx, &instnbr, update_instance_alias, 3, s, "usb_device_conf_instance", "usb_device_conf_alias"); @@ -516,7 +516,7 @@ static int get_USBInterface_Name(char *refparam, struct dmctx *ctx, void *data, static int get_USBInterface_LowerLayers(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value) { - const struct usb_interface *iface = data; + const struct usb_interface *iface = (struct usb_interface *)data; adm_entry_get_linker_param(ctx, dm_print_path("%s%cEthernet%cInterface%c", dmroot, dm_delim, dm_delim, dm_delim), iface->iface_name, value); return 0; @@ -738,9 +738,9 @@ static int set_USBUSBHostsHost_Enable(char *refparam, struct dmctx *ctx, void *d string_to_bool(value, &b); dmasprintf(&filepath, "%s/power/wakeup", usbhost->folder_path); if(b) - writeFileContent(usbhost->folder_path, "enabled"); + writeFileContent(filepath, "enabled"); else - writeFileContent(usbhost->folder_path, "disabled"); + writeFileContent(filepath, "disabled"); break; } return 0; @@ -896,7 +896,17 @@ static int get_USBUSBHostsHostDevice_DeviceProtocol(char *refparam, struct dmctx static int get_USBUSBHostsHostDevice_ProductID(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value) { - return read_sysfs_usb_port(data, "idProduct", value); + char *idproduct = NULL; + unsigned int ui_idproduct; + + *value = ""; + int rc = read_sysfs_usb_port(data, "idProduct", &idproduct); + + if(idproduct != NULL) { + sscanf(idproduct, "%x", &ui_idproduct); + dmasprintf(value, "%u", ui_idproduct); + } + return rc; } static int get_USBUSBHostsHostDevice_VendorID(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value) diff --git a/libbbf_api/dmcommon.c b/libbbf_api/dmcommon.c index 1cc12c81..9b98d717 100644 --- a/libbbf_api/dmcommon.c +++ b/libbbf_api/dmcommon.c @@ -1176,6 +1176,7 @@ int synchronize_system_folders_with_dmmap_opt(char *sysfsrep, char *dmmap_packag struct sysfs_dmsection *p, *tmp; LIST_HEAD(dup_list_no_inst); + dmmap_file_path_get(dmmap_package); sysfs_foreach_file(sysfsrep, dir, ent) { @@ -1682,7 +1683,7 @@ int copy_temporary_file_to_original_file(char *f1, char *f2) static inline int char_is_valid(char c) { - return c > 0x20 && c < 0x7f; + return c >= 0x20 && c < 0x7f; } int dm_read_sysfs_file(const char *file, char *dst, unsigned len)