main.h 7.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273
  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 IIC_INPUT_THRESHOLD_START (10)
  14. //#define IIC_INPUT_THRESHOLD_LENTH (20)
  15. #define IIC_OUTPUT_THRESHOLD_START (50)
  16. //#define IIC_OUTPUT_THRESHOLD_LENTH (30)
  17. #define IIC_TEMPRATURE_THRESHOLD_START (150)
  18. //#define IIC_TEMPRATURE_THRESHOLD_LENTH (4)
  19. #define IIC_OVER_FUNC_START (170)
  20. #define IIC_OVER_FUNC_LENTH (1)
  21. #define IIC_CONSUMER_START (200)
  22. //#define IIC_CONSUMER_LENTH (4)
  23. #define IIC_OUT_CHANNEL (210)
  24. #define INVALID_VALUE (10000000)
  25. #define SMALL_VALUE (500)
  26. enum{
  27. INPUT_CHANNEL_1=0,
  28. INPUT_CHANNEL_2,
  29. };
  30. enum {
  31. CH448_CHANNEL_1 = 0,
  32. CH448_CHANNEL_2,
  33. CH448_CHANNEL_3,
  34. };
  35. #define VOLTAGE_MAX_EN (0x01)
  36. #define VOLTAGE_MIN_EN (0x02)
  37. #define CURRENT_MAX_EN (0x04)
  38. #define POWER_MAX_EN (0x08)
  39. #define CONSUMER_MAX_EN (0x10)
  40. #define FREQ_MAX_EN (0x20)
  41. #define FREQ_MIN_EN (0x40)
  42. #define VOLTAGLE_MAX_DIS_EN (~(VOLTAGE_MAX_EN))
  43. #define VOLTAGLE_MIN_DIS_EN (~(VOLTAGE_MIN_EN))
  44. #define CURRENT_MAX_DIS_EN (~(CURRENT_MAX_EN))
  45. #define POWER_MAX_DIS_EN (~(POWER_MAX_EN))
  46. #define CONSUMER_MAX_DIS_EN (~(CONSUMER_MAX_EN))
  47. #define FREQ_MAX_DIS_EN (~(FREQ_MAX_EN))
  48. #define FREQ_MIN_DIS_EN (~(FREQ_MIN_EN))
  49. #define IS_VOLTAGE_MAX_EN(reg) ((reg) & VOLTAGE_MAX_EN)
  50. #define IS_VOLTAGE_MIN_EN(reg) ((reg) & VOLTAGE_MIN_EN)
  51. #define IS_CURRENT_MAX_EN(reg) ((reg) & CURRENT_MAX_EN)
  52. #define IS_POWER_MAX_EN(reg) ((reg) & POWER_MAX_EN)
  53. #define IS_CONSUMER_MAX_EN(reg) ((reg) & CONSUMER_MAX_EN)
  54. #define IS_FREQ_MAX_EN(reg) ((reg) & FREQ_MAX_EN)
  55. #define IS_FREQ_MIN_EN(reg) ((reg) & FREQ_MIN_EN)
  56. #define SET_VOLTAGE_MAX_EN(reg) ((reg) |= VOLTAGE_MAX_EN)
  57. #define SET_VOLTAGE_MIN_EN(reg) ((reg) |= VOLTAGE_MIN_EN)
  58. #define SET_CURRENT_MAX_EN(reg) ((reg) |= CURRENT_MAX_EN)
  59. #define SET_POWER_MAX_EN(reg) ((reg) |= POWER_MAX_EN)
  60. #define SET_CONSUMER_MAX_EN(reg) ((reg) |= CONSUMER_MAX_EN)
  61. #define SET_FREQ_MAX_EN(reg) ((reg) |= FREQ_MAX_EN)
  62. #define SET_FREQ_MIN_EN(reg) ((reg) |= FREQ_MIN_EN)
  63. #define UNSET_VOLTAGE_MAX_EN(reg) ((reg) &= VOLTAGLE_MAX_DIS_EN)
  64. #define UNSET_VOLTAGE_MIN_EN(reg) ((reg) &= VOLTAGLE_MIN_DIS_EN)
  65. #define UNSET_CURRENT_MAX_EN(reg) ((reg) &= CURRENT_MAX_DIS_EN)
  66. #define UNSET_POWER_MAX_EN(reg) ((reg) &= POWER_MAX_DIS_EN)
  67. #define UNSET_CONSUMER_MAX_EN(reg) ((reg) &= CONSUMER_MAX_DIS_EN)
  68. #define UNSET_FREQ_MAX_EN(reg) ((reg) &= FREQ_MAX_DIS_EN)
  69. #define UNSET_FREQ_MIN_EN(reg) ((reg) &= FREQ_MIN_DIS_EN)
  70. #define SET_WANNING_VOLTAGE_MAX(reg) SET_VOLTAGE_MAX_EN(reg)
  71. #define SET_WANNING_VOLTAGE_MIN(reg) SET_VOLTAGE_MIN_EN(reg)
  72. #define SET_WANNING_CURRENT_MAX(reg) SET_CURRENT_MAX_EN(reg)
  73. #define SET_WANNING_POWER_MAX(reg) SET_POWER_MAX_EN(reg)
  74. #define SET_WANNING_CONSUMER_MAX(reg) SET_CONSUMER_MAX_EN(reg)
  75. #define SET_WANNING_FREQ_MAX(reg) SET_FREQ_MAX_EN(reg)
  76. #define SET_WANNING_FREQ_MIN(reg) SET_FREQ_MIN_EN(reg)
  77. #define UNSET_WANNING_VOLTAGE_MAX(reg) UNSET_VOLTAGE_MAX_EN(reg)
  78. #define UNSET_WANNING_VOLTAGE_MIN(reg) UNSET_VOLTAGE_MIN_EN(reg)
  79. #define UNSET_WANNING_CURRENT_MAX(reg) UNSET_CURRENT_MAX_EN(reg)
  80. #define UNSET_WANNING_POWER_MAX(reg) UNSET_POWER_MAX_EN(reg)
  81. #define UNSET_WANNING_CONSUMER_MAX(reg) UNSET_CONSUMER_MAX_EN(reg)
  82. #define UNSET_WANNING_FREQ_MAX(reg) UNSET_FREQ_MAX_EN(reg)
  83. #define UNSET_WANNING_FREQ_MIN(reg) UNSET_FREQ_MIN_EN(reg)
  84. #define IS_WANNING_VOLTAGE_MAX(reg) IS_VOLTAGE_MAX_EN(reg)
  85. #define IS_WANNING_VOLTAGE_MIN(reg) IS_VOLTAGE_MIN_EN(reg)
  86. #define IS_WANNING_CURRENT_MAX(reg) IS_CURRENT_MAX_EN(reg)
  87. #define IS_WANNING_POWER_MAX(reg) IS_POWER_MAX_EN(reg)
  88. #define IS_WANNING_CONSUMER_MAX(reg) IS_CONSUMER_MAX_EN(reg)
  89. #define IS_WANNING_FREQ_MAX(reg) IS_FREQ_MAX_EN(reg)
  90. #define IS_WANNING_FREQ_MIN(reg) IS_FREQ_MIN_EN(reg)
  91. #define STS_INPUT_HAS_WANNING(reg) ((IS_WANNING_VOLTAGE_MAX(reg)) || (IS_WANNING_VOLTAGE_MIN(reg)) \
  92. || (IS_WANNING_FREQ_MAX(reg)) || (IS_WANNING_FREQ_MIN(reg)) )
  93. //#pragma pack (2)
  94. typedef struct {
  95. uint32_t uniq_ID_64_95;
  96. uint32_t uniq_ID_32_63;
  97. uint32_t uniq_ID_00_31;
  98. uint32_t channels;
  99. char ver[12];
  100. char date[32];
  101. }md_information_t;
  102. typedef struct {
  103. uint32_t voltage;
  104. uint32_t current;
  105. uint32_t power;
  106. uint32_t consumer;
  107. uint32_t freq;
  108. uint32_t factor;
  109. uint32_t angle;
  110. }md_out_power_info;
  111. typedef struct {
  112. uint32_t voltage;
  113. uint32_t freq;
  114. }md_input_info;
  115. typedef struct{
  116. uint16_t choise_ch;
  117. }md_chiose_ch;
  118. typedef struct{
  119. uint16_t input_status[2];
  120. }md_input_status;
  121. typedef struct{
  122. uint16_t fan_status;
  123. }md_fans;
  124. typedef struct{
  125. uint16_t waning[2]; /* two input */
  126. }md_in_wanning;
  127. typedef struct {
  128. uint16_t waning;
  129. }md_out_wanning;
  130. typedef struct {
  131. uint32_t voltage_max;
  132. uint32_t voltage_min;
  133. uint32_t current_max;
  134. uint32_t power_max;
  135. uint32_t consumer_max;
  136. }iic_out_threshold_t;
  137. typedef struct {
  138. uint32_t voltage_max;
  139. uint32_t voltage_min;
  140. uint32_t freq_max;
  141. uint32_t freq_min;
  142. }iic_in_threshold_t;
  143. typedef struct{
  144. uint16_t fans_max_temp;
  145. uint16_t fans_min_temp;
  146. }iic_temp_threshold_t;
  147. typedef uint16_t iic_over_func;
  148. typedef struct{
  149. uint16_t dev;
  150. md_information_t info;
  151. md_input_info input[2];
  152. md_chiose_ch md_choise;
  153. md_input_status input_status;
  154. md_in_wanning input_wanning;
  155. md_out_wanning output_waning;
  156. md_out_power_info out_power;
  157. uint16_t out_status;
  158. iic_in_threshold_t input_th[2];
  159. iic_out_threshold_t output_th;
  160. iic_temp_threshold_t temprature_th;
  161. iic_over_func over_func;
  162. }md_data_t;
  163. typedef struct sts_data sts_data_t;
  164. typedef struct sts_data{
  165. uint8_t led_flag;
  166. uint8_t count_start_flag;
  167. uint8_t switch_flag;
  168. uint8_t over_func_flag;
  169. uint8_t read_ele_flag;
  170. uint8_t beep_flag;
  171. uint8_t switch_status;
  172. md_data_t m_data;
  173. float iic_consumer;
  174. float temprature;
  175. uint8_t input_wanning_en[2];
  176. uint8_t output_wanning_en;
  177. void (*choise_input)(uint8_t channel);
  178. void (*open_output)();
  179. void (*close_output)();
  180. void (*read_ele)(uint8_t channel);
  181. void (*read_input_level)(uint8_t channel);
  182. void (*read_switch_level)();
  183. void (*fans)(uint8_t on_off);
  184. void (*beep)();
  185. void (*led_flash)();
  186. void (*read_eeprom)();
  187. void (*read_at24)(uint16_t start,uint8_t *buff,uint16_t lenth);
  188. void (*write_at24)(uint16_t start,uint8_t *buff,uint16_t lenth);
  189. void (*read_temp)();
  190. void (*check_wanning)(uint8_t channel);
  191. }sts_data_t;
  192. //#pragma pack ()
  193. sts_data_t *get_sts(void);
  194. #endif