Skip to content

Commit e5dbb3b

Browse files
committed
first online / offline message exchange worked within makan
1 parent 521c49a commit e5dbb3b

9 files changed

Lines changed: 119 additions & 115 deletions

File tree

app/build.gradle

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,14 @@ https://developer.android.com/studio/projects/android-library
33
*/
44

55
// choose one line either for an app or a lib
6-
apply plugin: 'com.android.application'
7-
//apply plugin: 'com.android.library'
6+
//apply plugin: 'com.android.application'
7+
apply plugin: 'com.android.library'
88

99
android {
1010
compileSdkVersion 28
1111
defaultConfig {
1212
// we produce a library by commenting out that line:
13-
applicationId "net.sharksystem.asap.example"
13+
// applicationId "net.sharksystem.asap.example"
1414
minSdkVersion 23
1515
targetSdkVersion 28
1616
versionCode 1

app/libs/ASAP_Engine_0.5.0.jar

2.78 KB
Binary file not shown.

app/src/main/java/net/sharksystem/asap/android/apps/ASAPOnlineMessageSenderUserSide.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66

77
import net.sharksystem.asap.ASAPAbstractOnlineMessageSender;
88
import net.sharksystem.asap.ASAPException;
9-
import net.sharksystem.asap.ASAPStorage;
109
import net.sharksystem.asap.android.ASAP;
1110
import net.sharksystem.asap.android.ASAPServiceMethods;
1211
import net.sharksystem.asap.android.Util;
@@ -15,6 +14,7 @@
1514
import java.util.List;
1615

1716
public class ASAPOnlineMessageSenderUserSide extends ASAPAbstractOnlineMessageSender {
17+
1818
private final ASAPApplication asapApplication;
1919

2020
public ASAPOnlineMessageSenderUserSide(ASAPApplication asapApplication) {
@@ -24,7 +24,7 @@ public ASAPOnlineMessageSenderUserSide(ASAPApplication asapApplication) {
2424
@Override
2525
public void sendASAPAssimilate(CharSequence format, CharSequence uri,
2626
List<CharSequence> recipients, byte[] messageAsBytes,
27-
int era) throws IOException, ASAPException {
27+
int era) throws ASAPException {
2828

2929
Message msg;
3030

@@ -61,7 +61,7 @@ private boolean isOnline(CharSequence peer) {
6161
public void sendASAPAssimilate(CharSequence format, CharSequence uri, byte[] messageAsBytes, int era)
6262
throws IOException, ASAPException {
6363

64-
this.sendASAPAssimilate(format, uri, null, messageAsBytes, era);
64+
this.sendASAPAssimilate(format, uri, (CharSequence) null, messageAsBytes, era);
6565
}
6666

6767
private Message createSendASAPMessageMessage(CharSequence format, CharSequence uri,
@@ -78,9 +78,10 @@ private Message createSendASAPMessageMessage(CharSequence format, CharSequence u
7878
Message msg = Message.obtain(null, ASAPServiceMethods.SEND_MESSAGE, 0, 0);
7979
Bundle msgData = new Bundle();
8080
msgData.putCharSequence(ASAP.FORMAT, format);
81-
if(recipient != null) { msgData.putCharSequence(ASAP.RECIPIENT, recipient); }
8281
msgData.putCharSequence(ASAP.URI, uri);
82+
if(recipient != null) { msgData.putCharSequence(ASAP.RECIPIENT, recipient); }
8383
msgData.putByteArray(ASAP.MESSAGE_CONTENT, asapMessage);
84+
msgData.putInt(ASAP.ERA, era);
8485
msg.setData(msgData);
8586

8687
return msg;

app/src/main/java/net/sharksystem/asap/android/bluetooth/BluetoothEngine.java

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
import android.util.Log;
1111

1212
import net.sharksystem.asap.ASAPException;
13-
import net.sharksystem.asap.android.service.ASAPSession;
13+
import net.sharksystem.asap.android.service.ASAPConnectionLauncher;
1414
import net.sharksystem.asap.android.service.MacLayerEngine;
1515
import net.sharksystem.asap.android.service.ASAPService;
1616
import net.sharksystem.asap.android.Util;
@@ -185,11 +185,13 @@ public void startDiscoverable(int time) {
185185
* Start a BT scanning sweep of the area. According to android manual, each
186186
* sweep takes 12 seconds - thus that method could be called frequently.
187187
*/
188-
public void startDiscovery() {
188+
public boolean startDiscovery() {
189189
if(this.mBluetoothAdapter.startDiscovery()) {
190190
Log.d(this.getLogStart(), "successfully started Bluetooth discovery");
191+
return true;
191192
} else {
192193
Log.e(this.getLogStart(), "could not start Bluetooth discovery");
194+
return false;
193195
}
194196
}
195197

@@ -240,16 +242,26 @@ BluetoothAdapter getBTAdapter() throws ASAPException {
240242
/////////////////////////////////////////////////////////////////////////////////////////
241243

242244
void deviceFound(BluetoothDevice btDevice, BluetoothClass btClass) {
243-
Log.d(this.getLogStart(), "deviceFound called");
244245
String macAddress = btDevice.getAddress();// MAC address
245-
btDevice.getName(); // name
246+
247+
StringBuilder sb = new StringBuilder();
248+
sb.append("device found: ");
249+
sb.append(macAddress);
250+
sb.append(" | ");
251+
sb.append(btDevice.getName());
252+
sb.append("my address: ");
253+
sb.append(this.mBluetoothAdapter.getAddress());
254+
Log.d(this.getLogStart(), sb.toString());
246255

247256
// strongly recommended to stop discovery
248257
//this.mBluetoothAdapter.cancelDiscovery();
249258

250259
if(this.shouldConnectToMACPeer(macAddress)) {
251-
Log.d(this.getLogStart(), "create and BT client socket thread");
260+
Log.d(this.getLogStart(), "create a BT client socket thread");
252261
new BluetoothClientSocketThread(this, btDevice).start();
262+
} else {
263+
Log.d(this.getLogStart(), "should and will not connect to that device: "
264+
+ macAddress);
253265
}
254266
}
255267

@@ -274,8 +286,8 @@ void handleBTSocket(BluetoothSocket socket) throws IOException {
274286
*/
275287

276288
// set up new ASAP Session and we are done here.
277-
new ASAPSession(socket.getInputStream(), socket.getOutputStream(),
278-
this.getAsapService().getASAPEngine(), this).start();
289+
new ASAPConnectionLauncher(socket.getInputStream(), socket.getOutputStream(),
290+
this.getAsapService().getASAPEngine()).start();
279291
}
280292

281293
public void propagateStatus(Context ctx) {

app/src/main/java/net/sharksystem/asap/android/service/ASAPSession.java renamed to app/src/main/java/net/sharksystem/asap/android/service/ASAPConnectionLauncher.java

Lines changed: 11 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -4,47 +4,43 @@
44

55
import net.sharksystem.asap.ASAPException;
66
import net.sharksystem.asap.MultiASAPEngineFS;
7+
import net.sharksystem.asap.android.Util;
78
import net.sharksystem.util.tcp.TCPChannelMaker;
89

910
import java.io.IOException;
1011
import java.io.InputStream;
1112
import java.io.OutputStream;
1213

13-
public class ASAPSession extends Thread {
14+
public class ASAPConnectionLauncher extends Thread {
1415
private TCPChannelMaker channelMaker;
1516
private final MultiASAPEngineFS asapEngine;
16-
private final ASAPSessionListener asapSessionListener;
1717
private InputStream is;
1818
private OutputStream os;
1919

20-
public ASAPSession(TCPChannelMaker channelMaker, MultiASAPEngineFS asapEngine,
21-
ASAPSessionListener asapSessionListener) {
22-
23-
this(asapEngine, asapSessionListener);
20+
public ASAPConnectionLauncher(TCPChannelMaker channelMaker, MultiASAPEngineFS asapEngine) {
21+
this(asapEngine);
2422
this.channelMaker = channelMaker;
2523
this.is = null;
2624
this.os = null;
2725
}
2826

29-
public ASAPSession(InputStream is, OutputStream os, MultiASAPEngineFS asapEngine,
30-
ASAPSessionListener asapSessionListener) {
31-
this(asapEngine, asapSessionListener);
27+
public ASAPConnectionLauncher(InputStream is, OutputStream os, MultiASAPEngineFS asapEngine) {
28+
this(asapEngine);
3229
this.is = is;
3330
this.os = os;
3431
this.channelMaker = null;
3532
}
3633

37-
private ASAPSession(MultiASAPEngineFS asapEngine,ASAPSessionListener asapSessionListener) {
34+
private ASAPConnectionLauncher(MultiASAPEngineFS asapEngine) {
3835
this.asapEngine = asapEngine;
39-
this.asapSessionListener = asapSessionListener;
4036
}
4137

4238
private String getLogStart() {
43-
return "ASAPSession";
39+
return Util.getLogStart(this);
4440
}
4541

4642
public void run() {
47-
Log.d(this.getLogStart(), "session started");
43+
Log.d(this.getLogStart(), "started");
4844

4945
try {
5046
if(this.is == null) {
@@ -65,12 +61,10 @@ public void run() {
6561
this.os = this.channelMaker.getOutputStream();
6662
}
6763

68-
this.asapSessionListener.sessionStarted();
64+
Log.d(this.getLogStart(), "call asapMultiEngine to handle connection");
6965
this.asapEngine.handleConnection(this.is, this.os);
70-
this.asapSessionListener.asapSessionFinished();
71-
7266
} catch (IOException | ASAPException e) {
73-
Log.d(this.getLogStart(), "while handling connection: " + e.getLocalizedMessage());
67+
Log.d(this.getLogStart(), "while laucnhing asap connection: " + e.getLocalizedMessage());
7468
try {
7569
this.os.close();
7670
} catch (IOException ex) {

app/src/main/java/net/sharksystem/asap/android/service/ASAPMessageHandler.java

Lines changed: 61 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -27,64 +27,7 @@ public void handleMessage(Message msg) {
2727
try {
2828
switch (msg.what) {
2929
case ASAPServiceMethods.SEND_MESSAGE:
30-
Bundle msgData = msg.getData();
31-
if (msgData != null) {
32-
String recipient = msgData.getString(ASAP.RECIPIENT);
33-
String uri = msgData.getString(ASAP.URI);
34-
String format = msgData.getString(ASAP.FORMAT);
35-
byte[] content = msgData.getByteArray(ASAP.MESSAGE_CONTENT);
36-
int era = msgData.getInt(ASAP.ERA);
37-
38-
Log.d(LOGSTART, "received send message request");
39-
if(uri == null) {
40-
Log.e(LOGSTART, "uri must not be empty");
41-
return;
42-
}
43-
44-
if(content == null) {
45-
Log.e(LOGSTART, "format content must not be empty");
46-
return;
47-
}
48-
49-
if(format == null) {
50-
Log.e(LOGSTART, "format must not be empty");
51-
return;
52-
}
53-
54-
try {
55-
StringBuilder sb = new StringBuilder();
56-
sb.append("going to send message to service:");
57-
sb.append(" | format: ");
58-
sb.append(format);
59-
sb.append(" | uri: ");
60-
sb.append(uri);
61-
sb.append(" | recipient: ");
62-
if(recipient == null) {
63-
sb.append("not set");
64-
} else {
65-
sb.append(recipient);
66-
}
67-
sb.append(" | era: ");
68-
sb.append(era);
69-
70-
Log.d(LOGSTART, sb.toString());
71-
72-
ASAPOnlineMessageSender asapOnlineMessageSender =
73-
this.asapService.getASAPOnlineMessageSender();
74-
List<CharSequence> recipients = null;
75-
76-
if(recipient != null) {
77-
recipients = new ArrayList<>();
78-
recipients.add(recipient);
79-
}
80-
81-
asapOnlineMessageSender.sendASAPAssimilate(
82-
format, uri, recipients, content, era);
83-
} catch (Throwable e) {
84-
e.printStackTrace();
85-
}
86-
}
87-
Log.d(LOGSTART, "finish asap write");
30+
this.handleSendMessage(msg);
8831
break;
8932

9033
case ASAPServiceMethods.START_WIFI_DIRECT:
@@ -132,4 +75,64 @@ public void handleMessage(Message msg) {
13275
Log.d(LOGSTART, e.getLocalizedMessage());
13376
}
13477
}
78+
79+
private void handleSendMessage(Message msg) {
80+
Bundle msgData = msg.getData();
81+
if (msgData != null) {
82+
String format = msgData.getString(ASAP.FORMAT);
83+
String uri = msgData.getString(ASAP.URI);
84+
String recipient = msgData.getString(ASAP.RECIPIENT);
85+
byte[] content = msgData.getByteArray(ASAP.MESSAGE_CONTENT);
86+
int era = msgData.getInt(ASAP.ERA);
87+
88+
Log.d(LOGSTART, "received send message request");
89+
if(uri == null) {
90+
Log.e(LOGSTART, "uri must not be empty");
91+
return;
92+
}
93+
94+
if(content == null) {
95+
Log.e(LOGSTART, "format content must not be empty");
96+
return;
97+
}
98+
99+
if(format == null) {
100+
Log.e(LOGSTART, "format must not be empty");
101+
return;
102+
}
103+
104+
try {
105+
StringBuilder sb = new StringBuilder();
106+
sb.append("going to send message to service:");
107+
sb.append(" | format: ");
108+
sb.append(format);
109+
sb.append(" | uri: ");
110+
sb.append(uri);
111+
sb.append(" | recipient: ");
112+
if(recipient == null) {
113+
sb.append("not set");
114+
} else {
115+
sb.append(recipient);
116+
}
117+
sb.append(" | era: ");
118+
sb.append(era);
119+
120+
Log.d(LOGSTART, sb.toString());
121+
122+
ASAPOnlineMessageSender asapOnlineMessageSender =
123+
this.asapService.getASAPOnlineMessageSender();
124+
125+
if(asapOnlineMessageSender == null) {
126+
Log.e(LOGSTART, "got no asap online message sender from service");
127+
return;
128+
}
129+
130+
asapOnlineMessageSender.sendASAPAssimilate(
131+
format, uri, recipient, content, era);
132+
133+
} catch (Throwable e) {
134+
e.printStackTrace();
135+
}
136+
}
137+
}
135138
}

app/src/main/java/net/sharksystem/asap/android/service/ASAPService.java

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,10 @@ public MultiASAPEngineFS getASAPEngine() {
7979
this.asapMultiEngine = MultiASAPEngineFS_Impl.createMultiEngine(
8080
this.asapEngineRootFolderName, this);
8181
Log.d(LOGSTART,"engine created");
82+
83+
this.asapMultiEngine.addOnlinePeersChangedListener(this);
84+
Log.d(LOGSTART,"added online peer changed listener");
85+
8286
} catch (IOException e) {
8387
Log.d(LOGSTART,"IOException");
8488
Log.d(LOGSTART,e.getLocalizedMessage());
@@ -202,19 +206,25 @@ void startBluetoothDiscoverable() {
202206

203207
asapBluetoothEngine.startDiscoverable();
204208

205-
Log.d("ASAPService", "started bluetooth discoverable");
209+
Log.d(this.getLogStart(), "started bluetooth discoverable");
206210
}
207211

208212

209213
public void startBluetoothDiscovery() {
210-
Log.d("ASAPService", "start bluetooth discovery");
214+
Log.d(this.getLogStart(), "start bluetooth discovery");
211215

212216
BluetoothEngine asapBluetoothEngine =
213217
BluetoothEngine.getASAPBluetoothEngine(this, this);
214218

215-
asapBluetoothEngine.startDiscovery();
219+
if(asapBluetoothEngine.startDiscovery()) {
220+
Log.d(this.getLogStart(), "started bluetooth discovery");
221+
} else {
222+
Log.d(this.getLogStart(), "starting bluetooth discovery failed");
223+
}
224+
}
216225

217-
Log.d("ASAPService", "started bluetooth discovery");
226+
private String getLogStart() {
227+
return Util.getLogStart(this);
218228
}
219229

220230

0 commit comments

Comments
 (0)