diff --git a/.idea/libraries/GraphView_3_1_2.xml b/.idea/libraries/GraphView_3_1_2.xml
index 78349eb..970f273 100755
--- a/.idea/libraries/GraphView_3_1_2.xml
+++ b/.idea/libraries/GraphView_3_1_2.xml
@@ -4,8 +4,6 @@
-
-
-
+
\ No newline at end of file
diff --git a/app/app-release.apk b/app/app-release.apk
index 4d054c2..9f6667b 100755
Binary files a/app/app-release.apk and b/app/app-release.apk differ
diff --git a/app/build.gradle b/app/build.gradle
index 2818033..fa425ad 100755
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -8,8 +8,8 @@ android {
applicationId "com.ericsson.uecontrol"
minSdkVersion 15
targetSdkVersion 19
- versionCode 10
- versionName "1.0.10"
+ versionCode 11
+ versionName "1.0.11"
}
buildTypes {
release {
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 0a4b579..385b953 100755
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -32,8 +32,9 @@
-
+
+
diff --git a/app/src/main/java/com/ericsson/uecontrol/core/behaviour/UeBehaviourSendSMS.java b/app/src/main/java/com/ericsson/uecontrol/core/behaviour/UeBehaviourSendSMS.java
new file mode 100755
index 0000000..1d69865
--- /dev/null
+++ b/app/src/main/java/com/ericsson/uecontrol/core/behaviour/UeBehaviourSendSMS.java
@@ -0,0 +1,124 @@
+package com.ericsson.uecontrol.core.behaviour;
+
+import android.app.Activity;
+import android.app.PendingIntent;
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.telephony.SmsManager;
+import android.widget.Toast;
+
+import com.ericsson.uecontrol.core.UeBehaviour;
+import com.ericsson.uecontrol.gui.MainActivity;
+import com.ericsson.uecontrol.gui.util.Configurator.Configurable;
+
+import org.apache.log4j.Logger;
+
+/**
+ * Created by ezivkoc on 2014-08-06.
+ */
+public class UeBehaviourSendSMS extends UeBehaviour{
+ private static final Logger log = Logger.getLogger(UeBehaviourSendSMS.class);
+ private static final String INTENT_ACTION_SENT = "SMS_SENT";
+ private static final String INTENT_ACTION_DELIVERED = "SMS_DELIVERED";
+ private static final int SLEEP_PERIOD = 200;
+
+ private static enum MessageStatus{
+ UNKNOWN, MESSAGE_SENT, MESSAGE_DELIVERED, MESSAGE_SEND_ERROR, MESSAGE_CANCELED
+ }
+
+ @Configurable("Phone Number")
+ private String phoneNumber;
+ @Configurable("Message Text")
+ private String message;
+
+ private transient MessageStatus status;
+ private transient Exception exception;
+
+ private transient BroadcastReceiver sentBroadcastReceiver = new BroadcastReceiver() {
+ public void onReceive(Context arg0, Intent arg1) { setSendingStatus(getResultCode()); }};
+ private transient BroadcastReceiver deliveryBroadcastReceiver = new BroadcastReceiver() {
+ public void onReceive(Context arg0, Intent arg1) { setDeliveryStatus(getResultCode()); }};
+
+ @Override
+ protected void execute() throws Exception {
+ Context context = MainActivity.getContext();
+ status = MessageStatus.UNKNOWN;
+ exception = null;
+
+ // Register PendingIntents and BroadcastReceivers
+ log.debug("Registering PendingIntents");
+ PendingIntent sentPI = PendingIntent.getBroadcast(
+ context, 0, new Intent(INTENT_ACTION_SENT), 0);
+ PendingIntent deliveredPI = PendingIntent.getBroadcast(
+ context, 0, new Intent(INTENT_ACTION_DELIVERED), 0);
+
+ context.registerReceiver(sentBroadcastReceiver, new IntentFilter(INTENT_ACTION_SENT));
+ context.registerReceiver(deliveryBroadcastReceiver, new IntentFilter(INTENT_ACTION_DELIVERED));
+
+ // Send message
+ log.debug("Sending message");
+ SmsManager sms = SmsManager.getDefault();
+ sms.sendTextMessage(phoneNumber, null, message, sentPI, deliveredPI);
+ this.setProgress(1/3);
+
+ // Wait for the message sending
+ while(status != MessageStatus.MESSAGE_DELIVERED ||
+ status != MessageStatus.MESSAGE_CANCELED){
+ if(status == MessageStatus.MESSAGE_SENT)
+ this.setProgress(2/3);
+ Thread.sleep(SLEEP_PERIOD);
+ }
+ this.setProgress(3/3);
+
+ // Cleanup
+ context.unregisterReceiver(sentBroadcastReceiver);
+ context.unregisterReceiver(deliveryBroadcastReceiver);
+ }
+
+ private void setSendingStatus(int code){
+ switch (code) {
+ case Activity.RESULT_OK:
+ log.debug("Message sent");
+ status = MessageStatus.MESSAGE_SENT;
+ break;
+ default:
+ exception = new Exception("There was an error when sending the sms: "+getCodeString(code));
+ }
+ }
+ private void setDeliveryStatus(int code){
+ switch (code) {
+ case Activity.RESULT_OK:
+ log.debug("Message delivered");
+ status = MessageStatus.MESSAGE_DELIVERED;
+ break;
+ case Activity.RESULT_CANCELED:
+ log.debug("Message canceled");
+ status = MessageStatus.MESSAGE_CANCELED;
+ break;
+ }
+ }
+ private String getCodeString(int code){
+ switch (code) {
+ case Activity.RESULT_CANCELED: return "RESULT_CANCELED";
+ case Activity.RESULT_OK: return "RESULT_OK";
+ case SmsManager.RESULT_ERROR_GENERIC_FAILURE: return "RESULT_ERROR_GENERIC_FAILURE";
+ case SmsManager.RESULT_ERROR_NO_SERVICE: return "RESULT_ERROR_NO_SERVICE";
+ case SmsManager.RESULT_ERROR_NULL_PDU: return "RESULT_ERROR_NULL_PDU";
+ case SmsManager.RESULT_ERROR_RADIO_OFF: return "RESULT_ERROR_RADIO_OFF";
+ }
+ return "UNKNOWN_CODE("+code+")";
+ }
+
+
+ @Override
+ public String getName() {
+ return "Send SMS";
+ }
+
+ @Override
+ public String toString() {
+ return "Will send an SMS to: " + phoneNumber;
+ }
+}
diff --git a/app/src/main/java/com/ericsson/uecontrol/gui/MainActivity.java b/app/src/main/java/com/ericsson/uecontrol/gui/MainActivity.java
index 16dc8e0..83479f1 100755
--- a/app/src/main/java/com/ericsson/uecontrol/gui/MainActivity.java
+++ b/app/src/main/java/com/ericsson/uecontrol/gui/MainActivity.java
@@ -1,6 +1,7 @@
package com.ericsson.uecontrol.gui;
import android.app.ActionBar;
+import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.SharedPreferences.OnSharedPreferenceChangeListener;
@@ -44,13 +45,15 @@ public class MainActivity extends FragmentActivity implements OnSharedPreference
private static UeControlExecutor currentExecutor;
private static CSVWriter csvLogger;
private static int uid;
+ private static Context context;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
- // Get UID
+ // Set static fields
uid = getApplicationInfo().uid;
+ context = this;
// Setup Debugging
setupDebugLogging();
@@ -70,7 +73,10 @@ public class MainActivity extends FragmentActivity implements OnSharedPreference
try {
log.debug("Reading saved state");
currentExecutor.read(input.getAbsolutePath());
- }catch(Exception e){log.error(null, e);}
+ }catch(Exception e){
+ Toast.makeText(this, "Unable to load saved state", Toast.LENGTH_SHORT).show();
+ log.error(null, e);
+ }
}
else{
log.debug("No saved state found, creating default behaviours");
@@ -167,20 +173,6 @@ public class MainActivity extends FragmentActivity implements OnSharedPreference
return super.onOptionsItemSelected(item);
}
- public static UeControlExecutor getExecutor() {
- return currentExecutor;
- }
-
- public static void logThroughput(double downThroughput, double upThroughput) {
- if(csvLogger == null || currentExecutor == null || currentExecutor.getRunningBehaviour() == null)
- return;
-
- csvLogger.write(currentExecutor.getRunningBehaviour().getName(), downThroughput, upThroughput);
- }
- public static int getUID(){
- return uid;
- }
-
@Override
public void onBackPressed() {
@@ -199,4 +191,23 @@ public class MainActivity extends FragmentActivity implements OnSharedPreference
}
}, 2000);
}
+
+
+
+
+ public static void logThroughput(double downThroughput, double upThroughput) {
+ if(csvLogger == null || currentExecutor == null || currentExecutor.getRunningBehaviour() == null)
+ return;
+
+ csvLogger.write(currentExecutor.getRunningBehaviour().getName(), downThroughput, upThroughput);
+ }
+
+ public static UeControlExecutor getExecutor() {
+ return currentExecutor;
+ }
+ public static int getUID(){
+ return uid;
+ }
+ public static Context getContext(){return context;}
+
}
diff --git a/app/src/main/res/values/arrays.xml b/app/src/main/res/values/arrays.xml
index 6ba9300..18e01c3 100755
--- a/app/src/main/res/values/arrays.xml
+++ b/app/src/main/res/values/arrays.xml
@@ -3,6 +3,7 @@
- com.ericsson.uecontrol.core.behaviour.UeBehaviourFileDownload
- com.ericsson.uecontrol.core.behaviour.UeBehaviourFtpDownload
+ - com.ericsson.uecontrol.core.behaviour.UeBehaviourSendSMS
- com.ericsson.uecontrol.core.behaviour.UeBehaviourSleep
- com.ericsson.uecontrol.core.behaviour.UeBehaviourSurfing
- com.ericsson.uecontrol.core.behaviour.UeBehaviourVideoStreaming