Files
vd_960/vd960Loop/utilities/at32f421_freertos_demo/inc/storage.h

181 lines
4.4 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/*
* storage.h
*
* Created on: Aug 27, 2024
* Author: Thinkpad
*/
#ifndef INCLUDE_STORAGE_H_
#define INCLUDE_STORAGE_H_
#include <stdint.h>
#include <string.h>
#include "cmcng.h"
#define Addr_Dev_Flag_Offset 0x00
#define Addr_Sens_Amount_Offset 0x0E
#define Addr_Smart_Mode_Offset 0x0F
#define Addr_Loop_Cng_Offset 0x10
#define Addr_Loop_PlanB_Cng_Offset 0x30
#define Addr_Flag_Sample_In 0x30
#define Addr_Sample_Max_Amplitude 0x31
#define Addr_Flag_Balance_Ori_In 0x33
#define Addr_Balance_Ori_In_Max_Cnt 0x34
#define Addr_Flag_Release_Ori_PlanB 0x36
#define Addr_Release_Ori_PlanB_TimeOut 0x37
#define Addr_Release_Ori_PlanB_Weight 0x38
#define Addr_Release_Ori_Amplitude 0x39
#define Addr_Flag_Release_Rate 0x3B
#define Addr_Release_Rate_First 0x3C
#define Addr_Release_Rate_Second 0x3D
#define Addr_Release_Rate_Weight 0x3E
#define Addr_Release_Rate_Mode 0x3F
#define Addr_Loop_Sens_List_Offset 0x40
#define Addr_Sens_Array_In 0x40
#define Addr_Sens_Array_Out 0x50
#define MAX_LOOP_SENS_AMOUNT 4
extern const uint16_t SensTable[4];
extern const uint16_t SensTable_1[4];
#pragma pack(1)
typedef struct _Loop_Sample_CNG_
{
uint8_t flag;
uint16_t max_amplitude; // 最大幅值
}Loop_Sample_Cng;
typedef struct _Loop_Balance_Ori_CNG_
{
uint8_t flag;
uint16_t max_cnt ; // 最大补偿次数
}Loop_Balance_Ori_Cng; // 漂移补偿
typedef struct _Loop_Release_Ori_PlanB_
{
uint8_t flag_weight;
uint16_t max_amplitude; //最大幅值
uint8_t timeout; // 单位:分钟
}Loop_Release_Ori_PlanB;
typedef struct _Loop_Release_Change_Rate_
{
uint8_t flag_weight;
uint8_t rate_first;
uint8_t rate_second;
uint8_t mode;
}Loop_Release_Change_Rate;
typedef struct _Loop_Balance_PlanB_
{
Loop_Sample_Cng sample_cng;
Loop_Balance_Ori_Cng balance_ori_cng;
Loop_Release_Ori_PlanB release_ori_planB;
Loop_Release_Change_Rate release_change_rate;
}Loop_Balance_PlanB;
extern Loop_Balance_PlanB g_loop_balance_planB;
#define SENS_Default_Amount 4
typedef enum
{
Freq_High = 0,
Freq_Middle_High,
Freq_Middle_Low,
Freq_Low
} Freq_Level;
typedef enum
{
Smart_Mode_Disable = 0,
Smart_Mode_Enable
} Freq_Smart_Mode;
typedef enum
{
LNum_1 = 0,
LNum_2,
LNum_3,
LNum_4
} Loop_Num;
typedef struct
{
uint8_t sensitvity; // 高四位表示灵敏度的数量低四位表示当前灵敏度的序号从0开始
uint8_t delay_time;
uint8_t output_mode;
uint8_t direction_mode; // 方向判别模式0 触发模式, 非0 表示方向判别模式
uint8_t loopFreq_Level; // 高低频 0 High, 1 Middle High; 2 Middle Low, 3 Low
uint8_t loopSafe_Timeout; // 线圈安全模式, 0表示关闭非0表示开启以10秒为单位
uint8_t exist_mode; // 0 永久存在非0表示有限存在的时间单位为10秒
uint8_t rfu;
}Loop_Cng_Unit;
// extern Loop_Cng_Unit g_loop_cng_unit[LOOP_CAPTURE_MAX];
typedef struct
{
uint8_t smart_mode; // 0 disable
Loop_Cng_Unit loop_cng[LOOP_CAPTURE_MAX];
}Loop_Cng_Info;
extern Loop_Cng_Info g_loop_cng_info;
typedef struct
{
uint16_t sens_in;
uint16_t sens_out;
}Loop_Single_Sens;
typedef struct
{
uint8_t total;
Loop_Single_Sens sens[MAX_LOOP_SENS_AMOUNT];
}Loop_Sens_List;
extern Loop_Sens_List g_loop_sens_list;
typedef struct _DBN_BLE_STATE_
{
uint8_t flag; // if need to report
uint8_t enable; // if enable
uint8_t send_flag;
uint8_t obj_amount;
uint8_t cmd;
uint8_t sens_type;
uint8_t dat_len ;
uint8_t dat_offset;
uint8_t pkg_amount;
uint8_t pkg_seq;
uint16_t interval;
uint32_t counter;
uint8_t timeout_min; // minute
uint32_t timeout_counter;
} DBN_BLE_State;
#pragma pack()
void set_flp_level(uint8_t loop_num, uint8_t freq_level);
void set_factory_param(void);
void storage_dev(void);
void para_store_init(void);
void test_factory(void);
#endif /* INCLUDE_STORAGE_H_ */