#define LSHAL_FLAG_BACKEND_NAME BIT(4)
#define LSHAL_FLAG_BACKEND_VENDOR_NAME BIT(5)
#define LSHAL_FLAG_BACKEND_USAGE_COUNT BIT(6)
+#define LSHAL_FLAG_BACKEND_VERSION BIT(7)
+#define LSHAL_FLAG_MANIFEST_VERSION BIT(8)
struct _hal_backend_module_data {
/**
}
static void lshal_print_border(void) {
- for (int i = 0; i < 267; i++)
+ for (int i = 0; i < 287; i++)
printf("-");
printf("\n");
}
int backend_verification_count = 0;
lshal_print_border();
- printf(" %-38s | | %-55s | %-10s | %-15s | %-45s | %-25s | %-25s |\n",
+ printf(" %-38s | | %-55s | %-10s | %-15s | %-45s | %-25s | %-25s | %-25s | %-15s |\n",
"",
"",
"Backend",
"Backend",
"Backend",
"Backend Name",
- "Vendor Name");
+ "Vendor Name",
+ "Interface",
+ "Backend");
- printf(" %-38s | ID | %-55s | %-10s | %-15s | %-45s | %-25s | %-25s |\n",
+ printf(" %-38s | ID | %-55s | %-10s | %-15s | %-45s | %-25s | %-25s | %-25s | %-15s |\n",
"HAL Module Name",
"Backend Library Name",
"Open Count",
"Verification",
"Symbol Name",
"(Written by Developer)",
- "(Written by Developer)");
+ "(Written by Developer)",
+ "Versions",
+ "Version");
lshal_print_border();
for (module = HAL_MODULE_UNKNOWN + 1; module < HAL_MODULE_END; module++) {
printf(" %-25s |", str);
}
+ if (LSHAL_FLAG_MANIFEST_VERSION & flags) {
+ unsigned int *major_versions = NULL;
+ unsigned int *minor_versions = NULL;
+ int num_versions = 0;
+
+ strncpy(str, "", BUFF_MAX - 1);
+
+ ret = hal_common_get_supported_interface_versions(module,
+ &major_versions, &minor_versions, &num_versions);
+ if (ret < 0) {
+ printf(" %-25s |", "");
+ } else {
+ char *pos = str;
+ char *const end = pos + sizeof(str);
+ for (int i = 0; i < num_versions; ++i) {
+ if (pos >= end)
+ break;
+
+ pos += snprintf(pos, end - pos, "%u.%u, ",
+ major_versions[i], minor_versions[i]);
+ }
+
+ free(major_versions);
+ major_versions = NULL;
+ free(minor_versions);
+ minor_versions = NULL;
+
+ /* Remove trailing ',' and terminate the string */
+ if (pos < end)
+ *(pos - 2) = '\0';
+
+ printf(" %-25s |", str);
+ }
+ }
+
+ if (LSHAL_FLAG_BACKEND_VERSION & flags) {
+ unsigned int major, minor;
+
+ strncpy(str, "", BUFF_MAX - 1);
+
+ ret = hal_common_get_backend_version(module, &major, &minor);
+ if (ret < 0) {
+ printf(" %-15s |", "");
+ } else if (major == 0 && minor == 0) {
+ printf(" %-15s |", "");
+ } else {
+ snprintf(str, BUFF_MAX - 1, "%u.%u", major, minor);
+ printf(" %-15s |", str);
+ }
+ }
+
printf("\n");
}
lshal_print_border();
- printf(" %-38s | %-2d | %-55s | %-10s | %15d | %-45s | %-25s | %-25s | %-25s |\n",
+ printf(" %-38s | %-2d | %-55s | %-10s | %15d | %-45s | %-25s | %-25s | %-25s | %-25s | %-15s |\n",
"TOTAL",
HAL_MODULE_END - 1,
"",
"",
"",
"",
+ "",
+ "",
"");
lshal_print_border();
}
| LSHAL_FLAG_BACKEND_NAME
| LSHAL_FLAG_BACKEND_VENDOR_NAME
| LSHAL_FLAG_BACKEND_USAGE_COUNT
- | LSHAL_FLAG_BACKEND_MODULE_NAME);
+ | LSHAL_FLAG_BACKEND_MODULE_NAME
+ | LSHAL_FLAG_BACKEND_VERSION
+ | LSHAL_FLAG_MANIFEST_VERSION);
lshal_print_hal_backend_info(flags);
}