get sonar data in CL interface, sending to car and get result data
This commit is contained in:
@@ -15,11 +15,13 @@ class DebugClInterface {
|
|||||||
"cars - get list of connected cars\n" +
|
"cars - get list of connected cars\n" +
|
||||||
"route [car_id] - setting a route for car with car id.\n" +
|
"route [car_id] - setting a route for car with car id.\n" +
|
||||||
"refloc - refresh all car locations\n" +
|
"refloc - refresh all car locations\n" +
|
||||||
|
"sonar [car_id] - get sonar data\n" +
|
||||||
"dbinfo [car_id] [type] - refresh all car locations\n." +
|
"dbinfo [car_id] [type] - refresh all car locations\n." +
|
||||||
"type is string name of value or int value. available values: MEMORYSTATS - 0"
|
"type is string name of value or int value. available values: MEMORYSTATS - 0"
|
||||||
// "stop - exit from this interface and stop all servers\n"//todo sometimes server not completed. some threads dont stop
|
// "stop - exit from this interface and stop all servers\n"//todo sometimes server not completed. some threads dont stop
|
||||||
println(helpString)
|
println(helpString)
|
||||||
val routeRegex = Regex("route [0-9]{1,10}")
|
val routeRegex = Regex("route [0-9]{1,10}")
|
||||||
|
val sonarRegex = Regex("sonar [0-9]{1,10}")
|
||||||
val environment = objects.Environment.instance
|
val environment = objects.Environment.instance
|
||||||
while (true) {
|
while (true) {
|
||||||
val readedString = readLine()
|
val readedString = readLine()
|
||||||
@@ -77,7 +79,7 @@ class DebugClInterface {
|
|||||||
distance = wayPointData[0].toInt()
|
distance = wayPointData[0].toInt()
|
||||||
angle = wayPointData[1].toInt()
|
angle = wayPointData[1].toInt()
|
||||||
} catch (e: NumberFormatException) {
|
} catch (e: NumberFormatException) {
|
||||||
println("error in convertion angle or distance to int. try again")
|
println("error in converting angle or distance to int. try again")
|
||||||
continue
|
continue
|
||||||
} catch (e: IndexOutOfBoundsException) {
|
} catch (e: IndexOutOfBoundsException) {
|
||||||
println("format error, u must print two number separated by spaces. Try again")
|
println("format error, u must print two number separated by spaces. Try again")
|
||||||
@@ -109,6 +111,57 @@ class DebugClInterface {
|
|||||||
})
|
})
|
||||||
} else if (readedString.equals("stop")) {
|
} else if (readedString.equals("stop")) {
|
||||||
break
|
break
|
||||||
|
} else if (sonarRegex.matches(readedString)) {
|
||||||
|
val id: Int
|
||||||
|
try {
|
||||||
|
id = readedString.split(" ")[1].toInt()
|
||||||
|
} catch (e: NumberFormatException) {
|
||||||
|
e.printStackTrace()
|
||||||
|
println("error in converting id to int type")
|
||||||
|
println(helpString)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
val car: Car? =
|
||||||
|
synchronized(environment, {
|
||||||
|
environment.map.get(id)
|
||||||
|
})
|
||||||
|
if (car == null) {
|
||||||
|
println("car with id=$id not found")
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
println("print angles, after printing all angles print done")
|
||||||
|
val angles = arrayListOf<Int>()
|
||||||
|
while (true) {
|
||||||
|
val command = readLine()!!
|
||||||
|
if (command.equals("done", true)) {
|
||||||
|
val sonarBuilder = SonarRequest.BuilderSonarRequest(angles.toIntArray())
|
||||||
|
val requestObject = sonarBuilder.build()
|
||||||
|
val requestBytes = ByteArray(requestObject.getSizeNoTag())
|
||||||
|
requestObject.writeTo(CodedOutputStream(requestBytes))
|
||||||
|
val request = getDefaultHttpRequest(car.host, sonarUrl, requestBytes)
|
||||||
|
try {
|
||||||
|
Client.sendRequest(request, car.host, car.port, id)
|
||||||
|
} catch (e: InactiveCarException) {
|
||||||
|
synchronized(environment, {
|
||||||
|
environment.map.remove(id)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
break
|
||||||
|
} else {
|
||||||
|
try {
|
||||||
|
val angle = command.toInt()
|
||||||
|
if (angle < 0 || angle > 180) {
|
||||||
|
println("incorrect angle $angle. angle must be in [0,180] and div on 4")
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
angles.add(angle)
|
||||||
|
} catch (e: NumberFormatException) {
|
||||||
|
println("error in converting angle to int. try again")
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
} else if (readedString.contains("dbinfo")) {
|
} else if (readedString.contains("dbinfo")) {
|
||||||
val params = readedString.split(" ")
|
val params = readedString.split(" ")
|
||||||
if (!params[0].equals("dbinfo")) {
|
if (!params[0].equals("dbinfo")) {
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ val routeDoneUrl = "/routeDone"
|
|||||||
val setRouteUrl = "/route"
|
val setRouteUrl = "/route"
|
||||||
val connectUrl = "/connect"
|
val connectUrl = "/connect"
|
||||||
val debugMemoryUrl = "/debug/memory"
|
val debugMemoryUrl = "/debug/memory"
|
||||||
|
val sonarUrl = "/sonar"
|
||||||
|
|
||||||
fun main(args: Array<String>) {
|
fun main(args: Array<String>) {
|
||||||
|
|
||||||
|
|||||||
@@ -9,6 +9,8 @@ import io.netty.channel.SimpleChannelInboundHandler
|
|||||||
import io.netty.handler.codec.http.DefaultHttpContent
|
import io.netty.handler.codec.http.DefaultHttpContent
|
||||||
import io.netty.util.AttributeKey
|
import io.netty.util.AttributeKey
|
||||||
import objects.Environment
|
import objects.Environment
|
||||||
|
import sonarUrl
|
||||||
|
import java.util.*
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by user on 7/8/16.
|
* Created by user on 7/8/16.
|
||||||
@@ -47,6 +49,11 @@ class ClientHandler : SimpleChannelInboundHandler<Any> {
|
|||||||
println("heapDynamicTotalBytes ${response.heapDynamicTotalBytes}")
|
println("heapDynamicTotalBytes ${response.heapDynamicTotalBytes}")
|
||||||
println("heapStaticTail ${response.heapStaticTail}")
|
println("heapStaticTail ${response.heapStaticTail}")
|
||||||
}
|
}
|
||||||
|
sonarUrl -> {
|
||||||
|
val sonarDistances = SonarResponse.BuilderSonarResponse(IntArray(0)).build()
|
||||||
|
sonarDistances.mergeFrom(CodedInputStream(contentBytes))
|
||||||
|
println("distances from sonar: ${Arrays.toString(sonarDistances.distances)}")
|
||||||
|
}
|
||||||
else -> {
|
else -> {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,9 +15,6 @@ import io.netty.handler.codec.http.*
|
|||||||
import objects.Environment
|
import objects.Environment
|
||||||
import routeDoneUrl
|
import routeDoneUrl
|
||||||
|
|
||||||
/**
|
|
||||||
* Created by user on 7/6/16.
|
|
||||||
*/
|
|
||||||
class Handler : SimpleChannelInboundHandler<Any>() {
|
class Handler : SimpleChannelInboundHandler<Any>() {
|
||||||
|
|
||||||
var url: String = ""
|
var url: String = ""
|
||||||
|
|||||||
Reference in New Issue
Block a user