Module_PowerSharing.h 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. /*
  2. * Module_PowerSharing.h
  3. *
  4. * Created on: 2020/12/07
  5. * Author: foluswen
  6. */
  7. #ifndef MODULE_POWERSHARING_H_
  8. #define MODULE_POWERSHARING_H_
  9. #include <sys/time.h>
  10. #include <sys/timeb.h>
  11. #include <sys/types.h>
  12. #include <sys/stat.h>
  13. #include <sys/types.h>
  14. #include <sys/ioctl.h>
  15. #include <sys/socket.h>
  16. #include <sys/ipc.h>
  17. #include <sys/shm.h>
  18. #include <sys/shm.h>
  19. #include <sys/mman.h>
  20. #include <linux/wireless.h>
  21. #include <arpa/inet.h>
  22. #include <netinet/in.h>
  23. #include <unistd.h>
  24. #include <stdarg.h>
  25. #include <stdio.h>
  26. #include <stdlib.h>
  27. #include <unistd.h>
  28. #include <fcntl.h>
  29. #include <termios.h>
  30. #include <errno.h>
  31. #include <errno.h>
  32. #include <string.h>
  33. #include <time.h>
  34. #include <ctype.h>
  35. #include <ifaddrs.h>
  36. #include <sys/types.h>
  37. #include <sys/socket.h>
  38. #include <netinet/in.h>
  39. #include <netdb.h>
  40. #include <error.h>
  41. #include <signal.h>
  42. #include "define.h"
  43. //#define DEBUG
  44. #define DEBUG_INFO(format, args...) StoreLogMsg("[%s:%d][%s][Info] "format, (strrchr(__FILE__, '/') ? strrchr(__FILE__, '/') + 1 : (strrchr(__FILE__, '\\') ? strrchr(__FILE__, '\\') + 1 : __FILE__)), __LINE__, __FUNCTION__, ##args)
  45. #define DEBUG_WARN(format, args...) StoreLogMsg("[%s:%d][%s][Warn] "format, (strrchr(__FILE__, '/') ? strrchr(__FILE__, '/') + 1 : (strrchr(__FILE__, '\\') ? strrchr(__FILE__, '\\') + 1 : __FILE__)), __LINE__, __FUNCTION__, ##args)
  46. #define DEBUG_ERROR(format, args...) StoreLogMsg("[%s:%d][%s][Error] "format, (strrchr(__FILE__, '/') ? strrchr(__FILE__, '/') + 1 : (strrchr(__FILE__, '\\') ? strrchr(__FILE__, '\\') + 1 : __FILE__)), __LINE__, __FUNCTION__, ##args)
  47. #define DEBUG_INFO_CLIENT(format, args...) StoreLogMsgClient("[%s:%d][%s][Info] "format, (strrchr(__FILE__, '/') ? strrchr(__FILE__, '/') + 1 : (strrchr(__FILE__, '\\') ? strrchr(__FILE__, '\\') + 1 : __FILE__)), __LINE__, __FUNCTION__, ##args)
  48. #define DEBUG_WARN_CLIENT(format, args...) StoreLogMsgClient("[%s:%d][%s][Warn] "format, (strrchr(__FILE__, '/') ? strrchr(__FILE__, '/') + 1 : (strrchr(__FILE__, '\\') ? strrchr(__FILE__, '\\') + 1 : __FILE__)), __LINE__, __FUNCTION__, ##args)
  49. #define DEBUG_ERROR_CLIENT(format, args...) StoreLogMsgClient("[%s:%d][%s][Error] "format, (strrchr(__FILE__, '/') ? strrchr(__FILE__, '/') + 1 : (strrchr(__FILE__, '\\') ? strrchr(__FILE__, '\\') + 1 : __FILE__)), __LINE__, __FUNCTION__, ##args)
  50. #define is_error(ptr) ((unsigned long)ptr > (unsigned long)-4000L)
  51. #define ARRAY_SIZE(A) (sizeof(A) / sizeof(A[0]))
  52. #define PASS 1
  53. #define FAIL -1
  54. #define ON 1
  55. #define OFF 0
  56. #define YES 1
  57. #define NO 0
  58. #define LISTEN_PORT_TCP 118
  59. #define CONNECTION_LIMIT 5
  60. #define TIMEOUT_SPEC_HEARTBEAT 180
  61. #define INTERVAL_SPEC_CHECK_CAPACITY 10
  62. #define INTERVAL_SPEC_POLLING_CMD 1
  63. #define SHARE_MIN_AC 6
  64. #define SHARE_MIN_DC 6
  65. #define ShmPowerShargingKey LISTEN_PORT_TCP+8000
  66. enum SHARING_COMMAND
  67. {
  68. SHARING_CMD_GET_STATUS=0x01,
  69. SHARING_CMD_SET_CAPACITY=0x02,
  70. SHARING_CMD_CONNECTION_FULL=0xfd,
  71. SHARING_CMD_CHKSUM_ERROR=0xfe,
  72. SHARING_CMD_UNKNOWN=0xff
  73. };
  74. enum POWERSHARING_TIMER_IDX
  75. {
  76. POWERSHARING_TMR_IDX_HEARTBEAT,
  77. POWERSHARING_TMR_IDX_GET_STATUS,
  78. POWERSHARING_TMR_IDX_SET_CAPACITY,
  79. POWERSHARING_TMR_IDX_CNT
  80. };
  81. enum GUN_TYPE
  82. {
  83. GUN_TYPE_UNKNOWN=0,
  84. GUN_TYPE_CHAdeMO,
  85. GUN_TYPE_CCS,
  86. GUN_TYPE_GBT,
  87. GUN_TYPE_DO,
  88. GUN_TYPE_AC
  89. };
  90. enum CONNECTOR_TYPE
  91. {
  92. CONNECTOR_TYPE_AC=0,
  93. CONNECTOR_TYPE_AC_THREE,
  94. CONNECTOR_TYPE_DC
  95. };
  96. struct Message
  97. {
  98. int size;
  99. uint8_t buffer[2048];
  100. };
  101. typedef struct CONNECTOR_INFO
  102. {
  103. uint8_t connectorType;
  104. uint16_t availableSharingCurrent; // Each connector available sharing current, resolution: 1A
  105. uint16_t presentOutputCurrent; // Each connector preset output current, resolution: 1A
  106. uint16_t SOC; // Each connector preset SOC, resolution: 0.1%
  107. uint16_t remindTime; // Each connector remind charging time, resolution: 1min
  108. struct timespec tmrCheckCapacity; // Each connector check capacity timer
  109. uint8_t isGunConnected:1; // Each connection gun connected flag
  110. }Connector_Info;
  111. struct CONNECTION_INFO
  112. {
  113. int socketFd; // Socket file description
  114. int connectorCount; // Each connection connector count
  115. Connector_Info connectorInfo[4]; // Connector info
  116. struct timespec timer[POWERSHARING_TMR_IDX_CNT];
  117. uint8_t isSocketConnected:1; // Each connection socket connected flag
  118. };
  119. struct POWER_SHARING
  120. {
  121. uint8_t connectedConnectionQty;
  122. uint8_t connectedConnectorQty;
  123. int32_t onHandCurrent;
  124. struct CONNECTION_INFO Connection_Info[CONNECTION_LIMIT];
  125. uint8_t isDetectNewConnected:1;
  126. };
  127. #endif /* MODULE_POWERSHARING_H_ */