на поржи.
void Log_Write(OST_TASK_POINTER tp, int EventId, ...){
t_Log_KRSPI TaskInfo;
va_list ap;
if(EventId >= enLogEnd)
return;
memset(&TaskInfo, 0, sizeof(TaskInfo));
switch(EventId){
case enLogGENERAL_EXCEPTION:{
uint32_t dwData;
va_start(ap, EventId);
strcpy( TaskInfo.szDatName , "cause: ");
strcat( TaskInfo.szDatName, cause[va_arg(ap, uint32_t)]);
strcat(TaskInfo.szDatName, "|Addr: 0x");
dwData = va_arg(ap, uint32_t);
arr2hex(TaskInfo.szDatName+strlen(TaskInfo.szDatName),
(const uint8_t *)&dwData, sizeof(dwData), true);
strcat( TaskInfo.szDatName, "|Caller: 0x");
dwData = va_arg(ap, uint32_t);
arr2hex(TaskInfo.szDatName+strlen(TaskInfo.szDatName),
(const uint8_t *)&dwData, sizeof(dwData), true);
Nop();
va_end(ap);
break;
}
case enLogUSR_MCU1_FAILURE:
case enLogUSR_ASR_ZONES:{
va_start(ap, EventId);
if(EventId==enLogUSR_MCU1_FAILURE) {
uint8_t* pRepeatBuff;
uint8_t bLength;
TaskInfo.dwData = va_arg(ap, uint32_t);
pRepeatBuff = va_arg(ap, uint8_t * );
bLength = (((t_PT*)pRepeatBuff)->bLength+sizeof(t_PT));
if(bLength > arrsize(TaskInfo.szDatName)/2)
bLength = arrsize(TaskInfo.szDatName)/2;
arr2hex(TaskInfo.szDatName, pRepeatBuff, bLength, false);
}else{
TaskInfo.dwData = (uint16_t)va_arg(ap, uint32_t);
}
va_end(ap);
break;
}
case enLogRF_FIRMWARE_UPDATE:{
uint8_t bRFId;
t_EEDevCnfRel EEDevCnfRel;
t_BootSectionHeader Header;
va_start(ap, EventId);
bRFId = (uint8_t)va_arg(ap, uint32_t);
if(DB_GetPar(bRFId, (ptr)&EEDevCnfRel, sizeof(t_EEDevCnfRel)) == -1){
Check_UnconditionalReboot(OS_Task_GetCur(), enLogERR_DB_BAD_REC);
}
TaskInfo.dwData = EEDevCnfRel.dwSerial;
strcpy( TaskInfo.szDatName , "Previos version: ");
cvtutoa( TaskInfo.szDatName+strlen(TaskInfo.szDatName),
HIBYTE(EEDevCnfRel.wSWVer), 10);
strcat(TaskInfo.szDatName, ".");
cvtutoa( TaskInfo.szDatName+strlen(TaskInfo.szDatName),
LOBYTE(EEDevCnfRel.wSWVer), 10);
strcat(TaskInfo.szDatName, "(");
cvtutoa( TaskInfo.szDatName+strlen(TaskInfo.szDatName),
EEDevCnfRel.bSwSubVer, 10);
strcat(TaskInfo.szDatName, ") / Downloadable version: ");
if(EXTF_DataRead(SPIFlash_GetHandle(), &Header,
MCUFirmwareOffset(enUpdRFFirmware), sizeof(Header))){
Check_UnconditionalReboot(OS_Task_GetCur(), enLogERR_DB_BAD_REC);
}
cvtutoa( TaskInfo.szDatName+strlen(TaskInfo.szDatName),
HIBYTE(Header.wSVer), 10);
strcat(TaskInfo.szDatName, ".");
cvtutoa( TaskInfo.szDatName+strlen(TaskInfo.szDatName),
LOBYTE(Header.wSVer), 10);
strcat(TaskInfo.szDatName, "(");
cvtutoa( TaskInfo.szDatName+strlen(TaskInfo.szDatName),
Header.bBuildNumber, 10);
strcat(TaskInfo.szDatName, ")");
va_end(ap);
break;
}
case enLogWDT_TASK:{
void *p;
va_start(ap, EventId);
p = (void *)(uintptr_t)va_arg(ap, uintptr_t);
strncpy(TaskInfo.szDatName, p, sizeof(TaskInfo.szDatName));
TaskInfo.szDatName[arrsize(TaskInfo.szDatName)-1] = '\0';
va_end(ap);
break;
}
case enLogTIME_SET:{
uint32_t dwData;
va_start(ap, EventId);
dwData = va_arg(ap, uint32_t);
strncpy(TaskInfo.szDatName, ctime((time_t*)&dwData),
sizeof(TaskInfo.szDatName));
TaskInfo.szDatName[arrsize(TaskInfo.szDatName)-1] = '\0';
TaskInfo.szDatName[strlen(TaskInfo.szDatName)-1] = '\0';
va_end(ap);
break;
}
case enLogRESET: {
va_start(ap, EventId);
TaskInfo.dwData = va_arg(ap, RESET_REASON);
TaskInfo.szDatName[0]='\0';
if(TaskInfo.dwData & RESET_POR_MASK)
strncat(TaskInfo.szDatName, "POR", sizeof(TaskInfo.szDatName)-
strlen(TaskInfo.szDatName));
TaskInfo.szDatName[arrsize(TaskInfo.szDatName)-1] = '\0';
if(TaskInfo.dwData & RESET_BOR_MASK)
strncat(TaskInfo.szDatName, " BOR", sizeof(TaskInfo.szDatName)-
strlen(TaskInfo.szDatName));
TaskInfo.szDatName[sizeof(TaskInfo.szDatName)-1] = '\0';
if(TaskInfo.dwData & RESET_WDTO_MASK)
strncat(TaskInfo.szDatName, " WDT", sizeof(TaskInfo.szDatName)-
strlen(TaskInfo.szDatName));
TaskInfo.szDatName[sizeof(TaskInfo.szDatName)-1] = '\0';
if(TaskInfo.dwData & RESET_SWR_MASK)
strncat(TaskInfo.szDatName, " SOFTW", sizeof(TaskInfo.szDatName)-
strlen(TaskInfo.szDatName));
TaskInfo.szDatName[sizeof(TaskInfo.szDatName)-1] = '\0';
if(TaskInfo.dwData & RESET_EXTR_MASK)
strncat(TaskInfo.szDatName, " MCLR", sizeof(TaskInfo.szDatName)-
strlen(TaskInfo.szDatName));
TaskInfo.szDatName[sizeof(TaskInfo.szDatName)-1] = '\0';
if(TaskInfo.dwData & RESET_CMR_MASK)
strncat(TaskInfo.szDatName, " CMR", sizeof(TaskInfo.szDatName)-
strlen(TaskInfo.szDatName));
TaskInfo.szDatName[sizeof(TaskInfo.szDatName)-1] = '\0';
if(TaskInfo.dwData & RESET_HVDR_MASK)
strncat(TaskInfo.szDatName, " HVDR", sizeof(TaskInfo.szDatName)-
strlen(TaskInfo.szDatName));
TaskInfo.szDatName[sizeof(TaskInfo.szDatName)-1] = '\0';
va_end(ap);
break;
}
case enLogERR_FLASH_FIRMWARE: {
va_start(ap, EventId);
TaskInfo.dwData = va_arg(ap, t_enUserFlashLocationId);
va_end(ap);
break;
}
case enLogREBOOT:{
va_start(ap, EventId);
strcpy(TaskInfo.szDatName, szLogName[va_arg(ap, t_enLog)]);
va_end(ap);
break;
}
case enLogERR_UPDATE:{
va_start(ap, EventId);
strcpy(TaskInfo.szDatName, szUSBReqName[va_arg(ap, uint32_t)]);
va_end(ap);
break;
}
case enLogEnd: //for navigation
break;
}
Check_GetTaskInfo(tp, &TaskInfo);
TaskInfo.bEventId = EventId;
strcpy(TaskInfo.szEventName, szLogName[EventId]);
TaskInfo.Time = GetTime();
TaskInfo.bLogVer = DEF_LOG_VER;
ErrLog_Put(&TaskInfo, sizeof(TaskInfo));
}
-
- Спасибо. А то все - жадины-говядины код публиковать :) - bnb62(02.12.2022 17:23)
- К посту от Zoro... ETM(194 знак., 06.12.2022 12:27)
- Спасибо. А то все - жадины-говядины код публиковать :) - bnb62(02.12.2022 17:23)