Skip to content

Commit c0c59b4

Browse files
AsCressmarcnause
authored andcommitted
fix: fixed errors in Power Source values
1 parent 4508197 commit c0c59b4

File tree

1 file changed

+95
-41
lines changed

1 file changed

+95
-41
lines changed

app/src/main/java/io/pslab/activity/PowerSourceActivity.java

Lines changed: 95 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -158,6 +158,8 @@ public class PowerSourceActivity extends GuideActivity {
158158

159159
private float voltagePV1 = 0.00f, voltagePV2 = 0.00f, voltagePV3 = 0.00f, currentPCS = 0.00f;
160160

161+
private Boolean _update = true;
162+
161163
public PowerSourceActivity() {
162164
super(R.layout.activity_power_source);
163165
}
@@ -523,12 +525,12 @@ private void monitorControllers(Croller controller, final Pin pin, int controlle
523525
controller.setMax(controllerLimit);
524526
controller.setProgress(retrievePowerValues(pin));
525527
controller.setOnCrollerChangeListener(new OnCrollerChangeListener() {
526-
private int progress;
527-
528528
@Override
529529
public void onProgressChanged(Croller croller, int progress) {
530-
setMappedPower(pin, progress);
531-
this.progress = progress;
530+
displayMappedPower(pin, progress);
531+
if (_update) {
532+
setPower(pin);
533+
}
532534
removeCursor();
533535
}
534536

@@ -537,6 +539,7 @@ public void onStartTrackingTouch(Croller croller) { /**/ }
537539

538540
@Override
539541
public void onStopTrackingTouch(Croller croller) {
542+
_update = false;
540543
setPower(pin);
541544
/*
542545
V6 hardware has two pairs of paired channels:
@@ -547,40 +550,20 @@ public void onStopTrackingTouch(Croller croller) {
547550
*/
548551
switch (pin) {
549552
case PV1:
550-
if ((int) (progress * 3.3 / 10) > PV3_CONTROLLER_MAX) {
551-
controllerPV3.setProgress(PV3_CONTROLLER_MAX);
552-
} else if ((int) (progress * 3.3 / 10) < CONTROLLER_MIN) {
553-
controllerPV3.setProgress(CONTROLLER_MIN);
554-
} else {
555-
controllerPV3.setProgress((int) (progress * 3.3 / 10));
556-
}
553+
voltagePV3 = (float) (3.3 / 2) * (voltagePV1 / 5 + 1);
554+
updateController(controllerPV3, Pin.PV3);
557555
break;
558556
case PV2:
559-
if (PCS_CONTROLLER_MAX - (progress / 2) > PCS_CONTROLLER_MAX) {
560-
controllerPCS.setProgress(PCS_CONTROLLER_MAX);
561-
} else if (PCS_CONTROLLER_MAX - (progress / 2) < CONTROLLER_MIN) {
562-
controllerPCS.setProgress(CONTROLLER_MIN);
563-
} else {
564-
controllerPCS.setProgress(PCS_CONTROLLER_MAX - (progress / 2));
565-
}
557+
currentPCS = (float) (3.3 - voltagePV2) / 2;
558+
updateController(controllerPCS, Pin.PCS);
566559
break;
567560
case PV3:
568-
if ((int) (progress * 10 / 3.3) > PV1_CONTROLLER_MAX) {
569-
controllerPV1.setProgress(PV1_CONTROLLER_MAX);
570-
} else if ((int) (progress * 10 / 3.3) < CONTROLLER_MIN) {
571-
controllerPV1.setProgress(CONTROLLER_MIN);
572-
} else {
573-
controllerPV1.setProgress((int) (progress * 10 / 3.3));
574-
}
561+
voltagePV1 = (float) (5 * (2 * voltagePV3 / 3.3 - 1));
562+
updateController(controllerPV1, Pin.PV1);
575563
break;
576564
case PCS:
577-
if (PV2_CONTROLLER_MAX - (progress * 2) > PV2_CONTROLLER_MAX) {
578-
controllerPV2.setProgress(PV2_CONTROLLER_MAX);
579-
} else if (PV2_CONTROLLER_MAX - (progress * 2) < CONTROLLER_MIN) {
580-
controllerPV2.setProgress(CONTROLLER_MIN);
581-
} else {
582-
controllerPV2.setProgress(PV2_CONTROLLER_MAX - (progress * 2));
583-
}
565+
voltagePV2 = (float) (3.3 - 2 * currentPCS);
566+
updateController(controllerPV2, Pin.PV2);
584567
break;
585568
default:
586569
break;
@@ -689,29 +672,41 @@ private void incrementValue(Pin pin) {
689672
case PV1:
690673
if (voltagePV1 < PV1_VOLTAGE_RANGE.getUpper()) {
691674
voltagePV1 += STEP;
692-
updateDisplay(displayPV1, voltagePV1, Pin.PV1);
675+
updateDisplayAndPower(displayPV1, voltagePV1, Pin.PV1);
693676
updateController(controllerPV1, Pin.PV1);
677+
voltagePV3 = (float) (3.3 / 2) * (voltagePV1 / 5 + 1);
678+
_update = false;
679+
updateController(controllerPV3, Pin.PV3);
694680
}
695681
break;
696682
case PV2:
697683
if (voltagePV2 < PV2_VOLTAGE_RANGE.getUpper()) {
698684
voltagePV2 += STEP;
699-
updateDisplay(displayPV2, voltagePV2, Pin.PV2);
685+
updateDisplayAndPower(displayPV2, voltagePV2, Pin.PV2);
700686
updateController(controllerPV2, Pin.PV2);
687+
currentPCS = (float) (3.3 - voltagePV2) / 2;
688+
_update = false;
689+
updateController(controllerPCS, Pin.PCS);
701690
}
702691
break;
703692
case PV3:
704693
if (voltagePV3 < PV3_VOLTAGE_RANGE.getUpper()) {
705694
voltagePV3 += STEP;
706-
updateDisplay(displayPV3, voltagePV3, Pin.PV3);
695+
updateDisplayAndPower(displayPV3, voltagePV3, Pin.PV3);
707696
updateController(controllerPV3, Pin.PV3);
697+
voltagePV1 = (float) (5 * (2 * voltagePV3 / 3.3 - 1));
698+
_update = false;
699+
updateController(controllerPV1, Pin.PV1);
708700
}
709701
break;
710702
case PCS:
711703
if (currentPCS < PCS_CURRENT_RANGE.getUpper()) {
712704
currentPCS += STEP;
713-
updateDisplay(displayPCS, currentPCS, Pin.PCS);
705+
updateDisplayAndPower(displayPCS, currentPCS, Pin.PCS);
714706
updateController(controllerPCS, Pin.PCS);
707+
voltagePV2 = (float) (3.3 - 2 * currentPCS);
708+
_update = false;
709+
updateController(controllerPV2, Pin.PV2);
715710
}
716711
break;
717712
default:
@@ -729,29 +724,41 @@ private void decrementValue(Pin pin) {
729724
case PV1:
730725
if (voltagePV1 > PV1_VOLTAGE_RANGE.getLower()) {
731726
voltagePV1 -= STEP;
732-
updateDisplay(displayPV1, voltagePV1, Pin.PV1);
727+
updateDisplayAndPower(displayPV1, voltagePV1, Pin.PV1);
733728
updateController(controllerPV1, Pin.PV1);
729+
voltagePV3 = (float) (3.3 / 2) * (voltagePV1 / 5 + 1);
730+
_update = false;
731+
updateController(controllerPV3, Pin.PV3);
734732
}
735733
break;
736734
case PV2:
737735
if (voltagePV2 > PV2_VOLTAGE_RANGE.getLower()) {
738736
voltagePV2 -= STEP;
739-
updateDisplay(displayPV2, voltagePV2, Pin.PV2);
737+
updateDisplayAndPower(displayPV2, voltagePV2, Pin.PV2);
740738
updateController(controllerPV2, Pin.PV2);
739+
currentPCS = (float) (3.3 - voltagePV2) / 2;
740+
_update = false;
741+
updateController(controllerPCS, Pin.PCS);
741742
}
742743
break;
743744
case PV3:
744745
if (voltagePV3 > PV3_VOLTAGE_RANGE.getLower()) {
745746
voltagePV3 -= STEP;
746-
updateDisplay(displayPV3, voltagePV3, Pin.PV3);
747+
updateDisplayAndPower(displayPV3, voltagePV3, Pin.PV3);
747748
updateController(controllerPV3, Pin.PV3);
749+
voltagePV1 = (float) (5 * (2 * voltagePV3 / 3.3 - 1));
750+
_update = false;
751+
updateController(controllerPV1, Pin.PV1);
748752
}
749753
break;
750754
case PCS:
751755
if (currentPCS > PCS_CURRENT_RANGE.getLower()) {
752756
currentPCS -= STEP;
753-
updateDisplay(displayPCS, currentPCS, Pin.PCS);
757+
updateDisplayAndPower(displayPCS, currentPCS, Pin.PCS);
754758
updateController(controllerPCS, Pin.PCS);
759+
voltagePV2 = (float) (3.3 - 2 * currentPCS);
760+
_update = false;
761+
updateController(controllerPV2, Pin.PV2);
755762
}
756763
break;
757764
default:
@@ -796,20 +803,67 @@ private void updateController(Croller controller, Pin pin) {
796803
* @param value signed power value
797804
* @param pin assigned power pin
798805
*/
799-
private void updateDisplay(TextView display, float value, Pin pin) {
806+
private void updateDisplayAndPower(TextView display, float value, Pin pin) {
800807
String displayText = (value >= 0 ? "+" : "-").concat(String.format(Locale.getDefault(),
801808
"%.2f", Math.abs(value))).concat(pin.equals(Pin.PCS) ? " mA" : " V");
802809
display.setText(displayText);
803810
setPower(pin);
804811
}
805812

813+
/**
814+
* Updates display with user set values
815+
*
816+
* @param display text view corresponding to power values
817+
* @param value signed power value
818+
* @param pin assigned power pin
819+
*/
820+
private void updateDisplay(TextView display, float value, Pin pin) {
821+
String displayText = (value >= 0 ? "+" : "-").concat(String.format(Locale.getDefault(),
822+
"%.2f", Math.abs(value))).concat(pin.equals(Pin.PCS) ? " mA" : " V");
823+
display.setText(displayText);
824+
}
825+
806826
/**
807827
* Updates display and calculate power value determined by knob position
808828
*
809829
* @param pin assigned power pin
810830
* @param progress corresponding progress value
811831
*/
812832
private void setMappedPower(Pin pin, int progress) {
833+
savePowerValues(pin, progress);
834+
switch (pin) {
835+
case PV1:
836+
voltagePV1 = limitDigits(mapProgressToPower(progress, PV1_CONTROLLER_MAX,
837+
PV1_VOLTAGE_RANGE.getUpper(), PV1_VOLTAGE_RANGE.getLower()));
838+
updateDisplayAndPower(displayPV1, voltagePV1, pin);
839+
break;
840+
case PV2:
841+
voltagePV2 = limitDigits(mapProgressToPower(progress, PV2_CONTROLLER_MAX,
842+
PV2_VOLTAGE_RANGE.getUpper(), PV2_VOLTAGE_RANGE.getLower()));
843+
updateDisplayAndPower(displayPV2, voltagePV2, pin);
844+
break;
845+
case PV3:
846+
voltagePV3 = limitDigits(mapProgressToPower(progress, PV3_CONTROLLER_MAX,
847+
PV3_VOLTAGE_RANGE.getUpper(), PV3_VOLTAGE_RANGE.getLower()));
848+
updateDisplayAndPower(displayPV3, voltagePV3, pin);
849+
break;
850+
case PCS:
851+
currentPCS = limitDigits(mapProgressToPower(progress, PCS_CONTROLLER_MAX,
852+
PCS_CURRENT_RANGE.getUpper(), PCS_CURRENT_RANGE.getLower()));
853+
updateDisplayAndPower(displayPCS, currentPCS, pin);
854+
break;
855+
default:
856+
break;
857+
}
858+
}
859+
860+
/**
861+
* Updates display only and calculate power value determined by knob position
862+
*
863+
* @param pin assigned power pin
864+
* @param progress corresponding progress value
865+
*/
866+
private void displayMappedPower(Pin pin, int progress) {
813867
savePowerValues(pin, progress);
814868
switch (pin) {
815869
case PV1:

0 commit comments

Comments
 (0)