队列管理储存数据

/*
  ************************************* Copyright ******************************
  *
  *                 (C) Copyright 2022,Wenkic,China, GCU.
  *                            All Rights Reserved
  *
  *                     By(Wenkic)
  *                      https://blog.csdn.net/Wekic
  *
  * FileName     : SaveDat.c
  * Version      : v1.0
  * Author       : Wenkic
  * Date         : 2022-05-23
  * Description  :
  * Function List:
  ******************************************************************************
  */
/********************************End of Head************************************/
#include "SaveDat.h"
#include "config.h"
typedef struct _SaveList
{
	void* pAddr; //地址
	u8    size ; //大小
	u16   addr ; //偏移位置(开机后自动计算)
}SaveListType;

static u8 FirstData ;
SaveListType StartAddr[]={
{(void*) &FirstData                       ,sizeof(FirstData                     ),0},/* 0 */
{(void*) &language                        ,sizeof(language                      ),0},/* 1 */
{(void*) &LCD_V0                          ,sizeof(LCD_V0                        ),0},/* 2 */
{(void*) &CoinOutWay                      ,sizeof(CoinOutWay                    ),0},/* 3 */
{(void*) &AdvertiseVolume                 ,sizeof(AdvertiseVolume               ),0},/* 4 */
{(void*) &SeverTelephone                  ,sizeof(SeverTelephone                ),0},/* 5 */
{(void*) &PaperMachine                    ,sizeof(PaperMachine                  ),0},/* 6 */
{(void*) &CoinValue                       ,sizeof(CoinValue                     ),0},/* 7 */
{(void*) &SetMeal                         ,sizeof(SetMeal                       ),0},/* 8 */
{(void*) &AccountCards                    ,sizeof(AccountCards                  ),0},/* 9 */
{(void*) &AccountCloud                    ,sizeof(AccountCloud                  ),0},/* 10*/
{(void*) &AccountPager                    ,sizeof(AccountPager                  ),0},/* 11*/
{(void*) &AccountCoins                    ,sizeof(AccountCoins                  ),0},/* 12*/
{(void*) &AccountAllOut                   ,sizeof(AccountAllOut                 ),0},/* 13*/
{(void*) &AccountSurplus                  ,sizeof(AccountSurplus                ),0},/* 14*/
{(void*) &CloudPay                        ,sizeof(CloudPay                      ),0},/* 15*/
{(void*) &AccountPassword                 ,sizeof(AccountPassword               ),0},/* 16*/
{(void*) &SetMealPassword                 ,sizeof(SetMealPassword               ),0},/* 17*/
{(void*) &NowCoins                        ,sizeof(NowCoins                      ),0},/* 18*/
{(void*) &InventoryWarningLine            ,sizeof(InventoryWarningLine          ),0},/* 19*/
{(void*) &InventorySurplusCoin            ,sizeof(InventorySurplusCoin          ),0},/* 20*/
{(void*) &InventoryIsNoCoinStopMachine    ,sizeof(InventoryIsNoCoinStopMachine  ),0},/* 21*/
{(void*) &InventoryIsDisplaySurplusCoin   ,sizeof(InventoryIsDisplaySurplusCoin ),0},/* 22*/
{(void*) &NowIn_Coins                     ,sizeof(NowIn_Coins                   ),0},/* 23*/
{(void*) &NowOutCoins                     ,sizeof(NowOutCoins                   ),0},/* 24*/
{(void*) &TargetCoins                     ,sizeof(TargetCoins                   ),0},/* 25*/
{(void*) &InCoins                         ,sizeof(InCoins                       ),0},/* 26*/
{(void*) &OutCoins                        ,sizeof(OutCoins                      ),0},/* 27*/
{(void*) &FreeCoins                       ,sizeof(FreeCoins                     ),0},/* 28*/

//{(void*) &InventoryIsDisplaySurplusCoin   ,sizeof(InventoryIsDisplaySurplusCoin),0},

};

void SaveDat_FileInit(void)
{
    StartAddr[0].addr = 0; //地址初始位置
    for (u8 i = 0; i < (sizeof(StartAddr)/sizeof(StartAddr[0])-1); i++)
    {
        StartAddr[i+1].addr = StartAddr[i].addr + StartAddr[i].size;
    }
	COM_Printf("Save Data Size: %d\r\n",StartAddr[Addr_Max-1].addr+StartAddr[Addr_Max-1].size);
    SaveList_Read(AddrEnum(FirstData    ));
    if(FirstData !=FirstNumber)
    {
		COM_Printf("Save Data Init\r\n");
        FirstData = FirstNumber;
		for(u8 i= 0;i<Addr_Max;i++)
		{
			SaveList_Write(i);
		}
    }
	for(u8 i= 0;i<Addr_Max;i++)
	{
		SaveList_Read(i);
    }
}

//储存列表写
void SaveList_Write(u8 ID)
{
    if(ID < (sizeof(StartAddr)/sizeof(StartAddr[0])))
    {
        FRAM_WriteString(MaxSaveBaseAddr+StartAddr[ID].addr,(u8*)StartAddr[ID].pAddr,StartAddr[ID].size);
    }
}
//储存列表读
void SaveList_Read(u8 ID)
{
    if(ID < (sizeof(StartAddr)/sizeof(StartAddr[0]))){
        FRAM_ReadString(MaxSaveBaseAddr+StartAddr[ID].addr,(u8*)StartAddr[ID].pAddr,StartAddr[ID].size);
    }
}
/**
  ************************************* Copyright ******************************
  *                 (C) Copyright 2022,Wenkic,China, GCU.
  *                            All Rights Reserved
  *
  *                     By(Wenkic)
  *                    https://blog.csdn.net/Wekic
  *
  * FileName     : SaveDat.h
  * Version      : v1.0
  * Author       : Wenkic
  * Date         : 2022-05-23
  * Description  :
  * Function List:
  ******************************************************************************
  */
/********************************End of Head************************************/
#ifndef _SaveDat_H
#define _SaveDat_H

/* C++ detection */
#ifdef __cplusplus
extern "C" {
#endif

#include "main.h"


#define AddrEnum(name) Addr_##name
enum{
AddrEnum(FirstData                   )=0,/* 0 */
AddrEnum(language                      ),/* 1 */
AddrEnum(LCD_V0                        ),/* 2 */
AddrEnum(CoinOutWay                    ),/* 3 */
AddrEnum(AdvertiseVolume               ),/* 4 */
AddrEnum(SeverTelephone                ),/* 5 */
AddrEnum(PaperMachine                  ),/* 6 */
AddrEnum(CoinValue                     ),/* 7 */
AddrEnum(SetMeal                       ),/* 8 */
AddrEnum(AccountCards                  ),/* 9 */
AddrEnum(AccountCloud                  ),/* 10*/
AddrEnum(AccountPager                  ),/* 11*/
AddrEnum(AccountCoins                  ),/* 12*/
AddrEnum(AccountAllOut                 ),/* 13*/
AddrEnum(AccountSurplus                ),/* 14*/
AddrEnum(CloudPay                      ),/* 15*/
AddrEnum(AccountPassword               ),/* 16*/
AddrEnum(SetMealPassword               ),/* 17*/
AddrEnum(NowCoins                      ),/* 18*/
AddrEnum(InventoryWarningLine          ),/* 19*/
AddrEnum(InventorySurplusCoin          ),/* 20*/
AddrEnum(InventoryIsNoCoinStopMachine  ),/* 21*/
AddrEnum(InventoryIsDisplaySurplusCoin ),/* 22*/
AddrEnum(NowIn_Coins                   ),/* 23*/
AddrEnum(NowOutCoins                   ),/* 24*/
AddrEnum(TargetCoins                   ),/* 25*/
AddrEnum(InCoins  ),/* 26*/
AddrEnum(OutCoins ),/* 27*/
AddrEnum(FreeCoins),/* 28*/

AddrEnum(Max),
};
void SaveDat_FileInit(void); //保存数据初始化
void SaveList_Write(u8 ID);    //储存列表写
void SaveList_Read(u8 ID);     //储存列表读


/* C++ detection */
#ifdef __cplusplus
}
#endif


#endif
/********************************End of File************************************/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值