665 lines
35 KiB
C++
665 lines
35 KiB
C++
#include "ryFileDef.h"
|
|
#include "public.h"
|
|
#include "math.h"
|
|
|
|
int calcFields(FIELDDES* fields)
|
|
{
|
|
int len = 0;
|
|
struRYDeviceData t_data;
|
|
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.localtime) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.localtime);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.iGenSpeed) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.iGenSpeed);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.iGenPower) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.iGenPower);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.iWindSpeed) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.iWindSpeed);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.iVibrationY) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.iVibrationY);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.iVibrationZ) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.iVibrationZ);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.iTurbineOperationMode) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.iTurbineOperationMode);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.iBPLevel) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.iBPLevel);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.iYPLevel) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.iYPLevel);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.iWindSpeed_1sec) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.iWindSpeed_1sec);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.iGenSpeed_1sec) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.iGenSpeed_1sec);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.iGenPower_1sec) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.iGenPower_1sec);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.iGenToruqe) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.iGenToruqe);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.iRotorSpeed) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.iRotorSpeed);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.iTheoreticalPower) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.iTheoreticalPower);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.iReactivePower) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.iReactivePower);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.iActivePowerSetPointValue) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.iActivePowerSetPointValue);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.iReactivePowerSetPointValue) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.iReactivePowerSetPointValue);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.iSetValueGenSpeed) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.iSetValueGenSpeed);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.iSetValuePitchAngle) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.iSetValuePitchAngle);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.iPitchAngle1RefValue) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.iPitchAngle1RefValue);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.iPitchAngle2RefValue) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.iPitchAngle2RefValue);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.iPitchAngle3RefValue) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.iPitchAngle3RefValue);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.iPitchAngle1) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.iPitchAngle1);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.iPitchAngle2) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.iPitchAngle2);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.iPitchAngle3) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.iPitchAngle3);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.iVaneDirection) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.iVaneDirection);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.iWindDirection) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.iWindDirection);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.StateWord01) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.StateWord01);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.StateWord02) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.StateWord02);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.StateWord03) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.StateWord03);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.StateWord04) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.StateWord04);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.StateWord05) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.StateWord05);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.StateWord06) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.StateWord06);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.StateWord07) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.StateWord07);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.StateWord08) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.StateWord08);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.ActiveStatusCode01) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.ActiveStatusCode01);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.ActiveStatusCode02) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.ActiveStatusCode02);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.ActiveStatusCode03) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.ActiveStatusCode03);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.ActiveStatusCode04) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.ActiveStatusCode04);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.ActiveStatusCode05) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.ActiveStatusCode05);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.ActiveStatusCode06) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.ActiveStatusCode06);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.ActiveStatusCode07) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.ActiveStatusCode07);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.ActiveStatusCode08) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.ActiveStatusCode08);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.iFrequency) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.iFrequency);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.iUL1_690V) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.iUL1_690V);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.iUL2_690V) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.iUL2_690V);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.iUL3_690V) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.iUL3_690V);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.iIL1_690V) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.iIL1_690V);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.iIL2_690V) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.iIL2_690V);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.iIL3_690V) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.iIL3_690V);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.iBlade1MotorCurrent) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.iBlade1MotorCurrent);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.iBlade2MotorCurrent) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.iBlade2MotorCurrent);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.iBlade3MotorCurrent) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.iBlade3MotorCurrent);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.iPitchAngleBk1) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.iPitchAngleBk1);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.iPitchAngleBk2) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.iPitchAngleBk2);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.iPitchAngleBk3) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.iPitchAngleBk3);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.iCosPhi) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.iCosPhi);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.iGearPressA) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.iGearPressA);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.iGearPressB) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.iGearPressB);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.iHydrPress) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.iHydrPress);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.iNacellePositionLtd) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.iNacellePositionLtd);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.iCableTwistTotal) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.iCableTwistTotal);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.iNacellePositionTotal) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.iNacellePositionTotal);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.iTempOutdoor_1sec) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.iTempOutdoor_1sec);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.iTempHub_1sec) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.iTempHub_1sec);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.iTempNacelle_1sec) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.iTempNacelle_1sec);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.iTempTowerBase_1sec) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.iTempTowerBase_1sec);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.iTempCabinetNacelle_1sec) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.iTempCabinetNacelle_1sec);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.iTempCabinetTowerBase_1sec) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.iTempCabinetTowerBase_1sec);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.iTempTransformer690_400V_1sec) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.iTempTransformer690_400V_1sec);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.iTempMV_1sec) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.iTempMV_1sec);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.iBlade1TempMotor_1sec) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.iBlade1TempMotor_1sec);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.iBlade2TempMotor_1sec) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.iBlade2TempMotor_1sec);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.iBlade3TempMotor_1sec) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.iBlade3TempMotor_1sec);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.iBlade1TempBattBox_1sec) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.iBlade1TempBattBox_1sec);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.iBlade2TempBattBox_1sec) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.iBlade2TempBattBox_1sec);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.iBlade3TempBattBox_1sec) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.iBlade3TempBattBox_1sec);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.iTempCntr_1sec) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.iTempCntr_1sec);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.iBlade1TempInvBox_1sec) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.iBlade1TempInvBox_1sec);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.iBlade2TempInvBox_1sec) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.iBlade2TempInvBox_1sec);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.iBlade3TempInvBox_1sec) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.iBlade3TempInvBox_1sec);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.iBlade1TempPMMHeatsink_1sec) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.iBlade1TempPMMHeatsink_1sec);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.iBlade2TempPMMHeatsink_1sec) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.iBlade2TempPMMHeatsink_1sec);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.iBlade3TempPMMHeatsink_1sec) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.iBlade3TempPMMHeatsink_1sec);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.iBlade1TempPMCHeatsink_1sec) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.iBlade1TempPMCHeatsink_1sec);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.iBlade2TempPMCHeatsink_1sec) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.iBlade2TempPMCHeatsink_1sec);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.iBlade3TempPMCHeatsink_1sec) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.iBlade3TempPMCHeatsink_1sec);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.iTempRotorBearA_1sec) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.iTempRotorBearA_1sec);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.iTempRotorBearB_1sec) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.iTempRotorBearB_1sec);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.iTemp1GearOil_1sec) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.iTemp1GearOil_1sec);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.iTempGearBearDE_1sec) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.iTempGearBearDE_1sec);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.iTempGearBearNDE_1sec) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.iTempGearBearNDE_1sec);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.iTempGenBearDE_1sec) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.iTempGenBearDE_1sec);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.iTempGenBearNDE_1sec) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.iTempGenBearNDE_1sec);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.iTempGenStatorU_1sec) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.iTempGenStatorU_1sec);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.iTempGenStatorV_1sec) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.iTempGenStatorV_1sec);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.iTempGenStatorW_1sec) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.iTempGenStatorW_1sec);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.iTempGenCoolingAir_1sec) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.iTempGenCoolingAir_1sec);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.iAvailabillityToday) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.iAvailabillityToday);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.iAvailabillityTotal) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.iAvailabillityTotal);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.iKWhThisDay) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.iKWhThisDay);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.iKWhOverall) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.iKWhOverall);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.iOperationHoursDay) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.iOperationHoursDay);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.iOperationHoursOverall) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.iOperationHoursOverall);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.iLostKWhThisDay) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.iLostKWhThisDay);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.iLostKWhOverall) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.iLostKWhOverall);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.SCW001) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.SCW001);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.SCW002) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.SCW002);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.SCW003) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.SCW003);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.SCW004) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.SCW004);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.SCW005) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.SCW005);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.SCW006) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.SCW006);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.SCW007) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.SCW007);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.SCW008) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.SCW008);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.SCW009) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.SCW009);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.SCW010) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.SCW010);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.SCW011) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.SCW011);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.SCW012) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.SCW012);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.SCW013) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.SCW013);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.SCW014) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.SCW014);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.SCW015) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.SCW015);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.SCW016) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.SCW016);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.SCW017) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.SCW017);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.SCW018) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.SCW018);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.SCW019) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.SCW019);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.SCW020) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.SCW020);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.SCW021) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.SCW021);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.SCW022) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.SCW022);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.SCW023) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.SCW023);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.SCW024) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.SCW024);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.SCW025) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.SCW025);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.SCW026) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.SCW026);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.SCW027) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.SCW027);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.SCW028) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.SCW028);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.SCW029) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.SCW029);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.SCW030) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.SCW030);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.SCW031) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.SCW031);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.SCW032) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.SCW032);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.SCW033) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.SCW033);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.SCW034) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.SCW034);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.SCW035) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.SCW035);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.SCW036) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.SCW036);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.SCW037) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.SCW037);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.SCW038) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.SCW038);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.SCW039) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.SCW039);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.SCW040) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.SCW040);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.SCW041) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.SCW041);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.SCW042) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.SCW042);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.SCW043) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.SCW043);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.SCW044) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.SCW044);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.SCW045) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.SCW045);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.SCW046) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.SCW046);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.SCW047) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.SCW047);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.SCW048) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.SCW048);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.SCW049) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.SCW049);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.SCW050) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.SCW050);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.iGenSpeed_10sec) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.iGenSpeed_10sec);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.iGenSpeed_30sec) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.iGenSpeed_30sec);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.iGenPower_10sec) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.iGenPower_10sec);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.iGenPower_30sec) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.iGenPower_30sec);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.iWindSpeed_10sec) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.iWindSpeed_10sec);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.iWindSpeed_30sec) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.iWindSpeed_30sec);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.iWindSpeed_10min) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.iWindSpeed_10min);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.iAvailablePower) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.iAvailablePower);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.FirstTriggeredCode) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.FirstTriggeredCode);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.FaultInformation) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.FaultInformation);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.WecRunCondition) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.WecRunCondition);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.iWindSpeedIEC) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.iWindSpeedIEC);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.iWindSpeedIEC_30sec) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.iWindSpeedIEC_30sec);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.iWindSpeedIEC_10min) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.iWindSpeedIEC_10min);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.iYawPress) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.iYawPress);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.iStandardAirDensity) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.iStandardAirDensity);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.iAirDensity) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.iAirDensity);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.iVibrationYFiltered) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.iVibrationYFiltered);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.iVibrationZFiltered) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.iVibrationZFiltered);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.iTempGearWaterCool_1sec) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.iTempGearWaterCool_1sec);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.PowerLimitSource) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.PowerLimitSource);
|
|
len++;
|
|
fields[len].start = reinterpret_cast<uintptr_t>(&t_data.iTempOutdoor_10min) - reinterpret_cast<uintptr_t>(&t_data);
|
|
fields[len].length = sizeof(t_data.iTempOutdoor_10min);
|
|
len++;
|
|
|
|
return len;
|
|
}
|
|
|
|
size_t write_callback(void *ptr, size_t size, size_t nmemb, struct memory *mem)
|
|
{
|
|
size_t new_size = mem->size + size * nmemb;
|
|
mem->response = (char *)realloc(mem->response, new_size + 1);
|
|
if (mem->response == NULL) {
|
|
vLog(LOG_ERROR, "Failed to allocate memory.\n");
|
|
return 0; // Out of memory
|
|
}
|
|
memcpy(&(mem->response[mem->size]), ptr, size * nmemb);
|
|
mem->size = new_size;
|
|
mem->response[new_size] = '\0';
|
|
return size * nmemb;
|
|
}
|
|
|
|
CURLcode ftpget(const char* remote, const char* user, const char* pwd, const long timeout, struct memory* chunk)
|
|
{
|
|
//vLog(LOG_DEBUG, "start to get %s to local memory, with name: %s, and password: %s.\n", remote, local, user, pwd);
|
|
curl_global_init(CURL_GLOBAL_ALL);
|
|
CURL* curl = curl_easy_init();
|
|
|
|
char user_key[1024] = {0};
|
|
snprintf(user_key, sizeof(user_key), "%s:%s", user, pwd);
|
|
|
|
CURLcode ret = CURLE_GOT_NOTHING;
|
|
|
|
curl_easy_setopt(curl, CURLOPT_URL, remote);
|
|
curl_easy_setopt(curl, CURLOPT_USERPWD, user_key);
|
|
curl_easy_setopt(curl, CURLOPT_CONNECTTIMEOUT, timeout);
|
|
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_callback);
|
|
curl_easy_setopt(curl, CURLOPT_WRITEDATA, (void *)chunk);
|
|
curl_easy_setopt(curl, CURLOPT_FTP_USE_EPSV, 0L); // Optional: depending on your FTP server
|
|
ret = curl_easy_perform(curl);
|
|
|
|
curl_easy_cleanup(curl);
|
|
curl_global_cleanup();
|
|
|
|
return ret;
|
|
}
|
|
|
|
float GetUnitYCRealFromValue(int uid, int order, LONG value)
|
|
{
|
|
int udb;
|
|
float coef;
|
|
float base;
|
|
struUnit* pUnit;
|
|
struUnitYC* pYC;
|
|
|
|
if (uid < 0 || uid >= UNIT_NUM) return 0;
|
|
pUnit = &config.units[uid];
|
|
if ((pUnit->state & 0x01) != TRUE) return 0;
|
|
if (order < 0 || order >= pUnit->yccount) return 0;
|
|
pYC = &pUnit->ycs[order];
|
|
udb = pYC->order;
|
|
if (udb < 0 || udb >= DATABASE_YC_NUM) {
|
|
coef = 1.0f;
|
|
base = 0.0f;
|
|
} else {
|
|
coef = pYC->coef;
|
|
base = pYC->base;
|
|
}
|
|
return (float)(value * coef + base);
|
|
}
|
|
|
|
BOOLEAN GetUnitYCIsFloat(int uid, int order)
|
|
{
|
|
int udb;
|
|
float coef = 1.0f;
|
|
struUnit* pUnit;
|
|
struUnitYC* pYC;
|
|
if (uid < 0 || uid >= UNIT_NUM) return 0;
|
|
pUnit = &config.units[uid];
|
|
if ((pUnit->state & 0x01) != TRUE) return 0;
|
|
if (order < 0 || order >= pUnit->yccount) return 0;
|
|
pYC = &pUnit->ycs[order];
|
|
udb = pYC->order;
|
|
if (udb < 0 || udb >= DATABASE_YC_NUM)
|
|
{
|
|
coef = 1.0f;
|
|
}
|
|
else
|
|
{
|
|
coef = pYC->coef;
|
|
}
|
|
|
|
if (fabsf(coef) <= 1E-8) coef = 1.0f;
|
|
if (fabsf(coef - 1.0f) <= 1E-8) return FALSE;
|
|
return TRUE;
|
|
}
|
|
|
|
int GetUnitYXCount(int uid)
|
|
{
|
|
if (uid < 0 || uid >= UNIT_NUM) return 0;
|
|
return config.units[uid].yxcount;
|
|
}
|
|
|
|
int GetUnitYCCount(int uid)
|
|
{
|
|
if (uid < 0 || uid >= UNIT_NUM) return 0;
|
|
return config.units[uid].yccount;
|
|
}
|
|
|
|
BOOLEAN GetUnitYCType(int uid, int order)
|
|
{
|
|
struUnit* pUnit;
|
|
struUnitYC* pYC;
|
|
|
|
if (uid < 0 || uid >= UNIT_NUM) return 0;
|
|
pUnit = &config.units[uid];
|
|
if ((pUnit->state & 0x01) != TRUE) return 0;
|
|
if (order < 0 || order >= pUnit->yccount) return 0;
|
|
pYC = &pUnit->ycs[order];
|
|
return pYC->highSpeed;
|
|
}
|
|
|