|
|
@ -2,9 +2,6 @@ package com.rookiedev.hexapod
|
|
|
|
|
|
|
|
|
|
|
|
import android.annotation.SuppressLint
|
|
|
|
import android.annotation.SuppressLint
|
|
|
|
import android.app.AlertDialog
|
|
|
|
import android.app.AlertDialog
|
|
|
|
import android.bluetooth.BluetoothAdapter
|
|
|
|
|
|
|
|
import android.bluetooth.BluetoothManager
|
|
|
|
|
|
|
|
import android.bluetooth.BluetoothSocket
|
|
|
|
|
|
|
|
import android.content.Context
|
|
|
|
import android.content.Context
|
|
|
|
import android.content.DialogInterface
|
|
|
|
import android.content.DialogInterface
|
|
|
|
import android.os.Bundle
|
|
|
|
import android.os.Bundle
|
|
|
@ -15,14 +12,9 @@ import android.widget.Button
|
|
|
|
import android.widget.ImageView
|
|
|
|
import android.widget.ImageView
|
|
|
|
import androidx.appcompat.app.AppCompatActivity
|
|
|
|
import androidx.appcompat.app.AppCompatActivity
|
|
|
|
import androidx.constraintlayout.widget.ConstraintLayout
|
|
|
|
import androidx.constraintlayout.widget.ConstraintLayout
|
|
|
|
import com.rookiedev.hexapod.network.BluetoothService
|
|
|
|
import com.rookiedev.hexapod.network.BluetoothClient
|
|
|
|
import com.rookiedev.hexapod.network.TCPClient
|
|
|
|
import com.rookiedev.hexapod.network.TCPClient
|
|
|
|
import com.rookiedev.hexapod.network.TCPClient.*
|
|
|
|
|
|
|
|
import kotlinx.coroutines.*
|
|
|
|
import kotlinx.coroutines.*
|
|
|
|
import java.io.*
|
|
|
|
|
|
|
|
import java.lang.reflect.InvocationTargetException
|
|
|
|
|
|
|
|
import java.lang.reflect.Method
|
|
|
|
|
|
|
|
import java.util.*
|
|
|
|
|
|
|
|
import kotlin.math.PI
|
|
|
|
import kotlin.math.PI
|
|
|
|
import kotlin.math.atan2
|
|
|
|
import kotlin.math.atan2
|
|
|
|
import kotlin.math.pow
|
|
|
|
import kotlin.math.pow
|
|
|
@ -85,15 +77,14 @@ class ControlActivity : AppCompatActivity() {
|
|
|
|
|
|
|
|
|
|
|
|
private var mContext: Context? = null
|
|
|
|
private var mContext: Context? = null
|
|
|
|
|
|
|
|
|
|
|
|
private var mac: String = ""
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// private val mBluetoothAdapter: BluetoothAdapter? = null
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private var tcpClient: TCPClient? = null
|
|
|
|
private var tcpClient: TCPClient? = null
|
|
|
|
private var ip: String = ""
|
|
|
|
private var ip: String = ""
|
|
|
|
private var port = 0
|
|
|
|
private var port = 0
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private var btClient: BluetoothClient? = null
|
|
|
|
|
|
|
|
private var mac: String = ""
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private val scope = CoroutineScope(Job() + Dispatchers.IO)
|
|
|
|
private val scope = CoroutineScope(Job() + Dispatchers.IO)
|
|
|
|
|
|
|
|
|
|
|
|
private var currentState: String = "standby"
|
|
|
|
private var currentState: String = "standby"
|
|
|
@ -368,14 +359,14 @@ class ControlActivity : AppCompatActivity() {
|
|
|
|
progressBar.visibility = View.VISIBLE
|
|
|
|
progressBar.visibility = View.VISIBLE
|
|
|
|
|
|
|
|
|
|
|
|
if (connectInterface == "WiFi") {
|
|
|
|
if (connectInterface == "WiFi") {
|
|
|
|
this.tcpClient = TCPClient(ip, port, object : OnMessageReceived {
|
|
|
|
this.tcpClient = TCPClient(ip, port, object : TCPClient.OnMessageReceived {
|
|
|
|
override fun messageReceived(message: String?) {
|
|
|
|
override fun messageReceived(message: String?) {
|
|
|
|
if (message == null) {
|
|
|
|
if (message == null) {
|
|
|
|
// alertDialog(DISCONNECTED)
|
|
|
|
// alertDialog(DISCONNECTED)
|
|
|
|
println("no message")
|
|
|
|
println("no message")
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}, object : OnConnectEstablished {
|
|
|
|
}, object : TCPClient.OnConnectEstablished {
|
|
|
|
override fun onConnected() {
|
|
|
|
override fun onConnected() {
|
|
|
|
// udpClient.start()
|
|
|
|
// udpClient.start()
|
|
|
|
println("connected")
|
|
|
|
println("connected")
|
|
|
@ -383,7 +374,7 @@ class ControlActivity : AppCompatActivity() {
|
|
|
|
progressBar.visibility = View.GONE
|
|
|
|
progressBar.visibility = View.GONE
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}, object : OnDisconnected {
|
|
|
|
}, object : TCPClient.OnDisconnected {
|
|
|
|
override fun onDisconnected() {
|
|
|
|
override fun onDisconnected() {
|
|
|
|
Handler(Looper.getMainLooper()).post {
|
|
|
|
Handler(Looper.getMainLooper()).post {
|
|
|
|
progressBar.visibility = View.GONE
|
|
|
|
progressBar.visibility = View.GONE
|
|
|
@ -395,6 +386,31 @@ class ControlActivity : AppCompatActivity() {
|
|
|
|
this.tcpClient!!.start()
|
|
|
|
this.tcpClient!!.start()
|
|
|
|
} else if (connectInterface == "Bluetooth") {
|
|
|
|
} else if (connectInterface == "Bluetooth") {
|
|
|
|
println("Bluetooth")
|
|
|
|
println("Bluetooth")
|
|
|
|
|
|
|
|
this.btClient = BluetoothClient(mContext, mac, object : BluetoothClient.OnMessageReceived {
|
|
|
|
|
|
|
|
override fun messageReceived(message: String?) {
|
|
|
|
|
|
|
|
if (message == null) {
|
|
|
|
|
|
|
|
// alertDialog(DISCONNECTED)
|
|
|
|
|
|
|
|
println("no message")
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}, object : BluetoothClient.OnConnectEstablished {
|
|
|
|
|
|
|
|
override fun onConnected() {
|
|
|
|
|
|
|
|
// udpClient.start()
|
|
|
|
|
|
|
|
println("connected")
|
|
|
|
|
|
|
|
Handler(Looper.getMainLooper()).post {
|
|
|
|
|
|
|
|
progressBar.visibility = View.GONE
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}, object : BluetoothClient.OnDisconnected {
|
|
|
|
|
|
|
|
override fun onDisconnected() {
|
|
|
|
|
|
|
|
Handler(Looper.getMainLooper()).post {
|
|
|
|
|
|
|
|
progressBar.visibility = View.GONE
|
|
|
|
|
|
|
|
alertDialog(0)
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
this.btClient!!.start()
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
@ -419,8 +435,13 @@ class ControlActivity : AppCompatActivity() {
|
|
|
|
println("on Pause")
|
|
|
|
println("on Pause")
|
|
|
|
|
|
|
|
|
|
|
|
// saveSharedPref()
|
|
|
|
// saveSharedPref()
|
|
|
|
|
|
|
|
if (connectInterface == "WiFi") {
|
|
|
|
tcpClient!!.stopClient()
|
|
|
|
tcpClient!!.stopClient()
|
|
|
|
tcpClient!!.interrupt()
|
|
|
|
tcpClient!!.interrupt()
|
|
|
|
|
|
|
|
}else if (connectInterface == "Bluetooth"){
|
|
|
|
|
|
|
|
btClient!!.stopClient()
|
|
|
|
|
|
|
|
btClient!!.interrupt()
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
@ -444,8 +465,13 @@ class ControlActivity : AppCompatActivity() {
|
|
|
|
// Starts a new coroutine within the scope
|
|
|
|
// Starts a new coroutine within the scope
|
|
|
|
scope.launch {
|
|
|
|
scope.launch {
|
|
|
|
// New coroutine that can call suspend functions
|
|
|
|
// New coroutine that can call suspend functions
|
|
|
|
|
|
|
|
|
|
|
|
withContext(Dispatchers.IO) { // Dispatchers.IO (main-safety block)
|
|
|
|
withContext(Dispatchers.IO) { // Dispatchers.IO (main-safety block)
|
|
|
|
|
|
|
|
if (connectInterface == "WiFi") {
|
|
|
|
tcpClient?.sendMessage(message)
|
|
|
|
tcpClient?.sendMessage(message)
|
|
|
|
|
|
|
|
}else if(connectInterface == "Bluetooth"){
|
|
|
|
|
|
|
|
btClient?.sendMessage(message)
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|