Big refactoring: move classes and packages around to get a better structure

- model package contains mostly shared interfaces (UI+service), not named GB*
- impl package contains implementations of those interfaces, named GB*
  the impl classes should not be used by the service (not completely done)
- the service classes should mostly use classes inside the service and deviceevents
  packages (tbd)

Every device now has two packages:
- devices/[device name] for UI related functionality
- service[device name] for lowlevel communication
live-activity-data
cpfeiffer 2015-08-03 23:09:49 +02:00
parent afc4c9efaa
commit 7c597b325a
117 changed files with 487 additions and 376 deletions

View File

@ -30,7 +30,7 @@
android:label="@string/app_name" android:label="@string/app_name"
android:theme="@style/GadgetbridgeTheme"> android:theme="@style/GadgetbridgeTheme">
<activity <activity
android:name=".ControlCenter" android:name=".activities.ControlCenter"
android:label="@string/title_activity_controlcenter"> android:label="@string/title_activity_controlcenter">
<intent-filter> <intent-filter>
<action android:name="android.intent.action.MAIN" /> <action android:name="android.intent.action.MAIN" />
@ -39,32 +39,32 @@
</intent-filter> </intent-filter>
</activity> </activity>
<activity <activity
android:name=".SettingsActivity" android:name=".activities.SettingsActivity"
android:label="@string/title_activity_settings"> android:label="@string/title_activity_settings">
<meta-data <meta-data
android:name="android.support.PARENT_ACTIVITY" android:name="android.support.PARENT_ACTIVITY"
android:value=".ControlCenter" /> android:value=".activities.ControlCenter" />
</activity> </activity>
<activity <activity
android:name=".miband.MiBandPreferencesActivity" android:name=".devices.miband.MiBandPreferencesActivity"
android:label="@string/preferences_miband_settings"> android:label="@string/preferences_miband_settings">
<meta-data <meta-data
android:name="android.support.PARENT_ACTIVITY" android:name="android.support.PARENT_ACTIVITY"
android:value=".SettingsActivity" /> android:value=".activities.SettingsActivity" />
</activity> </activity>
<activity <activity
android:name=".AppManagerActivity" android:name=".activities.AppManagerActivity"
android:label="@string/title_activity_appmanager"> android:label="@string/title_activity_appmanager">
<meta-data <meta-data
android:name="android.support.PARENT_ACTIVITY" android:name="android.support.PARENT_ACTIVITY"
android:value=".ControlCenter" /> android:value=".activities.ControlCenter" />
</activity> </activity>
<activity <activity
android:name=".activities.FwAppInstallerActivity" android:name=".activities.FwAppInstallerActivity"
android:label="@string/title_activity_fw_app_insaller"> android:label="@string/title_activity_fw_app_insaller">
<meta-data <meta-data
android:name="android.support.PARENT_ACTIVITY" android:name="android.support.PARENT_ACTIVITY"
android:value="nodomain.freeyourgadget.gadgetbridge.ControlCenter" /> android:value=".activities.ControlCenter" />
<intent-filter> <intent-filter>
<action android:name="android.intent.action.VIEW" /> <action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.DEFAULT" />
@ -164,7 +164,7 @@
<action android:name="android.service.notification.NotificationListenerService" /> <action android:name="android.service.notification.NotificationListenerService" />
</intent-filter> </intent-filter>
</service> </service>
<service android:name=".BluetoothCommunicationService" /> <service android:name=".service.BluetoothCommunicationService" />
<receiver <receiver
android:name=".externalevents.PhoneCallReceiver" android:name=".externalevents.PhoneCallReceiver"
@ -223,14 +223,14 @@
</intent-filter> </intent-filter>
</receiver> </receiver>
<receiver <receiver
android:name=".GBMusicControlReceiver" android:name=".service.receivers.GBMusicControlReceiver"
android:exported="false"> android:exported="false">
<intent-filter> <intent-filter>
<action android:name="nodomain.freeyourgadget.gadgetbridge.musiccontrol" /> <action android:name="nodomain.freeyourgadget.gadgetbridge.musiccontrol" />
</intent-filter> </intent-filter>
</receiver> </receiver>
<receiver <receiver
android:name=".GBCallControlReceiver" android:name=".service.receivers.GBCallControlReceiver"
android:exported="false"> android:exported="false">
<intent-filter> <intent-filter>
<action android:name="nodomain.freeyourgadget.gadgetbridge.callcontrol" /> <action android:name="nodomain.freeyourgadget.gadgetbridge.callcontrol" />
@ -238,40 +238,40 @@
</receiver> </receiver>
<activity <activity
android:name=".DebugActivity" android:name=".activities.DebugActivity"
android:label="@string/title_activity_debug"> android:label="@string/title_activity_debug">
<meta-data <meta-data
android:name="android.support.PARENT_ACTIVITY" android:name="android.support.PARENT_ACTIVITY"
android:value=".ControlCenter" /> android:value=".activities.ControlCenter" />
</activity> </activity>
<activity <activity
android:name=".discovery.DiscoveryActivity" android:name=".activities.DiscoveryActivity"
android:label="@string/title_activity_discovery"> android:label="@string/title_activity_discovery">
<meta-data <meta-data
android:name="android.support.PARENT_ACTIVITY" android:name="android.support.PARENT_ACTIVITY"
android:value=".ControlCenter" /> android:value=".activities.ControlCenter" />
</activity> </activity>
<activity <activity
android:name=".activities.AndroidPairingActivity" android:name=".activities.AndroidPairingActivity"
android:label="@string/title_activity_android_pairing"></activity> android:label="@string/title_activity_android_pairing"></activity>
<activity <activity
android:name=".miband.MiBandPairingActivity" android:name=".devices.miband.MiBandPairingActivity"
android:label="@string/title_activity_mi_band_pairing"></activity> android:label="@string/title_activity_mi_band_pairing"></activity>
<activity <activity
android:name=".activities.ChartsActivity" android:name=".activities.charts.ChartsActivity"
android:label="@string/title_activity_charts" android:label="@string/title_activity_charts"
android:parentActivityName=".ControlCenter"> android:parentActivityName=".activities.ControlCenter">
<meta-data <meta-data
android:name="android.support.PARENT_ACTIVITY" android:name="android.support.PARENT_ACTIVITY"
android:value="nodomain.freeyourgadget.gadgetbridge.ControlCenter" /> android:value=".activities.ControlCenter" />
</activity> </activity>
<activity <activity
android:name=".activities.ConfigureAlarms" android:name=".activities.ConfigureAlarms"
android:label="@string/title_activity_set_alarm" android:label="@string/title_activity_set_alarm"
android:parentActivityName=".SettingsActivity" > android:parentActivityName=".activities.SettingsActivity" >
<meta-data <meta-data
android:name="android.support.PARENT_ACTIVITY" android:name="android.support.PARENT_ACTIVITY"
android:value="nodomain.freeyourgadget.gadgetbridge.SettingsActivity" /> android:value=".activities.SettingsActivity" />
</activity> </activity>
<activity <activity
android:name=".activities.AlarmDetails" android:name=".activities.AlarmDetails"

View File

@ -8,7 +8,7 @@ import android.view.MenuItem;
import android.widget.CheckBox; import android.widget.CheckBox;
import android.widget.TimePicker; import android.widget.TimePicker;
import nodomain.freeyourgadget.gadgetbridge.GBAlarm; import nodomain.freeyourgadget.gadgetbridge.impl.GBAlarm;
import nodomain.freeyourgadget.gadgetbridge.GBApplication; import nodomain.freeyourgadget.gadgetbridge.GBApplication;
import nodomain.freeyourgadget.gadgetbridge.R; import nodomain.freeyourgadget.gadgetbridge.R;

View File

@ -1,4 +1,4 @@
package nodomain.freeyourgadget.gadgetbridge; package nodomain.freeyourgadget.gadgetbridge.activities;
import android.app.Activity; import android.app.Activity;
import android.content.BroadcastReceiver; import android.content.BroadcastReceiver;
@ -21,7 +21,10 @@ import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.UUID; import java.util.UUID;
import nodomain.freeyourgadget.gadgetbridge.impl.GBDeviceApp;
import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.adapter.GBDeviceAppAdapter; import nodomain.freeyourgadget.gadgetbridge.adapter.GBDeviceAppAdapter;
import nodomain.freeyourgadget.gadgetbridge.service.BluetoothCommunicationService;
public class AppManagerActivity extends Activity { public class AppManagerActivity extends Activity {

View File

@ -11,12 +11,12 @@ import java.util.Arrays;
import java.util.HashSet; import java.util.HashSet;
import java.util.Set; import java.util.Set;
import nodomain.freeyourgadget.gadgetbridge.BluetoothCommunicationService; import nodomain.freeyourgadget.gadgetbridge.service.BluetoothCommunicationService;
import nodomain.freeyourgadget.gadgetbridge.GBAlarm; import nodomain.freeyourgadget.gadgetbridge.impl.GBAlarm;
import nodomain.freeyourgadget.gadgetbridge.R; import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.adapter.GBAlarmListAdapter; import nodomain.freeyourgadget.gadgetbridge.adapter.GBAlarmListAdapter;
import static nodomain.freeyourgadget.gadgetbridge.miband.MiBandConst.PREF_MIBAND_ALARMS; import static nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandConst.PREF_MIBAND_ALARMS;
public class ConfigureAlarms extends ListActivity { public class ConfigureAlarms extends ListActivity {

View File

@ -1,4 +1,4 @@
package nodomain.freeyourgadget.gadgetbridge; package nodomain.freeyourgadget.gadgetbridge.activities;
import android.app.Activity; import android.app.Activity;
import android.app.ProgressDialog; import android.app.ProgressDialog;
@ -29,11 +29,16 @@ import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
import nodomain.freeyourgadget.gadgetbridge.activities.ChartsActivity; import nodomain.freeyourgadget.gadgetbridge.devices.DeviceCoordinator;
import nodomain.freeyourgadget.gadgetbridge.activities.ConfigureAlarms; import nodomain.freeyourgadget.gadgetbridge.util.DeviceHelper;
import nodomain.freeyourgadget.gadgetbridge.model.DeviceType;
import nodomain.freeyourgadget.gadgetbridge.util.GB;
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.activities.charts.ChartsActivity;
import nodomain.freeyourgadget.gadgetbridge.adapter.GBDeviceAdapter; import nodomain.freeyourgadget.gadgetbridge.adapter.GBDeviceAdapter;
import nodomain.freeyourgadget.gadgetbridge.discovery.DiscoveryActivity; import nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandConst;
import nodomain.freeyourgadget.gadgetbridge.miband.MiBandConst; import nodomain.freeyourgadget.gadgetbridge.service.BluetoothCommunicationService;
public class ControlCenter extends Activity { public class ControlCenter extends Activity {

View File

@ -1,4 +1,4 @@
package nodomain.freeyourgadget.gadgetbridge; package nodomain.freeyourgadget.gadgetbridge.activities;
import android.app.Activity; import android.app.Activity;
import android.app.NotificationManager; import android.app.NotificationManager;
@ -21,8 +21,13 @@ import org.slf4j.LoggerFactory;
import java.io.File; import java.io.File;
import nodomain.freeyourgadget.gadgetbridge.util.GB;
import nodomain.freeyourgadget.gadgetbridge.GBApplication;
import nodomain.freeyourgadget.gadgetbridge.model.ServiceCommand;
import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.database.DBHandler; import nodomain.freeyourgadget.gadgetbridge.database.DBHandler;
import nodomain.freeyourgadget.gadgetbridge.database.DBHelper; import nodomain.freeyourgadget.gadgetbridge.database.DBHelper;
import nodomain.freeyourgadget.gadgetbridge.service.BluetoothCommunicationService;
import nodomain.freeyourgadget.gadgetbridge.util.FileUtils; import nodomain.freeyourgadget.gadgetbridge.util.FileUtils;
@ -92,7 +97,7 @@ public class DebugActivity extends Activity {
Intent startIntent = new Intent(DebugActivity.this, BluetoothCommunicationService.class); Intent startIntent = new Intent(DebugActivity.this, BluetoothCommunicationService.class);
startIntent.setAction(BluetoothCommunicationService.ACTION_CALLSTATE); startIntent.setAction(BluetoothCommunicationService.ACTION_CALLSTATE);
startIntent.putExtra("call_phonenumber", editContent.getText().toString()); startIntent.putExtra("call_phonenumber", editContent.getText().toString());
startIntent.putExtra("call_command", GBCommand.CALL_INCOMING.ordinal()); startIntent.putExtra("call_command", ServiceCommand.CALL_INCOMING.ordinal());
startService(startIntent); startService(startIntent);
} }
}); });
@ -103,7 +108,7 @@ public class DebugActivity extends Activity {
Intent startIntent = new Intent(DebugActivity.this, BluetoothCommunicationService.class); Intent startIntent = new Intent(DebugActivity.this, BluetoothCommunicationService.class);
startIntent.setAction(BluetoothCommunicationService.ACTION_CALLSTATE); startIntent.setAction(BluetoothCommunicationService.ACTION_CALLSTATE);
startIntent.putExtra("call_phonenumber", editContent.getText().toString()); startIntent.putExtra("call_phonenumber", editContent.getText().toString());
startIntent.putExtra("call_command", GBCommand.CALL_OUTGOING.ordinal()); startIntent.putExtra("call_command", ServiceCommand.CALL_OUTGOING.ordinal());
startService(startIntent); startService(startIntent);
} }
}); });
@ -114,7 +119,7 @@ public class DebugActivity extends Activity {
public void onClick(View v) { public void onClick(View v) {
Intent startIntent = new Intent(DebugActivity.this, BluetoothCommunicationService.class); Intent startIntent = new Intent(DebugActivity.this, BluetoothCommunicationService.class);
startIntent.setAction(BluetoothCommunicationService.ACTION_CALLSTATE); startIntent.setAction(BluetoothCommunicationService.ACTION_CALLSTATE);
startIntent.putExtra("call_command", GBCommand.CALL_START.ordinal()); startIntent.putExtra("call_command", ServiceCommand.CALL_START.ordinal());
startService(startIntent); startService(startIntent);
} }
}); });
@ -124,7 +129,7 @@ public class DebugActivity extends Activity {
public void onClick(View v) { public void onClick(View v) {
Intent startIntent = new Intent(DebugActivity.this, BluetoothCommunicationService.class); Intent startIntent = new Intent(DebugActivity.this, BluetoothCommunicationService.class);
startIntent.setAction(BluetoothCommunicationService.ACTION_CALLSTATE); startIntent.setAction(BluetoothCommunicationService.ACTION_CALLSTATE);
startIntent.putExtra("call_command", GBCommand.CALL_END.ordinal()); startIntent.putExtra("call_command", ServiceCommand.CALL_END.ordinal());
startService(startIntent); startService(startIntent);
} }
}); });

View File

@ -1,4 +1,4 @@
package nodomain.freeyourgadget.gadgetbridge.discovery; package nodomain.freeyourgadget.gadgetbridge.activities;
import android.app.Activity; import android.app.Activity;
import android.bluetooth.BluetoothAdapter; import android.bluetooth.BluetoothAdapter;
@ -24,10 +24,11 @@ import org.slf4j.LoggerFactory;
import java.util.ArrayList; import java.util.ArrayList;
import nodomain.freeyourgadget.gadgetbridge.DeviceCoordinator; import nodomain.freeyourgadget.gadgetbridge.devices.DeviceCoordinator;
import nodomain.freeyourgadget.gadgetbridge.DeviceHelper; import nodomain.freeyourgadget.gadgetbridge.impl.GBDeviceCandidate;
import nodomain.freeyourgadget.gadgetbridge.GB; import nodomain.freeyourgadget.gadgetbridge.util.DeviceHelper;
import nodomain.freeyourgadget.gadgetbridge.GBDevice; import nodomain.freeyourgadget.gadgetbridge.util.GB;
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
import nodomain.freeyourgadget.gadgetbridge.R; import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.adapter.DeviceCandidateAdapter; import nodomain.freeyourgadget.gadgetbridge.adapter.DeviceCandidateAdapter;
@ -93,7 +94,7 @@ public class DiscoveryActivity extends Activity implements AdapterView.OnItemCli
private ProgressBar progressView; private ProgressBar progressView;
private BluetoothAdapter adapter; private BluetoothAdapter adapter;
private ArrayList<DeviceCandidate> deviceCandidates = new ArrayList<>(); private ArrayList<GBDeviceCandidate> deviceCandidates = new ArrayList<>();
private DeviceCandidateAdapter cadidateListAdapter; private DeviceCandidateAdapter cadidateListAdapter;
private Button startButton; private Button startButton;
private Scanning isScanning = Scanning.SCANNING_OFF; private Scanning isScanning = Scanning.SCANNING_OFF;
@ -153,7 +154,7 @@ public class DiscoveryActivity extends Activity implements AdapterView.OnItemCli
if (restoredCandidates != null) { if (restoredCandidates != null) {
deviceCandidates.clear(); deviceCandidates.clear();
for (Parcelable p : restoredCandidates) { for (Parcelable p : restoredCandidates) {
deviceCandidates.add((DeviceCandidate) p); deviceCandidates.add((GBDeviceCandidate) p);
} }
} }
} }
@ -174,7 +175,7 @@ public class DiscoveryActivity extends Activity implements AdapterView.OnItemCli
} }
private void handleDeviceFound(BluetoothDevice device, short rssi) { private void handleDeviceFound(BluetoothDevice device, short rssi) {
DeviceCandidate candidate = new DeviceCandidate(device, rssi); GBDeviceCandidate candidate = new GBDeviceCandidate(device, rssi);
if (DeviceHelper.getInstance().isSupported(candidate)) { if (DeviceHelper.getInstance().isSupported(candidate)) {
int index = deviceCandidates.indexOf(candidate); int index = deviceCandidates.indexOf(candidate);
if (index >= 0) { if (index >= 0) {
@ -314,7 +315,7 @@ public class DiscoveryActivity extends Activity implements AdapterView.OnItemCli
@Override @Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) { public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
DeviceCandidate deviceCandidate = deviceCandidates.get(position); GBDeviceCandidate deviceCandidate = deviceCandidates.get(position);
if (deviceCandidate == null) { if (deviceCandidate == null) {
LOG.error("Device candidate clicked, but item not found"); LOG.error("Device candidate clicked, but item not found");
return; return;

View File

@ -17,14 +17,13 @@ import android.widget.TextView;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import nodomain.freeyourgadget.gadgetbridge.BluetoothCommunicationService; import nodomain.freeyourgadget.gadgetbridge.service.BluetoothCommunicationService;
import nodomain.freeyourgadget.gadgetbridge.ControlCenter; import nodomain.freeyourgadget.gadgetbridge.model.DeviceType;
import nodomain.freeyourgadget.gadgetbridge.DeviceType; import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
import nodomain.freeyourgadget.gadgetbridge.GBDevice; import nodomain.freeyourgadget.gadgetbridge.impl.GBDeviceApp;
import nodomain.freeyourgadget.gadgetbridge.GBDeviceApp;
import nodomain.freeyourgadget.gadgetbridge.R; import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.miband.MiBandFWHelper; import nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandFWHelper;
import nodomain.freeyourgadget.gadgetbridge.pebble.PBWReader; import nodomain.freeyourgadget.gadgetbridge.devices.pebble.PBWReader;
public class FwAppInstallerActivity extends Activity { public class FwAppInstallerActivity extends Activity {

View File

@ -1,11 +1,11 @@
package nodomain.freeyourgadget.gadgetbridge; package nodomain.freeyourgadget.gadgetbridge.activities;
import android.content.Intent; import android.content.Intent;
import android.os.Bundle; import android.os.Bundle;
import android.preference.Preference; import android.preference.Preference;
import nodomain.freeyourgadget.gadgetbridge.activities.AbstractSettingsActivity; import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.miband.MiBandPreferencesActivity; import nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandPreferencesActivity;
public class SettingsActivity extends AbstractSettingsActivity { public class SettingsActivity extends AbstractSettingsActivity {
@Override @Override

View File

@ -1,4 +1,4 @@
package nodomain.freeyourgadget.gadgetbridge.activities; package nodomain.freeyourgadget.gadgetbridge.activities.charts;
import android.content.Context; import android.content.Context;
import android.graphics.Color; import android.graphics.Color;
@ -20,16 +20,15 @@ import java.util.Date;
import java.util.GregorianCalendar; import java.util.GregorianCalendar;
import java.util.List; import java.util.List;
import nodomain.freeyourgadget.gadgetbridge.DeviceCoordinator; import nodomain.freeyourgadget.gadgetbridge.devices.DeviceCoordinator;
import nodomain.freeyourgadget.gadgetbridge.DeviceHelper; import nodomain.freeyourgadget.gadgetbridge.util.DeviceHelper;
import nodomain.freeyourgadget.gadgetbridge.GBDevice; import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
import nodomain.freeyourgadget.gadgetbridge.R; import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.charts.ActivityKind; import nodomain.freeyourgadget.gadgetbridge.model.ActivityKind;
import nodomain.freeyourgadget.gadgetbridge.charts.SleepUtils;
import nodomain.freeyourgadget.gadgetbridge.database.DBAccess; import nodomain.freeyourgadget.gadgetbridge.database.DBAccess;
import nodomain.freeyourgadget.gadgetbridge.database.DBHandler; import nodomain.freeyourgadget.gadgetbridge.database.DBHandler;
import nodomain.freeyourgadget.gadgetbridge.model.ActivitySample; import nodomain.freeyourgadget.gadgetbridge.model.ActivitySample;
import nodomain.freeyourgadget.gadgetbridge.model.SampleProvider; import nodomain.freeyourgadget.gadgetbridge.devices.SampleProvider;
public abstract class AbstractChartFragment extends Fragment { public abstract class AbstractChartFragment extends Fragment {
private static final Logger LOG = LoggerFactory.getLogger(ActivitySleepChartFragment.class); private static final Logger LOG = LoggerFactory.getLogger(ActivitySleepChartFragment.class);
@ -61,11 +60,11 @@ public abstract class AbstractChartFragment extends Fragment {
protected Integer getColorFor(int activityKind) { protected Integer getColorFor(int activityKind) {
switch (activityKind) { switch (activityKind) {
case nodomain.freeyourgadget.gadgetbridge.charts.ActivityKind.TYPE_DEEP_SLEEP: case ActivityKind.TYPE_DEEP_SLEEP:
return akDeepSleep.color; return akDeepSleep.color;
case nodomain.freeyourgadget.gadgetbridge.charts.ActivityKind.TYPE_LIGHT_SLEEP: case ActivityKind.TYPE_LIGHT_SLEEP:
return akLightSleep.color; return akLightSleep.color;
case nodomain.freeyourgadget.gadgetbridge.charts.ActivityKind.TYPE_ACTIVITY: case ActivityKind.TYPE_ACTIVITY:
return akActivity.color; return akActivity.color;
} }
return akActivity.color; return akActivity.color;

View File

@ -1,7 +1,10 @@
package nodomain.freeyourgadget.gadgetbridge.charts; package nodomain.freeyourgadget.gadgetbridge.activities.charts;
import java.util.List; import java.util.List;
import nodomain.freeyourgadget.gadgetbridge.model.ActivityAmount;
import nodomain.freeyourgadget.gadgetbridge.model.ActivityAmounts;
import nodomain.freeyourgadget.gadgetbridge.model.ActivityKind;
import nodomain.freeyourgadget.gadgetbridge.model.ActivitySample; import nodomain.freeyourgadget.gadgetbridge.model.ActivitySample;
public class ActivityAnalysis { public class ActivityAnalysis {

View File

@ -1,4 +1,4 @@
package nodomain.freeyourgadget.gadgetbridge.activities; package nodomain.freeyourgadget.gadgetbridge.activities.charts;
import android.content.BroadcastReceiver; import android.content.BroadcastReceiver;
import android.content.Context; import android.content.Context;
@ -22,9 +22,9 @@ import org.slf4j.LoggerFactory;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import nodomain.freeyourgadget.gadgetbridge.ControlCenter; import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
import nodomain.freeyourgadget.gadgetbridge.GBDevice;
import nodomain.freeyourgadget.gadgetbridge.R; import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.activities.ControlCenter;
import nodomain.freeyourgadget.gadgetbridge.database.DBHandler; import nodomain.freeyourgadget.gadgetbridge.database.DBHandler;
import nodomain.freeyourgadget.gadgetbridge.model.ActivitySample; import nodomain.freeyourgadget.gadgetbridge.model.ActivitySample;

View File

@ -1,4 +1,4 @@
package nodomain.freeyourgadget.gadgetbridge.activities; package nodomain.freeyourgadget.gadgetbridge.activities.charts;
import android.content.BroadcastReceiver; import android.content.BroadcastReceiver;
import android.content.Context; import android.content.Context;
@ -22,9 +22,9 @@ import org.slf4j.LoggerFactory;
import java.util.Locale; import java.util.Locale;
import nodomain.freeyourgadget.gadgetbridge.BluetoothCommunicationService; import nodomain.freeyourgadget.gadgetbridge.activities.ControlCenter;
import nodomain.freeyourgadget.gadgetbridge.ControlCenter; import nodomain.freeyourgadget.gadgetbridge.service.BluetoothCommunicationService;
import nodomain.freeyourgadget.gadgetbridge.GBDevice; import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
import nodomain.freeyourgadget.gadgetbridge.R; import nodomain.freeyourgadget.gadgetbridge.R;
public class ChartsActivity extends FragmentActivity { public class ChartsActivity extends FragmentActivity {

View File

@ -1,4 +1,4 @@
package nodomain.freeyourgadget.gadgetbridge.charts; package nodomain.freeyourgadget.gadgetbridge.activities.charts;
import android.content.Context; import android.content.Context;
import android.util.AttributeSet; import android.util.AttributeSet;

View File

@ -1,4 +1,4 @@
package nodomain.freeyourgadget.gadgetbridge.charts; package nodomain.freeyourgadget.gadgetbridge.activities.charts;
import android.graphics.Typeface; import android.graphics.Typeface;

View File

@ -1,4 +1,4 @@
package nodomain.freeyourgadget.gadgetbridge.activities; package nodomain.freeyourgadget.gadgetbridge.activities.charts;
import android.content.BroadcastReceiver; import android.content.BroadcastReceiver;
import android.content.Context; import android.content.Context;
@ -28,13 +28,12 @@ import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import nodomain.freeyourgadget.gadgetbridge.ControlCenter; import nodomain.freeyourgadget.gadgetbridge.util.GB;
import nodomain.freeyourgadget.gadgetbridge.GB; import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
import nodomain.freeyourgadget.gadgetbridge.GBDevice;
import nodomain.freeyourgadget.gadgetbridge.R; import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.charts.ActivityAmount; import nodomain.freeyourgadget.gadgetbridge.activities.ControlCenter;
import nodomain.freeyourgadget.gadgetbridge.charts.ActivityAmounts; import nodomain.freeyourgadget.gadgetbridge.model.ActivityAmount;
import nodomain.freeyourgadget.gadgetbridge.charts.ActivityAnalysis; import nodomain.freeyourgadget.gadgetbridge.model.ActivityAmounts;
import nodomain.freeyourgadget.gadgetbridge.database.DBHandler; import nodomain.freeyourgadget.gadgetbridge.database.DBHandler;
import nodomain.freeyourgadget.gadgetbridge.model.ActivitySample; import nodomain.freeyourgadget.gadgetbridge.model.ActivitySample;

View File

@ -1,4 +1,6 @@
package nodomain.freeyourgadget.gadgetbridge.charts; package nodomain.freeyourgadget.gadgetbridge.activities.charts;
import nodomain.freeyourgadget.gadgetbridge.model.ActivityKind;
public class SleepUtils { public class SleepUtils {
public static final float Y_VALUE_DEEP_SLEEP = 0.01f; public static final float Y_VALUE_DEEP_SLEEP = 0.01f;

View File

@ -1,4 +1,4 @@
package nodomain.freeyourgadget.gadgetbridge.activities; package nodomain.freeyourgadget.gadgetbridge.activities.charts;
import android.content.BroadcastReceiver; import android.content.BroadcastReceiver;
import android.content.Context; import android.content.Context;
@ -33,12 +33,11 @@ import java.util.Calendar;
import java.util.List; import java.util.List;
import java.util.Locale; import java.util.Locale;
import nodomain.freeyourgadget.gadgetbridge.ControlCenter; import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
import nodomain.freeyourgadget.gadgetbridge.GBDevice;
import nodomain.freeyourgadget.gadgetbridge.R; import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.charts.ActivityAnalysis; import nodomain.freeyourgadget.gadgetbridge.activities.ControlCenter;
import nodomain.freeyourgadget.gadgetbridge.database.DBHandler; import nodomain.freeyourgadget.gadgetbridge.database.DBHandler;
import nodomain.freeyourgadget.gadgetbridge.miband.MiBandCoordinator; import nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandCoordinator;
import nodomain.freeyourgadget.gadgetbridge.model.ActivitySample; import nodomain.freeyourgadget.gadgetbridge.model.ActivitySample;

View File

@ -10,16 +10,16 @@ import android.widget.TextView;
import java.util.List; import java.util.List;
import nodomain.freeyourgadget.gadgetbridge.GB; import nodomain.freeyourgadget.gadgetbridge.util.GB;
import nodomain.freeyourgadget.gadgetbridge.GBDevice; import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
import nodomain.freeyourgadget.gadgetbridge.R; import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.discovery.DeviceCandidate; import nodomain.freeyourgadget.gadgetbridge.impl.GBDeviceCandidate;
public class DeviceCandidateAdapter extends ArrayAdapter<DeviceCandidate> { public class DeviceCandidateAdapter extends ArrayAdapter<GBDeviceCandidate> {
private final Context context; private final Context context;
public DeviceCandidateAdapter(Context context, List<DeviceCandidate> deviceCandidates) { public DeviceCandidateAdapter(Context context, List<GBDeviceCandidate> deviceCandidates) {
super(context, 0, deviceCandidates); super(context, 0, deviceCandidates);
this.context = context; this.context = context;
@ -27,7 +27,7 @@ public class DeviceCandidateAdapter extends ArrayAdapter<DeviceCandidate> {
@Override @Override
public View getView(int position, View view, ViewGroup parent) { public View getView(int position, View view, ViewGroup parent) {
DeviceCandidate device = getItem(position); GBDeviceCandidate device = getItem(position);
if (view == null) { if (view == null) {
LayoutInflater inflater = (LayoutInflater) context LayoutInflater inflater = (LayoutInflater) context
@ -57,7 +57,7 @@ public class DeviceCandidateAdapter extends ArrayAdapter<DeviceCandidate> {
return view; return view;
} }
private String formatDeviceCandidate(DeviceCandidate device) { private String formatDeviceCandidate(GBDeviceCandidate device) {
if (device.getRssi() > GBDevice.RSSI_UNKNOWN) { if (device.getRssi() > GBDevice.RSSI_UNKNOWN) {
return context.getString(R.string.device_with_rssi, device.getName(), GB.formatRssi(device.getRssi())); return context.getString(R.string.device_with_rssi, device.getName(), GB.formatRssi(device.getRssi()));
} }

View File

@ -15,9 +15,10 @@ import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.Set; import java.util.Set;
import nodomain.freeyourgadget.gadgetbridge.GBAlarm; import nodomain.freeyourgadget.gadgetbridge.impl.GBAlarm;
import nodomain.freeyourgadget.gadgetbridge.R; import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.activities.ConfigureAlarms; import nodomain.freeyourgadget.gadgetbridge.activities.ConfigureAlarms;
import nodomain.freeyourgadget.gadgetbridge.model.Alarm;
public class GBAlarmListAdapter extends ArrayAdapter<GBAlarm> { public class GBAlarmListAdapter extends ArrayAdapter<GBAlarm> {
@ -109,13 +110,13 @@ public class GBAlarmListAdapter extends ArrayAdapter<GBAlarm> {
Switch isEnabled = (Switch) view.findViewById(R.id.alarm_item_toggle); Switch isEnabled = (Switch) view.findViewById(R.id.alarm_item_toggle);
TextView isSmartWakeup = (TextView) view.findViewById(R.id.alarm_smart_wakeup); TextView isSmartWakeup = (TextView) view.findViewById(R.id.alarm_smart_wakeup);
highlightDay((TextView) view.findViewById(R.id.alarm_item_sunday), alarm.getRepetition(GBAlarm.ALARM_SUN)); highlightDay((TextView) view.findViewById(R.id.alarm_item_sunday), alarm.getRepetition(Alarm.ALARM_SUN));
highlightDay((TextView) view.findViewById(R.id.alarm_item_monday), alarm.getRepetition(GBAlarm.ALARM_MON)); highlightDay((TextView) view.findViewById(R.id.alarm_item_monday), alarm.getRepetition(Alarm.ALARM_MON));
highlightDay((TextView) view.findViewById(R.id.alarm_item_tuesday), alarm.getRepetition(GBAlarm.ALARM_TUE)); highlightDay((TextView) view.findViewById(R.id.alarm_item_tuesday), alarm.getRepetition(Alarm.ALARM_TUE));
highlightDay((TextView) view.findViewById(R.id.alarm_item_wednesday), alarm.getRepetition(GBAlarm.ALARM_WED)); highlightDay((TextView) view.findViewById(R.id.alarm_item_wednesday), alarm.getRepetition(Alarm.ALARM_WED));
highlightDay((TextView) view.findViewById(R.id.alarm_item_thursday), alarm.getRepetition(GBAlarm.ALARM_THU)); highlightDay((TextView) view.findViewById(R.id.alarm_item_thursday), alarm.getRepetition(Alarm.ALARM_THU));
highlightDay((TextView) view.findViewById(R.id.alarm_item_friday), alarm.getRepetition(GBAlarm.ALARM_FRI)); highlightDay((TextView) view.findViewById(R.id.alarm_item_friday), alarm.getRepetition(Alarm.ALARM_FRI));
highlightDay((TextView) view.findViewById(R.id.alarm_item_saturday), alarm.getRepetition(GBAlarm.ALARM_SAT)); highlightDay((TextView) view.findViewById(R.id.alarm_item_saturday), alarm.getRepetition(Alarm.ALARM_SAT));
isEnabled.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { isEnabled.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override @Override

View File

@ -11,7 +11,7 @@ import android.widget.TextView;
import java.util.List; import java.util.List;
import nodomain.freeyourgadget.gadgetbridge.GBDevice; import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
import nodomain.freeyourgadget.gadgetbridge.R; import nodomain.freeyourgadget.gadgetbridge.R;
public class GBDeviceAdapter extends ArrayAdapter<GBDevice> { public class GBDeviceAdapter extends ArrayAdapter<GBDevice> {

View File

@ -10,7 +10,7 @@ import android.widget.TextView;
import java.util.List; import java.util.List;
import nodomain.freeyourgadget.gadgetbridge.GBDeviceApp; import nodomain.freeyourgadget.gadgetbridge.impl.GBDeviceApp;
import nodomain.freeyourgadget.gadgetbridge.R; import nodomain.freeyourgadget.gadgetbridge.R;
public class GBDeviceAppAdapter extends ArrayAdapter<GBDeviceApp> { public class GBDeviceAppAdapter extends ArrayAdapter<GBDeviceApp> {

View File

@ -12,13 +12,13 @@ import org.slf4j.LoggerFactory;
import java.util.ArrayList; import java.util.ArrayList;
import nodomain.freeyourgadget.gadgetbridge.GB; import nodomain.freeyourgadget.gadgetbridge.util.GB;
import nodomain.freeyourgadget.gadgetbridge.GBActivitySample; import nodomain.freeyourgadget.gadgetbridge.impl.GBActivitySample;
import nodomain.freeyourgadget.gadgetbridge.GBApplication; import nodomain.freeyourgadget.gadgetbridge.GBApplication;
import nodomain.freeyourgadget.gadgetbridge.charts.ActivityKind; import nodomain.freeyourgadget.gadgetbridge.model.ActivityKind;
import nodomain.freeyourgadget.gadgetbridge.database.schema.ActivityDBCreationScript; import nodomain.freeyourgadget.gadgetbridge.database.schema.ActivityDBCreationScript;
import nodomain.freeyourgadget.gadgetbridge.model.ActivitySample; import nodomain.freeyourgadget.gadgetbridge.model.ActivitySample;
import nodomain.freeyourgadget.gadgetbridge.model.SampleProvider; import nodomain.freeyourgadget.gadgetbridge.devices.SampleProvider;
import static nodomain.freeyourgadget.gadgetbridge.database.DBConstants.DATABASE_NAME; import static nodomain.freeyourgadget.gadgetbridge.database.DBConstants.DATABASE_NAME;
import static nodomain.freeyourgadget.gadgetbridge.database.DBConstants.KEY_INTENSITY; import static nodomain.freeyourgadget.gadgetbridge.database.DBConstants.KEY_INTENSITY;

View File

@ -4,7 +4,7 @@ import android.content.Context;
import android.os.AsyncTask; import android.os.AsyncTask;
import android.widget.Toast; import android.widget.Toast;
import nodomain.freeyourgadget.gadgetbridge.GB; import nodomain.freeyourgadget.gadgetbridge.util.GB;
import nodomain.freeyourgadget.gadgetbridge.GBApplication; import nodomain.freeyourgadget.gadgetbridge.GBApplication;
import nodomain.freeyourgadget.gadgetbridge.R; import nodomain.freeyourgadget.gadgetbridge.R;

View File

@ -7,7 +7,7 @@ import java.util.List;
import nodomain.freeyourgadget.gadgetbridge.GBApplication; import nodomain.freeyourgadget.gadgetbridge.GBApplication;
import nodomain.freeyourgadget.gadgetbridge.model.ActivitySample; import nodomain.freeyourgadget.gadgetbridge.model.ActivitySample;
import nodomain.freeyourgadget.gadgetbridge.model.SampleProvider; import nodomain.freeyourgadget.gadgetbridge.devices.SampleProvider;
public interface DBHandler { public interface DBHandler {
public SQLiteOpenHelper getHelper(); public SQLiteOpenHelper getHelper();

View File

@ -1,6 +1,6 @@
package nodomain.freeyourgadget.gadgetbridge.deviceevents; package nodomain.freeyourgadget.gadgetbridge.deviceevents;
import nodomain.freeyourgadget.gadgetbridge.GBDeviceApp; import nodomain.freeyourgadget.gadgetbridge.impl.GBDeviceApp;
public class GBDeviceEventAppInfo extends GBDeviceEvent { public class GBDeviceEventAppInfo extends GBDeviceEvent {
public GBDeviceApp apps[]; public GBDeviceApp apps[];

View File

@ -1,14 +1,15 @@
package nodomain.freeyourgadget.gadgetbridge; package nodomain.freeyourgadget.gadgetbridge.devices;
import android.app.Activity; import android.app.Activity;
import nodomain.freeyourgadget.gadgetbridge.discovery.DeviceCandidate; import nodomain.freeyourgadget.gadgetbridge.model.DeviceType;
import nodomain.freeyourgadget.gadgetbridge.model.SampleProvider; import nodomain.freeyourgadget.gadgetbridge.impl.GBDeviceCandidate;
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
public interface DeviceCoordinator { public interface DeviceCoordinator {
String EXTRA_DEVICE_MAC_ADDRESS = "nodomain.freeyourgadget.gadgetbridge.discovery.DeviceCandidate.EXTRA_MAC_ADDRESS"; String EXTRA_DEVICE_MAC_ADDRESS = "nodomain.freeyourgadget.gadgetbridge.impl.GBDeviceCandidate.EXTRA_MAC_ADDRESS";
boolean supports(DeviceCandidate candidate); boolean supports(GBDeviceCandidate candidate);
boolean supports(GBDevice device); boolean supports(GBDevice device);

View File

@ -1,10 +1,13 @@
package nodomain.freeyourgadget.gadgetbridge; package nodomain.freeyourgadget.gadgetbridge.devices;
import android.net.Uri; import android.net.Uri;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.UUID; import java.util.UUID;
import nodomain.freeyourgadget.gadgetbridge.model.ServiceCommand;
import nodomain.freeyourgadget.gadgetbridge.model.Alarm;
/** /**
* Specifies all events that GadgetBridge intends to send to the gadget device. * Specifies all events that GadgetBridge intends to send to the gadget device.
* Implementations can decide to ignore events that they do not support. * Implementations can decide to ignore events that they do not support.
@ -19,9 +22,9 @@ public interface EventHandler {
void onSetTime(long ts); void onSetTime(long ts);
void onSetAlarms(ArrayList<GBAlarm> alarms); void onSetAlarms(ArrayList<Alarm> alarms);
void onSetCallState(String number, String name, GBCommand command); void onSetCallState(String number, String name, ServiceCommand command);
void onSetMusicInfo(String artist, String album, String track); void onSetMusicInfo(String artist, String album, String track);

View File

@ -1,4 +1,4 @@
package nodomain.freeyourgadget.gadgetbridge.model; package nodomain.freeyourgadget.gadgetbridge.devices;
public interface SampleProvider { public interface SampleProvider {
public static final byte PROVIDER_MIBAND = 0; public static final byte PROVIDER_MIBAND = 0;

View File

@ -1,10 +1,12 @@
package nodomain.freeyourgadget.gadgetbridge; package nodomain.freeyourgadget.gadgetbridge.devices;
import android.app.Activity; import android.app.Activity;
import nodomain.freeyourgadget.gadgetbridge.charts.ActivityKind; import nodomain.freeyourgadget.gadgetbridge.model.DeviceType;
import nodomain.freeyourgadget.gadgetbridge.discovery.DeviceCandidate; import nodomain.freeyourgadget.gadgetbridge.activities.ControlCenter;
import nodomain.freeyourgadget.gadgetbridge.model.SampleProvider; import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
import nodomain.freeyourgadget.gadgetbridge.model.ActivityKind;
import nodomain.freeyourgadget.gadgetbridge.impl.GBDeviceCandidate;
public class UnknownDeviceCoordinator implements DeviceCoordinator { public class UnknownDeviceCoordinator implements DeviceCoordinator {
private final UnknownSampleProvider sampleProvider; private final UnknownSampleProvider sampleProvider;
@ -27,7 +29,7 @@ public class UnknownDeviceCoordinator implements DeviceCoordinator {
@Override @Override
public byte getID() { public byte getID() {
return SampleProvider.PROVIDER_UNKNOWN; return PROVIDER_UNKNOWN;
} }
} }
@ -36,7 +38,7 @@ public class UnknownDeviceCoordinator implements DeviceCoordinator {
} }
@Override @Override
public boolean supports(DeviceCandidate candidate) { public boolean supports(GBDeviceCandidate candidate) {
return false; return false;
} }

View File

@ -1,4 +1,4 @@
package nodomain.freeyourgadget.gadgetbridge.miband; package nodomain.freeyourgadget.gadgetbridge.devices.miband;
import android.content.SharedPreferences; import android.content.SharedPreferences;

View File

@ -1,4 +1,4 @@
package nodomain.freeyourgadget.gadgetbridge.miband; package nodomain.freeyourgadget.gadgetbridge.devices.miband;
import android.app.Activity; import android.app.Activity;
import android.content.SharedPreferences; import android.content.SharedPreferences;
@ -9,13 +9,13 @@ import org.slf4j.LoggerFactory;
import java.util.Calendar; import java.util.Calendar;
import nodomain.freeyourgadget.gadgetbridge.DeviceCoordinator; import nodomain.freeyourgadget.gadgetbridge.devices.DeviceCoordinator;
import nodomain.freeyourgadget.gadgetbridge.DeviceType; import nodomain.freeyourgadget.gadgetbridge.model.DeviceType;
import nodomain.freeyourgadget.gadgetbridge.GBApplication; import nodomain.freeyourgadget.gadgetbridge.GBApplication;
import nodomain.freeyourgadget.gadgetbridge.GBDevice; import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
import nodomain.freeyourgadget.gadgetbridge.activities.ChartsActivity; import nodomain.freeyourgadget.gadgetbridge.activities.charts.ChartsActivity;
import nodomain.freeyourgadget.gadgetbridge.discovery.DeviceCandidate; import nodomain.freeyourgadget.gadgetbridge.impl.GBDeviceCandidate;
import nodomain.freeyourgadget.gadgetbridge.model.SampleProvider; import nodomain.freeyourgadget.gadgetbridge.devices.SampleProvider;
public class MiBandCoordinator implements DeviceCoordinator { public class MiBandCoordinator implements DeviceCoordinator {
private static final Logger LOG = LoggerFactory.getLogger(MiBandCoordinator.class); private static final Logger LOG = LoggerFactory.getLogger(MiBandCoordinator.class);
@ -26,7 +26,7 @@ public class MiBandCoordinator implements DeviceCoordinator {
} }
@Override @Override
public boolean supports(DeviceCandidate candidate) { public boolean supports(GBDeviceCandidate candidate) {
return candidate.getMacAddress().toUpperCase().startsWith(MiBandService.MAC_ADDRESS_FILTER); return candidate.getMacAddress().toUpperCase().startsWith(MiBandService.MAC_ADDRESS_FILTER);
} }

View File

@ -1,4 +1,4 @@
package nodomain.freeyourgadget.gadgetbridge.miband; package nodomain.freeyourgadget.gadgetbridge.devices.miband;
import android.content.ContentResolver; import android.content.ContentResolver;
import android.content.Context; import android.content.Context;

View File

@ -1,4 +1,4 @@
package nodomain.freeyourgadget.gadgetbridge.miband; package nodomain.freeyourgadget.gadgetbridge.devices.miband;
import android.bluetooth.BluetoothGatt; import android.bluetooth.BluetoothGatt;
import android.bluetooth.BluetoothGattCallback; import android.bluetooth.BluetoothGattCallback;
@ -8,8 +8,8 @@ import android.bluetooth.BluetoothGattDescriptor;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import nodomain.freeyourgadget.gadgetbridge.btle.NotifyAction; import nodomain.freeyourgadget.gadgetbridge.service.btle.actions.NotifyAction;
import nodomain.freeyourgadget.gadgetbridge.btle.TransactionBuilder; import nodomain.freeyourgadget.gadgetbridge.service.btle.TransactionBuilder;
/** /**
* Enables or disables notifications for a given GATT characteristic. * Enables or disables notifications for a given GATT characteristic.

View File

@ -1,4 +1,4 @@
package nodomain.freeyourgadget.gadgetbridge.miband; package nodomain.freeyourgadget.gadgetbridge.devices.miband;
import android.app.Activity; import android.app.Activity;
import android.content.BroadcastReceiver; import android.content.BroadcastReceiver;
@ -12,12 +12,12 @@ import android.support.v4.content.LocalBroadcastManager;
import android.widget.TextView; import android.widget.TextView;
import android.widget.Toast; import android.widget.Toast;
import nodomain.freeyourgadget.gadgetbridge.BluetoothCommunicationService; import nodomain.freeyourgadget.gadgetbridge.service.BluetoothCommunicationService;
import nodomain.freeyourgadget.gadgetbridge.ControlCenter; import nodomain.freeyourgadget.gadgetbridge.activities.ControlCenter;
import nodomain.freeyourgadget.gadgetbridge.DeviceCoordinator; import nodomain.freeyourgadget.gadgetbridge.devices.DeviceCoordinator;
import nodomain.freeyourgadget.gadgetbridge.GBDevice; import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
import nodomain.freeyourgadget.gadgetbridge.R; import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.discovery.DiscoveryActivity; import nodomain.freeyourgadget.gadgetbridge.activities.DiscoveryActivity;
public class MiBandPairingActivity extends Activity { public class MiBandPairingActivity extends Activity {

View File

@ -1,30 +1,30 @@
package nodomain.freeyourgadget.gadgetbridge.miband; package nodomain.freeyourgadget.gadgetbridge.devices.miband;
import android.content.Intent; import android.content.Intent;
import android.os.Bundle; import android.os.Bundle;
import android.preference.Preference; import android.preference.Preference;
import android.support.v4.content.LocalBroadcastManager; import android.support.v4.content.LocalBroadcastManager;
import nodomain.freeyourgadget.gadgetbridge.ControlCenter; import nodomain.freeyourgadget.gadgetbridge.activities.ControlCenter;
import nodomain.freeyourgadget.gadgetbridge.R; import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.activities.AbstractSettingsActivity; import nodomain.freeyourgadget.gadgetbridge.activities.AbstractSettingsActivity;
import static nodomain.freeyourgadget.gadgetbridge.miband.MiBandConst.ORIGIN_GENERIC; import static nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandConst.ORIGIN_GENERIC;
import static nodomain.freeyourgadget.gadgetbridge.miband.MiBandConst.ORIGIN_INCOMING_CALL; import static nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandConst.ORIGIN_INCOMING_CALL;
import static nodomain.freeyourgadget.gadgetbridge.miband.MiBandConst.ORIGIN_K9MAIL; import static nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandConst.ORIGIN_K9MAIL;
import static nodomain.freeyourgadget.gadgetbridge.miband.MiBandConst.ORIGIN_PEBBLEMSG; import static nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandConst.ORIGIN_PEBBLEMSG;
import static nodomain.freeyourgadget.gadgetbridge.miband.MiBandConst.ORIGIN_SMS; import static nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandConst.ORIGIN_SMS;
import static nodomain.freeyourgadget.gadgetbridge.miband.MiBandConst.PREF_MIBAND_ADDRESS; import static nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandConst.PREF_MIBAND_ADDRESS;
import static nodomain.freeyourgadget.gadgetbridge.miband.MiBandConst.PREF_MIBAND_FITNESS_GOAL; import static nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandConst.PREF_MIBAND_FITNESS_GOAL;
import static nodomain.freeyourgadget.gadgetbridge.miband.MiBandConst.PREF_MIBAND_WEARSIDE; import static nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandConst.PREF_MIBAND_WEARSIDE;
import static nodomain.freeyourgadget.gadgetbridge.miband.MiBandConst.PREF_USER_ALIAS; import static nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandConst.PREF_USER_ALIAS;
import static nodomain.freeyourgadget.gadgetbridge.miband.MiBandConst.PREF_USER_GENDER; import static nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandConst.PREF_USER_GENDER;
import static nodomain.freeyourgadget.gadgetbridge.miband.MiBandConst.PREF_USER_HEIGHT_CM; import static nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandConst.PREF_USER_HEIGHT_CM;
import static nodomain.freeyourgadget.gadgetbridge.miband.MiBandConst.PREF_USER_WEIGHT_KG; import static nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandConst.PREF_USER_WEIGHT_KG;
import static nodomain.freeyourgadget.gadgetbridge.miband.MiBandConst.PREF_USER_YEAR_OF_BIRTH; import static nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandConst.PREF_USER_YEAR_OF_BIRTH;
import static nodomain.freeyourgadget.gadgetbridge.miband.MiBandConst.VIBRATION_COUNT; import static nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandConst.VIBRATION_COUNT;
import static nodomain.freeyourgadget.gadgetbridge.miband.MiBandConst.VIBRATION_PROFILE; import static nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandConst.VIBRATION_PROFILE;
import static nodomain.freeyourgadget.gadgetbridge.miband.MiBandConst.getNotificationPrefKey; import static nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandConst.getNotificationPrefKey;
public class MiBandPreferencesActivity extends AbstractSettingsActivity { public class MiBandPreferencesActivity extends AbstractSettingsActivity {
@Override @Override

View File

@ -1,7 +1,7 @@
package nodomain.freeyourgadget.gadgetbridge.miband; package nodomain.freeyourgadget.gadgetbridge.devices.miband;
import nodomain.freeyourgadget.gadgetbridge.charts.ActivityKind; import nodomain.freeyourgadget.gadgetbridge.model.ActivityKind;
import nodomain.freeyourgadget.gadgetbridge.model.SampleProvider; import nodomain.freeyourgadget.gadgetbridge.devices.SampleProvider;
public class MiBandSampleProvider implements SampleProvider { public class MiBandSampleProvider implements SampleProvider {
public static final byte TYPE_DEEP_SLEEP = 5; public static final byte TYPE_DEEP_SLEEP = 5;

View File

@ -1,4 +1,4 @@
package nodomain.freeyourgadget.gadgetbridge.miband; package nodomain.freeyourgadget.gadgetbridge.devices.miband;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;

View File

@ -1,12 +1,12 @@
package nodomain.freeyourgadget.gadgetbridge.miband; package nodomain.freeyourgadget.gadgetbridge.devices.miband;
import android.bluetooth.BluetoothGattCharacteristic; import android.bluetooth.BluetoothGattCharacteristic;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import nodomain.freeyourgadget.gadgetbridge.btle.NotifyAction; import nodomain.freeyourgadget.gadgetbridge.service.btle.actions.NotifyAction;
import nodomain.freeyourgadget.gadgetbridge.btle.TransactionBuilder; import nodomain.freeyourgadget.gadgetbridge.service.btle.TransactionBuilder;
public class MiBandTransactionBuilder extends TransactionBuilder { public class MiBandTransactionBuilder extends TransactionBuilder {
private static final Logger LOG = LoggerFactory.getLogger(MiBandTransactionBuilder.class); private static final Logger LOG = LoggerFactory.getLogger(MiBandTransactionBuilder.class);

View File

@ -1,4 +1,4 @@
package nodomain.freeyourgadget.gadgetbridge.miband; package nodomain.freeyourgadget.gadgetbridge.devices.miband;
/** /**
* Created by UgoRaffaele on 30/01/2015. * Created by UgoRaffaele on 30/01/2015.

View File

@ -1,4 +1,4 @@
package nodomain.freeyourgadget.gadgetbridge.miband; package nodomain.freeyourgadget.gadgetbridge.devices.miband;
import android.content.Context; import android.content.Context;

View File

@ -1,7 +1,7 @@
package nodomain.freeyourgadget.gadgetbridge.pebble; package nodomain.freeyourgadget.gadgetbridge.devices.pebble;
import nodomain.freeyourgadget.gadgetbridge.charts.ActivityKind; import nodomain.freeyourgadget.gadgetbridge.model.ActivityKind;
import nodomain.freeyourgadget.gadgetbridge.model.SampleProvider; import nodomain.freeyourgadget.gadgetbridge.devices.SampleProvider;
public class MorpheuzSampleProvider implements SampleProvider { public class MorpheuzSampleProvider implements SampleProvider {
// raw types // raw types

View File

@ -1,4 +1,4 @@
package nodomain.freeyourgadget.gadgetbridge.pebble; package nodomain.freeyourgadget.gadgetbridge.devices.pebble;
import android.content.ContentResolver; import android.content.ContentResolver;
import android.content.Context; import android.content.Context;
@ -21,7 +21,8 @@ import java.util.UUID;
import java.util.zip.ZipEntry; import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream; import java.util.zip.ZipInputStream;
import nodomain.freeyourgadget.gadgetbridge.GBDeviceApp; import nodomain.freeyourgadget.gadgetbridge.impl.GBDeviceApp;
import nodomain.freeyourgadget.gadgetbridge.service.pebble.PebbleProtocol;
public class PBWReader { public class PBWReader {
private static final Logger LOG = LoggerFactory.getLogger(PBWReader.class); private static final Logger LOG = LoggerFactory.getLogger(PBWReader.class);

View File

@ -1,13 +1,13 @@
package nodomain.freeyourgadget.gadgetbridge.pebble; package nodomain.freeyourgadget.gadgetbridge.devices.pebble;
import android.app.Activity; import android.app.Activity;
import nodomain.freeyourgadget.gadgetbridge.AppManagerActivity; import nodomain.freeyourgadget.gadgetbridge.activities.AppManagerActivity;
import nodomain.freeyourgadget.gadgetbridge.DeviceCoordinator; import nodomain.freeyourgadget.gadgetbridge.devices.DeviceCoordinator;
import nodomain.freeyourgadget.gadgetbridge.DeviceType; import nodomain.freeyourgadget.gadgetbridge.impl.GBDeviceCandidate;
import nodomain.freeyourgadget.gadgetbridge.GBDevice; import nodomain.freeyourgadget.gadgetbridge.model.DeviceType;
import nodomain.freeyourgadget.gadgetbridge.discovery.DeviceCandidate; import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
import nodomain.freeyourgadget.gadgetbridge.model.SampleProvider; import nodomain.freeyourgadget.gadgetbridge.devices.SampleProvider;
public class PebbleCoordinator implements DeviceCoordinator { public class PebbleCoordinator implements DeviceCoordinator {
private MorpheuzSampleProvider sampleProvider; private MorpheuzSampleProvider sampleProvider;
@ -18,7 +18,7 @@ public class PebbleCoordinator implements DeviceCoordinator {
} }
@Override @Override
public boolean supports(DeviceCandidate candidate) { public boolean supports(GBDeviceCandidate candidate) {
return candidate.getName().startsWith("Pebble"); return candidate.getName().startsWith("Pebble");
} }

View File

@ -1,6 +1,6 @@
package nodomain.freeyourgadget.gadgetbridge.pebble; package nodomain.freeyourgadget.gadgetbridge.devices.pebble;
import nodomain.freeyourgadget.gadgetbridge.model.SampleProvider; import nodomain.freeyourgadget.gadgetbridge.devices.SampleProvider;
public class PebbleGadgetBridgeSampleProvider extends MorpheuzSampleProvider { public class PebbleGadgetBridgeSampleProvider extends MorpheuzSampleProvider {
public PebbleGadgetBridgeSampleProvider() { public PebbleGadgetBridgeSampleProvider() {

View File

@ -1,4 +1,4 @@
package nodomain.freeyourgadget.gadgetbridge.pebble; package nodomain.freeyourgadget.gadgetbridge.devices.pebble;
public class PebbleInstallable { public class PebbleInstallable {
final private byte type; final private byte type;

View File

@ -8,8 +8,8 @@ import android.content.SharedPreferences;
import android.preference.PreferenceManager; import android.preference.PreferenceManager;
import android.support.v4.content.LocalBroadcastManager; import android.support.v4.content.LocalBroadcastManager;
import nodomain.freeyourgadget.gadgetbridge.BluetoothCommunicationService; import nodomain.freeyourgadget.gadgetbridge.service.BluetoothCommunicationService;
import nodomain.freeyourgadget.gadgetbridge.ControlCenter; import nodomain.freeyourgadget.gadgetbridge.activities.ControlCenter;
public class BluetoothStateChangeReceiver extends BroadcastReceiver { public class BluetoothStateChangeReceiver extends BroadcastReceiver {
@Override @Override

View File

@ -12,7 +12,7 @@ import android.preference.PreferenceManager;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import nodomain.freeyourgadget.gadgetbridge.BluetoothCommunicationService; import nodomain.freeyourgadget.gadgetbridge.service.BluetoothCommunicationService;
public class K9Receiver extends BroadcastReceiver { public class K9Receiver extends BroadcastReceiver {

View File

@ -7,7 +7,7 @@ import android.content.Intent;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import nodomain.freeyourgadget.gadgetbridge.BluetoothCommunicationService; import nodomain.freeyourgadget.gadgetbridge.service.BluetoothCommunicationService;
public class MusicPlaybackReceiver extends BroadcastReceiver { public class MusicPlaybackReceiver extends BroadcastReceiver {
private static final Logger LOG = LoggerFactory.getLogger(MusicPlaybackReceiver.class); private static final Logger LOG = LoggerFactory.getLogger(MusicPlaybackReceiver.class);

View File

@ -17,7 +17,7 @@ import android.support.v4.content.LocalBroadcastManager;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import nodomain.freeyourgadget.gadgetbridge.BluetoothCommunicationService; import nodomain.freeyourgadget.gadgetbridge.service.BluetoothCommunicationService;
public class NotificationListener extends NotificationListenerService { public class NotificationListener extends NotificationListenerService {

View File

@ -12,7 +12,7 @@ import org.json.JSONException;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import nodomain.freeyourgadget.gadgetbridge.BluetoothCommunicationService; import nodomain.freeyourgadget.gadgetbridge.service.BluetoothCommunicationService;
public class PebbleReceiver extends BroadcastReceiver { public class PebbleReceiver extends BroadcastReceiver {

View File

@ -5,8 +5,8 @@ import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.telephony.TelephonyManager; import android.telephony.TelephonyManager;
import nodomain.freeyourgadget.gadgetbridge.BluetoothCommunicationService; import nodomain.freeyourgadget.gadgetbridge.service.BluetoothCommunicationService;
import nodomain.freeyourgadget.gadgetbridge.GBCommand; import nodomain.freeyourgadget.gadgetbridge.model.ServiceCommand;
public class PhoneCallReceiver extends BroadcastReceiver { public class PhoneCallReceiver extends BroadcastReceiver {
@ -39,25 +39,25 @@ public class PhoneCallReceiver extends BroadcastReceiver {
return; return;
} }
GBCommand callCommand = null; ServiceCommand callCommand = null;
switch (state) { switch (state) {
case TelephonyManager.CALL_STATE_RINGING: case TelephonyManager.CALL_STATE_RINGING:
mSavedNumber = number; mSavedNumber = number;
callCommand = GBCommand.CALL_INCOMING; callCommand = ServiceCommand.CALL_INCOMING;
break; break;
case TelephonyManager.CALL_STATE_OFFHOOK: case TelephonyManager.CALL_STATE_OFFHOOK:
if (mLastState == TelephonyManager.CALL_STATE_RINGING) { if (mLastState == TelephonyManager.CALL_STATE_RINGING) {
callCommand = GBCommand.CALL_START; callCommand = ServiceCommand.CALL_START;
} else { } else {
callCommand = GBCommand.CALL_OUTGOING; callCommand = ServiceCommand.CALL_OUTGOING;
} }
break; break;
case TelephonyManager.CALL_STATE_IDLE: case TelephonyManager.CALL_STATE_IDLE:
if (mLastState == TelephonyManager.CALL_STATE_RINGING) { if (mLastState == TelephonyManager.CALL_STATE_RINGING) {
//missed call would be correct here //missed call would be correct here
callCommand = GBCommand.CALL_END; callCommand = ServiceCommand.CALL_END;
} else { } else {
callCommand = GBCommand.CALL_END; callCommand = ServiceCommand.CALL_END;
} }
break; break;
} }

View File

@ -9,7 +9,7 @@ import android.os.PowerManager;
import android.preference.PreferenceManager; import android.preference.PreferenceManager;
import android.telephony.SmsMessage; import android.telephony.SmsMessage;
import nodomain.freeyourgadget.gadgetbridge.BluetoothCommunicationService; import nodomain.freeyourgadget.gadgetbridge.service.BluetoothCommunicationService;
public class SMSReceiver extends BroadcastReceiver { public class SMSReceiver extends BroadcastReceiver {

View File

@ -9,7 +9,7 @@ import android.preference.PreferenceManager;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import nodomain.freeyourgadget.gadgetbridge.BluetoothCommunicationService; import nodomain.freeyourgadget.gadgetbridge.service.BluetoothCommunicationService;
public class TimeChangeReceiver extends BroadcastReceiver { public class TimeChangeReceiver extends BroadcastReceiver {

View File

@ -1,7 +1,7 @@
package nodomain.freeyourgadget.gadgetbridge; package nodomain.freeyourgadget.gadgetbridge.impl;
import nodomain.freeyourgadget.gadgetbridge.devices.SampleProvider;
import nodomain.freeyourgadget.gadgetbridge.model.ActivitySample; import nodomain.freeyourgadget.gadgetbridge.model.ActivitySample;
import nodomain.freeyourgadget.gadgetbridge.model.SampleProvider;
public class GBActivitySample implements ActivitySample { public class GBActivitySample implements ActivitySample {
private final int timestamp; private final int timestamp;

View File

@ -1,8 +1,7 @@
package nodomain.freeyourgadget.gadgetbridge; package nodomain.freeyourgadget.gadgetbridge.impl;
import android.content.SharedPreferences; import android.content.SharedPreferences;
import android.os.Parcel; import android.os.Parcel;
import android.os.Parcelable;
import android.preference.PreferenceManager; import android.preference.PreferenceManager;
import java.util.Calendar; import java.util.Calendar;
@ -10,10 +9,13 @@ import java.util.HashSet;
import java.util.Iterator; import java.util.Iterator;
import java.util.Set; import java.util.Set;
import static nodomain.freeyourgadget.gadgetbridge.miband.MiBandConst.PREF_MIBAND_ALARMS; import nodomain.freeyourgadget.gadgetbridge.GBApplication;
import nodomain.freeyourgadget.gadgetbridge.model.Alarm;
import static nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandConst.PREF_MIBAND_ALARMS;
public class GBAlarm implements Parcelable, Comparable { public class GBAlarm implements Alarm {
private int index; private int index;
private boolean enabled; private boolean enabled;
@ -22,15 +24,6 @@ public class GBAlarm implements Parcelable, Comparable {
private int hour; private int hour;
private int minute; private int minute;
public static final byte ALARM_ONCE = 0;
public static final byte ALARM_MON = 1;
public static final byte ALARM_TUE = 2;
public static final byte ALARM_WED = 4;
public static final byte ALARM_THU = 8;
public static final byte ALARM_FRI = 16;
public static final byte ALARM_SAT = 32;
public static final byte ALARM_SUN = 64;
public static final String[] DEFAULT_ALARMS = {"2,false,false,0,15,30", "1,false,false,96,8,0", "0,false,true,31,7,30"}; public static final String[] DEFAULT_ALARMS = {"2,false,false,0,15,30", "1,false,false,96,8,0", "0,false,true,31,7,30"};
@ -95,19 +88,21 @@ public class GBAlarm implements Parcelable, Comparable {
} }
@Override @Override
public int compareTo(Object another) { public int compareTo(Alarm another) {
if (this.getIndex() < ((GBAlarm) another).getIndex()) { if (this.getIndex() < another.getIndex()) {
return -1; return -1;
} else if (this.getIndex() > ((GBAlarm) another).getIndex()) { } else if (this.getIndex() > another.getIndex()) {
return 1; return 1;
} }
return 0; return 0;
} }
@Override
public int getIndex() { public int getIndex() {
return this.index; return this.index;
} }
@Override
public String getTime() { public String getTime() {
return String.format("%02d", this.hour) + ":" + String.format("%02d", this.minute); return String.format("%02d", this.hour) + ":" + String.format("%02d", this.minute);
} }
@ -120,6 +115,7 @@ public class GBAlarm implements Parcelable, Comparable {
return this.minute; return this.minute;
} }
@Override
public Calendar getAlarmCal() { public Calendar getAlarmCal() {
Calendar alarm = Calendar.getInstance(); Calendar alarm = Calendar.getInstance();
@ -133,18 +129,22 @@ public class GBAlarm implements Parcelable, Comparable {
return alarm; return alarm;
} }
@Override
public boolean isEnabled() { public boolean isEnabled() {
return this.enabled; return this.enabled;
} }
@Override
public boolean isSmartWakeup() { public boolean isSmartWakeup() {
return this.smartWakeup; return this.smartWakeup;
} }
@Override
public boolean getRepetition(int dow) { public boolean getRepetition(int dow) {
return (this.repetition & dow) > 0; return (this.repetition & dow) > 0;
} }
@Override
public int getRepetitionMask() { public int getRepetitionMask() {
return this.repetition; return this.repetition;
} }

View File

@ -1,4 +1,4 @@
package nodomain.freeyourgadget.gadgetbridge; package nodomain.freeyourgadget.gadgetbridge.impl;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
@ -9,6 +9,10 @@ import android.support.v4.content.LocalBroadcastManager;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import nodomain.freeyourgadget.gadgetbridge.model.DeviceType;
import nodomain.freeyourgadget.gadgetbridge.GBApplication;
import nodomain.freeyourgadget.gadgetbridge.R;
public class GBDevice implements Parcelable { public class GBDevice implements Parcelable {
public static final String ACTION_DEVICE_CHANGED public static final String ACTION_DEVICE_CHANGED
= "nodomain.freeyourgadget.gadgetbridge.gbdevice.action.device_changed"; = "nodomain.freeyourgadget.gadgetbridge.gbdevice.action.device_changed";

View File

@ -1,4 +1,4 @@
package nodomain.freeyourgadget.gadgetbridge; package nodomain.freeyourgadget.gadgetbridge.impl;
import java.util.UUID; import java.util.UUID;

View File

@ -1,26 +1,26 @@
package nodomain.freeyourgadget.gadgetbridge.discovery; package nodomain.freeyourgadget.gadgetbridge.impl;
import android.bluetooth.BluetoothDevice; import android.bluetooth.BluetoothDevice;
import android.os.Parcel; import android.os.Parcel;
import android.os.Parcelable; import android.os.Parcelable;
import nodomain.freeyourgadget.gadgetbridge.DeviceType; import nodomain.freeyourgadget.gadgetbridge.model.DeviceType;
import nodomain.freeyourgadget.gadgetbridge.GBApplication; import nodomain.freeyourgadget.gadgetbridge.GBApplication;
import nodomain.freeyourgadget.gadgetbridge.R; import nodomain.freeyourgadget.gadgetbridge.R;
/** /**
*/ */
public class DeviceCandidate implements Parcelable { public class GBDeviceCandidate implements Parcelable {
private BluetoothDevice device; private BluetoothDevice device;
private short rssi; private short rssi;
private DeviceType deviceType = DeviceType.UNKNOWN; private DeviceType deviceType = DeviceType.UNKNOWN;
public DeviceCandidate(BluetoothDevice device, short rssi) { public GBDeviceCandidate(BluetoothDevice device, short rssi) {
this.device = device; this.device = device;
this.rssi = rssi; this.rssi = rssi;
} }
private DeviceCandidate(Parcel in) { private GBDeviceCandidate(Parcel in) {
device = in.readParcelable(getClass().getClassLoader()); device = in.readParcelable(getClass().getClassLoader());
rssi = (short) in.readInt(); rssi = (short) in.readInt();
deviceType = DeviceType.valueOf(in.readString()); deviceType = DeviceType.valueOf(in.readString());
@ -74,7 +74,7 @@ public class DeviceCandidate implements Parcelable {
return false; return false;
} }
DeviceCandidate that = (DeviceCandidate) o; GBDeviceCandidate that = (GBDeviceCandidate) o;
return device.getAddress().equals(that.device.getAddress()); return device.getAddress().equals(that.device.getAddress());
} }

View File

@ -1,4 +1,4 @@
package nodomain.freeyourgadget.gadgetbridge.database; package nodomain.freeyourgadget.gadgetbridge.impl;
import nodomain.freeyourgadget.gadgetbridge.model.SummaryOfDay; import nodomain.freeyourgadget.gadgetbridge.model.SummaryOfDay;

View File

@ -1,7 +1,9 @@
package nodomain.freeyourgadget.gadgetbridge.charts; package nodomain.freeyourgadget.gadgetbridge.model;
import android.content.Context; import android.content.Context;
import nodomain.freeyourgadget.gadgetbridge.model.ActivityKind;
public class ActivityAmount { public class ActivityAmount {
private int activityKind; private int activityKind;
private short percent; private short percent;

View File

@ -1,4 +1,4 @@
package nodomain.freeyourgadget.gadgetbridge.charts; package nodomain.freeyourgadget.gadgetbridge.model;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;

View File

@ -1,8 +1,8 @@
package nodomain.freeyourgadget.gadgetbridge.charts; package nodomain.freeyourgadget.gadgetbridge.model;
import java.util.Arrays; import java.util.Arrays;
import nodomain.freeyourgadget.gadgetbridge.model.SampleProvider; import nodomain.freeyourgadget.gadgetbridge.devices.SampleProvider;
public class ActivityKind { public class ActivityKind {
public static final int TYPE_UNKNOWN = 0; public static final int TYPE_UNKNOWN = 0;

View File

@ -1,6 +1,6 @@
package nodomain.freeyourgadget.gadgetbridge.model; package nodomain.freeyourgadget.gadgetbridge.model;
import nodomain.freeyourgadget.gadgetbridge.charts.ActivityKind; import nodomain.freeyourgadget.gadgetbridge.devices.SampleProvider;
public interface ActivitySample { public interface ActivitySample {
/** /**

View File

@ -0,0 +1,30 @@
package nodomain.freeyourgadget.gadgetbridge.model;
import android.os.Parcelable;
import java.util.Calendar;
public interface Alarm extends Parcelable, Comparable<Alarm> {
public static final byte ALARM_ONCE = 0;
public static final byte ALARM_MON = 1;
public static final byte ALARM_TUE = 2;
public static final byte ALARM_WED = 4;
public static final byte ALARM_THU = 8;
public static final byte ALARM_FRI = 16;
public static final byte ALARM_SAT = 32;
public static final byte ALARM_SUN = 64;
int getIndex();
Calendar getAlarmCal();
String getTime();
boolean isEnabled();
boolean isSmartWakeup();
int getRepetitionMask();
boolean getRepetition(int dow);
}

View File

@ -1,4 +1,4 @@
package nodomain.freeyourgadget.gadgetbridge; package nodomain.freeyourgadget.gadgetbridge.model;
public enum DeviceType { public enum DeviceType {
UNKNOWN, UNKNOWN,

View File

@ -1,6 +1,6 @@
package nodomain.freeyourgadget.gadgetbridge; package nodomain.freeyourgadget.gadgetbridge.model;
public enum GBCommand { public enum ServiceCommand {
UNDEFINEND, UNDEFINEND,

View File

@ -1,13 +1,14 @@
package nodomain.freeyourgadget.gadgetbridge; package nodomain.freeyourgadget.gadgetbridge.service;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import java.util.UUID; import java.util.UUID;
import nodomain.freeyourgadget.gadgetbridge.devices.EventHandler;
import nodomain.freeyourgadget.gadgetbridge.model.ServiceCommand;
import nodomain.freeyourgadget.gadgetbridge.deviceevents.GBDeviceEvent; import nodomain.freeyourgadget.gadgetbridge.deviceevents.GBDeviceEvent;
import nodomain.freeyourgadget.gadgetbridge.deviceevents.GBDeviceEventSendBytes; import nodomain.freeyourgadget.gadgetbridge.deviceevents.GBDeviceEventSendBytes;
import nodomain.freeyourgadget.gadgetbridge.protocol.GBDeviceProtocol;
/** /**
* An abstract base class for all devices connected via Bluetooth * An abstract base class for all devices connected via Bluetooth
@ -134,7 +135,7 @@ public abstract class AbstractBTDeviceSupport extends AbstractDeviceSupport {
} }
@Override @Override
public void onSetCallState(String number, String name, GBCommand command) { public void onSetCallState(String number, String name, ServiceCommand command) {
byte[] bytes = gbDeviceProtocol.encodeSetCallState(number, name, command); byte[] bytes = gbDeviceProtocol.encodeSetCallState(number, name, command);
sendToDevice(bytes); sendToDevice(bytes);
} }

View File

@ -1,4 +1,4 @@
package nodomain.freeyourgadget.gadgetbridge; package nodomain.freeyourgadget.gadgetbridge.service;
import android.app.Notification; import android.app.Notification;
import android.app.NotificationManager; import android.app.NotificationManager;
@ -18,7 +18,13 @@ import java.io.File;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.Date; import java.util.Date;
import nodomain.freeyourgadget.gadgetbridge.activities.AbstractChartFragment; import nodomain.freeyourgadget.gadgetbridge.activities.AppManagerActivity;
import nodomain.freeyourgadget.gadgetbridge.util.GB;
import nodomain.freeyourgadget.gadgetbridge.service.receivers.GBCallControlReceiver;
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
import nodomain.freeyourgadget.gadgetbridge.service.receivers.GBMusicControlReceiver;
import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.activities.charts.AbstractChartFragment;
import nodomain.freeyourgadget.gadgetbridge.deviceevents.GBDeviceEvent; import nodomain.freeyourgadget.gadgetbridge.deviceevents.GBDeviceEvent;
import nodomain.freeyourgadget.gadgetbridge.deviceevents.GBDeviceEventAppInfo; import nodomain.freeyourgadget.gadgetbridge.deviceevents.GBDeviceEventAppInfo;
import nodomain.freeyourgadget.gadgetbridge.deviceevents.GBDeviceEventCallControl; import nodomain.freeyourgadget.gadgetbridge.deviceevents.GBDeviceEventCallControl;

View File

@ -1,4 +1,4 @@
package nodomain.freeyourgadget.gadgetbridge; package nodomain.freeyourgadget.gadgetbridge.service;
import android.app.NotificationManager; import android.app.NotificationManager;
import android.app.Service; import android.app.Service;
@ -24,9 +24,15 @@ import org.slf4j.LoggerFactory;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.UUID; import java.util.UUID;
import nodomain.freeyourgadget.gadgetbridge.GBDevice.State; import nodomain.freeyourgadget.gadgetbridge.model.DeviceType;
import nodomain.freeyourgadget.gadgetbridge.miband.MiBandSupport; import nodomain.freeyourgadget.gadgetbridge.util.GB;
import nodomain.freeyourgadget.gadgetbridge.pebble.PebbleSupport; import nodomain.freeyourgadget.gadgetbridge.model.ServiceCommand;
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice.State;
import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.model.Alarm;
import nodomain.freeyourgadget.gadgetbridge.service.miband.MiBandSupport;
import nodomain.freeyourgadget.gadgetbridge.service.pebble.PebbleSupport;
public class BluetoothCommunicationService extends Service { public class BluetoothCommunicationService extends Service {
public static final String ACTION_START public static final String ACTION_START
@ -219,7 +225,7 @@ public class BluetoothCommunicationService extends Service {
break; break;
} }
case ACTION_CALLSTATE: case ACTION_CALLSTATE:
GBCommand command = GBCommand.values()[intent.getIntExtra("call_command", 0)]; // UGLY ServiceCommand command = ServiceCommand.values()[intent.getIntExtra("call_command", 0)]; // UGLY
String phoneNumber = intent.getStringExtra("call_phonenumber"); String phoneNumber = intent.getStringExtra("call_phonenumber");
String callerName = null; String callerName = null;
@ -270,7 +276,7 @@ public class BluetoothCommunicationService extends Service {
mStarted = true; mStarted = true;
break; break;
case ACTION_SET_ALARMS: case ACTION_SET_ALARMS:
ArrayList<GBAlarm> alarms = intent.getParcelableArrayListExtra("alarms"); ArrayList<Alarm> alarms = intent.getParcelableArrayListExtra("alarms");
mDeviceSupport.onSetAlarms(alarms); mDeviceSupport.onSetAlarms(alarms);
break; break;
} }

View File

@ -1,8 +1,11 @@
package nodomain.freeyourgadget.gadgetbridge; package nodomain.freeyourgadget.gadgetbridge.service;
import android.bluetooth.BluetoothAdapter; import android.bluetooth.BluetoothAdapter;
import android.content.Context; import android.content.Context;
import nodomain.freeyourgadget.gadgetbridge.devices.EventHandler;
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
/** /**
* Provides the communication support for a specific device. Instances will <b>only</b> * Provides the communication support for a specific device. Instances will <b>only</b>
* be used inside the BluetoothCommunicationService. Has hooks to manage the life cycle * be used inside the BluetoothCommunicationService. Has hooks to manage the life cycle

View File

@ -1,7 +1,9 @@
package nodomain.freeyourgadget.gadgetbridge; package nodomain.freeyourgadget.gadgetbridge.service;
import android.content.Context; import android.content.Context;
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
public abstract class GBDeviceIoThread extends Thread { public abstract class GBDeviceIoThread extends Thread {
protected final GBDevice gbDevice; protected final GBDevice gbDevice;
private final Context context; private final Context context;

View File

@ -1,8 +1,8 @@
package nodomain.freeyourgadget.gadgetbridge.protocol; package nodomain.freeyourgadget.gadgetbridge.service;
import java.util.UUID; import java.util.UUID;
import nodomain.freeyourgadget.gadgetbridge.GBCommand; import nodomain.freeyourgadget.gadgetbridge.model.ServiceCommand;
import nodomain.freeyourgadget.gadgetbridge.deviceevents.GBDeviceEvent; import nodomain.freeyourgadget.gadgetbridge.deviceevents.GBDeviceEvent;
public abstract class GBDeviceProtocol { public abstract class GBDeviceProtocol {
@ -23,7 +23,7 @@ public abstract class GBDeviceProtocol {
return null; return null;
} }
public byte[] encodeSetCallState(String number, String name, GBCommand command) { public byte[] encodeSetCallState(String number, String name, ServiceCommand command) {
return null; return null;
} }

View File

@ -1,4 +1,4 @@
package nodomain.freeyourgadget.gadgetbridge; package nodomain.freeyourgadget.gadgetbridge.service;
import android.bluetooth.BluetoothAdapter; import android.bluetooth.BluetoothAdapter;
import android.content.Context; import android.content.Context;
@ -10,6 +10,10 @@ import org.slf4j.LoggerFactory;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.UUID; import java.util.UUID;
import nodomain.freeyourgadget.gadgetbridge.model.ServiceCommand;
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
import nodomain.freeyourgadget.gadgetbridge.model.Alarm;
/** /**
* Wraps another device support instance and supports busy-checking and throttling of events. * Wraps another device support instance and supports busy-checking and throttling of events.
*/ */
@ -125,7 +129,7 @@ public class ServiceDeviceSupport implements DeviceSupport {
// No throttling for the other events // No throttling for the other events
@Override @Override
public void onSetCallState(String number, String name, GBCommand command) { public void onSetCallState(String number, String name, ServiceCommand command) {
if (checkBusy("set call state")) { if (checkBusy("set call state")) {
return; return;
} }
@ -229,7 +233,7 @@ public class ServiceDeviceSupport implements DeviceSupport {
} }
@Override @Override
public void onSetAlarms(ArrayList<GBAlarm> alarms) { public void onSetAlarms(ArrayList<Alarm> alarms) {
if (checkBusy("set alarms")) { if (checkBusy("set alarms")) {
return; return;
} }

View File

@ -1,4 +1,4 @@
package nodomain.freeyourgadget.gadgetbridge.btle; package nodomain.freeyourgadget.gadgetbridge.service.btle;
import android.bluetooth.BluetoothGatt; import android.bluetooth.BluetoothGatt;
import android.bluetooth.BluetoothGattCharacteristic; import android.bluetooth.BluetoothGattCharacteristic;
@ -15,7 +15,7 @@ import java.util.List;
import java.util.Set; import java.util.Set;
import java.util.UUID; import java.util.UUID;
import nodomain.freeyourgadget.gadgetbridge.AbstractDeviceSupport; import nodomain.freeyourgadget.gadgetbridge.service.AbstractDeviceSupport;
/** /**
* Abstract base class for all devices connected through Bluetooth Low Energy (LE) aka * Abstract base class for all devices connected through Bluetooth Low Energy (LE) aka

View File

@ -1,4 +1,4 @@
package nodomain.freeyourgadget.gadgetbridge.btle; package nodomain.freeyourgadget.gadgetbridge.service.btle;
import android.bluetooth.BluetoothGatt; import android.bluetooth.BluetoothGatt;
import android.bluetooth.BluetoothGattCharacteristic; import android.bluetooth.BluetoothGattCharacteristic;

View File

@ -1,4 +1,4 @@
package nodomain.freeyourgadget.gadgetbridge.btle; package nodomain.freeyourgadget.gadgetbridge.service.btle;
import android.bluetooth.BluetoothAdapter; import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice; import android.bluetooth.BluetoothDevice;
@ -19,9 +19,9 @@ import java.util.concurrent.BlockingQueue;
import java.util.concurrent.CountDownLatch; import java.util.concurrent.CountDownLatch;
import java.util.concurrent.LinkedBlockingQueue; import java.util.concurrent.LinkedBlockingQueue;
import nodomain.freeyourgadget.gadgetbridge.DeviceSupport; import nodomain.freeyourgadget.gadgetbridge.service.DeviceSupport;
import nodomain.freeyourgadget.gadgetbridge.GBDevice; import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
import nodomain.freeyourgadget.gadgetbridge.GBDevice.State; import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice.State;
/** /**
* One queue/thread per connectable device. * One queue/thread per connectable device.

View File

@ -1,9 +1,10 @@
package nodomain.freeyourgadget.gadgetbridge.btle; package nodomain.freeyourgadget.gadgetbridge.service.btle;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import nodomain.freeyourgadget.gadgetbridge.GBDevice; import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
import nodomain.freeyourgadget.gadgetbridge.service.btle.actions.AbortTransactionAction;
/** /**
* A special action that is executed at the very front of the initialization * A special action that is executed at the very front of the initialization

View File

@ -14,7 +14,7 @@
* limitations under the License. * limitations under the License.
*/ */
package nodomain.freeyourgadget.gadgetbridge.btle; package nodomain.freeyourgadget.gadgetbridge.service.btle;
import android.bluetooth.BluetoothGatt; import android.bluetooth.BluetoothGatt;
import android.bluetooth.BluetoothGattCallback; import android.bluetooth.BluetoothGattCallback;

View File

@ -1,4 +1,4 @@
package nodomain.freeyourgadget.gadgetbridge.btle; package nodomain.freeyourgadget.gadgetbridge.service.btle;
import java.text.DateFormat; import java.text.DateFormat;
import java.util.ArrayList; import java.util.ArrayList;

View File

@ -1,10 +1,15 @@
package nodomain.freeyourgadget.gadgetbridge.btle; package nodomain.freeyourgadget.gadgetbridge.service.btle;
import android.bluetooth.BluetoothGattCharacteristic; import android.bluetooth.BluetoothGattCharacteristic;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import nodomain.freeyourgadget.gadgetbridge.service.btle.actions.NotifyAction;
import nodomain.freeyourgadget.gadgetbridge.service.btle.actions.ReadAction;
import nodomain.freeyourgadget.gadgetbridge.service.btle.actions.WaitAction;
import nodomain.freeyourgadget.gadgetbridge.service.btle.actions.WriteAction;
public class TransactionBuilder { public class TransactionBuilder {
private static final Logger LOG = LoggerFactory.getLogger(TransactionBuilder.class); private static final Logger LOG = LoggerFactory.getLogger(TransactionBuilder.class);

View File

@ -1,4 +1,4 @@
package nodomain.freeyourgadget.gadgetbridge.btle; package nodomain.freeyourgadget.gadgetbridge.service.btle.actions;
import android.bluetooth.BluetoothGatt; import android.bluetooth.BluetoothGatt;

View File

@ -1,4 +1,4 @@
package nodomain.freeyourgadget.gadgetbridge.btle; package nodomain.freeyourgadget.gadgetbridge.service.btle.actions;
import android.bluetooth.BluetoothGatt; import android.bluetooth.BluetoothGatt;
import android.bluetooth.BluetoothGattCallback; import android.bluetooth.BluetoothGattCallback;
@ -7,6 +7,9 @@ import android.bluetooth.BluetoothGattCharacteristic;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import nodomain.freeyourgadget.gadgetbridge.service.btle.BtLEAction;
import nodomain.freeyourgadget.gadgetbridge.service.btle.TransactionBuilder;
/** /**
* Enables or disables notifications for a given GATT characteristic. * Enables or disables notifications for a given GATT characteristic.
* The result will be made available asynchronously through the * The result will be made available asynchronously through the

View File

@ -1,4 +1,6 @@
package nodomain.freeyourgadget.gadgetbridge.btle; package nodomain.freeyourgadget.gadgetbridge.service.btle.actions;
import nodomain.freeyourgadget.gadgetbridge.service.btle.BtLEAction;
/** /**
* An abstract non-BTLE action. It performs no bluetooth operation, * An abstract non-BTLE action. It performs no bluetooth operation,

View File

@ -1,9 +1,11 @@
package nodomain.freeyourgadget.gadgetbridge.btle; package nodomain.freeyourgadget.gadgetbridge.service.btle.actions;
import android.bluetooth.BluetoothGatt; import android.bluetooth.BluetoothGatt;
import android.bluetooth.BluetoothGattCallback; import android.bluetooth.BluetoothGattCallback;
import android.bluetooth.BluetoothGattCharacteristic; import android.bluetooth.BluetoothGattCharacteristic;
import nodomain.freeyourgadget.gadgetbridge.service.btle.BtLEAction;
/** /**
* Invokes a read operation on a given GATT characteristic. * Invokes a read operation on a given GATT characteristic.
* The result will be made available asynchronously through the * The result will be made available asynchronously through the

View File

@ -1,9 +1,9 @@
package nodomain.freeyourgadget.gadgetbridge.btle; package nodomain.freeyourgadget.gadgetbridge.service.btle.actions;
import android.bluetooth.BluetoothGatt; import android.bluetooth.BluetoothGatt;
import android.content.Context; import android.content.Context;
import nodomain.freeyourgadget.gadgetbridge.GBDevice; import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
public class SetDeviceBusyAction extends PlainAction { public class SetDeviceBusyAction extends PlainAction {
private final GBDevice device; private final GBDevice device;

View File

@ -1,10 +1,9 @@
package nodomain.freeyourgadget.gadgetbridge.miband; package nodomain.freeyourgadget.gadgetbridge.service.btle.actions;
import android.bluetooth.BluetoothGatt; import android.bluetooth.BluetoothGatt;
import android.content.Context; import android.content.Context;
import nodomain.freeyourgadget.gadgetbridge.GBDevice; import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
import nodomain.freeyourgadget.gadgetbridge.btle.PlainAction;
public class SetDeviceStateAction extends PlainAction { public class SetDeviceStateAction extends PlainAction {
private final GBDevice device; private final GBDevice device;

View File

@ -1,9 +1,9 @@
package nodomain.freeyourgadget.gadgetbridge.btle; package nodomain.freeyourgadget.gadgetbridge.service.btle.actions;
import android.bluetooth.BluetoothGatt; import android.bluetooth.BluetoothGatt;
import android.content.Context; import android.content.Context;
import nodomain.freeyourgadget.gadgetbridge.GB; import nodomain.freeyourgadget.gadgetbridge.util.GB;
public class SetProgressAction extends PlainAction { public class SetProgressAction extends PlainAction {

View File

@ -1,4 +1,4 @@
package nodomain.freeyourgadget.gadgetbridge.btle; package nodomain.freeyourgadget.gadgetbridge.service.btle.actions;
import android.bluetooth.BluetoothGatt; import android.bluetooth.BluetoothGatt;

View File

@ -1,9 +1,11 @@
package nodomain.freeyourgadget.gadgetbridge.btle; package nodomain.freeyourgadget.gadgetbridge.service.btle.actions;
import android.bluetooth.BluetoothGatt; import android.bluetooth.BluetoothGatt;
import android.bluetooth.BluetoothGattCallback; import android.bluetooth.BluetoothGattCallback;
import android.bluetooth.BluetoothGattCharacteristic; import android.bluetooth.BluetoothGattCharacteristic;
import nodomain.freeyourgadget.gadgetbridge.service.btle.BtLEAction;
/** /**
* Invokes a write operation on a given GATT characteristic. * Invokes a write operation on a given GATT characteristic.
* The result status will be made available asynchronously through the * The result status will be made available asynchronously through the

View File

@ -1,4 +1,4 @@
package nodomain.freeyourgadget.gadgetbridge.miband; package nodomain.freeyourgadget.gadgetbridge.service.miband;
public class AbstractInfo { public class AbstractInfo {
protected byte[] mData; protected byte[] mData;

View File

@ -1,4 +1,4 @@
package nodomain.freeyourgadget.gadgetbridge.miband; package nodomain.freeyourgadget.gadgetbridge.service.miband;
import nodomain.freeyourgadget.gadgetbridge.GBApplication; import nodomain.freeyourgadget.gadgetbridge.GBApplication;
import nodomain.freeyourgadget.gadgetbridge.R; import nodomain.freeyourgadget.gadgetbridge.R;

View File

@ -1,4 +1,4 @@
package nodomain.freeyourgadget.gadgetbridge.miband; package nodomain.freeyourgadget.gadgetbridge.service.miband;
import java.util.Locale; import java.util.Locale;

View File

@ -1,4 +1,4 @@
package nodomain.freeyourgadget.gadgetbridge.miband; package nodomain.freeyourgadget.gadgetbridge.service.miband;
import android.bluetooth.BluetoothGatt; import android.bluetooth.BluetoothGatt;
import android.bluetooth.BluetoothGattCharacteristic; import android.bluetooth.BluetoothGattCharacteristic;
@ -20,42 +20,49 @@ import java.util.GregorianCalendar;
import java.util.UUID; import java.util.UUID;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import nodomain.freeyourgadget.gadgetbridge.GB; import nodomain.freeyourgadget.gadgetbridge.util.GB;
import nodomain.freeyourgadget.gadgetbridge.GBAlarm;
import nodomain.freeyourgadget.gadgetbridge.GBApplication; import nodomain.freeyourgadget.gadgetbridge.GBApplication;
import nodomain.freeyourgadget.gadgetbridge.GBCommand; import nodomain.freeyourgadget.gadgetbridge.model.ServiceCommand;
import nodomain.freeyourgadget.gadgetbridge.GBDevice.State; import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice.State;
import nodomain.freeyourgadget.gadgetbridge.R; import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.btle.AbortTransactionAction;
import nodomain.freeyourgadget.gadgetbridge.btle.AbstractBTLEDeviceSupport;
import nodomain.freeyourgadget.gadgetbridge.btle.BtLEAction;
import nodomain.freeyourgadget.gadgetbridge.btle.SetDeviceBusyAction;
import nodomain.freeyourgadget.gadgetbridge.btle.SetProgressAction;
import nodomain.freeyourgadget.gadgetbridge.btle.TransactionBuilder;
import nodomain.freeyourgadget.gadgetbridge.database.DBHandler; import nodomain.freeyourgadget.gadgetbridge.database.DBHandler;
import nodomain.freeyourgadget.gadgetbridge.model.SampleProvider; import nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandConst;
import nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandCoordinator;
import nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandFWHelper;
import nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandService;
import nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandTransactionBuilder;
import nodomain.freeyourgadget.gadgetbridge.devices.miband.VibrationProfile;
import nodomain.freeyourgadget.gadgetbridge.model.Alarm;
import nodomain.freeyourgadget.gadgetbridge.devices.SampleProvider;
import nodomain.freeyourgadget.gadgetbridge.service.btle.AbstractBTLEDeviceSupport;
import nodomain.freeyourgadget.gadgetbridge.service.btle.BtLEAction;
import nodomain.freeyourgadget.gadgetbridge.service.btle.TransactionBuilder;
import nodomain.freeyourgadget.gadgetbridge.service.btle.actions.AbortTransactionAction;
import nodomain.freeyourgadget.gadgetbridge.service.btle.actions.SetDeviceBusyAction;
import nodomain.freeyourgadget.gadgetbridge.service.btle.actions.SetDeviceStateAction;
import nodomain.freeyourgadget.gadgetbridge.service.btle.actions.SetProgressAction;
import static nodomain.freeyourgadget.gadgetbridge.miband.MiBandConst.DEFAULT_VALUE_FLASH_COLOUR; import static nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandConst.DEFAULT_VALUE_FLASH_COLOUR;
import static nodomain.freeyourgadget.gadgetbridge.miband.MiBandConst.DEFAULT_VALUE_FLASH_COUNT; import static nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandConst.DEFAULT_VALUE_FLASH_COUNT;
import static nodomain.freeyourgadget.gadgetbridge.miband.MiBandConst.DEFAULT_VALUE_FLASH_DURATION; import static nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandConst.DEFAULT_VALUE_FLASH_DURATION;
import static nodomain.freeyourgadget.gadgetbridge.miband.MiBandConst.DEFAULT_VALUE_FLASH_ORIGINAL_COLOUR; import static nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandConst.DEFAULT_VALUE_FLASH_ORIGINAL_COLOUR;
import static nodomain.freeyourgadget.gadgetbridge.miband.MiBandConst.DEFAULT_VALUE_VIBRATION_COUNT; import static nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandConst.DEFAULT_VALUE_VIBRATION_COUNT;
import static nodomain.freeyourgadget.gadgetbridge.miband.MiBandConst.DEFAULT_VALUE_VIBRATION_DURATION; import static nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandConst.DEFAULT_VALUE_VIBRATION_DURATION;
import static nodomain.freeyourgadget.gadgetbridge.miband.MiBandConst.DEFAULT_VALUE_VIBRATION_PAUSE; import static nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandConst.DEFAULT_VALUE_VIBRATION_PAUSE;
import static nodomain.freeyourgadget.gadgetbridge.miband.MiBandConst.DEFAULT_VALUE_VIBRATION_PROFILE; import static nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandConst.DEFAULT_VALUE_VIBRATION_PROFILE;
import static nodomain.freeyourgadget.gadgetbridge.miband.MiBandConst.FLASH_COLOUR; import static nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandConst.FLASH_COLOUR;
import static nodomain.freeyourgadget.gadgetbridge.miband.MiBandConst.FLASH_COUNT; import static nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandConst.FLASH_COUNT;
import static nodomain.freeyourgadget.gadgetbridge.miband.MiBandConst.FLASH_DURATION; import static nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandConst.FLASH_DURATION;
import static nodomain.freeyourgadget.gadgetbridge.miband.MiBandConst.FLASH_ORIGINAL_COLOUR; import static nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandConst.FLASH_ORIGINAL_COLOUR;
import static nodomain.freeyourgadget.gadgetbridge.miband.MiBandConst.ORIGIN_GENERIC; import static nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandConst.ORIGIN_GENERIC;
import static nodomain.freeyourgadget.gadgetbridge.miband.MiBandConst.ORIGIN_K9MAIL; import static nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandConst.ORIGIN_K9MAIL;
import static nodomain.freeyourgadget.gadgetbridge.miband.MiBandConst.ORIGIN_SMS; import static nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandConst.ORIGIN_SMS;
import static nodomain.freeyourgadget.gadgetbridge.miband.MiBandConst.VIBRATION_COUNT; import static nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandConst.VIBRATION_COUNT;
import static nodomain.freeyourgadget.gadgetbridge.miband.MiBandConst.VIBRATION_DURATION; import static nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandConst.VIBRATION_DURATION;
import static nodomain.freeyourgadget.gadgetbridge.miband.MiBandConst.VIBRATION_PAUSE; import static nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandConst.VIBRATION_PAUSE;
import static nodomain.freeyourgadget.gadgetbridge.miband.MiBandConst.VIBRATION_PROFILE; import static nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandConst.VIBRATION_PROFILE;
import static nodomain.freeyourgadget.gadgetbridge.miband.MiBandConst.getNotificationPrefIntValue; import static nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandConst.getNotificationPrefIntValue;
import static nodomain.freeyourgadget.gadgetbridge.miband.MiBandConst.getNotificationPrefStringValue; import static nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandConst.getNotificationPrefStringValue;
public class MiBandSupport extends AbstractBTLEDeviceSupport { public class MiBandSupport extends AbstractBTLEDeviceSupport {
@ -387,11 +394,11 @@ public class MiBandSupport extends AbstractBTLEDeviceSupport {
} }
@Override @Override
public void onSetAlarms(ArrayList<GBAlarm> alarms) { public void onSetAlarms(ArrayList<Alarm> alarms) {
try { try {
BluetoothGattCharacteristic characteristic = getCharacteristic(MiBandService.UUID_CHARACTERISTIC_CONTROL_POINT); BluetoothGattCharacteristic characteristic = getCharacteristic(MiBandService.UUID_CHARACTERISTIC_CONTROL_POINT);
TransactionBuilder builder = performInitialized("Set alarm"); TransactionBuilder builder = performInitialized("Set alarm");
for (GBAlarm alarm : alarms) { for (Alarm alarm : alarms) {
queueAlarm(alarm, builder, characteristic); queueAlarm(alarm, builder, characteristic);
} }
builder.queue(getQueue()); builder.queue(getQueue());
@ -459,8 +466,8 @@ public class MiBandSupport extends AbstractBTLEDeviceSupport {
} }
@Override @Override
public void onSetCallState(String number, String name, GBCommand command) { public void onSetCallState(String number, String name, ServiceCommand command) {
if (GBCommand.CALL_INCOMING.equals(command)) { if (ServiceCommand.CALL_INCOMING.equals(command)) {
telephoneRinging = true; telephoneRinging = true;
AbortTransactionAction abortAction = new AbortTransactionAction() { AbortTransactionAction abortAction = new AbortTransactionAction() {
@Override @Override
@ -469,7 +476,7 @@ public class MiBandSupport extends AbstractBTLEDeviceSupport {
} }
}; };
performPreferredNotification("incoming call", MiBandConst.ORIGIN_INCOMING_CALL, abortAction); performPreferredNotification("incoming call", MiBandConst.ORIGIN_INCOMING_CALL, abortAction);
} else if (GBCommand.CALL_START.equals(command) || GBCommand.CALL_END.equals(command)) { } else if (ServiceCommand.CALL_START.equals(command) || ServiceCommand.CALL_END.equals(command)) {
telephoneRinging = false; telephoneRinging = false;
} }
} }
@ -752,7 +759,7 @@ public class MiBandSupport extends AbstractBTLEDeviceSupport {
* @param builder * @param builder
* @param characteristic * @param characteristic
*/ */
private void queueAlarm(GBAlarm alarm, TransactionBuilder builder, BluetoothGattCharacteristic characteristic) { private void queueAlarm(Alarm alarm, TransactionBuilder builder, BluetoothGattCharacteristic characteristic) {
Calendar alarmCal = alarm.getAlarmCal(); Calendar alarmCal = alarm.getAlarmCal();
byte[] alarmMessage = new byte[]{ byte[] alarmMessage = new byte[]{
(byte) MiBandService.COMMAND_SET_TIMER, (byte) MiBandService.COMMAND_SET_TIMER,

View File

@ -1,4 +1,4 @@
package nodomain.freeyourgadget.gadgetbridge.pebble; package nodomain.freeyourgadget.gadgetbridge.service.pebble;
import android.util.Pair; import android.util.Pair;
@ -17,7 +17,7 @@ import nodomain.freeyourgadget.gadgetbridge.GBException;
import nodomain.freeyourgadget.gadgetbridge.database.DBHandler; import nodomain.freeyourgadget.gadgetbridge.database.DBHandler;
import nodomain.freeyourgadget.gadgetbridge.deviceevents.GBDeviceEvent; import nodomain.freeyourgadget.gadgetbridge.deviceevents.GBDeviceEvent;
import nodomain.freeyourgadget.gadgetbridge.deviceevents.GBDeviceEventSendBytes; import nodomain.freeyourgadget.gadgetbridge.deviceevents.GBDeviceEventSendBytes;
import nodomain.freeyourgadget.gadgetbridge.model.SampleProvider; import nodomain.freeyourgadget.gadgetbridge.devices.SampleProvider;
public class GadgetbridgePblSupport { public class GadgetbridgePblSupport {

View File

@ -1,4 +1,4 @@
package nodomain.freeyourgadget.gadgetbridge.pebble; package nodomain.freeyourgadget.gadgetbridge.service.pebble;
import android.util.Pair; import android.util.Pair;
@ -17,7 +17,8 @@ import nodomain.freeyourgadget.gadgetbridge.database.DBHandler;
import nodomain.freeyourgadget.gadgetbridge.deviceevents.GBDeviceEvent; import nodomain.freeyourgadget.gadgetbridge.deviceevents.GBDeviceEvent;
import nodomain.freeyourgadget.gadgetbridge.deviceevents.GBDeviceEventSendBytes; import nodomain.freeyourgadget.gadgetbridge.deviceevents.GBDeviceEventSendBytes;
import nodomain.freeyourgadget.gadgetbridge.deviceevents.GBDeviceEventSleepMonitorResult; import nodomain.freeyourgadget.gadgetbridge.deviceevents.GBDeviceEventSleepMonitorResult;
import nodomain.freeyourgadget.gadgetbridge.model.SampleProvider; import nodomain.freeyourgadget.gadgetbridge.devices.SampleProvider;
import nodomain.freeyourgadget.gadgetbridge.devices.pebble.MorpheuzSampleProvider;
public class MorpheuzSupport { public class MorpheuzSupport {

View File

@ -1,4 +1,4 @@
package nodomain.freeyourgadget.gadgetbridge.pebble; package nodomain.freeyourgadget.gadgetbridge.service.pebble;
import android.bluetooth.BluetoothAdapter; import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice; import android.bluetooth.BluetoothDevice;
@ -19,14 +19,16 @@ import java.nio.ByteBuffer;
import java.nio.ByteOrder; import java.nio.ByteOrder;
import java.util.zip.ZipInputStream; import java.util.zip.ZipInputStream;
import nodomain.freeyourgadget.gadgetbridge.GB; import nodomain.freeyourgadget.gadgetbridge.util.GB;
import nodomain.freeyourgadget.gadgetbridge.GBDevice; import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
import nodomain.freeyourgadget.gadgetbridge.GBDeviceIoThread; import nodomain.freeyourgadget.gadgetbridge.devices.pebble.PBWReader;
import nodomain.freeyourgadget.gadgetbridge.devices.pebble.PebbleInstallable;
import nodomain.freeyourgadget.gadgetbridge.service.GBDeviceIoThread;
import nodomain.freeyourgadget.gadgetbridge.R; import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.deviceevents.GBDeviceEvent; import nodomain.freeyourgadget.gadgetbridge.deviceevents.GBDeviceEvent;
import nodomain.freeyourgadget.gadgetbridge.deviceevents.GBDeviceEventAppInfo; import nodomain.freeyourgadget.gadgetbridge.deviceevents.GBDeviceEventAppInfo;
import nodomain.freeyourgadget.gadgetbridge.deviceevents.GBDeviceEventAppManagementResult; import nodomain.freeyourgadget.gadgetbridge.deviceevents.GBDeviceEventAppManagementResult;
import nodomain.freeyourgadget.gadgetbridge.protocol.GBDeviceProtocol; import nodomain.freeyourgadget.gadgetbridge.service.GBDeviceProtocol;
public class PebbleIoThread extends GBDeviceIoThread { public class PebbleIoThread extends GBDeviceIoThread {
private static final Logger LOG = LoggerFactory.getLogger(PebbleIoThread.class); private static final Logger LOG = LoggerFactory.getLogger(PebbleIoThread.class);

View File

@ -1,4 +1,4 @@
package nodomain.freeyourgadget.gadgetbridge.pebble; package nodomain.freeyourgadget.gadgetbridge.service.pebble;
import android.util.Pair; import android.util.Pair;
@ -13,8 +13,8 @@ import java.util.Random;
import java.util.SimpleTimeZone; import java.util.SimpleTimeZone;
import java.util.UUID; import java.util.UUID;
import nodomain.freeyourgadget.gadgetbridge.GBCommand; import nodomain.freeyourgadget.gadgetbridge.model.ServiceCommand;
import nodomain.freeyourgadget.gadgetbridge.GBDeviceApp; import nodomain.freeyourgadget.gadgetbridge.impl.GBDeviceApp;
import nodomain.freeyourgadget.gadgetbridge.deviceevents.GBDeviceEvent; import nodomain.freeyourgadget.gadgetbridge.deviceevents.GBDeviceEvent;
import nodomain.freeyourgadget.gadgetbridge.deviceevents.GBDeviceEventAppInfo; import nodomain.freeyourgadget.gadgetbridge.deviceevents.GBDeviceEventAppInfo;
import nodomain.freeyourgadget.gadgetbridge.deviceevents.GBDeviceEventAppManagementResult; import nodomain.freeyourgadget.gadgetbridge.deviceevents.GBDeviceEventAppManagementResult;
@ -24,7 +24,7 @@ import nodomain.freeyourgadget.gadgetbridge.deviceevents.GBDeviceEventMusicContr
import nodomain.freeyourgadget.gadgetbridge.deviceevents.GBDeviceEventScreenshot; import nodomain.freeyourgadget.gadgetbridge.deviceevents.GBDeviceEventScreenshot;
import nodomain.freeyourgadget.gadgetbridge.deviceevents.GBDeviceEventSendBytes; import nodomain.freeyourgadget.gadgetbridge.deviceevents.GBDeviceEventSendBytes;
import nodomain.freeyourgadget.gadgetbridge.deviceevents.GBDeviceEventVersionInfo; import nodomain.freeyourgadget.gadgetbridge.deviceevents.GBDeviceEventVersionInfo;
import nodomain.freeyourgadget.gadgetbridge.protocol.GBDeviceProtocol; import nodomain.freeyourgadget.gadgetbridge.service.GBDeviceProtocol;
public class PebbleProtocol extends GBDeviceProtocol { public class PebbleProtocol extends GBDeviceProtocol {
@ -107,9 +107,9 @@ public class PebbleProtocol extends GBDeviceProtocol {
static final byte PUTBYTES_ABORT = 4; static final byte PUTBYTES_ABORT = 4;
static final byte PUTBYTES_COMPLETE = 5; static final byte PUTBYTES_COMPLETE = 5;
static final byte PUTBYTES_TYPE_FIRMWARE = 1; public static final byte PUTBYTES_TYPE_FIRMWARE = 1;
static final byte PUTBYTES_TYPE_RECOVERY = 2; public static final byte PUTBYTES_TYPE_RECOVERY = 2;
static final byte PUTBYTES_TYPE_SYSRESOURCES = 3; public static final byte PUTBYTES_TYPE_SYSRESOURCES = 3;
public static final byte PUTBYTES_TYPE_RESOURCES = 4; public static final byte PUTBYTES_TYPE_RESOURCES = 4;
public static final byte PUTBYTES_TYPE_BINARY = 5; public static final byte PUTBYTES_TYPE_BINARY = 5;
static final byte PUTBYTES_TYPE_FILE = 6; static final byte PUTBYTES_TYPE_FILE = 6;
@ -287,7 +287,7 @@ public class PebbleProtocol extends GBDeviceProtocol {
@Override @Override
public byte[] encodeFindDevice(boolean start) { public byte[] encodeFindDevice(boolean start) {
return encodeSetCallState("Where are you?", "Gadgetbridge", start ? GBCommand.CALL_INCOMING : GBCommand.CALL_END); return encodeSetCallState("Where are you?", "Gadgetbridge", start ? ServiceCommand.CALL_INCOMING : ServiceCommand.CALL_END);
} }
private static byte[] encodeExtensibleNotification(int id, int timestamp, String title, String subtitle, String body, byte type) { private static byte[] encodeExtensibleNotification(int id, int timestamp, String title, String subtitle, String body, byte type) {
@ -450,7 +450,7 @@ public class PebbleProtocol extends GBDeviceProtocol {
} }
@Override @Override
public byte[] encodeSetCallState(String number, String name, GBCommand command) { public byte[] encodeSetCallState(String number, String name, ServiceCommand command) {
String[] parts = {number, name}; String[] parts = {number, name};
byte pebbleCmd; byte pebbleCmd;
switch (command) { switch (command) {

View File

@ -1,13 +1,13 @@
package nodomain.freeyourgadget.gadgetbridge.pebble; package nodomain.freeyourgadget.gadgetbridge.service.pebble;
import android.net.Uri; import android.net.Uri;
import java.util.ArrayList; import java.util.ArrayList;
import nodomain.freeyourgadget.gadgetbridge.AbstractBTDeviceSupport; import nodomain.freeyourgadget.gadgetbridge.model.Alarm;
import nodomain.freeyourgadget.gadgetbridge.GBAlarm; import nodomain.freeyourgadget.gadgetbridge.service.AbstractBTDeviceSupport;
import nodomain.freeyourgadget.gadgetbridge.GBDeviceIoThread; import nodomain.freeyourgadget.gadgetbridge.service.GBDeviceIoThread;
import nodomain.freeyourgadget.gadgetbridge.protocol.GBDeviceProtocol; import nodomain.freeyourgadget.gadgetbridge.service.GBDeviceProtocol;
public class PebbleSupport extends AbstractBTDeviceSupport { public class PebbleSupport extends AbstractBTDeviceSupport {
@ -43,7 +43,7 @@ public class PebbleSupport extends AbstractBTDeviceSupport {
} }
@Override @Override
public void onSetAlarms(ArrayList<GBAlarm> alarms) { public void onSetAlarms(ArrayList<Alarm> alarms) {
//nothing to do ATM //nothing to do ATM
} }
} }

Some files were not shown because too many files have changed in this diff Show More