util.c 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. #include "Util.h"
  2. #include <sys/sysinfo.h>
  3. /*----------------------------------------
  4. * GetBits
  5. *----------------------------------------*/
  6. INT8U
  7. GetBits (INT8U Val, INT8U Mask)
  8. {
  9. INT8U ExtVal = 0;
  10. while (0 != Mask)
  11. {
  12. if (0 != (Mask & 0x80))
  13. {
  14. ExtVal <<= 1;
  15. if (0 != (Val & 0x80)) { ExtVal += 0x01; }
  16. }
  17. Val <<= 1;
  18. Mask <<= 1;
  19. }
  20. return ExtVal;
  21. }
  22. /*------------------------------------------
  23. * SetBits
  24. *------------------------------------------*/
  25. INT8U
  26. SetBits (INT8U Mask, INT8U Val)
  27. {
  28. INT8U FinVal = 0;
  29. INT8U i;
  30. for (i = 0; i < 8; i++)
  31. {
  32. FinVal >>= 1;
  33. if (0 != (Mask & 0x01))
  34. {
  35. if (0 != (Val & 0x01)) { FinVal |= 0x80; }
  36. Val >>= 1;
  37. }
  38. Mask >>= 1;
  39. }
  40. return FinVal;
  41. }
  42. /*------------------------------------------
  43. * CalculateCheckSum
  44. *------------------------------------------*/
  45. INT8U
  46. CalculateCheckSum (INT8U* Data, INT16U Len)
  47. {
  48. INT8U Sum;
  49. INT16U i;
  50. Sum = 0;
  51. for (i = 0; i < Len; i++)
  52. {
  53. Sum += Data [i];
  54. }
  55. return (0x100 - Sum);
  56. }
  57. /*
  58. * @fn TimeUpdate
  59. * @return Returns the system uptime
  60. */
  61. INT32U TimeUpdate()
  62. {
  63. struct sysinfo time;
  64. sysinfo(&time);
  65. return time.uptime;
  66. }
  67. /**
  68. *@fn GetSysCtlvalue
  69. *@brief This function retrieves the values from Sysctl
  70. *@param TagName -Tagname form which value has to be retrieved
  71. *@param SysVal - Where the value is stored
  72. *@return Returns 0 on success
  73. * Returns 1 on failure
  74. */
  75. int GetJiffySysCtlvalue (const char *TagName, long long *SysVal)
  76. {
  77. unsigned long RetVal;
  78. FILE* SysFile = fopen (TagName, "r");
  79. unsigned long Hertz = sysconf(_SC_CLK_TCK);
  80. if ((!SysFile) || (!SysVal))
  81. return 1;
  82. fscanf (SysFile, "%lu", &RetVal);
  83. fclose (SysFile);
  84. *SysVal = (RetVal*1000)/Hertz;
  85. return 0;
  86. }