@@ -158,6 +158,8 @@ public class PowerSourceActivity extends GuideActivity {
158
158
159
159
private float voltagePV1 = 0.00f , voltagePV2 = 0.00f , voltagePV3 = 0.00f , currentPCS = 0.00f ;
160
160
161
+ private Boolean _update = true ;
162
+
161
163
public PowerSourceActivity () {
162
164
super (R .layout .activity_power_source );
163
165
}
@@ -523,12 +525,12 @@ private void monitorControllers(Croller controller, final Pin pin, int controlle
523
525
controller .setMax (controllerLimit );
524
526
controller .setProgress (retrievePowerValues (pin ));
525
527
controller .setOnCrollerChangeListener (new OnCrollerChangeListener () {
526
- private int progress ;
527
-
528
528
@ Override
529
529
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
+ }
532
534
removeCursor ();
533
535
}
534
536
@@ -537,6 +539,7 @@ public void onStartTrackingTouch(Croller croller) { /**/ }
537
539
538
540
@ Override
539
541
public void onStopTrackingTouch (Croller croller ) {
542
+ _update = false ;
540
543
setPower (pin );
541
544
/*
542
545
V6 hardware has two pairs of paired channels:
@@ -547,40 +550,20 @@ public void onStopTrackingTouch(Croller croller) {
547
550
*/
548
551
switch (pin ) {
549
552
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 );
557
555
break ;
558
556
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 );
566
559
break ;
567
560
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 );
575
563
break ;
576
564
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 );
584
567
break ;
585
568
default :
586
569
break ;
@@ -689,29 +672,41 @@ private void incrementValue(Pin pin) {
689
672
case PV1 :
690
673
if (voltagePV1 < PV1_VOLTAGE_RANGE .getUpper ()) {
691
674
voltagePV1 += STEP ;
692
- updateDisplay (displayPV1 , voltagePV1 , Pin .PV1 );
675
+ updateDisplayAndPower (displayPV1 , voltagePV1 , Pin .PV1 );
693
676
updateController (controllerPV1 , Pin .PV1 );
677
+ voltagePV3 = (float ) (3.3 / 2 ) * (voltagePV1 / 5 + 1 );
678
+ _update = false ;
679
+ updateController (controllerPV3 , Pin .PV3 );
694
680
}
695
681
break ;
696
682
case PV2 :
697
683
if (voltagePV2 < PV2_VOLTAGE_RANGE .getUpper ()) {
698
684
voltagePV2 += STEP ;
699
- updateDisplay (displayPV2 , voltagePV2 , Pin .PV2 );
685
+ updateDisplayAndPower (displayPV2 , voltagePV2 , Pin .PV2 );
700
686
updateController (controllerPV2 , Pin .PV2 );
687
+ currentPCS = (float ) (3.3 - voltagePV2 ) / 2 ;
688
+ _update = false ;
689
+ updateController (controllerPCS , Pin .PCS );
701
690
}
702
691
break ;
703
692
case PV3 :
704
693
if (voltagePV3 < PV3_VOLTAGE_RANGE .getUpper ()) {
705
694
voltagePV3 += STEP ;
706
- updateDisplay (displayPV3 , voltagePV3 , Pin .PV3 );
695
+ updateDisplayAndPower (displayPV3 , voltagePV3 , Pin .PV3 );
707
696
updateController (controllerPV3 , Pin .PV3 );
697
+ voltagePV1 = (float ) (5 * (2 * voltagePV3 / 3.3 - 1 ));
698
+ _update = false ;
699
+ updateController (controllerPV1 , Pin .PV1 );
708
700
}
709
701
break ;
710
702
case PCS :
711
703
if (currentPCS < PCS_CURRENT_RANGE .getUpper ()) {
712
704
currentPCS += STEP ;
713
- updateDisplay (displayPCS , currentPCS , Pin .PCS );
705
+ updateDisplayAndPower (displayPCS , currentPCS , Pin .PCS );
714
706
updateController (controllerPCS , Pin .PCS );
707
+ voltagePV2 = (float ) (3.3 - 2 * currentPCS );
708
+ _update = false ;
709
+ updateController (controllerPV2 , Pin .PV2 );
715
710
}
716
711
break ;
717
712
default :
@@ -729,29 +724,41 @@ private void decrementValue(Pin pin) {
729
724
case PV1 :
730
725
if (voltagePV1 > PV1_VOLTAGE_RANGE .getLower ()) {
731
726
voltagePV1 -= STEP ;
732
- updateDisplay (displayPV1 , voltagePV1 , Pin .PV1 );
727
+ updateDisplayAndPower (displayPV1 , voltagePV1 , Pin .PV1 );
733
728
updateController (controllerPV1 , Pin .PV1 );
729
+ voltagePV3 = (float ) (3.3 / 2 ) * (voltagePV1 / 5 + 1 );
730
+ _update = false ;
731
+ updateController (controllerPV3 , Pin .PV3 );
734
732
}
735
733
break ;
736
734
case PV2 :
737
735
if (voltagePV2 > PV2_VOLTAGE_RANGE .getLower ()) {
738
736
voltagePV2 -= STEP ;
739
- updateDisplay (displayPV2 , voltagePV2 , Pin .PV2 );
737
+ updateDisplayAndPower (displayPV2 , voltagePV2 , Pin .PV2 );
740
738
updateController (controllerPV2 , Pin .PV2 );
739
+ currentPCS = (float ) (3.3 - voltagePV2 ) / 2 ;
740
+ _update = false ;
741
+ updateController (controllerPCS , Pin .PCS );
741
742
}
742
743
break ;
743
744
case PV3 :
744
745
if (voltagePV3 > PV3_VOLTAGE_RANGE .getLower ()) {
745
746
voltagePV3 -= STEP ;
746
- updateDisplay (displayPV3 , voltagePV3 , Pin .PV3 );
747
+ updateDisplayAndPower (displayPV3 , voltagePV3 , Pin .PV3 );
747
748
updateController (controllerPV3 , Pin .PV3 );
749
+ voltagePV1 = (float ) (5 * (2 * voltagePV3 / 3.3 - 1 ));
750
+ _update = false ;
751
+ updateController (controllerPV1 , Pin .PV1 );
748
752
}
749
753
break ;
750
754
case PCS :
751
755
if (currentPCS > PCS_CURRENT_RANGE .getLower ()) {
752
756
currentPCS -= STEP ;
753
- updateDisplay (displayPCS , currentPCS , Pin .PCS );
757
+ updateDisplayAndPower (displayPCS , currentPCS , Pin .PCS );
754
758
updateController (controllerPCS , Pin .PCS );
759
+ voltagePV2 = (float ) (3.3 - 2 * currentPCS );
760
+ _update = false ;
761
+ updateController (controllerPV2 , Pin .PV2 );
755
762
}
756
763
break ;
757
764
default :
@@ -796,20 +803,67 @@ private void updateController(Croller controller, Pin pin) {
796
803
* @param value signed power value
797
804
* @param pin assigned power pin
798
805
*/
799
- private void updateDisplay (TextView display , float value , Pin pin ) {
806
+ private void updateDisplayAndPower (TextView display , float value , Pin pin ) {
800
807
String displayText = (value >= 0 ? "+" : "-" ).concat (String .format (Locale .getDefault (),
801
808
"%.2f" , Math .abs (value ))).concat (pin .equals (Pin .PCS ) ? " mA" : " V" );
802
809
display .setText (displayText );
803
810
setPower (pin );
804
811
}
805
812
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
+
806
826
/**
807
827
* Updates display and calculate power value determined by knob position
808
828
*
809
829
* @param pin assigned power pin
810
830
* @param progress corresponding progress value
811
831
*/
812
832
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 ) {
813
867
savePowerValues (pin , progress );
814
868
switch (pin ) {
815
869
case PV1 :
0 commit comments