88import android .os .Vibrator ;
99
1010import com .cooper .wheellog .utils .Constants ;
11+ import com .cooper .wheellog .utils .Constants .ALARM_TYPE ;
1112import com .cooper .wheellog .utils .Constants .WHEEL_TYPE ;
1213
1314import java .text .SimpleDateFormat ;
@@ -22,10 +23,6 @@ public class WheelData {
2223 private static WheelData mInstance ;
2324 private static Context mContext ;
2425
25- private enum AlarmType {
26- speed
27- }
28-
2926 private BluetoothLeService mBluetoothLeService ;
3027
3128 private long graph_last_update_time ;
@@ -59,14 +56,17 @@ private enum AlarmType {
5956 private long mStartTotalDistance ;
6057
6158 private boolean mAlarmsEnabled = false ;
59+ private boolean mDisablePhoneVibrate = false ;
6260 private int mAlarm1Speed = 0 ;
6361 private int mAlarm2Speed = 0 ;
6462 private int mAlarm3Speed = 0 ;
6563 private int mAlarm1Battery = 0 ;
6664 private int mAlarm2Battery = 0 ;
6765 private int mAlarm3Battery = 0 ;
66+ private int mAlarmCurrent = 0 ;
6867
69- private boolean mAlarmExecuted = false ;
68+ private boolean mSpeedAlarmExecuted = false ;
69+ private boolean mCurrentAlarmExecuted = false ;
7070
7171 public static void initiate (Context context ) {
7272 if (mInstance == null )
@@ -92,10 +92,6 @@ public int getBatteryLevel() {
9292 return mBattery ;
9393 }
9494
95- public double getAverageBatteryLevel () {
96- return mAverageBattery ;
97- }
98-
9995 public int getFanStatus () {
10096 return mFanStatus ;
10197 }
@@ -188,15 +184,18 @@ public void setAlarmsEnabled(boolean enabled) {
188184 mAlarmsEnabled = enabled ;
189185 }
190186
191- public void setSpeedAlarmSpeed (int alarm1Speed , int alarm1Battery ,
187+ public void setPreferences (int alarm1Speed , int alarm1Battery ,
192188 int alarm2Speed , int alarm2Battery ,
193- int alarm3Speed , int alarm3Battery ) {
189+ int alarm3Speed , int alarm3Battery ,
190+ int alarmCurrent , boolean disablePhoneVibrate ) {
194191 mAlarm1Speed = alarm1Speed * 100 ;
195192 mAlarm2Speed = alarm2Speed * 100 ;
196193 mAlarm3Speed = alarm3Speed * 100 ;
197194 mAlarm1Battery = alarm1Battery ;
198195 mAlarm2Battery = alarm2Battery ;
199196 mAlarm3Battery = alarm3Battery ;
197+ mAlarmCurrent = alarmCurrent *100 ;
198+ mDisablePhoneVibrate = disablePhoneVibrate ;
200199 }
201200
202201 private int byteArrayInt2 (byte low , byte high ) {
@@ -235,48 +234,64 @@ private void setBatteryPercent(int battery) {
235234 }
236235
237236 private void checkAlarmStatus () {
238- if (!mAlarmExecuted ) {
237+ // SPEED ALARM
238+ if (!mSpeedAlarmExecuted ) {
239239 if (mAlarm1Speed > 0 && mAlarm1Battery > 0 &&
240240 mAverageBattery <= mAlarm1Battery && mSpeed >= mAlarm1Speed )
241- vibrate ( AlarmType . speed );
241+ raiseAlarm ( ALARM_TYPE . SPEED );
242242 else if (mAlarm2Speed > 0 && mAlarm2Battery > 0 &&
243243 mAverageBattery <= mAlarm2Battery && mSpeed >= mAlarm2Speed )
244- vibrate ( AlarmType . speed );
244+ raiseAlarm ( ALARM_TYPE . SPEED );
245245 else if (mAlarm3Speed > 0 && mAlarm3Battery > 0 &&
246246 mAverageBattery <= mAlarm3Battery && mSpeed >= mAlarm3Speed )
247- vibrate ( AlarmType . speed );
247+ raiseAlarm ( ALARM_TYPE . SPEED );
248248 } else {
249- boolean alarm_required = false ;
249+ boolean alarm_finished = false ;
250250 if (mAlarm1Speed > 0 && mAlarm1Battery > 0 &&
251251 mAverageBattery > mAlarm1Battery && mSpeed < mAlarm1Speed )
252- alarm_required = true ;
252+ alarm_finished = true ;
253253 else if (mAlarm2Speed > 0 && mAlarm2Battery > 0 &&
254254 mAverageBattery <= mAlarm2Battery && mSpeed >= mAlarm2Speed )
255- alarm_required = true ;
255+ alarm_finished = true ;
256256 else if (mAlarm3Speed > 0 && mAlarm3Battery > 0 &&
257257 mAverageBattery <= mAlarm3Battery && mSpeed >= mAlarm3Speed )
258- alarm_required = true ;
258+ alarm_finished = true ;
259259
260- mAlarmExecuted = alarm_required ;
260+ mSpeedAlarmExecuted = alarm_finished ;
261+ }
262+
263+ // CURRENT
264+ if (!mCurrentAlarmExecuted ) {
265+ if (mAlarmCurrent > 0 &&
266+ mCurrent >= mAlarmCurrent ) {
267+ raiseAlarm (ALARM_TYPE .CURRENT );
268+ }
269+ } else {
270+ if (mCurrent < mAlarmCurrent )
271+ mCurrentAlarmExecuted = false ;
261272 }
262273 }
263274
264- private void vibrate ( AlarmType alarmType ) {
275+ private void raiseAlarm ( ALARM_TYPE alarmType ) {
265276 Vibrator v = (Vibrator ) mContext .getSystemService (Context .VIBRATOR_SERVICE );
266277
267- if (!v .hasVibrator ())
268- return ;
269-
270278 long [] pattern = {0 };
279+ Intent intent = new Intent (Constants .ACTION_ALARM_TRIGGERED );
280+ intent .putExtra (Constants .INTENT_EXTRA_ALARM_TYPE , alarmType );
271281
272282 switch (alarmType ) {
273- case speed :
283+ case SPEED :
274284 pattern = new long []{0 , 300 , 150 , 300 , 150 , 500 };
275- mAlarmExecuted = true ;
285+ mSpeedAlarmExecuted = true ;
286+ break ;
287+ case CURRENT :
288+ pattern = new long []{0 , 100 , 100 , 100 , 100 , 100 , 100 , 100 , 100 , 100 , 100 , 100 };
289+ mCurrentAlarmExecuted = true ;
276290 break ;
277291 }
278-
279- v .vibrate (pattern , -1 );
292+ mContext .sendBroadcast (intent );
293+ if (v .hasVibrator () && !mDisablePhoneVibrate )
294+ v .vibrate (pattern , -1 );
280295 }
281296
282297 public void decodeResponse (byte [] data ) {
0 commit comments