⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 events.c

📁 Open DMT Client C Source code
💻 C
📖 第 1 页 / 共 2 页
字号:
                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 + -