на поржи.
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)