📄 events.c
字号:
er->heading = isHiRes? ((double)uVal32 / 100.0) : ((double)uVal32 * 360.0/255.0); _evSetFieldMask(er, fld[i].type); break; case FIELD_ALTITUDE : // double +/- binBufScanf(bf, "%*i", len, &iVal32); er->altitude = isHiRes? ((double)iVal32 / 10.0) : (double)iVal32; _evSetFieldMask(er, fld[i].type); break; case FIELD_DISTANCE : // double binBufScanf(bf, "%*u", len, &uVal32); er->distanceKM = isHiRes? ((double)uVal32 / 10.0) : (double)uVal32; _evSetFieldMask(er, fld[i].type); break; case FIELD_ODOMETER : // double binBufScanf(bf, "%*u", len, &uVal32); er->odometerKM = isHiRes? ((double)uVal32 / 10.0) : (double)uVal32; _evSetFieldMask(er, fld[i].type); break; case FIELD_SEQUENCE : // hex er->seqLen = len; binBufScanf(bf, "%*x", len, &(er->sequence)); _evSetFieldMask(er, fld[i].type); break; case FIELD_GEOFENCE_ID : // hex ndx = LIMIT_INDEX(ndx, sizeof(er->geofenceID)/sizeof(er->geofenceID[0])); binBufScanf(bf, "%*x", len, &(er->geofenceID[ndx])); er->geofenceIDMask |= (1 << ndx); _evSetFieldMask(er, fld[i].type); break; case FIELD_TOP_SPEED : // double binBufScanf(bf, "%*u", len, &uVal32); er->topSpeedKPH = isHiRes? ((double)uVal32 / 10.0) : (double)uVal32; _evSetFieldMask(er, fld[i].type); break; case FIELD_STRING : ndx = LIMIT_INDEX(ndx, sizeof(er->string)/sizeof(er->string[0])); binBufScanf(bf, "%*s", len, er->string[ndx]); er->stringMask |= (1 << ndx); _evSetFieldMask(er, fld[i].type); break; case FIELD_STRING_PAD : ndx = LIMIT_INDEX(ndx, sizeof(er->string)/sizeof(er->string[0])); binBufScanf(bf, "%*p", len, er->string[ndx]); er->stringMask |= (1 << ndx); _evSetFieldMask(er, fld[i].type); break; case FIELD_ENTITY : ndx = LIMIT_INDEX(ndx, sizeof(er->entity)/sizeof(er->entity[0])); binBufScanf(bf, "%*s", len, er->entity[ndx]); er->entityMask |= (1 << ndx); _evSetFieldMask(er, fld[i].type); break; case FIELD_ENTITY_PAD : ndx = LIMIT_INDEX(ndx, sizeof(er->entity)/sizeof(er->entity[0])); binBufScanf(bf, "%*p", len, er->entity[ndx]); er->entityMask |= (1 << ndx); _evSetFieldMask(er, fld[i].type); break; case FIELD_BINARY : // the binary field in the 'er' structure must already be initialized if (er->binary) { if (len <= er->binaryLen) { binBufScanf(bf, "%*b", len, er->binary); } else { binBufScanf(bf, "%*b%*z", er->binaryLen, er->binary, len - er->binaryLen); } } else { binBufScanf(bf, "%*z", len); } _evSetFieldMask(er, fld[i].type); break; case FIELD_INPUT_ID : // hex binBufScanf(bf, "%*x", len, &(er->inputID)); _evSetFieldMask(er, fld[i].type); break; case FIELD_INPUT_STATE : // hex binBufScanf(bf, "%*x", len, &(er->inputState)); _evSetFieldMask(er, fld[i].type); break; case FIELD_OUTPUT_ID : // hex binBufScanf(bf, "%*x", len, &(er->outputID)); _evSetFieldMask(er, fld[i].type); break; case FIELD_OUTPUT_STATE : // hex binBufScanf(bf, "%*x", len, &(er->outputState)); _evSetFieldMask(er, fld[i].type); break; case FIELD_ELAPSED_TIME : ndx = LIMIT_INDEX(ndx, sizeof(er->elapsedTimeSec)/sizeof(er->elapsedTimeSec[0])); binBufScanf(bf, "%*u", len, &(er->elapsedTimeSec[ndx])); _evSetFieldMask(er, fld[i].type); break; case FIELD_COUNTER : ndx = LIMIT_INDEX(ndx, sizeof(er->counter)/sizeof(er->counter[0])); binBufScanf(bf, "%*u", len, &(er->counter[ndx])); _evSetFieldMask(er, fld[i].type); break; case FIELD_SENSOR32_LOW : ndx = LIMIT_INDEX(ndx, sizeof(er->sensor32LO)/sizeof(er->sensor32LO[0])); binBufScanf(bf, "%*u", len, &(er->sensor32LO[ndx])); _evSetFieldMask(er, fld[i].type); break; case FIELD_SENSOR32_HIGH : ndx = LIMIT_INDEX(ndx, sizeof(er->sensor32HI)/sizeof(er->sensor32HI[0])); binBufScanf(bf, "%*u", len, &(er->sensor32HI[ndx])); _evSetFieldMask(er, fld[i].type); break; case FIELD_SENSOR32_AVER : ndx = LIMIT_INDEX(ndx, sizeof(er->sensor32AV)/sizeof(er->sensor32AV[0])); binBufScanf(bf, "%*u", len, &(er->sensor32AV[ndx])); _evSetFieldMask(er, fld[i].type); break; case FIELD_TEMP_LOW : // double +/- ndx = LIMIT_INDEX(ndx, sizeof(er->tempLO)/sizeof(er->tempLO[0])); binBufScanf(bf, "%*i", len, &iVal32); er->tempLO[ndx] = isHiRes? ((double)iVal32 / 10.0) : (double)iVal32; er->tempLOMask |= (1 << ndx); _evSetFieldMask(er, fld[i].type); break; case FIELD_TEMP_HIGH : // double +/- ndx = LIMIT_INDEX(ndx, sizeof(er->tempHI)/sizeof(er->tempHI[0])); binBufScanf(bf, "%*i", len, &iVal32); er->tempHI[ndx] = isHiRes? ((double)iVal32 / 10.0) : (double)iVal32; er->tempHIMask |= (1 << ndx); _evSetFieldMask(er, fld[i].type); break; case FIELD_TEMP_AVER : // double +/- ndx = LIMIT_INDEX(ndx, sizeof(er->tempAV)/sizeof(er->tempAV[0])); binBufScanf(bf, "%*i", len, &iVal32); er->tempAV[ndx] = isHiRes? ((double)iVal32 / 10.0) : (double)iVal32; er->tempAVMask |= (1 << ndx); _evSetFieldMask(er, fld[i].type); break; case FIELD_GPS_DGPS_UPDATE : binBufScanf(bf, "%*u", len, &(er->gpsDgpsUpdate)); _evSetFieldMask(er, fld[i].type); break; case FIELD_GPS_HORZ_ACCURACY: // double binBufScanf(bf, "%*u", len, &uVal32); er->gpsHorzAccuracy = isHiRes? ((double)uVal32 / 10.0) : (double)uVal32; _evSetFieldMask(er, fld[i].type); break; case FIELD_GPS_VERT_ACCURACY: // double binBufScanf(bf, "%*u", len, &uVal32); er->gpsVertAccuracy = isHiRes? ((double)uVal32 / 10.0) : (double)uVal32; _evSetFieldMask(er, fld[i].type); break; case FIELD_GPS_SATELLITES : binBufScanf(bf, "%*u", len, &(er->gpsSatellites)); _evSetFieldMask(er, fld[i].type); break; case FIELD_GPS_MAG_VARIATION: // double +/- binBufScanf(bf, "%*i", len, &iVal32); er->gpsMagVariation = (double)iVal32 / 100.0; _evSetFieldMask(er, fld[i].type); break; case FIELD_GPS_QUALITY : binBufScanf(bf, "%*u", len, &(er->gpsQuality)); _evSetFieldMask(er, fld[i].type); break; case FIELD_GPS_TYPE : binBufScanf(bf, "%*u", len, &(er->gps2D3D)); _evSetFieldMask(er, fld[i].type); break; case FIELD_GPS_GEOID_HEIGHT : // double +/- binBufScanf(bf, "%*i", len, &iVal32); er->gpsGeoidHeight = isHiRes? ((double)iVal32 / 10.0) : (double)iVal32; _evSetFieldMask(er, fld[i].type); break; case FIELD_GPS_PDOP : // double binBufScanf(bf, "%*u", len, &uVal32); er->gpsPDOP = (double)uVal32 / 10.0; _evSetFieldMask(er, fld[i].type); break; case FIELD_GPS_HDOP : // double binBufScanf(bf, "%*u", len, &uVal32); er->gpsHDOP = (double)uVal32 / 10.0; _evSetFieldMask(er, fld[i].type); break; case FIELD_GPS_VDOP : // double binBufScanf(bf, "%*u", len, &uVal32); er->gpsVDOP = (double)uVal32 / 10.0; _evSetFieldMask(er, fld[i].type); break;#ifdef EVENT_INCL_OBC case FIELD_OBC_VALUE: // EvOBCValue_t ndx = LIMIT_INDEX(ndx, sizeof(er->obcValue)/sizeof(er->obcValue[0])); if (len >= 4) { EvOBCValue_t *J = &(er->obcValue[ndx]); UInt32 mid = 0L, pid = 0L; binBufScanf(bf, "%2u%2u", &mid, &pid); J->mid = (UInt16)mid; J->pid = (UInt16)pid; len -= 4; if (len <= sizeof(J->data)) { J->dataLen = len; binBufScanf(bf, "%*b", (int)J->dataLen, J->data); } else { J->dataLen = (UInt8)sizeof(J->data); binBufScanf(bf, "%*b%*z", (int)J->dataLen, J->data, len - (int)J->dataLen); } } else { binBufScanf(bf, "%*z", len); } _evSetFieldMask(er, fld[i].type); break; case FIELD_OBC_GENERIC: // UInt32 ndx = LIMIT_INDEX(ndx, sizeof(er->obcGeneric)/sizeof(er->obcGeneric[0])); binBufScanf(bf, "%*u", len, &uVal32); er->obcGeneric[ndx] = uVal32; _evSetFieldMask(er, fld[i].type); break; case FIELD_OBC_J1708_FAULT: // UInt32 ndx = LIMIT_INDEX(ndx, sizeof(er->obcJ1708Fault)/sizeof(er->obcJ1708Fault[0])); binBufScanf(bf, "%*x", len, &uVal32); er->obcJ1708Fault[ndx] = uVal32; _evSetFieldMask(er, fld[i].type); break; case FIELD_OBC_DISTANCE : // double binBufScanf(bf, "%*u", len, &uVal32); er->obcDistanceKM = isHiRes? ((double)uVal32 / 10.0) : (double)uVal32; _evSetFieldMask(er, fld[i].type); break; case FIELD_OBC_ENGINE_HOURS: // double binBufScanf(bf, "%*u", len, &uVal32); er->obcEngineHours = (double)uVal32 / 10.0; _evSetFieldMask(er, fld[i].type); break; case FIELD_OBC_ENGINE_RPM: // UInt32 binBufScanf(bf, "%*u", len, &uVal32); er->obcEngineRPM = uVal32; _evSetFieldMask(er, fld[i].type); break; case FIELD_OBC_COOLANT_TEMP: // double binBufScanf(bf, "%*i", len, &iVal32); er->obcCoolantTemp = isHiRes? ((double)iVal32 / 10.0) : (double)uVal32; _evSetFieldMask(er, fld[i].type); break; case FIELD_OBC_COOLANT_LEVEL: // double binBufScanf(bf, "%*u", len, &uVal32); er->obcCoolantLevel = isHiRes? ((double)uVal32 / 1000.0) : ((double)uVal32 / 100.0); _evSetFieldMask(er, fld[i].type); break; case FIELD_OBC_OIL_LEVEL: // double binBufScanf(bf, "%*u", len, &uVal32); er->obcOilLevel = isHiRes? ((double)uVal32 / 1000.0) : ((double)uVal32 / 100.0); _evSetFieldMask(er, fld[i].type); break; case FIELD_OBC_OIL_PRESSURE: // double binBufScanf(bf, "%*u", len, &uVal32); er->obcOilPressure = isHiRes? ((double)uVal32 / 10.0) : (double)uVal32; _evSetFieldMask(er, fld[i].type); break; case FIELD_OBC_FUEL_LEVEL: // double binBufScanf(bf, "%*u", len, &uVal32); er->obcFuelLevel = isHiRes? ((double)uVal32 / 1000.0) : ((double)uVal32 / 100.0); _evSetFieldMask(er, fld[i].type); break; case FIELD_OBC_FUEL_ECONOMY: // double binBufScanf(bf, "%*u", len, &uVal32); er->obcFuelEconomy = (double)uVal32 / 10.0; er->obcAvgFuelEcon = (double)uVal32 / 10.0; _evSetFieldMask(er, fld[i].type); break; case FIELD_OBC_FUEL_USED: // double binBufScanf(bf, "%*u", len, &uVal32); er->obcFuelUsed = isHiRes? ((double)uVal32 / 10.0) : (double)uVal32; _evSetFieldMask(er, fld[i].type); break;#endif } } /* return event */ return er;}// ----------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -