00001
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035 package gov.lanl.isr.sensix.sensing;
00036
00037 import gov.lanl.isr.sensix.*;
00038
00039
00040 public class DeltaImpl extends DeltaPOA
00041 {
00042 private AggregateImpl del;
00043
00044
00045 public DeltaImpl(byte l, Collection[] c) {
00046 del = new AggregateImpl("Delta", l, c);
00047 }
00048
00049 public DeltaImpl(Collection[] c) {
00050 del = new AggregateImpl("Delta", c);
00051 }
00052
00053 public DeltaImpl(byte l, Collection[] c, int seq) {
00054 del = new AggregateImpl("Delta", l, c, seq);
00055 }
00056
00057
00058 public byte identifier() {
00059 return SenseCorba.DELTA;
00060 }
00061
00062 protected Data getResult(int idx) {
00063 double min = Double.POSITIVE_INFINITY, max = Double.NEGATIVE_INFINITY;
00064 double value = 0;
00065 Data[] res = del.collectors()[idx].results();
00066 for (int i = 0; i < res.length; i++) {
00067 Data d = res[i];
00068 if (SenseUtil.isIntegerData(d.discriminator())) {
00069 if (d.iresult() > max)
00070 max = d.iresult();
00071 if (d.iresult() < min)
00072 min = d.iresult();
00073 }
00074 else if (SenseUtil.isFloatingPointData(d.discriminator())) {
00075 if (d.fresult() > max)
00076 max = d.fresult();
00077 if (d.fresult() < min)
00078 min = d.fresult();
00079 }
00080 }
00081 value = max - min;
00082 Data ret = new Data();
00083 ret.fresult(value);
00084 return ret;
00085 }
00086
00087 public Data result() {
00088 return getResult(0);
00089 }
00090
00091 public Data[] results() {
00092 int num = del.collectors().length;
00093 Data[] array = new Data[num];
00094 for (int i = 0; i < num; i++)
00095 array[i] = getResult(i);
00096 return array;
00097 }
00098
00099 public void results(Data[] data) {}
00100
00101
00102
00103
00104
00105 public String asString() {
00106 return del.asString();
00107 }
00108
00109 public int sequencer() {
00110 return del.sequencer();
00111 }
00112
00113 public byte level() {
00114 return del.level();
00115 }
00116
00117 public Collection[] collectors() {
00118 return del.collectors();
00119 }
00120
00121 public void collectors(Collection[] c) {
00122 del.collectors(c);
00123 }
00124
00125 public Sensory[] senses() {
00126 return del.senses();
00127 }
00128
00129 public Sensory sense() {
00130 return del.sense();
00131 }
00132
00133 public void sense(Sensory s) {
00134 del.sense(s);
00135 }
00136
00137 public byte sensor() {
00138 return del.sensor();
00139 }
00140
00141 public long timeused() {
00142 return del.timeused();
00143 }
00144
00145 public void timeused(long t) {
00146 del.timeused(t);
00147 }
00148
00149 public double energyused() {
00150 return del.energyused();
00151 }
00152
00153 public void energyused(double e) {
00154 del.energyused(e);
00155 }
00156
00157 public byte priority() {
00158 return del.priority();
00159 }
00160
00161 public void priority(byte p) {
00162 del.priority(p);
00163 }
00164
00165 public FunctorError[] errors() {
00166 return del.errors();
00167 }
00168
00169 public void errors(FunctorError[] e) {
00170 del.errors(e);
00171 }
00172
00173 public Functor[] subfunctors() {
00174 return del.subfunctors();
00175 }
00176
00177 public void subfunctors(Functor[] fs) {
00178 del.subfunctors(fs);
00179 }
00180 }