optical/EMBOS/Users/EmbBase/paras.h
2025-09-04 09:45:08 +08:00

148 lines
2.7 KiB
C

#ifndef __PARAS_H__
#define __PARAS_H__
#include "config.h"
#ifndef USE_SMEC
#define USE_SMEC 0 // 0:不使用加密芯片
// 1:使用加密芯片(使用加密芯片每次读写参数会增加30ms)
#endif
//---------------------------------
// FRAM地址划分
// 共8K字节
// 256字节 分期付款密码存储
// 256字节 nvpara
// 512字节 预留
// 1K字节 机器参数
// 1K字节 工作参数
// 1K字节 动框角度
#define ENC_ADDR 0x0000 // 256字节
#define NVPARA_ADDR 0x0100 // 256字节
#define REV_ADDR 0x0200 // 512字节
#define MCPARA_ADDR 0x0400 // 机器参数,1K
#define WKPARA_ADDR 0x0800 // 工作参数,1K
#define ANGPARA_ADDR 0x0C00 // 动框起始角度
//---------------------------------
// 参数类型
#define PTYPE_U 0 // 无符号数
#define PTYPE_S 1 // 有符号数
#define PTYPE_B 2 // 位图
#define PARA_NUM 256
#define PARA_STR_LEN 30
#define PARA_MC_VALID 0x00005500
#define PARA_WK_VALID 0x000000AA
#define PARA_VALID (PARA_MC_VALID|PARA_WK_VALID)
//---------------------------------
//
#define MAX_HOR 12 // 横,下标2最大值,针步
#define MAX_VER 21 // 竖,下标1最大值,转速
typedef struct
{
u32 buf[PARA_NUM];
} __attribute__ ((packed)) ParaStruct;
//--------------------------------------------------------------
// 贴布绣(按针)
typedef struct
{
u32 dataidx; // 数据索引
u16 mvmnt; // 移动位移量
} __attribute__ ((packed)) Patch;
#define PATCH_DATA_NUM 10 // 支持设定的个数
typedef struct
{
Patch patch[PATCH_DATA_NUM];
} __attribute__ ((packed)) PatchData;
//---------------------------------
#ifdef _IN_PARAS_C
ParaStruct g_mcPara;
ParaStruct g_wkPara;
ParaStruct g_angPara;
PatchData g_patchData;
#else
extern ParaStruct g_mcPara; // 机器参数
extern ParaStruct g_wkPara; // 工作参数
extern ParaStruct g_angPara; // 起始动框角度参数
extern PatchData g_patchData; // 贴布绣数据,按针
#endif
//---------------------------------
void InitParas(void);
//---------------------------------
void SaveMcPara(void);
void SaveWkPara(void);
void SaveAngPara(void);
//---------------------------------
void CheckMcParaRange(void);
void CheckAMcParaRange(int id);
void CheckWkParaRange(void);
void CheckAWkParaRange(int id);
//---------------------------------
void WriteDefMcPara(void);
void WriteDefWkPara(void);
void WriteDefMvAngPara(void);
//---------------------------------
void SetMcParaNameString(void* pDat);
void SetWkParaNameString(void* pDat);
void SetMcParaList(void * pDat);
void SetWkParaList(void * pDat);
void SetDefAngParaList(void * pDat);
//---------------------------------
u32 GetAMcPara(int id);
void SetAMcPara(int id, u32 val);
u32 GetAWkPara(int id);
void SetAWkPara(int id, u32 val);
void SetAAnglePara(int id, u16 val);
//---------------------------------
#endif