From a4efbe82db057cfab8f9afc180a2658e035ef7b8 Mon Sep 17 00:00:00 2001 From: Florian Roks Date: Wed, 26 Jan 2022 11:32:43 +0100 Subject: [PATCH] bugfix gateways not having defined properties --- doip-sim-ecu-dsl/src/main/kotlin/SimDsl.kt | 42 ++++++++++++++----- .../src/main/kotlin/SimGateway.kt | 4 ++ 2 files changed, 35 insertions(+), 11 deletions(-) diff --git a/doip-sim-ecu-dsl/src/main/kotlin/SimDsl.kt b/doip-sim-ecu-dsl/src/main/kotlin/SimDsl.kt index 94cd5b4..2918cd3 100644 --- a/doip-sim-ecu-dsl/src/main/kotlin/SimDsl.kt +++ b/doip-sim-ecu-dsl/src/main/kotlin/SimDsl.kt @@ -233,23 +233,34 @@ fun MutableList.removeByName(name: String): RequestMatcher? { data class ResetHandler(val name: String?, val handler: (SimEcu) -> Unit) -open class RequestsData(val name: String, requests: List = emptyList(), resetHandler: List = emptyList()) { +open class RequestsData( + val name: String, /** - * List of all defined requests in the order they were defined + * Return a nrc when no request could be matched */ - val requests: MutableList = mutableListOf(*requests.toTypedArray()) - - val resetHandler: MutableList = mutableListOf(*resetHandler.toTypedArray()) - + var nrcOnNoMatch: Boolean = true, + requests: List = emptyList(), + resetHandler: List = emptyList(), /** * Maximum length of data converted into a hex-string for incoming requests */ - var requestRegexMatchBytes: Int = 10 + var requestRegexMatchBytes: Int = 10, /** * Map of Request SID to number of ack response byte count */ - var ackBytesLengthMap: Map = mapOf() + var ackBytesLengthMap: Map = mapOf(), +) { + /** + * List of all defined requests in the order they were defined + */ + val requests: MutableList = mutableListOf(*requests.toTypedArray()) + + /** + * List of defined reset handlers + */ + val resetHandler: MutableList = mutableListOf(*resetHandler.toTypedArray()) + private fun regexifyRequestHex(requestHex: String) = Regex( @@ -320,10 +331,19 @@ open class EcuData( name: String, var physicalAddress: Int = 0, var functionalAddress: Int = 0, - var nrcOnNoMatch: Boolean = true, + nrcOnNoMatch: Boolean = true, requests: List = emptyList(), - resetHandler: List = emptyList() -) : RequestsData(name, requests, resetHandler) + resetHandler: List = emptyList(), + requestRegexMatchBytes: Int = 10, + ackBytesLengthMap: Map = mapOf(), +) : RequestsData( + name = name, + nrcOnNoMatch = nrcOnNoMatch, + requests = requests, + resetHandler = resetHandler, + requestRegexMatchBytes = requestRegexMatchBytes, + ackBytesLengthMap = ackBytesLengthMap, +) val gateways: MutableList = mutableListOf() val gatewayInstances: MutableList = mutableListOf() diff --git a/doip-sim-ecu-dsl/src/main/kotlin/SimGateway.kt b/doip-sim-ecu-dsl/src/main/kotlin/SimGateway.kt index 9f3c99b..3fcd3b1 100644 --- a/doip-sim-ecu-dsl/src/main/kotlin/SimGateway.kt +++ b/doip-sim-ecu-dsl/src/main/kotlin/SimGateway.kt @@ -122,6 +122,10 @@ class SimGateway(private val data: GatewayData) : StandardGateway(data.toGateway physicalAddress = data.logicalAddress, functionalAddress = data.functionalAddress, requests = data.requests, + nrcOnNoMatch = data.nrcOnNoMatch, + resetHandler = data.resetHandler, + requestRegexMatchBytes = data.requestRegexMatchBytes, + ackBytesLengthMap = data.ackBytesLengthMap, ) return SimEcu(ecu) }