size_t LinkFrame::ReadUserData(byte_t* apBuffer) const { assert(this->mIsComplete); size_t user_bytes = mHeader.GetLength() - LS_MIN_LENGTH; ReadUserData(mpBuffer+LS_HEADER_SIZE, apBuffer, user_bytes); return user_bytes; }
void LinkFrame::ReadUserData(const byte_t* apSrc, byte_t* apDest, size_t aLength) { if(aLength == 0) return; //base case of recursion size_t max = LS_DATA_BLOCK_SIZE; size_t num = (aLength <= max) ? aLength : max; size_t num_with_crc = num + 2; memcpy(apDest, apSrc, num); ReadUserData(apSrc+num_with_crc, apDest+num, aLength-num); //tail recursive }
void InitUserData(void) { char Idx; for (Idx = 0; Idx < PLAYER_COUNT; Idx++) { ALLBITS |= (1<<Idx); } if (READINTVALUE(UD_FIRSTRUN_FLAG) == FIRSTRUN_FLAG) { ReadUserData(); if (GetCharValue(UD_START_SAVE)) { RecoverPlayerData(); } if (GetCharValue(UD_UNSAVE_SCORE)) { SaveBetWinScore(); } } else { ClearUserData(); SetIntValue(UD_FIRSTRUN_FLAG, FIRSTRUN_FLAG); } #ifdef _NO_PRINT SetCharValue(UD_IF_PRINT, 0); #endif #ifdef _TEST_ #define Debug lite_printf //ClearUserData(); //SetIntValue(UD_FIRSTRUN_FLAG, FIRSTRUN_FLAG);- SetCharValue(UD_IF_PRINT, 0); //SetCharValue(UD_BETTIME, 5); //SetCharValue(UD_EXTRA_CODE_DIFFICULT, 1); // 外5门设定难度 //SetIntValue(UD_ROUNDLOSS_BOOM, 1000000); // 当轮输爆机 //SetIntValue(UD_STAGEWIN_BOOM, 20000000); // 当期max loss //SetIntValue(UD_STAGELOSS_BOOM, 300000000); // 当期max win // for (Idx = 0; Idx < UD_MAXCHAR_STATE; Idx++) { // Debug("%p = %d/%d\n", UserDataCharArray + Idx, READCHARVALUE(Idx), UserDataCharArray[Idx]); // } // for (Idx = 0; Idx < UD_MAXSHORT_STATE; Idx++) { // Debug("%p = %d/%d\n", UserDataShortArray + Idx, READSHORTVALUE(Idx), UserDataShortArray[Idx]); // } for (Idx = 0; Idx < UD_MAXINT_STATE; Idx++) { Debug("%p = %d/%d\n", UserDataIntArray + Idx, READINTVALUE(Idx), UserDataIntArray[Idx]); } // for (Idx = 0; Idx < UD_MAXLONGLONG_STATE; Idx++) { // Debug("%p = %d/", UserDataLongLongArray + Idx, READLONGLONGVALUE(Idx)); // Debug("%d\n", UserDataLongLongArray[Idx]); // } Debug("UUID:\n"); for (Idx = 0; Idx < USB_PLAYER_COUNT; Idx++) { Debug("%p:%d/%d\n", UserDataIntArray+UD_INVALID_INT+Idx, GetIntValue(UD_USB_UUID+Idx), READINTVALUE(UD_USB_UUID+Idx)); } SetIntValue(UD_USB_UUID + 5, 123456); SetIntValue(UD_USB_UUID + 6, 876543210); #endif }
/*************************************************************************************************** *FunctionName: activityResume *Description: 界面恢复显示时要做的事 *Input: *Output: *Return: *Author: xsx *Date: 2016年12月21日09:01:58 ***************************************************************************************************/ static void activityResume(void) { /*读取所有操作人*/ ReadUserData(S_UserPageBuffer->user); S_UserPageBuffer->pageindex = 1; S_UserPageBuffer->selectindex = 0; ShowList(); SelectUser(S_UserPageBuffer->selectindex); AddNumOfSongToList(9, 0); SelectPage(84); }
/*************************************************************************************************** *FunctionName: activityStart *Description: 显示主界面 *Input: *Output: *Return: *Author: xsx *Date: 2016年12月21日09:00:32 ***************************************************************************************************/ static void activityStart(void) { /*获取当前测试的数据指针*/ S_UserPageBuffer->currenttestdata = GetCurrentTestItem(); S_UserPageBuffer->currenttestdata->statues = status_user; /*读取所有操作人*/ ReadUserData(S_UserPageBuffer->user); S_UserPageBuffer->pageindex = 1; S_UserPageBuffer->selectindex = 0; ShowList(); SelectUser(S_UserPageBuffer->selectindex); AddNumOfSongToList(9, 0); SelectPage(84); }