main.h 8.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295
  1. /*********************************************************************************************************
  2. * Module : main.h
  3. * Abstract : main modules is defined data structure!
  4. * Version : 1.0.0
  5. * Author : Leopul(COPYRIGHT 2025 - 2027 Leopul. All rights reserved.)
  6. * Complete : 2025-02-16
  7. * Content : None
  8. * Note : None
  9. *********************************************************************************************************/
  10. #ifndef __MAIN_H
  11. #define __MAIN_H
  12. #include "stdint.h"
  13. #define STS_TYPE 0x07
  14. #define STS_R_START 4000
  15. #define STS_RW_START 4161
  16. #define STS_OUTPUT_STATUS (STS_RW_START)
  17. #define STS_CHOISE_INPUT (STS_OUTPUT_STATUS + 1)
  18. #define STS_INPUT_THRESHOLD (STS_CHOISE_INPUT + 1)
  19. #define STS_OUTPUT_THRESHOLD (STS_INPUT_THRESHOLD + 10)
  20. #define STS_TEMP_THRESHOLD (STS_OUTPUT_THRESHOLD + 2)
  21. #define STS_OVER_FUNC (STS_TEMP_THRESHOLD +1)
  22. #define IIC_INPUT_THRESHOLD_START (10)
  23. //#define IIC_INPUT_THRESHOLD_LENTH (20)
  24. #define IIC_OUTPUT_THRESHOLD_START (50)
  25. //#define IIC_OUTPUT_THRESHOLD_LENTH (30)
  26. #define IIC_TEMPRATURE_THRESHOLD_START (150)
  27. //#define IIC_TEMPRATURE_THRESHOLD_LENTH (4)
  28. #define IIC_OVER_FUNC_START (170)
  29. #define IIC_OVER_FUNC_LENTH (1)
  30. #define IIC_CONSUMER_START (200)
  31. //#define IIC_CONSUMER_LENTH (4)
  32. #define IIC_OUT_CHANNEL (210)
  33. #define INVALID_VALUE (10000000)
  34. #define SMALL_VALUE (500)
  35. enum{
  36. INPUT_CHANNEL_1=0,
  37. INPUT_CHANNEL_2,
  38. };
  39. enum {
  40. CH448_CHANNEL_1 = 0,
  41. CH448_CHANNEL_2,
  42. CH448_CHANNEL_3,
  43. CH448_CHANNEL_NONE,
  44. };
  45. #define VOLTAGE_MAX_EN (0x01)
  46. #define VOLTAGE_MIN_EN (0x02)
  47. #define CURRENT_MAX_EN (0x04)
  48. #define POWER_MAX_EN (0x08)
  49. #define CONSUMER_MAX_EN (0x10)
  50. #define FREQ_MAX_EN (0x20)
  51. #define FREQ_MIN_EN (0x40)
  52. #define VOLTAGLE_MAX_DIS_EN (~(VOLTAGE_MAX_EN))
  53. #define VOLTAGLE_MIN_DIS_EN (~(VOLTAGE_MIN_EN))
  54. #define CURRENT_MAX_DIS_EN (~(CURRENT_MAX_EN))
  55. #define POWER_MAX_DIS_EN (~(POWER_MAX_EN))
  56. #define CONSUMER_MAX_DIS_EN (~(CONSUMER_MAX_EN))
  57. #define FREQ_MAX_DIS_EN (~(FREQ_MAX_EN))
  58. #define FREQ_MIN_DIS_EN (~(FREQ_MIN_EN))
  59. #define IS_VOLTAGE_MAX_EN(reg) ((reg) & VOLTAGE_MAX_EN)
  60. #define IS_VOLTAGE_MIN_EN(reg) ((reg) & VOLTAGE_MIN_EN)
  61. #define IS_CURRENT_MAX_EN(reg) ((reg) & CURRENT_MAX_EN)
  62. #define IS_POWER_MAX_EN(reg) ((reg) & POWER_MAX_EN)
  63. #define IS_CONSUMER_MAX_EN(reg) ((reg) & CONSUMER_MAX_EN)
  64. #define IS_FREQ_MAX_EN(reg) ((reg) & FREQ_MAX_EN)
  65. #define IS_FREQ_MIN_EN(reg) ((reg) & FREQ_MIN_EN)
  66. #define SET_VOLTAGE_MAX_EN(reg) ((reg) |= VOLTAGE_MAX_EN)
  67. #define SET_VOLTAGE_MIN_EN(reg) ((reg) |= VOLTAGE_MIN_EN)
  68. #define SET_CURRENT_MAX_EN(reg) ((reg) |= CURRENT_MAX_EN)
  69. #define SET_POWER_MAX_EN(reg) ((reg) |= POWER_MAX_EN)
  70. #define SET_CONSUMER_MAX_EN(reg) ((reg) |= CONSUMER_MAX_EN)
  71. #define SET_FREQ_MAX_EN(reg) ((reg) |= FREQ_MAX_EN)
  72. #define SET_FREQ_MIN_EN(reg) ((reg) |= FREQ_MIN_EN)
  73. #define UNSET_VOLTAGE_MAX_EN(reg) ((reg) &= VOLTAGLE_MAX_DIS_EN)
  74. #define UNSET_VOLTAGE_MIN_EN(reg) ((reg) &= VOLTAGLE_MIN_DIS_EN)
  75. #define UNSET_CURRENT_MAX_EN(reg) ((reg) &= CURRENT_MAX_DIS_EN)
  76. #define UNSET_POWER_MAX_EN(reg) ((reg) &= POWER_MAX_DIS_EN)
  77. #define UNSET_CONSUMER_MAX_EN(reg) ((reg) &= CONSUMER_MAX_DIS_EN)
  78. #define UNSET_FREQ_MAX_EN(reg) ((reg) &= FREQ_MAX_DIS_EN)
  79. #define UNSET_FREQ_MIN_EN(reg) ((reg) &= FREQ_MIN_DIS_EN)
  80. #define SET_WANNING_VOLTAGE_MAX(reg) SET_VOLTAGE_MAX_EN(reg)
  81. #define SET_WANNING_VOLTAGE_MIN(reg) SET_VOLTAGE_MIN_EN(reg)
  82. #define SET_WANNING_CURRENT_MAX(reg) SET_CURRENT_MAX_EN(reg)
  83. #define SET_WANNING_POWER_MAX(reg) SET_POWER_MAX_EN(reg)
  84. #define SET_WANNING_CONSUMER_MAX(reg) SET_CONSUMER_MAX_EN(reg)
  85. #define SET_WANNING_FREQ_MAX(reg) SET_FREQ_MAX_EN(reg)
  86. #define SET_WANNING_FREQ_MIN(reg) SET_FREQ_MIN_EN(reg)
  87. #define UNSET_WANNING_VOLTAGE_MAX(reg) UNSET_VOLTAGE_MAX_EN(reg)
  88. #define UNSET_WANNING_VOLTAGE_MIN(reg) UNSET_VOLTAGE_MIN_EN(reg)
  89. #define UNSET_WANNING_CURRENT_MAX(reg) UNSET_CURRENT_MAX_EN(reg)
  90. #define UNSET_WANNING_POWER_MAX(reg) UNSET_POWER_MAX_EN(reg)
  91. #define UNSET_WANNING_CONSUMER_MAX(reg) UNSET_CONSUMER_MAX_EN(reg)
  92. #define UNSET_WANNING_FREQ_MAX(reg) UNSET_FREQ_MAX_EN(reg)
  93. #define UNSET_WANNING_FREQ_MIN(reg) UNSET_FREQ_MIN_EN(reg)
  94. #define IS_WANNING_VOLTAGE_MAX(reg) IS_VOLTAGE_MAX_EN(reg)
  95. #define IS_WANNING_VOLTAGE_MIN(reg) IS_VOLTAGE_MIN_EN(reg)
  96. #define IS_WANNING_CURRENT_MAX(reg) IS_CURRENT_MAX_EN(reg)
  97. #define IS_WANNING_POWER_MAX(reg) IS_POWER_MAX_EN(reg)
  98. #define IS_WANNING_CONSUMER_MAX(reg) IS_CONSUMER_MAX_EN(reg)
  99. #define IS_WANNING_FREQ_MAX(reg) IS_FREQ_MAX_EN(reg)
  100. #define IS_WANNING_FREQ_MIN(reg) IS_FREQ_MIN_EN(reg)
  101. #define STS_INPUT_HAS_WANNING(reg) ((IS_WANNING_VOLTAGE_MAX(reg)) || (IS_WANNING_VOLTAGE_MIN(reg)) \
  102. || (IS_WANNING_FREQ_MAX(reg)) || (IS_WANNING_FREQ_MIN(reg)) )
  103. #pragma pack (2)
  104. typedef struct {
  105. uint32_t uniq_ID_64_95;
  106. uint32_t uniq_ID_32_63;
  107. uint32_t uniq_ID_00_31;
  108. uint32_t channels;
  109. char ver[12];
  110. char date[32];
  111. }md_information_t;
  112. typedef struct {
  113. uint32_t voltage;
  114. uint32_t current;
  115. uint32_t power;
  116. uint32_t consumer;
  117. uint32_t freq;
  118. uint32_t factor;
  119. uint32_t angle;
  120. }md_out_power_info;
  121. typedef struct {
  122. uint32_t voltage;
  123. uint32_t freq;
  124. }md_input_info;
  125. typedef struct{
  126. uint16_t choise_ch;
  127. }md_chiose_ch;
  128. typedef struct{
  129. uint16_t input_status[2];
  130. }md_input_status;
  131. typedef struct{
  132. uint16_t fan_status;
  133. }md_fans;
  134. typedef struct{
  135. uint16_t waning[2]; /* two input */
  136. }md_in_wanning;
  137. typedef struct {
  138. uint16_t waning;
  139. }md_out_wanning;
  140. typedef struct {
  141. uint32_t voltage_max;
  142. uint32_t voltage_min;
  143. uint32_t current_max;
  144. uint32_t power_max;
  145. uint32_t consumer_max;
  146. }iic_out_threshold_t;
  147. typedef struct {
  148. uint32_t voltage_max;
  149. uint32_t voltage_min;
  150. uint32_t freq_max;
  151. uint32_t freq_min;
  152. }iic_in_threshold_t;
  153. typedef struct{
  154. uint16_t fans_max_temp;
  155. uint16_t fans_min_temp;
  156. }iic_temp_threshold_t;
  157. typedef uint16_t iic_over_func;
  158. typedef struct{
  159. uint16_t dev; //4000
  160. md_information_t info; //4001 - 4030
  161. md_input_info input[2]; //4031 - 4038
  162. md_input_status input_status; //4039 - 4040
  163. md_in_wanning input_wanning; //4041
  164. md_out_wanning output_waning; //4042
  165. md_out_power_info out_power; //4043 - 4057
  166. int16_t temprature; //4058
  167. uint16_t temprature_flag; //4059
  168. uint16_t fans_status; //4060
  169. uint16_t resurved[100]; //
  170. uint16_t out_status; //r_w //4061
  171. md_chiose_ch md_choise; //4062
  172. iic_in_threshold_t input_th[2];
  173. iic_out_threshold_t output_th;
  174. iic_temp_threshold_t temprature_th;
  175. iic_over_func over_func;
  176. }md_data_t;
  177. #pragma pack ()
  178. typedef struct sts_data sts_data_t;
  179. typedef struct sts_data{
  180. uint8_t flag_1000ms;
  181. uint8_t flag_100ms;
  182. uint8_t temp_online_flag;
  183. uint8_t count_start_flag;
  184. uint8_t switch_flag;
  185. uint8_t over_func_flag;
  186. uint8_t beep_flag;
  187. uint8_t switch_status;
  188. md_data_t m_data;
  189. float iic_consumer;
  190. float temprature;
  191. uint8_t input_wanning_en[2];
  192. uint8_t output_wanning_en;
  193. void (*choise_input)(uint8_t channel);
  194. void (*open_output)();
  195. void (*close_output)();
  196. void (*read_ele)(uint8_t channel);
  197. void (*read_input_level)(uint8_t channel);
  198. void (*read_switch_level)();
  199. void (*fans)(uint8_t on_off);
  200. void (*beep)();
  201. void (*led_flash)();
  202. void (*read_eeprom)();
  203. void (*read_at24)(uint16_t start,uint8_t *buff,uint16_t lenth);
  204. void (*write_at24)(uint16_t start,uint8_t *buff,uint16_t lenth);
  205. float (*read_temp)();
  206. void (*check_wanning)(uint8_t channel);
  207. }sts_data_t;
  208. sts_data_t *get_sts(void);
  209. #endif