#include "ryFileDef.h" #include "public.h" #include "math.h" int calcFields(FIELDDES* fields) { int len = 0; struRYDeviceData t_data; fields[len].start = reinterpret_cast(&t_data.localtime) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.localtime); len++; fields[len].start = reinterpret_cast(&t_data.iGenSpeed) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.iGenSpeed); len++; fields[len].start = reinterpret_cast(&t_data.iGenPower) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.iGenPower); len++; fields[len].start = reinterpret_cast(&t_data.iWindSpeed) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.iWindSpeed); len++; fields[len].start = reinterpret_cast(&t_data.iVibrationY) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.iVibrationY); len++; fields[len].start = reinterpret_cast(&t_data.iVibrationZ) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.iVibrationZ); len++; fields[len].start = reinterpret_cast(&t_data.iTurbineOperationMode) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.iTurbineOperationMode); len++; fields[len].start = reinterpret_cast(&t_data.iBPLevel) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.iBPLevel); len++; fields[len].start = reinterpret_cast(&t_data.iYPLevel) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.iYPLevel); len++; fields[len].start = reinterpret_cast(&t_data.iWindSpeed_1sec) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.iWindSpeed_1sec); len++; fields[len].start = reinterpret_cast(&t_data.iGenSpeed_1sec) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.iGenSpeed_1sec); len++; fields[len].start = reinterpret_cast(&t_data.iGenPower_1sec) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.iGenPower_1sec); len++; fields[len].start = reinterpret_cast(&t_data.iGenToruqe) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.iGenToruqe); len++; fields[len].start = reinterpret_cast(&t_data.iRotorSpeed) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.iRotorSpeed); len++; fields[len].start = reinterpret_cast(&t_data.iTheoreticalPower) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.iTheoreticalPower); len++; fields[len].start = reinterpret_cast(&t_data.iReactivePower) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.iReactivePower); len++; fields[len].start = reinterpret_cast(&t_data.iActivePowerSetPointValue) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.iActivePowerSetPointValue); len++; fields[len].start = reinterpret_cast(&t_data.iReactivePowerSetPointValue) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.iReactivePowerSetPointValue); len++; fields[len].start = reinterpret_cast(&t_data.iSetValueGenSpeed) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.iSetValueGenSpeed); len++; fields[len].start = reinterpret_cast(&t_data.iSetValuePitchAngle) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.iSetValuePitchAngle); len++; fields[len].start = reinterpret_cast(&t_data.iPitchAngle1RefValue) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.iPitchAngle1RefValue); len++; fields[len].start = reinterpret_cast(&t_data.iPitchAngle2RefValue) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.iPitchAngle2RefValue); len++; fields[len].start = reinterpret_cast(&t_data.iPitchAngle3RefValue) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.iPitchAngle3RefValue); len++; fields[len].start = reinterpret_cast(&t_data.iPitchAngle1) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.iPitchAngle1); len++; fields[len].start = reinterpret_cast(&t_data.iPitchAngle2) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.iPitchAngle2); len++; fields[len].start = reinterpret_cast(&t_data.iPitchAngle3) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.iPitchAngle3); len++; fields[len].start = reinterpret_cast(&t_data.iVaneDirection) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.iVaneDirection); len++; fields[len].start = reinterpret_cast(&t_data.iWindDirection) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.iWindDirection); len++; fields[len].start = reinterpret_cast(&t_data.StateWord01) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.StateWord01); len++; fields[len].start = reinterpret_cast(&t_data.StateWord02) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.StateWord02); len++; fields[len].start = reinterpret_cast(&t_data.StateWord03) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.StateWord03); len++; fields[len].start = reinterpret_cast(&t_data.StateWord04) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.StateWord04); len++; fields[len].start = reinterpret_cast(&t_data.StateWord05) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.StateWord05); len++; fields[len].start = reinterpret_cast(&t_data.StateWord06) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.StateWord06); len++; fields[len].start = reinterpret_cast(&t_data.StateWord07) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.StateWord07); len++; fields[len].start = reinterpret_cast(&t_data.StateWord08) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.StateWord08); len++; fields[len].start = reinterpret_cast(&t_data.ActiveStatusCode01) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.ActiveStatusCode01); len++; fields[len].start = reinterpret_cast(&t_data.ActiveStatusCode02) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.ActiveStatusCode02); len++; fields[len].start = reinterpret_cast(&t_data.ActiveStatusCode03) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.ActiveStatusCode03); len++; fields[len].start = reinterpret_cast(&t_data.ActiveStatusCode04) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.ActiveStatusCode04); len++; fields[len].start = reinterpret_cast(&t_data.ActiveStatusCode05) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.ActiveStatusCode05); len++; fields[len].start = reinterpret_cast(&t_data.ActiveStatusCode06) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.ActiveStatusCode06); len++; fields[len].start = reinterpret_cast(&t_data.ActiveStatusCode07) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.ActiveStatusCode07); len++; fields[len].start = reinterpret_cast(&t_data.ActiveStatusCode08) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.ActiveStatusCode08); len++; fields[len].start = reinterpret_cast(&t_data.iFrequency) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.iFrequency); len++; fields[len].start = reinterpret_cast(&t_data.iUL1_690V) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.iUL1_690V); len++; fields[len].start = reinterpret_cast(&t_data.iUL2_690V) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.iUL2_690V); len++; fields[len].start = reinterpret_cast(&t_data.iUL3_690V) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.iUL3_690V); len++; fields[len].start = reinterpret_cast(&t_data.iIL1_690V) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.iIL1_690V); len++; fields[len].start = reinterpret_cast(&t_data.iIL2_690V) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.iIL2_690V); len++; fields[len].start = reinterpret_cast(&t_data.iIL3_690V) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.iIL3_690V); len++; fields[len].start = reinterpret_cast(&t_data.iBlade1MotorCurrent) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.iBlade1MotorCurrent); len++; fields[len].start = reinterpret_cast(&t_data.iBlade2MotorCurrent) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.iBlade2MotorCurrent); len++; fields[len].start = reinterpret_cast(&t_data.iBlade3MotorCurrent) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.iBlade3MotorCurrent); len++; fields[len].start = reinterpret_cast(&t_data.iPitchAngleBk1) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.iPitchAngleBk1); len++; fields[len].start = reinterpret_cast(&t_data.iPitchAngleBk2) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.iPitchAngleBk2); len++; fields[len].start = reinterpret_cast(&t_data.iPitchAngleBk3) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.iPitchAngleBk3); len++; fields[len].start = reinterpret_cast(&t_data.iCosPhi) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.iCosPhi); len++; fields[len].start = reinterpret_cast(&t_data.iGearPressA) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.iGearPressA); len++; fields[len].start = reinterpret_cast(&t_data.iGearPressB) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.iGearPressB); len++; fields[len].start = reinterpret_cast(&t_data.iHydrPress) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.iHydrPress); len++; fields[len].start = reinterpret_cast(&t_data.iNacellePositionLtd) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.iNacellePositionLtd); len++; fields[len].start = reinterpret_cast(&t_data.iCableTwistTotal) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.iCableTwistTotal); len++; fields[len].start = reinterpret_cast(&t_data.iNacellePositionTotal) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.iNacellePositionTotal); len++; fields[len].start = reinterpret_cast(&t_data.iTempOutdoor_1sec) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.iTempOutdoor_1sec); len++; fields[len].start = reinterpret_cast(&t_data.iTempHub_1sec) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.iTempHub_1sec); len++; fields[len].start = reinterpret_cast(&t_data.iTempNacelle_1sec) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.iTempNacelle_1sec); len++; fields[len].start = reinterpret_cast(&t_data.iTempTowerBase_1sec) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.iTempTowerBase_1sec); len++; fields[len].start = reinterpret_cast(&t_data.iTempCabinetNacelle_1sec) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.iTempCabinetNacelle_1sec); len++; fields[len].start = reinterpret_cast(&t_data.iTempCabinetTowerBase_1sec) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.iTempCabinetTowerBase_1sec); len++; fields[len].start = reinterpret_cast(&t_data.iTempTransformer690_400V_1sec) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.iTempTransformer690_400V_1sec); len++; fields[len].start = reinterpret_cast(&t_data.iTempMV_1sec) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.iTempMV_1sec); len++; fields[len].start = reinterpret_cast(&t_data.iBlade1TempMotor_1sec) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.iBlade1TempMotor_1sec); len++; fields[len].start = reinterpret_cast(&t_data.iBlade2TempMotor_1sec) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.iBlade2TempMotor_1sec); len++; fields[len].start = reinterpret_cast(&t_data.iBlade3TempMotor_1sec) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.iBlade3TempMotor_1sec); len++; fields[len].start = reinterpret_cast(&t_data.iBlade1TempBattBox_1sec) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.iBlade1TempBattBox_1sec); len++; fields[len].start = reinterpret_cast(&t_data.iBlade2TempBattBox_1sec) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.iBlade2TempBattBox_1sec); len++; fields[len].start = reinterpret_cast(&t_data.iBlade3TempBattBox_1sec) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.iBlade3TempBattBox_1sec); len++; fields[len].start = reinterpret_cast(&t_data.iTempCntr_1sec) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.iTempCntr_1sec); len++; fields[len].start = reinterpret_cast(&t_data.iBlade1TempInvBox_1sec) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.iBlade1TempInvBox_1sec); len++; fields[len].start = reinterpret_cast(&t_data.iBlade2TempInvBox_1sec) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.iBlade2TempInvBox_1sec); len++; fields[len].start = reinterpret_cast(&t_data.iBlade3TempInvBox_1sec) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.iBlade3TempInvBox_1sec); len++; fields[len].start = reinterpret_cast(&t_data.iBlade1TempPMMHeatsink_1sec) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.iBlade1TempPMMHeatsink_1sec); len++; fields[len].start = reinterpret_cast(&t_data.iBlade2TempPMMHeatsink_1sec) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.iBlade2TempPMMHeatsink_1sec); len++; fields[len].start = reinterpret_cast(&t_data.iBlade3TempPMMHeatsink_1sec) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.iBlade3TempPMMHeatsink_1sec); len++; fields[len].start = reinterpret_cast(&t_data.iBlade1TempPMCHeatsink_1sec) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.iBlade1TempPMCHeatsink_1sec); len++; fields[len].start = reinterpret_cast(&t_data.iBlade2TempPMCHeatsink_1sec) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.iBlade2TempPMCHeatsink_1sec); len++; fields[len].start = reinterpret_cast(&t_data.iBlade3TempPMCHeatsink_1sec) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.iBlade3TempPMCHeatsink_1sec); len++; fields[len].start = reinterpret_cast(&t_data.iTempRotorBearA_1sec) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.iTempRotorBearA_1sec); len++; fields[len].start = reinterpret_cast(&t_data.iTempRotorBearB_1sec) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.iTempRotorBearB_1sec); len++; fields[len].start = reinterpret_cast(&t_data.iTemp1GearOil_1sec) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.iTemp1GearOil_1sec); len++; fields[len].start = reinterpret_cast(&t_data.iTempGearBearDE_1sec) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.iTempGearBearDE_1sec); len++; fields[len].start = reinterpret_cast(&t_data.iTempGearBearNDE_1sec) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.iTempGearBearNDE_1sec); len++; fields[len].start = reinterpret_cast(&t_data.iTempGenBearDE_1sec) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.iTempGenBearDE_1sec); len++; fields[len].start = reinterpret_cast(&t_data.iTempGenBearNDE_1sec) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.iTempGenBearNDE_1sec); len++; fields[len].start = reinterpret_cast(&t_data.iTempGenStatorU_1sec) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.iTempGenStatorU_1sec); len++; fields[len].start = reinterpret_cast(&t_data.iTempGenStatorV_1sec) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.iTempGenStatorV_1sec); len++; fields[len].start = reinterpret_cast(&t_data.iTempGenStatorW_1sec) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.iTempGenStatorW_1sec); len++; fields[len].start = reinterpret_cast(&t_data.iTempGenCoolingAir_1sec) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.iTempGenCoolingAir_1sec); len++; fields[len].start = reinterpret_cast(&t_data.iAvailabillityToday) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.iAvailabillityToday); len++; fields[len].start = reinterpret_cast(&t_data.iAvailabillityTotal) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.iAvailabillityTotal); len++; fields[len].start = reinterpret_cast(&t_data.iKWhThisDay) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.iKWhThisDay); len++; fields[len].start = reinterpret_cast(&t_data.iKWhOverall) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.iKWhOverall); len++; fields[len].start = reinterpret_cast(&t_data.iOperationHoursDay) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.iOperationHoursDay); len++; fields[len].start = reinterpret_cast(&t_data.iOperationHoursOverall) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.iOperationHoursOverall); len++; fields[len].start = reinterpret_cast(&t_data.iLostKWhThisDay) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.iLostKWhThisDay); len++; fields[len].start = reinterpret_cast(&t_data.iLostKWhOverall) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.iLostKWhOverall); len++; fields[len].start = reinterpret_cast(&t_data.SCW001) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.SCW001); len++; fields[len].start = reinterpret_cast(&t_data.SCW002) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.SCW002); len++; fields[len].start = reinterpret_cast(&t_data.SCW003) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.SCW003); len++; fields[len].start = reinterpret_cast(&t_data.SCW004) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.SCW004); len++; fields[len].start = reinterpret_cast(&t_data.SCW005) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.SCW005); len++; fields[len].start = reinterpret_cast(&t_data.SCW006) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.SCW006); len++; fields[len].start = reinterpret_cast(&t_data.SCW007) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.SCW007); len++; fields[len].start = reinterpret_cast(&t_data.SCW008) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.SCW008); len++; fields[len].start = reinterpret_cast(&t_data.SCW009) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.SCW009); len++; fields[len].start = reinterpret_cast(&t_data.SCW010) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.SCW010); len++; fields[len].start = reinterpret_cast(&t_data.SCW011) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.SCW011); len++; fields[len].start = reinterpret_cast(&t_data.SCW012) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.SCW012); len++; fields[len].start = reinterpret_cast(&t_data.SCW013) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.SCW013); len++; fields[len].start = reinterpret_cast(&t_data.SCW014) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.SCW014); len++; fields[len].start = reinterpret_cast(&t_data.SCW015) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.SCW015); len++; fields[len].start = reinterpret_cast(&t_data.SCW016) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.SCW016); len++; fields[len].start = reinterpret_cast(&t_data.SCW017) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.SCW017); len++; fields[len].start = reinterpret_cast(&t_data.SCW018) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.SCW018); len++; fields[len].start = reinterpret_cast(&t_data.SCW019) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.SCW019); len++; fields[len].start = reinterpret_cast(&t_data.SCW020) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.SCW020); len++; fields[len].start = reinterpret_cast(&t_data.SCW021) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.SCW021); len++; fields[len].start = reinterpret_cast(&t_data.SCW022) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.SCW022); len++; fields[len].start = reinterpret_cast(&t_data.SCW023) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.SCW023); len++; fields[len].start = reinterpret_cast(&t_data.SCW024) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.SCW024); len++; fields[len].start = reinterpret_cast(&t_data.SCW025) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.SCW025); len++; fields[len].start = reinterpret_cast(&t_data.SCW026) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.SCW026); len++; fields[len].start = reinterpret_cast(&t_data.SCW027) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.SCW027); len++; fields[len].start = reinterpret_cast(&t_data.SCW028) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.SCW028); len++; fields[len].start = reinterpret_cast(&t_data.SCW029) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.SCW029); len++; fields[len].start = reinterpret_cast(&t_data.SCW030) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.SCW030); len++; fields[len].start = reinterpret_cast(&t_data.SCW031) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.SCW031); len++; fields[len].start = reinterpret_cast(&t_data.SCW032) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.SCW032); len++; fields[len].start = reinterpret_cast(&t_data.SCW033) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.SCW033); len++; fields[len].start = reinterpret_cast(&t_data.SCW034) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.SCW034); len++; fields[len].start = reinterpret_cast(&t_data.SCW035) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.SCW035); len++; fields[len].start = reinterpret_cast(&t_data.SCW036) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.SCW036); len++; fields[len].start = reinterpret_cast(&t_data.SCW037) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.SCW037); len++; fields[len].start = reinterpret_cast(&t_data.SCW038) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.SCW038); len++; fields[len].start = reinterpret_cast(&t_data.SCW039) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.SCW039); len++; fields[len].start = reinterpret_cast(&t_data.SCW040) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.SCW040); len++; fields[len].start = reinterpret_cast(&t_data.SCW041) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.SCW041); len++; fields[len].start = reinterpret_cast(&t_data.SCW042) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.SCW042); len++; fields[len].start = reinterpret_cast(&t_data.SCW043) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.SCW043); len++; fields[len].start = reinterpret_cast(&t_data.SCW044) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.SCW044); len++; fields[len].start = reinterpret_cast(&t_data.SCW045) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.SCW045); len++; fields[len].start = reinterpret_cast(&t_data.SCW046) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.SCW046); len++; fields[len].start = reinterpret_cast(&t_data.SCW047) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.SCW047); len++; fields[len].start = reinterpret_cast(&t_data.SCW048) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.SCW048); len++; fields[len].start = reinterpret_cast(&t_data.SCW049) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.SCW049); len++; fields[len].start = reinterpret_cast(&t_data.SCW050) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.SCW050); len++; fields[len].start = reinterpret_cast(&t_data.iGenSpeed_10sec) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.iGenSpeed_10sec); len++; fields[len].start = reinterpret_cast(&t_data.iGenSpeed_30sec) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.iGenSpeed_30sec); len++; fields[len].start = reinterpret_cast(&t_data.iGenPower_10sec) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.iGenPower_10sec); len++; fields[len].start = reinterpret_cast(&t_data.iGenPower_30sec) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.iGenPower_30sec); len++; fields[len].start = reinterpret_cast(&t_data.iWindSpeed_10sec) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.iWindSpeed_10sec); len++; fields[len].start = reinterpret_cast(&t_data.iWindSpeed_30sec) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.iWindSpeed_30sec); len++; fields[len].start = reinterpret_cast(&t_data.iWindSpeed_10min) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.iWindSpeed_10min); len++; fields[len].start = reinterpret_cast(&t_data.iAvailablePower) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.iAvailablePower); len++; fields[len].start = reinterpret_cast(&t_data.FirstTriggeredCode) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.FirstTriggeredCode); len++; fields[len].start = reinterpret_cast(&t_data.FaultInformation) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.FaultInformation); len++; fields[len].start = reinterpret_cast(&t_data.WecRunCondition) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.WecRunCondition); len++; fields[len].start = reinterpret_cast(&t_data.iWindSpeedIEC) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.iWindSpeedIEC); len++; fields[len].start = reinterpret_cast(&t_data.iWindSpeedIEC_30sec) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.iWindSpeedIEC_30sec); len++; fields[len].start = reinterpret_cast(&t_data.iWindSpeedIEC_10min) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.iWindSpeedIEC_10min); len++; fields[len].start = reinterpret_cast(&t_data.iYawPress) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.iYawPress); len++; fields[len].start = reinterpret_cast(&t_data.iStandardAirDensity) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.iStandardAirDensity); len++; fields[len].start = reinterpret_cast(&t_data.iAirDensity) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.iAirDensity); len++; fields[len].start = reinterpret_cast(&t_data.iVibrationYFiltered) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.iVibrationYFiltered); len++; fields[len].start = reinterpret_cast(&t_data.iVibrationZFiltered) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.iVibrationZFiltered); len++; fields[len].start = reinterpret_cast(&t_data.iTempGearWaterCool_1sec) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.iTempGearWaterCool_1sec); len++; fields[len].start = reinterpret_cast(&t_data.PowerLimitSource) - reinterpret_cast(&t_data); fields[len].length = sizeof(t_data.PowerLimitSource); len++; fields[len].start = reinterpret_cast(&t_data.iTempOutdoor_10min) - reinterpret_cast(&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; }