Пример #1
0
void GetFailStat(struct XFails *Now, char *FName, int rnum)
{
    DEBUG2("->GetFailStat(struct XFails *Now,char *FName,int rnum %d)", rnum);
    int i;
    FILE *fin;
    int32_t count;
    struct Fdt {
        char Code[6];
        int32_t offset;
        int16_t size;
    } Pul;

    fin = sOpen("FAILS.CDR", "rb", 0);
    count = 44;
    fread(&count, sizeof count, 1, fin); // never written to file
    Swap32bit(count);
    fread(&Pul, sizeof Pul, 1, fin);
    Swap32bit(Pul.offset);
    Swap16bit(Pul.size);
    i = 0;

    while (xstrncasecmp(Pul.Code, FName, 4) != 0 && i < count) {
        fread(&Pul, sizeof Pul, 1, fin);
        Swap32bit(Pul.offset);
        Swap16bit(Pul.size);
        i++;
    }

    if (i == count) {
        fclose(fin);
        return;
    }

    fseek(fin, Pul.offset, SEEK_SET);

    if (rnum < 0) { // Unmanned portion
        do {
            fread(Now, sizeof(struct XFails), 1, fin);
            Swap32bit(Now->per);    // Only need to swap this one since we're checking only that

        } while (Now->per != rnum);
    } else {
        do {
            fread(Now, sizeof(struct XFails), 1, fin);
            Swap32bit(Now->per);
            Swap16bit(Now->code);
            Swap16bit(Now->val);
            Swap16bit(Now->xtra);
            Swap16bit(Now->fail);
        } while (Now->per <= rnum);
    };

    fclose(fin);

    DEBUG1("<-GetFailStat()");
}
Пример #2
0
static void GetBoardRunningTime(PRWValue pBV)
{
	if (gECDev.Flag & EC_F_CHIP_EXIST)
	{
		pBV->Value = Swap32bit(gECDev.BoardInfo.dwRunningTimeCounter);
	}
	else
	{
		pBV->err = SUSI_STATUS_UNSUPPORTED;
		pBV->Value = 0;
	}
}
Пример #3
0
static void GetBoardBootCounter(PRWValue pBV)
{
	if (gECDev.Flag & EC_F_CHIP_EXIST)
	{
		pBV->Value = Swap32bit(gECDev.BoardInfo.dwPowerOnCounter);
	}
	else
	{
		pBV->err = SUSI_STATUS_UNSUPPORTED;
		pBV->Value = 0;
	}
}