@@ -89,11 +89,10 @@ export class FanControlLogic {
8989 } else {
9090 this . _fansMinSpeedHWLimit = speed ;
9191 }
92- this . _minimumFanspeed = this . _minimumFanspeed < this . _fansMinSpeedHWLimit ? this . _fansMinSpeedHWLimit : this . _minimumFanspeed ;
9392 }
9493
9594 /**
96- * Jump from 0 to minimumFanspeed or never go below minimumFanspeed
95+ * Jump from 0 to _fansMinSpeedHWLimit or never go below _fansMinSpeedHWLimit
9796 */
9897 private _fansOffAvailable : boolean = true ;
9998 get fansOffAvailable ( ) { return this . _fansOffAvailable ; }
@@ -112,16 +111,16 @@ export class FanControlLogic {
112111 get minimumFanspeed ( ) { return this . _minimumFanspeed ; }
113112 set minimumFanspeed ( speed : number ) {
114113 if ( speed === undefined ) {
115- this . _minimumFanspeed = this . _fansMinSpeedHWLimit ;
114+ this . _minimumFanspeed = 0 ;
116115 } else if ( speed < 0 ) {
117- this . _minimumFanspeed = this . _fansMinSpeedHWLimit ;
116+ this . _minimumFanspeed = 0 ;
118117 } else if ( speed > 100 ) {
119118 this . _minimumFanspeed = 100 ;
120119 } else {
121- this . _minimumFanspeed = speed < this . _fansMinSpeedHWLimit ? this . _fansMinSpeedHWLimit : speed ;
120+ this . _minimumFanspeed = speed ;
122121 }
123122 }
124-
123+
125124 /**
126125 * Number added to table value providing an offset fan table lookup
127126 */
@@ -137,7 +136,7 @@ export class FanControlLogic {
137136 } else {
138137 this . _offsetFanspeed = speed ;
139138 }
140- }
139+ }
141140
142141 constructor ( private fanProfile : ITccFanProfile , type : FAN_LOGIC ) {
143142 if ( type === FAN_LOGIC . CPU ) {
@@ -195,24 +194,29 @@ export class FanControlLogic {
195194 newSpeed = 0 ;
196195 }
197196 }
198-
199- // Limit falling speed change
200- let speedJump = newSpeed - this . lastSpeed ;
201- if ( this . lastSpeed > SPEED_JUMP_THRESHOLD && speedJump <= - MAX_SPEED_JUMP ) {
202- speedJump = - MAX_SPEED_JUMP ;
203- newSpeed = this . lastSpeed + speedJump ;
204- }
205197
206198 // Adjust for minimum speed parameter
207199 if ( newSpeed < this . minimumFanspeed ) {
200+ newSpeed = this . minimumFanspeed ;
201+ }
202+
203+ // Adjust for hardware capabilities
204+ if ( newSpeed < this . _fansMinSpeedHWLimit ) {
208205 if ( this . fansOffAvailable && ( newSpeed < ( this . _fansMinSpeedHWLimit / 2 ) ) ) {
209206 newSpeed = 0 ;
210207 }
211- else {
212- newSpeed = this . minimumFanspeed ;
208+ else if ( ( this . fansOffAvailable && ! ( newSpeed < ( this . _fansMinSpeedHWLimit / 2 ) ) ) || ! this . fansOffAvailable ) {
209+ newSpeed = this . _fansMinSpeedHWLimit ;
213210 }
214211 }
215212
213+ // Limit falling speed change
214+ let speedJump = newSpeed - this . lastSpeed ;
215+ if ( this . lastSpeed > SPEED_JUMP_THRESHOLD && speedJump <= - MAX_SPEED_JUMP ) {
216+ speedJump = - MAX_SPEED_JUMP ;
217+ newSpeed = this . lastSpeed + speedJump ;
218+ }
219+
216220 this . lastSpeed = newSpeed ;
217221 return newSpeed ;
218222 }
0 commit comments