diff --git a/dmtree/tr181/deviceinfo-iopsyswrt.c b/dmtree/tr181/deviceinfo-iopsyswrt.c index b95b25f4..cc85c3c4 100644 --- a/dmtree/tr181/deviceinfo-iopsyswrt.c +++ b/dmtree/tr181/deviceinfo-iopsyswrt.c @@ -2,12 +2,48 @@ #include +char * os__get_deviceid_manufacturer() +{ + char *v; + dmuci_get_option_value_string("cwmp","cpe","manufacturer", &v); + return v; +} + +char * os__get_deviceid_productclass() +{ + char *v; + dmuci_get_option_value_string("cwmp", "cpe", "override_productclass", &v); + if (v[0] == '\0') { + db_get_value_string("hw", "board", "iopVerBoard", &v); + return v; + } + return v; +} + +char * os__get_deviceid_serialnumber() +{ + char *v; + db_get_value_string("hw", "board", "serial_number", &v); + return v; +} + +char * os__get_softwareversion() +{ + char *v; + db_get_value_string("hw", "board", "iopVersion", &v); + return v; +} + char * os__get_deviceid_manufactureroui() { char *v, *mac = NULL, str[16], macreadfile[18] = {0}; json_object *res; FILE *nvrammac = NULL; + dmuci_get_option_value_string("cwmp", "cpe", "override_oui", &v); + if (v[0]) + return v; + dmubus_call("router.system", "info", UBUS_ARGS{{}}, 0, &res); if (!(res)) { db_get_value_string("hw", "board", "basemac", &mac); diff --git a/dmtree/tr181/deviceinfo-openwrt.c b/dmtree/tr181/deviceinfo-openwrt.c index 22b0eedf..790f2d2d 100644 --- a/dmtree/tr181/deviceinfo-openwrt.c +++ b/dmtree/tr181/deviceinfo-openwrt.c @@ -4,14 +4,39 @@ #define BASE_IFACE "br-lan" -char * os__get_deviceid_manufactureroui() +static char * get_uci_deviceinfo(char *opt) { char *v; - get_net_device_sysfs(BASE_IFACE, "address", &v); + dmuci_get_option_value_string("cwmp", "@deviceinfo[0]", opt, &v); return v; } +char * os__get_deviceid_manufacturer() +{ + return get_uci_deviceinfo("Manufacturer"); +} + +char * os__get_deviceid_productclass() +{ + return get_uci_deviceinfo("ProductClass"); +} + +char * os__get_deviceid_serialnumber() +{ + return get_uci_deviceinfo("SerialNumber"); +} + +char * os__get_softwareversion() +{ + return get_uci_deviceinfo("SoftwareVersion"); +} + +char * os__get_deviceid_manufactureroui() +{ + return get_uci_deviceinfo("ManufacturerOUI"); +} + int os__get_base_mac_addr(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value) { return get_net_device_sysfs(BASE_IFACE, "address", value); diff --git a/dmtree/tr181/deviceinfo.c b/dmtree/tr181/deviceinfo.c index 01b3a002..8d54b5ae 100644 --- a/dmtree/tr181/deviceinfo.c +++ b/dmtree/tr181/deviceinfo.c @@ -17,45 +17,27 @@ */ char *get_deviceid_manufacturer() { - char *v; - dmuci_get_option_value_string("cwmp","cpe","manufacturer", &v); - return v; + return os__get_deviceid_manufacturer(); } char *get_deviceid_manufactureroui() { - char *v; - - dmuci_get_option_value_string("cwmp", "cpe", "override_oui", &v); - if (v[0] == '\0') - v = os__get_deviceid_manufactureroui(); - - return v; + return os__get_deviceid_manufactureroui(); } char *get_deviceid_productclass() { - char *v; - dmuci_get_option_value_string("cwmp", "cpe", "override_productclass", &v); - if (v[0] == '\0') { - db_get_value_string("hw", "board", "iopVerBoard", &v); - return v; - } - return v; + return os__get_deviceid_productclass(); } char *get_deviceid_serialnumber() { - char *v; - db_get_value_string("hw", "board", "serial_number", &v); - return v; + return os__get_deviceid_serialnumber(); } char *get_softwareversion() { - char *v; - db_get_value_string("hw", "board", "iopVersion", &v); - return v; + return os__get_softwareversion(); } int lookup_vcf_name(char *instance, char **value) diff --git a/dmtree/tr181/os.h b/dmtree/tr181/os.h index 55a9fd6f..a920e9dd 100644 --- a/dmtree/tr181/os.h +++ b/dmtree/tr181/os.h @@ -5,7 +5,12 @@ /* IOPSYS-WRT and OpenWrt */ +char * os__get_deviceid_manufacturer(); +char * os__get_deviceid_productclass(); +char * os__get_deviceid_serialnumber(); +char * os__get_softwareversion(); char * os__get_deviceid_manufactureroui(); + int os__get_base_mac_addr(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value); int os__get_memory_status_total(char* refparam, struct dmctx *ctx, void *data, char *instance, char **value);