Car车载开发之Sensor Logic篇

最近再做这样一个事情,一个车分很多个视角面,左侧面,右侧面,前侧,后侧,顶侧等,每个侧面又有很多传感器,这些传感器通过CAN signal去串接,然后有三种状态,这里当点击一个Bad或者Need Clean状态的Sensor的时候,需要按照一定顺序把所有出问题的Sensor在viewpager中进行展示,Logic如下
在这里插入图片描述
这里,我抽出了一个简化模型,在这个模型上去验证可行性。
在这里插入图片描述

相当于是一个流水线,蓝色框框是三种视图,左右侧和前侧,红色小方框是对应侧面的sensor位置,01,02,03代表这些sensor虽然在不同视角下但是获取sensor状态的api是同一个,因为多个视角下有重复出现的关系,OK了家人们。下面开始搭建模型:
两个固定顺序序列,
在这里插入图片描述
indexArray不变的,变的是posArray。
我这边需要做的是,点击任意一个postion,都能返回一个集合,让viewpager去加载对应的视图。


public class TestOrder {

    companion object {

        val indexArray: IntArray = intArrayOf(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11)

        val posArray: IntArray = intArrayOf(Constants.POSITION_FRR_01,
            Constants.POSITION_FRR_02,
            Constants.POSITION_RFRR_01,
            Constants.POSITION_WCR_02,
            Constants.POSITION_RMCR,
            Constants.POSITION_LFRR_02,
            Constants.POSITION_FRR_03,
            Constants.POSITION_WCR_03,
            Constants.POSITION_RFRR_02,
            Constants.POSITION_WCR_01,
            Constants.POSITION_LMCL,
            Constants.POSITION_LFRR_01)

        var changePosArray: Array<Int?> = arrayOfNulls<Int>(12)
        var sensorList: MutableList<SensorStateOnlyPosition> = mutableListOf()

        fun getCurrentListOrder(sensorPos: Int): MutableList<SensorStateOnlyPosition> {
            val current: Int = posArray.indexOf(sensorPos)
            println("current posArray:$current")
            val changePosArrayResult = getChangePosArray(current)
            for (i in indexArray.indices) {
                sensorList.add(SensorStateOnlyPosition(indexArray[i], changePosArrayResult[i]!!))
            }
            return sensorList
        }

        fun getChangePosArray(current:Int):Array<Int?>{
            changePosArray[0] = posArray[current]
            if (current +1 == indexArray.size){//11
                // 0 is 19
                changePosArray[1] = posArray[0] //16
                changePosArray[2] = posArray[1] //17
                changePosArray[3] = posArray[2]
                changePosArray[4] = posArray[3]
                changePosArray[5] = posArray[4]
                changePosArray[6] = posArray[5]
                changePosArray[7] = posArray[6]
                changePosArray[8] = posArray[7]
                changePosArray[9] = posArray[8]
                changePosArray[10] = posArray[9]
                changePosArray[11] = posArray[10]
            }
            if (current + 2 ==  indexArray.size) {//10
                changePosArray[1] = posArray[11]
                changePosArray[2] = posArray[0]
                changePosArray[3] = posArray[1]
                changePosArray[4] = posArray[2]
                changePosArray[5] = posArray[3]
                changePosArray[6] = posArray[4]
                changePosArray[7] = posArray[5]
                changePosArray[8] = posArray[6]
                changePosArray[9] = posArray[7]
                changePosArray[10] = posArray[8]
                changePosArray[11] = posArray[9]
            }
            if (current + 3 == indexArray.size) {//9
                changePosArray[1] = posArray[10]
                changePosArray[2] = posArray[11]
                changePosArray[3] = posArray[0]
                changePosArray[4] = posArray[1]
                changePosArray[5] = posArray[2]
                changePosArray[6] = posArray[3]
                changePosArray[7] = posArray[4]
                changePosArray[8] = posArray[5]
                changePosArray[9] = posArray[6]
                changePosArray[10] = posArray[7]
                changePosArray[11] = posArray[8]
            }
            if (current + 4 == indexArray.size){//8
                changePosArray[1] = posArray[9]
                changePosArray[2] = posArray[10]
                changePosArray[3] = posArray[11]
                changePosArray[4] = posArray[0]
                changePosArray[5] = posArray[1]
                changePosArray[6] = posArray[2]
                changePosArray[7] = posArray[3]
                changePosArray[8] = posArray[4]
                changePosArray[9] = posArray[5]
                changePosArray[10] = posArray[6]
                changePosArray[11] = posArray[7]
            }
            if (current + 5 == indexArray.size){//7
                changePosArray[1] = posArray[8]
                changePosArray[2] = posArray[9]
                changePosArray[3] = posArray[10]
                changePosArray[4] = posArray[11]
                changePosArray[5] = posArray[0]
                changePosArray[6] = posArray[1]
                changePosArray[7] = posArray[2]
                changePosArray[8] = posArray[3]
                changePosArray[9] = posArray[4]
                changePosArray[10] = posArray[5]
                changePosArray[11] = posArray[6]
            }
            if (current + 6 == indexArray.size){//6
                changePosArray[1] = posArray[7]
                changePosArray[2] = posArray[8]
                changePosArray[3] = posArray[9]
                changePosArray[4] = posArray[10]
                changePosArray[5] = posArray[11]
                changePosArray[6] = posArray[0]
                changePosArray[7] = posArray[1]
                changePosArray[8] = posArray[2]
                changePosArray[9] = posArray[3]
                changePosArray[10] = posArray[4]
                changePosArray[11] = posArray[5]
            }
            if (current + 7 == indexArray.size){//5
                changePosArray[1] = posArray[6]
                changePosArray[2] = posArray[7]
                changePosArray[3] = posArray[8]
                changePosArray[4] = posArray[9]
                changePosArray[5] = posArray[10]
                changePosArray[6] = posArray[11]
                changePosArray[7] = posArray[0]
                changePosArray[8] = posArray[1]
                changePosArray[9] = posArray[2]
                changePosArray[10] = posArray[3]
                changePosArray[11] = posArray[4]
            }
            if (current + 8 == indexArray.size){//4
                changePosArray[1] = posArray[5]
                changePosArray[2] = posArray[6]
                changePosArray[3] = posArray[7]
                changePosArray[4] = posArray[8]
                changePosArray[5] = posArray[9]
                changePosArray[6] = posArray[10]
                changePosArray[7] = posArray[11]
                changePosArray[8] = posArray[0]
                changePosArray[9] = posArray[1]
                changePosArray[10] = posArray[2]
                changePosArray[11] = posArray[3]
            }
            if (current + 9 == indexArray.size){//3
                changePosArray[1] = posArray[4]
                changePosArray[2] = posArray[5]
                changePosArray[3] = posArray[6]
                changePosArray[4] = posArray[7]
                changePosArray[5] = posArray[8]
                changePosArray[6] = posArray[9]
                changePosArray[7] = posArray[10]
                changePosArray[8] = posArray[11]
                changePosArray[9] = posArray[0]
                changePosArray[10] = posArray[1]
                changePosArray[11] = posArray[2]
            }
            if (current + 10 == indexArray.size){//2
                changePosArray[1] = posArray[3]
                changePosArray[2] = posArray[4]
                changePosArray[3] = posArray[5]
                changePosArray[4] = posArray[6]
                changePosArray[5] = posArray[7]
                changePosArray[6] = posArray[8]
                changePosArray[7] = posArray[9]
                changePosArray[8] = posArray[10]
                changePosArray[9] = posArray[11]
                changePosArray[10] = posArray[0]
                changePosArray[11] = posArray[1]
            }
            if (current + 11 == indexArray.size){//1
                changePosArray[1] = posArray[2]
                changePosArray[2] = posArray[3]
                changePosArray[3] = posArray[4]
                changePosArray[4] = posArray[5]
                changePosArray[5] = posArray[6]
                changePosArray[6] = posArray[7]
                changePosArray[7] = posArray[8]
                changePosArray[8] = posArray[9]
                changePosArray[9] = posArray[10]
                changePosArray[10] = posArray[11]
                changePosArray[11] = posArray[0]
            }
            if (current + 12 == indexArray.size){//0
                changePosArray[1] = posArray[1]
                changePosArray[2] = posArray[2]
                changePosArray[3] = posArray[3]
                changePosArray[4] = posArray[4]
                changePosArray[5] = posArray[5]
                changePosArray[6] = posArray[6]
                changePosArray[7] = posArray[7]
                changePosArray[8] = posArray[8]
                changePosArray[9] = posArray[9]
                changePosArray[10] = posArray[10]
                changePosArray[11] = posArray[11]
            }
            return changePosArray
        }

        @JvmStatic fun main(args: Array<String>) {
            val testPos :Int = Constants.POSITION_RFRR_01
            val currentListOrder:MutableList<SensorStateOnlyPosition> = getCurrentListOrder(testPos)
            for ( i in currentListOrder){
                println("This is the order start from testPos :$testPos now index i:${i.position}")
            }

        }
    }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值