123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508 |
- #include <sys/types.h>
- #include <sys/stat.h>
- #include <fcntl.h>
- #include <linux/termios.h>
- #include <stdio.h>
- #include <string.h>
- #include <time.h>
- #include <stdlib.h>
- #include <sys/ipc.h>
- #include <sys/shm.h>
- #include <sys/mman.h>
- #include <linux/sockios.h>
- #include <linux/socket.h>
- #include <sys/socket.h>
- #include <netinet/in.h>
- #include <sys/time.h>
- #include <sys/timeb.h>
- #include <math.h>//for pow
- #include <unistd.h>
- #include "define.h"
- #include "EventLogging.h"
- struct SysConfigAndInfo *ShmSysConfigAndInfo;
- struct StatusCodeData *ShmStatusCodeData;
- unsigned char buf_log_eventlogging[SIZE_OF_LOG_BUFFER];
- char FaultStatusCode[32][6]=
- {
- "011001",
- "011002",
- "011003",
- "011004",
- "011005",
- "011006",
- "011007",
- "011008",
- "011009",
- "011010",
- "011011",
- "011012",
- "011013",
- "011014",
- "011015",
- "011016",
- "011017",
- "011018",
- "011019",
- "011020",
- "011021",
- "011022",
- "011023",
- "011024",
- "011025",
- "011026",
- "011027",
- "011028",
- "011029",
- "011030",
- "011031",
- "011032"
- };
- char AlarmStatusCode[64][6]=
- {
- "012200",
- "012201",
- "012202",
- "012203",
- "012204",
- "012205",
- "012206",
- "012207",
- "012208",
- "012209",
- "012210",
- "012211",
- "012212",
- "012213",
- "012214",
- "012215",
- "012216",
- "012217",
- "012218",
- "012219",
- "012220",
- "012221",
- "012222",
- "012223",
- "012224",
- "012225",
- "012226",
- "012227",
- "012228",
- "012229",
- "012230",
- "012231",
- "012232",
- "012233",
- "012234",
- "012235",
- "012236",
- "012237",
- "012238",
- "012239",
- "012240",
- "012241",
- "012242",
- "012243",
- "012244",
- "012245",
- "012246",
- "012247",
- "012248",
- "012249",
- "012250",
- "012251",
- "012252",
- "012253",
- "012254",
- "012255",
- "012256",
- "012257",
- "012258",
- "012259",
- "012260",
- "012261",
- "012262",
- "012263"
- };
- char InfoStatusCode[64][6]=
- {
-
- "013600",
- "013601",
- "013602",
- "013603",
- "013604",
- "013605",
- "013606",
- "013607",
- "013608",
- "013609",
- "013610",
- "013611",
- "013612",
- "013613",
- "013614",
- "013615",
- "013616",
- "013617",
- "013618",
- "013619",
- "013620",
- "013621",
- "013622",
- "013623",
- "013624",
- "013625",
- "013626",
- "013627",
- "013628",
- "013629",
- "013630",
- "013631",
-
- "023700",
- "023701",
- "023702",
- "023703",
- "023704",
- "023705",
- "023706",
- "023707",
- "023708",
- "023709",
- "023710",
- "023711",
- "023712",
- "023713",
- "023714",
- "023715",
- "023716",
- "023717",
- "023718",
- "023719",
- "023720",
- "023721",
- "023722",
- "023723",
-
- "033900",
- "033901",
- "033902",
- "033903",
- "033904",
- "033905",
- "033906",
- "033907",
- };
- #if SAVE_SYS_LOG_MSG_EVENTLOG_SWITCH == ENABLE
- int StoreLogMsg(unsigned char *DataString)
- {
- static unsigned char Buf[1024];
- static time_t CurrentTime;
- static struct tm *tm;
- static struct timeval tv;
- memset(Buf, 0, sizeof(Buf));
- CurrentTime = time(NULL);
- tm = localtime(&CurrentTime);
- gettimeofday(&tv, NULL);
- sprintf(Buf, "echo \"[%04d%02d%02d: %02d:%02d:%02d.%06d][EventLogging]%s\" >> /Storage/SystemLog/[%04d.%02d]SystemLog",
- tm->tm_year + 1900,
- tm->tm_mon + 1,
- tm->tm_mday,
- tm->tm_hour,
- tm->tm_min,
- tm->tm_sec,
- tv.tv_usec,
- DataString,
- tm->tm_year + 1900,
- tm->tm_mon + 1);
- system(Buf);
- DEBUG_PRINTF_EVENTLOG_SYSTEM_LOG("[%02d:%02d:%02d.%06d][EventLogging]%s \n",
- tm->tm_hour,
- tm->tm_min,
- tm->tm_sec,
- tv.tv_usec,
- DataString);
-
- memset(buf_log_eventlogging, 0, SIZE_OF_LOG_BUFFER);
- }
- #endif
- int StoreEventLogMsg(unsigned char *EventCodeString)
- {
- unsigned char Buf[256];
- time_t CurrentTime;
- struct tm *tm;
- memset(Buf, 0, sizeof(Buf));
- CurrentTime = time(NULL);
- tm = localtime(&CurrentTime);
- sprintf(Buf, "echo \"%04d.%02d.%02d %02d:%02d:%02d - %s\" >> /Storage/EventLog/[%04d.%02d]EventLog",
- tm->tm_year + 1900, tm->tm_mon + 1, tm->tm_mday, tm->tm_hour, tm->tm_min, tm->tm_sec,
- EventCodeString,
- tm->tm_year + 1900, tm->tm_mon + 1);
- system(Buf);
- DEBUG_PRINTF_EVENTLOG_DETAIL("%s \n", Buf);
- }
- double DiffTimeb(struct timeb ST, struct timeb ET)
- {
-
- double StartTime, EndTime;
- double t_diff;
- StartTime = ((double)ST.time)*1000 + (double)ST.millitm;
- EndTime = ((double)ET.time)*1000 + (double)ET.millitm;
- t_diff = EndTime - StartTime;
-
- if (t_diff < 0)
- {
- #if 0
- if (t_diff < -1000)
- {
- sprintf(buf_log_eventlogging,
- "[Warning]StartTime(%.02lf) > EndTime(%.02lf), d(%.02lf)",
- StartTime,
- EndTime,
- t_diff);
- SAVE_SYS_LOG_MSG_EVENTLOG(buf_log_eventlogging);
- }
- #endif
- return -1;
- }
- return t_diff;
- }
- int ShareMemory_Init()
- {
- int MeterSMId;
-
- if((MeterSMId = shmget(ShmSysConfigAndInfoKey, sizeof(struct SysConfigAndInfo), 0777)) < 0)
- {
- StoreLogMsg("[EventLogging]ShareMemory_Init:shmget ShmSysConfigAndInfo NG");
- return 0;
- }
- else if((ShmSysConfigAndInfo = shmat(MeterSMId, NULL, 0)) == (void *)-1)
- {
- StoreLogMsg("[EventLogging]ShareMemory_Init:shmat ShmSysConfigAndInfo NG");
- return 0;
- }
-
- if((MeterSMId = shmget(ShmStatusCodeKey, sizeof(struct StatusCodeData), 0777)) < 0)
- {
- StoreLogMsg("[EventLogging]ShareMemory_Init:shmget ShmStatusCodeData NG");
- return 0;
- }
- else if((ShmStatusCodeData = shmat(MeterSMId, NULL, 0)) == (void *)-1)
- {
- StoreLogMsg("[EventLogging]ShareMemory_Init:shmat ShmStatusCodeData NG");
- return 0;
- }
- return 1;
- }
- void FlashPresentStatusCode(unsigned char *NewCode)
- {
- unsigned char CodeIndex, SaveIndex = 0;
- unsigned char StatusCodeTmp[10][6];
- memset(StatusCodeTmp, 0, sizeof(StatusCodeTmp));
- for(CodeIndex = 0; CodeIndex < (sizeof(ShmStatusCodeData->PresentStatusCode) / 6); CodeIndex++)
- {
- if(strlen(ShmStatusCodeData->PresentStatusCode[CodeIndex]) <= 0)
- {
- memcpy(StatusCodeTmp[SaveIndex++], NewCode, 6);
- memset(ShmStatusCodeData->PresentStatusCode, 0, sizeof(ShmStatusCodeData->PresentStatusCode));
- memcpy(ShmStatusCodeData->PresentStatusCode, StatusCodeTmp, sizeof(StatusCodeTmp));
- return;
- }
- else if(strstr(ShmStatusCodeData->PresentStatusCode[CodeIndex], NewCode + 1) != NULL)
- {
- if((CodeIndex + 1) < 10)
- {
- memcpy(StatusCodeTmp[SaveIndex], ShmStatusCodeData->PresentStatusCode[CodeIndex + 1], (9 - CodeIndex) * 6);
- }
- memset(ShmStatusCodeData->PresentStatusCode, 0, sizeof(ShmStatusCodeData->PresentStatusCode));
- memcpy(ShmStatusCodeData->PresentStatusCode, StatusCodeTmp, sizeof(StatusCodeTmp));
- return;
- }
- else
- {
- memcpy(StatusCodeTmp[SaveIndex++], ShmStatusCodeData->PresentStatusCode[CodeIndex], 6);
- }
- }
- }
- int main(int argc, char *argv[])
- {
- int ByteCount, BitCount;
- unsigned char tmp, EventCodeTmp[7];
-
- if(ShareMemory_Init() == 0)
- {
- StoreLogMsg("[EventLogging]main:ShareMemory_Init NG");
- if(ShmStatusCodeData != NULL)
- {
- ShmStatusCodeData->AlarmCode.AlarmEvents.bits.FailToCreateShareMemory = 1;
- }
- sleep(5);
- return 0;
- }
- while(1)
- {
-
- for(ByteCount = 0; ByteCount < 4; ByteCount++)
- {
- if(ShmStatusCodeData->FaultCode.FaultEvents.FaultVal[ByteCount] != ShmStatusCodeData->FaultCode.PreviousFaultVal[ByteCount])
- {
- tmp = ShmStatusCodeData->FaultCode.FaultEvents.FaultVal[ByteCount];
- for(BitCount = 0; BitCount < 8; BitCount++)
- {
- if(((tmp >> BitCount) & 0x01) != ((ShmStatusCodeData->FaultCode.PreviousFaultVal[ByteCount] >> BitCount) & 0x01))
- {
- memset(EventCodeTmp, 0, sizeof(EventCodeTmp));
- memcpy(EventCodeTmp, FaultStatusCode[ByteCount * 8 + BitCount], sizeof(EventCodeTmp) - 1);
- if(((tmp >> BitCount) & 0x01) == 0)
- {
- EventCodeTmp[0] = 1;
- ShmStatusCodeData->FaultCode.PreviousFaultVal[ByteCount] &= (0 << BitCount);
- }
- else
- {
- ShmStatusCodeData->FaultCode.PreviousFaultVal[ByteCount] |= (1 << BitCount);
- }
- FlashPresentStatusCode(EventCodeTmp);
- StoreEventLogMsg(EventCodeTmp);
- }
- }
- }
- }
-
- for(ByteCount = 0; ByteCount < 8; ByteCount++)
- {
- if(ShmStatusCodeData->AlarmCode.AlarmEvents.AlarmVal[ByteCount] != ShmStatusCodeData->AlarmCode.PreviousAlarmVal[ByteCount])
- {
- tmp = ShmStatusCodeData->AlarmCode.AlarmEvents.AlarmVal[ByteCount];
- for(BitCount = 0; BitCount < 8; BitCount++)
- {
- if(((tmp >> BitCount) & 0x01) != ((ShmStatusCodeData->AlarmCode.PreviousAlarmVal[ByteCount] >> BitCount) & 0x01))
- {
- memset(EventCodeTmp, 0, sizeof(EventCodeTmp));
- memcpy(EventCodeTmp, AlarmStatusCode[ByteCount * 8 + BitCount], sizeof(EventCodeTmp) - 1);
- if(((tmp >> BitCount) & 0x01) == 0)
- {
- EventCodeTmp[0] = 1;
- ShmStatusCodeData->AlarmCode.PreviousAlarmVal[ByteCount] &= (0 << BitCount);
- }
- else
- {
- ShmStatusCodeData->AlarmCode.PreviousAlarmVal[ByteCount] |= (1 << BitCount);
- }
- FlashPresentStatusCode(EventCodeTmp);
- StoreEventLogMsg(EventCodeTmp);
- }
- }
- }
- }
-
- for(ByteCount = 0; ByteCount < 8; ByteCount++)
- {
- if(ShmStatusCodeData->InfoCode.InfoEvents.InfoVal[ByteCount] != ShmStatusCodeData->InfoCode.PreviousInfoVal[ByteCount])
- {
- tmp = ShmStatusCodeData->InfoCode.InfoEvents.InfoVal[ByteCount];
- for(BitCount = 0; BitCount < 8; BitCount++)
- {
- if(((tmp >> BitCount) & 0x01) != ((ShmStatusCodeData->InfoCode.PreviousInfoVal[ByteCount] >> BitCount) & 0x01))
- {
- memset(EventCodeTmp, 0, sizeof(EventCodeTmp));
- memcpy(EventCodeTmp, InfoStatusCode[ByteCount * 8 + BitCount], sizeof(EventCodeTmp) - 1);
- if(((tmp >> BitCount) & 0x01) == 0)
- {
- EventCodeTmp[0] = 1;
- ShmStatusCodeData->InfoCode.PreviousInfoVal[ByteCount] &= (0 << BitCount);
- }
- else
- {
- ShmStatusCodeData->InfoCode.PreviousInfoVal[ByteCount] |= (1 << BitCount);
- }
- FlashPresentStatusCode(EventCodeTmp);
- StoreEventLogMsg(EventCodeTmp);
- }
- }
- }
- }
- }
- }
|