ParaMge_F4.h 3.8 KB
#ifndef __PARAMGE_F4_H_
#define __PARAMGE_F4_H_

#include "stdint.h"
#include "ParaMge_Common.h"

// paraMge 参数管理模块
// 参数管理模块负责数据从Flash到参数缓冲区,其数据应当保证在模块中流通
// 所有对外的数据必须经过API进行输出
// 

//    paraMge
// +-------------------------------------------------------+
// |                                                       |
// |                                                       |
// |          ,'''''''''''''''''''''''''''''''|            |
// |          |            FLASH              |            |
// |          `...............................|            |
// |                         |                             |
// |                         |                             |
// |                         |                             |
// |    ,''''''''''''''''''''''''''''''''''''''''''''|     |
// |    |                                            |     |
// |    |                  Cache                     |     |
// |    |                                            |     |
// |     `'''''''''''''''''|''''|''''''''''''''''''''      |
// |                       |    |                          |
// +------------------.....|....|......--------------------+
//                    |               |
//                    |     API       |
//                    "---------------'



typedef struct
{
    uint16_t crcSum;    //! crcSum在第一位,校验时忽略该位
    uint32_t version;
    uint32_t SaveTimes;
    _PARAMGE_CONFIG_MOTCOM motComSetting[3];
} _PARAMGE_CONFIG_AIO;

#pragma pack() /*恢复字节对齐*/

//结构体&联合体大小检查,在vscode下鼠标放在sizeof上可以看到结构体大小
// NOTE: 注意使用正确的编译器 arm-gcc
// int testSizeOf = sizeof(_BMCL_CONFIG_MOT);

extern uint32_t BMCL_mot_Calibration;
extern int32_t bmcl_config_mot_select;

/**
 * @brief paraMge 初始化
 * @return 自行设计返回结果,用于错误处理
 */
int paraMge_Init();

// /// @brief paraMge 返回版本号(暂未设计)
// /// @return 返回当前Flash中的paraMge版本号
// int paraMge_GetVerion();

/**
 * @brief paraMge 返回储存状态()
 * @return 返回储存状态
 */
__PARAMGE_DEF_STORAGE_STA paraMge_StorageSTA();

/**
 * @brief paraMge 获取GenPID的参数
 * @param[in] index GenPID索引 : 要获取的GenPID的索引
 * @param[out] dest GenPID模板指针 : 返回获取的GenPID
 * @return 返回读取结果状态
 */
int paraMge_GetGenPID(__PARAMGE_INDEX_GENPID index, __PARAMGE_TEMP_GENPID *dest,__PARAMGE_INDEX_MOT MOT);

/**
 * @brief paraMge 写入GenPID的参数,该操作不写入Flash中,仅缓存
 * @param index GenPID索引 : 要写入的GenPID的索引
 * @param dest GenPID模板指针 : 写入的GenPID的指针
 * @return 返回写入结果状态
 */
int paraMge_WriteGenPID(__PARAMGE_INDEX_GENPID index, __PARAMGE_TEMP_GENPID *src,__PARAMGE_INDEX_MOT MOT);

int paraMge_GetKPF(__PARAMGE_INDEX_KPF index, __PARAMGE_TEMP_KPF *dest,__PARAMGE_INDEX_MOT MOT);
int paraMge_WriteGenKPF(__PARAMGE_INDEX_KPF index, __PARAMGE_TEMP_KPF *src,__PARAMGE_INDEX_MOT MOT);

int paraMge_GetINIF(__PARAMGE_INDEX_INIF index, __PARAMGE_TEMP_INTF *dest,__PARAMGE_INDEX_MOT MOT);
int paraMge_WriteINIF(__PARAMGE_INDEX_INIF index, __PARAMGE_TEMP_INTF *src,__PARAMGE_INDEX_MOT MOT);

int paraMge_GetMOT(__PARAMGE_TEMP_MOT *dest,__PARAMGE_INDEX_MOT MOT);
int paraMge_WriteMOT( __PARAMGE_TEMP_MOT *src,__PARAMGE_INDEX_MOT MOT);

/**
 * @brief paraMge 从Flash中读取到缓冲区
 * @return 读取状态
 */
__PARAMGE_DEF_STORAGE_STA paraMge_ReadALL();

/**
 * @brief paraMge 从缓冲区写入到Flash中
 * @return 返回写入保存状态
 */
__PARAMGE_DEF_SAVE_STA paraMge_SaveALL();

/**
 * @brief paraMge 返回保存次数
 * @return 保存次数
 */
uint32_t paraMge_GetSaveTimes(uint32_t opADDR);

int bmcl_Config_Init();
int Para_Init();

#endif