forked from SZV10X_Software/SZV103_FM33A0xxEV_SiZhu

jinlicong
2024-05-30 a1810b89e66f184c62a0588ae7d57c91d0c376e8
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
#include "usmart.h"
#include "usmart_str.h"
////////////////////////////Óû§ÅäÖÃÇø///////////////////////////////////////////////
// ÕâÏÂÃæÒª°üº¬ËùÓõ½µÄº¯ÊýËùÉêÃ÷µÄÍ·Îļþ(Óû§×Ô¼ºÌí¼Ó)
#include "uart.h"
#include "gpio.h"
#include "extern_rtc.h"
#include "rtc.h"
#include "stdlib.h"
#include "mbcrc.h"
#include "sundry.h"
#include "e2p.h"
#include "system_log.h"
#include "system_parameter.h"
#include "upper_computer_read_log_temp.h"
 
u8 get_rtc_time(void)
{
  //    Get_Extern_Rtc_Time(&calendar_g);
  Get_Sys_Rtc_Time(&calendar_g);
  printf("RTC_TIME = %X-%02X-%02X-%02X-%02X-%02X \r\n", calendar_g.Year, calendar_g.Month, calendar_g.Date,
         calendar_g.Hour, calendar_g.Minute, calendar_g.Second);
  return calendar_g.Second;
}
/*´´Ôì´Ó»úÁ÷Á¿Êý¾ÝÖ¡*/
// instant_wc_num´óÓÚ1СÓÚ10
void Create_Slave_FlowDataFrame(uint8_t instant_wc_num)
{
  uint8_t i, byte_size = 2 + 2 * 4 + 2;
  uint16_t crc_check = 0;
  uint8_t *pfar = NULL;
  float random = rand() % 4 + 2.14786f;
 
  if (instant_wc_num > 10)
    byte_size += 2 * 4;
  else
    byte_size += instant_wc_num * 4;
 
  if ((pfar = malloc(byte_size)) != NULL)
  {
    pfar[0] = 0x42;
    pfar[1] = 0x3B;
    Float_To_Byte4(5.817f * random, &pfar[2]);  // Î¶È
    Float_To_Byte4(34.157f * random, &pfar[6]); // Ñ¹Á¦
    for (i = 10; i < byte_size; i += 4)
      Float_To_Byte4(rand() % 10 + random, &pfar[i]);
    crc_check = usMBCRC16(0xFFFF,pfar, byte_size - 2);
    pfar[byte_size - 2] = crc_check;
    pfar[byte_size - 1] = crc_check >> 8;
  }
  for (i = 0; i < byte_size; i++)
    printf("%02X ", pfar[i]);
  free(pfar);
  pfar = NULL;
}
 
 
/*²âÊÔ²ÎÊý´æ´¢Ð´£¨Õý³££º230407£©*/
void Test_ParaWrite(uint8_t table_num,uint8_t cnt)
{
    Sys_Log_E2pParaMultipleWrite(&sys_store_para_table[table_num],cnt);
}
/*²âÊÔ²ÎÊý´æ´¢¶Á£¨Õý³££º230407£©*/
void Test_ParaRead(uint8_t table_num)
{
    E2P_PWR_ON; // ¿ªÆôE2pµçÔ´
    Sys_Log_E2pParaRead_1_Data(&sys_store_para_table[table_num]);
    E2P_PWR_OFF; // ¹Ø±ÕE2pµçÔ´
}
/*²âÊÔÀúÊ·¼Ç¼´æ´¢£¨Õý³££º230407£©*/
void Test_CyclicWrite(uint8_t sc,uint8_t cnt)
{
    para_amend_log_g.para_amend_union.gas_cumulate_amend_s.cumulate_sc_before = 
        para_amend_log_g.para_amend_union.gas_cumulate_amend_s.cumulate_sc_after;
    para_amend_log_g.para_amend_union.gas_cumulate_amend_s.cumulate_sc_after =     sc;
    Sys_Log_E2pCyclicMultipleWrite(&sys_log_cyclic_table[CYCL_GAS_CUMULATE_AMEND],(uint8_t *)&para_amend_log_g,cnt);
}
 
/*²âÊÔÀúÊ·¼Ç¼µ¹Ðò¶ÁÈ¡£¨Õý³££º230407£©*/
void Test_CyclicMultipleReverseRead(uint8_t cnt)
{
    Sys_Log_E2pCyclicMultipleReverseRead(&sys_log_cyclic_table[CYCL_GAS_CUMULATE_AMEND],(uint8_t *)&para_amend_log_g,cnt);
}
/*²âÊÔÀúÊ·¼Ç¼ÕýÐò¶ÁÈ¡£¨Õý³££º230407£©*/
void Test_CyclicMultiplePositiveRead(uint8_t cnt)
{
    Sys_Log_E2pCyclicMultiplePositiveRead(&sys_log_cyclic_table[CYCL_GAS_CUMULATE_AMEND],(uint8_t *)&para_amend_log_g,cnt,cnt);
}
/*²âÊÔÔ¶´«Á÷Á¿¼ÇÂ¼ÌØÊâд£¨Õý³££º230407£©*/
void Test_SendFlowDataWrite(uint8_t write_cnt)
{
    SYS_SEND_FLOW_DATA_SYSLOG_FORMAT_T send_data_buffer;
    SendFlowData_LogRecordCreated(&send_data_buffer, &sys_realtime_data_g, &billing_real_para_g, &calendar_g);
    /*¼ÆËãУÑéºÍ*/
    send_data_buffer.check_crc = usMBCRC16(0xffff,&send_data_buffer.record_time[0],SEND_FLOW_DATA_LOG_FORMAT_SIZE - SIZEOF_OF(SYS_SEND_FLOW_DATA_SYSLOG_FORMAT_T,check_crc));
    /*´¢´æ*/
    SendFlowData_SpecialWrite((uint8_t *)&send_data_buffer,write_cnt);
}
 
/*²âÊÔÔ¶´«Á÷Á¿¼ÇÂ¼ÌØÊâ¶Á£¨Õý³££º230407£©*/
void Test_SendFlowDataRead(uint8_t read_cnt,uint8_t back_or_forward)
{
    SYS_SEND_FLOW_DATA_SYSLOG_FORMAT_T buffer[5];
    SendFlowData_SpecialRead((uint8_t *)&buffer,read_cnt,back_or_forward);
}
 
 
 
 
// º¯ÊýÃûÁбí³õʼ»¯(Óû§×Ô¼ºÌí¼Ó)
// Óû§Ö±½ÓÔÚÕâÀïÊäÈëÒªÖ´Ðеĺ¯ÊýÃû¼°Æä²éÕÒ´®
struct _m_usmart_nametab usmart_nametab[] =
    {
#if USMART_USE_WRFUNS == 1 // Èç¹ûʹÄÜÁ˶Áд²Ù×÷
    (void *)read_addr,"u32 read_addr(u32 addr)",
    (void *)write_addr,"void write_addr(u32 addr,u32 val)",
#endif
    (void *)Set_Extern_Rtc_Time,"void Set_Extern_Rtc_Time(uint16_t year,uint8_t month,uint8_t day,uint8_t week,uint8_t hour,uint8_t min,uint8_t sec)",
    (ErrorStatus_STM32 *)Set_Sys_Rtc_Time,"HAL_StatusTypeDef Set_Sys_Rtc_Time(uint8_t year,uint8_t month,uint8_t day,uint8_t hour,uint8_t min,uint8_t sec,uint8_t week)",
    (u8 *)get_rtc_time,"u8 get_rtc_time(void)",
    (void *)Create_Slave_FlowDataFrame,"void Create_Slave_FlowDataFrame(uint8_t instant_wc_num)",
    (u8 *)FM25V02_data_read,"uint8_t FM25V02_data_read(uint32_t addr16)",
    (void *)FM25V02_data_write,"void FM25V02_data_write(uint32_t addr16,uint8_t data)",
    (u16 *)FM25V02_data_read_uint16,"u16 FM25V02_data_read_uint16(uint32_t addr16)",
    (void *)E2p_Write_Test,"void E2p_Write_Test(uint8_t data_8,uint16_t data_16,uint32_t data_32,float data_f,double data_d)",
    (void *)E2p_Read_Test,"void E2p_Read_Test(void)",
    (void *)Test_ParaWrite,"void Test_ParaWrite(uint8_t table_num,uint8_t cnt)",
    (void *)Test_ParaRead,"void Test_ParaRead(uint8_t table_num)",
    (void *)Test_CyclicWrite,"void Test_CyclicWrite(uint8_t sc,uint8_t cnt)",
    (void *)Test_CyclicMultipleReverseRead,"void Test_CyclicMultipleReverseRead(uint8_t cnt)",
    (void *)Test_CyclicMultiplePositiveRead,"void Test_CyclicMultiplePositiveRead(uint8_t cnt)",
    (void *)Test_SendFlowDataWrite,"void Test_SendFlowDataWrite(uint8_t write_cnt)",
    (void *)Test_SendFlowDataRead,"void Test_SendFlowDataRead(uint8_t read_cnt,uint8_t back_or_forward)",    
        
};
///////////////////////////////////END///////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////
// º¯Êý¿ØÖƹÜÀíÆ÷³õʼ»¯
// µÃµ½¸÷¸öÊܿغ¯ÊýµÄÃû×Ö
// µÃµ½º¯Êý×ÜÊýÁ¿
struct _m_usmart_dev usmart_dev =
{
    usmart_nametab,
    usmart_init,
    usmart_cmd_rec,
    usmart_exe,
    usmart_scan,
    sizeof(usmart_nametab) / sizeof(struct _m_usmart_nametab), // º¯ÊýÊýÁ¿
    0,                                                         // ²ÎÊýÊýÁ¿
    0,                                                         // º¯ÊýID
    1,                                                         // ²ÎÊýÏÔʾÀàÐÍ,0,10½øÖÆ;1,16½øÖÆ
    0,                                                         // ²ÎÊýÀàÐÍ.bitx:,0,Êý×Ö;1,×Ö·û´®
    0,                                                         // Ã¿¸ö²ÎÊýµÄ³¤¶ÈÔÝ´æ±í,ÐèÒªMAX_PARM¸ö0³õʼ»¯
    0,                                                         // º¯ÊýµÄ²ÎÊý,ÐèÒªPARM_LEN¸ö0³õʼ»¯
};