@ -288,32 +288,30 @@ class Inverter {
uint8_t end = ptr + rec - > assign [ pos ] . num ;
uint16_t div = rec - > assign [ pos ] . div ;
if ( NULL ! = rec ) {
if ( CMD_CALC ! = div ) {
uint32_t val = 0 ;
do {
val < < = 8 ;
val | = buf [ ptr ] ;
} while ( + + ptr ! = end ) ;
if ( ( FLD_T = = rec - > assign [ pos ] . fieldId ) | | ( FLD_Q = = rec - > assign [ pos ] . fieldId ) | | ( FLD_PF = = rec - > assign [ pos ] . fieldId ) ) {
// temperature, Qvar, and power factor are a signed values
rec - > record [ pos ] = ( ( REC_TYP ) ( ( int16_t ) val ) ) / ( REC_TYP ) ( div ) ;
} else if ( FLD_YT = = rec - > assign [ pos ] . fieldId ) {
rec - > record [ pos ] = ( ( REC_TYP ) ( val ) / ( REC_TYP ) ( div ) ) + ( ( REC_TYP ) config - > yieldCor [ rec - > assign [ pos ] . ch - 1 ] ) ;
} else if ( FLD_YD = = rec - > assign [ pos ] . fieldId ) {
float actYD = ( REC_TYP ) ( val ) / ( REC_TYP ) ( div ) ;
uint8_t idx = rec - > assign [ pos ] . ch - 1 ;
if ( mLastYD [ idx ] > actYD )
mOffYD [ idx ] + = mLastYD [ idx ] ;
mLastYD [ idx ] = actYD ;
rec - > record [ pos ] = mOffYD [ idx ] + actYD ;
} else {
if ( ( REC_TYP ) ( div ) > 1 )
rec - > record [ pos ] = ( REC_TYP ) ( val ) / ( REC_TYP ) ( div ) ;
else
rec - > record [ pos ] = ( REC_TYP ) ( val ) ;
}
if ( CMD_CALC ! = div ) {
uint32_t val = 0 ;
do {
val < < = 8 ;
val | = buf [ ptr ] ;
} while ( + + ptr ! = end ) ;
if ( ( FLD_T = = rec - > assign [ pos ] . fieldId ) | | ( FLD_Q = = rec - > assign [ pos ] . fieldId ) | | ( FLD_PF = = rec - > assign [ pos ] . fieldId ) ) {
// temperature, Qvar, and power factor are a signed values
rec - > record [ pos ] = ( ( REC_TYP ) ( ( int16_t ) val ) ) / ( REC_TYP ) ( div ) ;
} else if ( FLD_YT = = rec - > assign [ pos ] . fieldId ) {
rec - > record [ pos ] = ( ( REC_TYP ) ( val ) / ( REC_TYP ) ( div ) ) + ( ( REC_TYP ) config - > yieldCor [ rec - > assign [ pos ] . ch - 1 ] ) ;
} else if ( FLD_YD = = rec - > assign [ pos ] . fieldId ) {
float actYD = ( REC_TYP ) ( val ) / ( REC_TYP ) ( div ) ;
uint8_t idx = rec - > assign [ pos ] . ch - 1 ;
if ( mLastYD [ idx ] > actYD )
mOffYD [ idx ] + = mLastYD [ idx ] ;
mLastYD [ idx ] = actYD ;
rec - > record [ pos ] = mOffYD [ idx ] + actYD ;
} else {
if ( ( REC_TYP ) ( div ) > 1 )
rec - > record [ pos ] = ( REC_TYP ) ( val ) / ( REC_TYP ) ( div ) ;
else
rec - > record [ pos ] = ( REC_TYP ) ( val ) ;
}
}