sysinfo.c 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177
  1. /*
  2. * Copyright (C) 2019-2020 Alibaba Group Holding Limited
  3. */
  4. #include <string.h>
  5. #include <stdio.h>
  6. #include <stdint.h>
  7. #include <yoc/nvram.h>
  8. #include <yoc/sysinfo.h>
  9. // #include <mtb.h>
  10. #ifndef SYSINFO_WEAK
  11. #define SYSINFO_WEAK __attribute__((weak))
  12. #endif
  13. #ifndef CONFIG_SDK_VERSION
  14. #define CONFIG_SDK_VERSION "V7.2.2_20200319"
  15. #endif
  16. SYSINFO_WEAK const char *aos_get_product_model(void)
  17. {
  18. #ifdef CONFIG_PRODUCT_MODEL
  19. const char *ret = CONFIG_PRODUCT_MODEL;
  20. #else
  21. static char ret[64];
  22. int res;
  23. res = nvram_get_val("model", ret, sizeof(ret));
  24. if (res <= 0) {
  25. return NULL;
  26. }
  27. #endif
  28. return (const char *)ret;
  29. }
  30. char *aos_get_os_version(void)
  31. {
  32. char *ret = CONFIG_SDK_VERSION;
  33. return (char *)ret;
  34. }
  35. char *aos_get_app_version(void)
  36. {
  37. int32_t ret;
  38. static char str_version[65] = {
  39. 0,
  40. };
  41. uint32_t len = sizeof(str_version) - 1;
  42. if (str_version[0] == 0) {
  43. #ifdef CONFIG_APP_VERSION_FROM_KV
  44. ret = aos_kv_getstring("app_version", str_version, sizeof(str_version));
  45. #else
  46. #ifdef CONFIG_TEE_CA
  47. ret = csi_tee_get_sys_os_version((uint8_t *)str_version, &len);
  48. #else
  49. ret = nvram_get_val("app_version", str_version, sizeof(str_version));
  50. #endif
  51. #endif /* CONFIG_APP_VERSION_FROM_KV */
  52. if (ret < 0) {
  53. str_version[0] = 0;
  54. return NULL;
  55. }
  56. str_version[len] = 0;
  57. }
  58. return str_version;
  59. }
  60. int aos_set_app_version(const char *version)
  61. {
  62. return nvram_set_val("app_version", (char *)version);
  63. }
  64. char *aos_get_changelog(void)
  65. {
  66. int32_t ret;
  67. static char str_changelog[512] = {
  68. 0,
  69. };
  70. uint32_t len = sizeof(str_changelog) - 1;
  71. if (str_changelog[0] == 0) {
  72. ret = nvram_get_val("changelog", str_changelog, sizeof(str_changelog));
  73. if (ret < 0) {
  74. str_changelog[0] = 0;
  75. return NULL;
  76. }
  77. str_changelog[len] = 0;
  78. }
  79. return str_changelog;
  80. }
  81. int aos_set_changelog(const char *changelog)
  82. {
  83. return nvram_set_val("changelog", (char *)changelog);
  84. }
  85. SYSINFO_WEAK const char *aos_get_kernel_version(void)
  86. {
  87. const char *ret = "AOS-R-1.2.0";
  88. return ret;
  89. }
  90. const char *aos_get_device_name(void)
  91. {
  92. int ret;
  93. static char namebuf[64] = {0};
  94. if (namebuf[0] == 0) {
  95. memset(namebuf, 0, sizeof(namebuf));
  96. ret = nvram_get_val("DEVICENAME", namebuf, sizeof(namebuf));
  97. if (ret < 0) {
  98. return NULL;
  99. }
  100. }
  101. return namebuf;
  102. }
  103. char *aos_get_device_id(void)
  104. {
  105. int ret;
  106. static char cidbuf[64] = {0};
  107. if (cidbuf[0] == 0) {
  108. memset(cidbuf, 0, sizeof(cidbuf));
  109. #ifdef CONFIG_DEVICEID_FROM_KV
  110. ret = aos_kv_getstring("device_id", cidbuf, sizeof(cidbuf));
  111. #else
  112. #ifdef CONFIG_TEE_CA
  113. {
  114. uint32_t len = sizeof(cidbuf) - 1;
  115. ret = csi_tee_get_cid((uint8_t *)cidbuf, (uint32_t *)&len);
  116. }
  117. #else
  118. ret = nvram_get_val("device_id", cidbuf, sizeof(cidbuf));
  119. #endif /* CONFIG_TEE_CA */
  120. #endif /* CONFIG_DEVICEID_FROM_KV */
  121. if (ret < 0) {
  122. return NULL;
  123. }
  124. }
  125. return cidbuf;
  126. }
  127. SYSINFO_WEAK const char *aos_get_imsi(void)
  128. {
  129. static char ret[32] = {0};
  130. int res;
  131. res = nvram_get_val("imsi", ret, sizeof(ret));
  132. if (res <= 0) {
  133. return NULL;
  134. }
  135. return (const char *)ret;
  136. }
  137. SYSINFO_WEAK const char *aos_get_imei(void)
  138. {
  139. static char ret[32] = {0};
  140. int res;
  141. res = nvram_get_val("imei", ret, sizeof(ret));
  142. if (res <= 0) {
  143. return NULL;
  144. }
  145. return (const char *)ret;
  146. }