From c6e97d76d0722510e78f9765b3d0b5d4f6ecaad0 Mon Sep 17 00:00:00 2001 From: MaximZaitsev Date: Wed, 17 Aug 2016 16:48:54 +0300 Subject: [PATCH] simple refactoring --- car_srv/kotlinSrv/src/Main.kt | 27 ++++++++++++++ .../src/carControl/RouteExecutorToUsb.kt | 37 +++---------------- .../src/net/server/handlers/flash/LoadBin.kt | 21 ++--------- .../net/server/handlers/main/GetLocation.kt | 8 ++-- .../src/net/server/handlers/main/SetRoute.kt | 6 +-- .../src/net/server/handlers/rc/Connect.kt | 7 +--- .../src/net/server/handlers/rc/Control.kt | 6 +-- .../src/net/server/handlers/rc/Disconnect.kt | 6 +-- .../src/net/server/handlers/rc/Heartbeat.kt | 6 +-- 9 files changed, 49 insertions(+), 75 deletions(-) diff --git a/car_srv/kotlinSrv/src/Main.kt b/car_srv/kotlinSrv/src/Main.kt index 3faf5d20bfc..58ab1384db0 100644 --- a/car_srv/kotlinSrv/src/Main.kt +++ b/car_srv/kotlinSrv/src/Main.kt @@ -43,6 +43,33 @@ fun main(args: Array) { } +fun encodeInt(i: Int): ByteArray { + val result = ByteArray(4) + result[0] = i.shr(24).toByte() + result[1] = i.shr(16).toByte() + result[2] = i.shr(8).toByte() + result[3] = i.toByte() + + return result +} + +fun decodeInt(bytes: ByteArray): Int { + var result = 0 + result += bytes[3] + result += bytes[2].toInt().shl(8) + result += bytes[1].toInt().shl(16) + result += bytes[0].toInt().shl(24) + return result +} + +fun encodeProtoBuf(protoMessage: dynamic): ByteArray { + val protoSize = protoMessage.getSizeNoTag() + val routeBytes = ByteArray(protoSize) + + protoMessage.writeTo(CodedOutputStream(routeBytes)) + return routeBytes +} + @native fun require(name: String): dynamic { return null diff --git a/car_srv/kotlinSrv/src/carControl/RouteExecutorToUsb.kt b/car_srv/kotlinSrv/src/carControl/RouteExecutorToUsb.kt index 03a5671b80f..9e41475165f 100644 --- a/car_srv/kotlinSrv/src/carControl/RouteExecutorToUsb.kt +++ b/car_srv/kotlinSrv/src/carControl/RouteExecutorToUsb.kt @@ -2,44 +2,19 @@ package carControl import RouteRequest import mcTransport -import CodedOutputStream - -fun encode(i: Int): ByteArray { - val result = ByteArray(4) - result[0] = i.shr(24).toByte() - result[1] = i.shr(16).toByte() - result[2] = i.shr(8).toByte() - result[3] = i.toByte() - - return result -} - -fun decode(bytes: ByteArray): Int { - var result = 0 - result += bytes[3] - result += bytes[2].toInt().shl(8) - result += bytes[1].toInt().shl(16) - result += bytes[0].toInt().shl(24) - return result -} - -fun encodeRouteRequest(route: RouteRequest): ByteArray { - val protoSize = route.getSizeNoTag() - val routeBytes = ByteArray(protoSize) - - route.writeTo(CodedOutputStream(routeBytes)) - return routeBytes -} +import encodeInt +import decodeInt +import encodeProtoBuf class RouteExecutorToUsb : RouteExecutor { override fun executeRoute(route: RouteRequest) { println("Execute Route:") - val size = encode(route.getSizeNoTag()) - val routeBytes = encodeRouteRequest(route) + val size = encodeInt(route.getSizeNoTag()) + val routeBytes = encodeProtoBuf(route) mcTransport.setCallBack { bytes -> - println("Read $bytes; decoded: ${decode(bytes)}") + println("Read $bytes; decoded: ${decodeInt(bytes)}") } mcTransport.writeToFile(size) diff --git a/car_srv/kotlinSrv/src/net/server/handlers/flash/LoadBin.kt b/car_srv/kotlinSrv/src/net/server/handlers/flash/LoadBin.kt index bc82470e440..af58b37f5e8 100644 --- a/car_srv/kotlinSrv/src/net/server/handlers/flash/LoadBin.kt +++ b/car_srv/kotlinSrv/src/net/server/handlers/flash/LoadBin.kt @@ -3,7 +3,7 @@ package net.server.handlers.flash import net.server.handlers.AbstractHandler import require import CodedInputStream -import CodedOutputStream +import encodeProtoBuf import mcTransport /** @@ -25,28 +25,13 @@ class LoadBin : AbstractHandler { override fun getBytesResponse(data: ByteArray, callback: (b: ByteArray) -> Unit) { val message = fromServerObjectBuilder.build() message.mergeFrom(CodedInputStream(data)) - var resultCode = 0 val responseMessage = toServerObjectBuilder.build() mcTransport.writeToFile(message.data) -// if (error != null) { -// resultCode = 14 -// responseMessage.resultCode = resultCode -// val resultByteArray = ByteArray(responseMessage.getSizeNoTag()) -// responseMessage.writeTo(CodedOutputStream(resultByteArray)) -// callback.invoke(resultByteArray) -// } else { val stFlashCommand = "./st-flash write ./flash.bin " + "0x08000000" exec(stFlashCommand, { err, stdOutRes, stdErrRes -> - if (err != null) { - resultCode = 15 - } else { - resultCode = 0 - } + val resultCode = if (err != null) 15 else 0 responseMessage.resultCode = resultCode - val resultByteArray = ByteArray(responseMessage.getSizeNoTag()) - responseMessage.writeTo(CodedOutputStream(resultByteArray)) - callback.invoke(resultByteArray) + callback.invoke(encodeProtoBuf(responseMessage)) }) -// } } } \ No newline at end of file diff --git a/car_srv/kotlinSrv/src/net/server/handlers/main/GetLocation.kt b/car_srv/kotlinSrv/src/net/server/handlers/main/GetLocation.kt index 694d0f498a8..466f987f89c 100644 --- a/car_srv/kotlinSrv/src/net/server/handlers/main/GetLocation.kt +++ b/car_srv/kotlinSrv/src/net/server/handlers/main/GetLocation.kt @@ -1,7 +1,7 @@ package net.server.handlers.main import net.server.handlers.AbstractHandler -import CodedOutputStream +import encodeProtoBuf /** * Created by user on 7/28/16. @@ -17,9 +17,7 @@ class GetLocation : AbstractHandler { override fun getBytesResponse(data: ByteArray, callback: (ByteArray) -> Unit) { val car = MicroController.instance.car val locationData = LocationResponse.LocationData.BuilderLocationData(car.x.toInt(), car.y.toInt(), car.angle.toInt()).build() - val resultMessage = toServerObjectBuilder.setLocationResponseData(locationData).build() - val resultByteArray = ByteArray(resultMessage.getSizeNoTag()) - resultMessage.writeTo(CodedOutputStream(resultByteArray)) - callback.invoke(resultByteArray) + val responseMessage = toServerObjectBuilder.setLocationResponseData(locationData).build() + callback.invoke(encodeProtoBuf(responseMessage)) } } \ No newline at end of file diff --git a/car_srv/kotlinSrv/src/net/server/handlers/main/SetRoute.kt b/car_srv/kotlinSrv/src/net/server/handlers/main/SetRoute.kt index 0f560f0018c..9ada3086cfb 100644 --- a/car_srv/kotlinSrv/src/net/server/handlers/main/SetRoute.kt +++ b/car_srv/kotlinSrv/src/net/server/handlers/main/SetRoute.kt @@ -2,7 +2,7 @@ package net.server.handlers.main import net.server.handlers.AbstractHandler import CodedInputStream -import CodedOutputStream +import encodeProtoBuf /** * Created by user on 7/28/16. @@ -23,9 +23,7 @@ class SetRoute : AbstractHandler { message.mergeFrom(CodedInputStream(data)) car.routeExecutor.executeRoute(message) val responseMessage = toServerObjectBuilder.setCode(0).build() - val resultByteArray = ByteArray(responseMessage.getSizeNoTag()) - responseMessage.writeTo(CodedOutputStream(resultByteArray)) - callback.invoke(resultByteArray) + callback.invoke(encodeProtoBuf(responseMessage)) } } \ No newline at end of file diff --git a/car_srv/kotlinSrv/src/net/server/handlers/rc/Connect.kt b/car_srv/kotlinSrv/src/net/server/handlers/rc/Connect.kt index 45bfe860ba2..5363804ac7e 100644 --- a/car_srv/kotlinSrv/src/net/server/handlers/rc/Connect.kt +++ b/car_srv/kotlinSrv/src/net/server/handlers/rc/Connect.kt @@ -2,7 +2,7 @@ package net.server.handlers.rc import exceptions.RcControlException import net.server.handlers.AbstractHandler -import CodedOutputStream +import encodeProtoBuf /** * Created by user on 7/27/16. @@ -25,11 +25,8 @@ class Connect : AbstractHandler { resultCode = 13 sid = 0 } - val responseMessage = toServerObjectBuilder.setCode(resultCode).setSid(sid).build() - val resultByteArray = ByteArray(responseMessage.getSizeNoTag()) - responseMessage.writeTo(CodedOutputStream(resultByteArray)) - callback.invoke(resultByteArray) + callback.invoke(encodeProtoBuf(responseMessage)) } } \ No newline at end of file diff --git a/car_srv/kotlinSrv/src/net/server/handlers/rc/Control.kt b/car_srv/kotlinSrv/src/net/server/handlers/rc/Control.kt index 9e5868a0120..75ed9fc8eed 100644 --- a/car_srv/kotlinSrv/src/net/server/handlers/rc/Control.kt +++ b/car_srv/kotlinSrv/src/net/server/handlers/rc/Control.kt @@ -6,7 +6,7 @@ import exceptions.RcControlException import net.server.handlers.AbstractHandler import DirectionRequest import CodedInputStream -import CodedOutputStream +import encodeProtoBuf /** * Created by user on 7/27/16. @@ -52,8 +52,6 @@ class Control : AbstractHandler { resultCode = 12 } val resultMessage = toServerObjectBuilder.setCode(resultCode).build() - val resultByteArray = ByteArray(resultMessage.getSizeNoTag()) - resultMessage.writeTo(CodedOutputStream(resultByteArray)) - callback.invoke(resultByteArray) + callback.invoke(encodeProtoBuf(resultMessage)) } } \ No newline at end of file diff --git a/car_srv/kotlinSrv/src/net/server/handlers/rc/Disconnect.kt b/car_srv/kotlinSrv/src/net/server/handlers/rc/Disconnect.kt index 340dbc130b0..31b09f00b80 100644 --- a/car_srv/kotlinSrv/src/net/server/handlers/rc/Disconnect.kt +++ b/car_srv/kotlinSrv/src/net/server/handlers/rc/Disconnect.kt @@ -3,7 +3,7 @@ package net.server.handlers.rc import exceptions.RcControlException import net.server.handlers.AbstractHandler import CodedInputStream -import CodedOutputStream +import encodeProtoBuf /** * Created by user on 7/27/16. @@ -30,8 +30,6 @@ class Disconnect : AbstractHandler { resultCode = 12 } val responseMessage = toServerObjectBuilder.setCode(resultCode).build() - val resultByteArray = ByteArray(responseMessage.getSizeNoTag()) - responseMessage.writeTo(CodedOutputStream(resultByteArray)) - callback.invoke(resultByteArray) + callback.invoke(encodeProtoBuf(responseMessage)) } } \ No newline at end of file diff --git a/car_srv/kotlinSrv/src/net/server/handlers/rc/Heartbeat.kt b/car_srv/kotlinSrv/src/net/server/handlers/rc/Heartbeat.kt index b8e92653d5a..465a524ced0 100644 --- a/car_srv/kotlinSrv/src/net/server/handlers/rc/Heartbeat.kt +++ b/car_srv/kotlinSrv/src/net/server/handlers/rc/Heartbeat.kt @@ -3,7 +3,7 @@ package net.server.handlers.rc import exceptions.RcControlException import net.server.handlers.AbstractHandler import CodedInputStream -import CodedOutputStream +import encodeProtoBuf /** * Created by user on 7/27/16. @@ -29,8 +29,6 @@ class Heartbeat : AbstractHandler { resultCode = 12 } val responseMessage = toServerObjectBuilder.setCode(resultCode).build() - val resultByteArray = ByteArray(responseMessage.getSizeNoTag()) - responseMessage.writeTo(CodedOutputStream(resultByteArray)) - callback.invoke(resultByteArray) + callback.invoke(encodeProtoBuf(responseMessage)) } } \ No newline at end of file