commit f9368c434b458cbab0e57ab240040275d6181932 Author: maakshishov Date: Tue Jun 15 14:12:00 2021 +0300 for home diff --git a/.idea/KX.iml b/.idea/KX.iml new file mode 100644 index 0000000..d0876a7 --- /dev/null +++ b/.idea/KX.iml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/inspectionProfiles/profiles_settings.xml b/.idea/inspectionProfiles/profiles_settings.xml new file mode 100644 index 0000000..105ce2d --- /dev/null +++ b/.idea/inspectionProfiles/profiles_settings.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..a2e120d --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..bd01e30 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/workspace.xml b/.idea/workspace.xml new file mode 100644 index 0000000..0618d4b --- /dev/null +++ b/.idea/workspace.xml @@ -0,0 +1,115 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1623152084822 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/__pycache__/kx.cpython-37.pyc b/__pycache__/kx.cpython-37.pyc new file mode 100644 index 0000000..4ed85f9 Binary files /dev/null and b/__pycache__/kx.cpython-37.pyc differ diff --git a/__pycache__/protocol_kx.cpython-37.pyc b/__pycache__/protocol_kx.cpython-37.pyc new file mode 100644 index 0000000..06ae502 Binary files /dev/null and b/__pycache__/protocol_kx.cpython-37.pyc differ diff --git a/kx.py b/kx.py new file mode 100644 index 0000000..a05b40c --- /dev/null +++ b/kx.py @@ -0,0 +1,41 @@ +import protocol_kx +import can +import cantools +import os +import numpy as np + + +K = np.zeros(protocol_kx.KX_K_COUNT) + + +class KX: + def __init__(self, id, value, sbl_id, can): + K[id] = value + self.sbl_id = sbl_id + self.can0 = can + + + def KXInit(self, id, value): + K[id] = value + + + def reset(self): + resetMsg = can.Message(arbitration_id=0xA, data=[99, self.sbl_id], is_extended_id=False) + self.can0.send(resetMsg) + + + def sendK(self): + msg = protocol_kx.CANMsgK(self.sbl_id, 0, protocol_kx.KX_FLAG_SEND, K[0]) + i = 0 + for element in K: + msg.k = element + msg.index = i + i = i + 1 + messageK = can.Message(protocol_kx.KX_FLAG_SEND, data=msg, is_extended_id=False) + self.can0.send(messageK) + + + def writeToFlashK(self): + msg = protocol_kx.CANMsgK(self.sbl_id, 0, protocol_kx.KX_FLAG_WRITE_REQ, K) + messageK = can.Message(protocol_kx.KX_FLAG_READ, data=msg, is_extended_id=False) + self.can0.send(messageK) \ No newline at end of file diff --git a/main.py b/main.py new file mode 100644 index 0000000..7babafe --- /dev/null +++ b/main.py @@ -0,0 +1,22 @@ +import kx +import can +import protocol_kx +import os + + +can0 = can.interface.Bus(bustype='socketcan', channel='can0', bitrate=500000) + + +KXLOX = kx.KX(protocol_kx.KDescription.K_TEST_SOURCE_2_SIGLVL.value, 950, 255, can0) +KXLOX.KXInit(protocol_kx.KDescription.K_TEST_SOURCE_1_POS_X_MAX.value, 21) +KXLOX.KXInit(protocol_kx.KDescription.K_TEST_SOURCE_1_POS_Y_MAX.value, 21) +KXLOX.KXInit(protocol_kx.KDescription.K_TEST_SOURCE_1_POS_X_MIN.value, 1) +KXLOX.KXInit(protocol_kx.KDescription.K_TEST_SOURCE_1_POS_Y_MIN.value, 1) +KXLOX.KXInit(protocol_kx.KDescription.K_TEST_SOURCE_1_POS_Y.value, 7) +KXLOX.KXInit(protocol_kx.KDescription.K_TEST_SOURCE_1_POS_X.value, 7) +KXLOX.KXInit(protocol_kx.KDescription.K_TEST_SOURCE_1_SIGLVL.value, 450) +KXLOX.KXInit(protocol_kx.KDescription.K_TEST_SOURCES_ENABLED.value, 1) +KXLOX.sendK() +KXLOX.writeToFlashK() +os.wait(100) +KXLOX.reset() diff --git a/protocol_kx.py b/protocol_kx.py new file mode 100644 index 0000000..5e0602e --- /dev/null +++ b/protocol_kx.py @@ -0,0 +1,87 @@ +from enum import Enum + + +KX_K_COUNT = 64 +KX_DSS_K_START_IDX = 57 +KX_DSS_K_COUNT = (KX_K_COUNT - KX_DSS_K_START_IDX) +KX_MAX_CALLBACKS = 4 +KX_CAN_ID = 0x2BB +KX_FLAG_RECEIVE_REQ = 0 +KX_FLAG_RECEIVE_RESP = 1 +KX_FLAG_SEND = 2 +KX_FLAG_READ_REQ = 3 +KX_FLAG_READ_ERR = 4 +KX_FLAG_READ_OK = 5 +KX_FLAG_WRITE_REQ = 6 +KX_FLAG_WRITE_ERR = 7 +KX_FLAG_WRITE_OK = 8 + + +class CANMsgK: + def __init__(self, sblID, index, flag, k): + self.sblID = sblID + self.index = index + self.flag = flag + self.k = k + + +class KDescription(Enum): + K_SBL_ID = 0 + K_TEST_COMP_RX_CHAIN_DISABLED = 1 + K_TEST_SOURCES_ENABLED = 2 + K_TEST_SOURCES_COUNT = 3 + K_TEST_SOURCE_1_POS_X = 4 + K_TEST_SOURCE_1_POS_Y = 5 + K_TEST_SOURCE_1_POS_Z = 6 + K_TEST_SOURCE_1_VEL_X = 7 + K_TEST_SOURCE_1_VEL_Y = 8 + K_TEST_SOURCE_1_VEL_Z = 9 + K_TEST_SOURCE_1_SIGLVL = 10 + K_TEST_SOURCE_1_POS_X_MIN = 11 + K_TEST_SOURCE_1_POS_Y_MIN = 12 + K_TEST_SOURCE_1_POS_Z_MIN = 13 + K_TEST_SOURCE_1_POS_X_MAX = 14 + K_TEST_SOURCE_1_POS_Y_MAX = 15 + K_TEST_SOURCE_1_POS_Z_MAX = 16 + K_TEST_SOURCE_2_POS_X = 17 + K_TEST_SOURCE_2_POS_Y = 18 + K_TEST_SOURCE_2_POS_Z = 19 + K_TEST_SOURCE_2_VEL_X = 20 + K_TEST_SOURCE_2_VEL_Y = 21 + K_TEST_SOURCE_2_VEL_Z = 22 + K_TEST_SOURCE_2_SIGLVL = 23 + K_TEST_SOURCE_2_POS_X_MIN = 24 + K_TEST_SOURCE_2_POS_Y_MIN = 25 + K_TEST_SOURCE_2_POS_Z_MIN = 26 + K_TEST_SOURCE_2_POS_X_MAX = 27 + K_TEST_SOURCE_2_POS_Y_MAX = 28 + K_TEST_SOURCE_2_POS_Z_MAX = 29 + K_JPDA_DT = 30 + K_JPDA_DX = 31 + K_JPDA_DY = 32 + K_JPDA_DVX = 33 + K_JPDA_DVY = 34 + K_JPDA_DR = 35 + K_JPDA_DV = 36 + K_JPDA_DA = 37 + K_JPDA_ASSOC_DR = 38 + K_JPDA_ASSOC_DV = 39 + K_JPDA_ASSOC_DA = 40 + K_JPDA_CONFIRM_COUNT = 41 + K_JPDA_CONFIRM_PERIOD = 42 + K_JPDA_MISSED_COUNT = 43 + K_JPDA_PK_VAL_THLD = 44 + K_JPDA_T_SX = 45 + K_JPDA_T_SY = 46 + K_JPDA_T_SVX = 47 + K_JPDA_T_SVY = 48 + K_JPDA_ADV_PK_VAL = 49 + K_JPDA_ADV_SY_MULT = 50 + K_JPDA_BND_BOX_XL = 51 + K_JPDA_BND_BOX_XR = 52 + K_JPDA_BND_BOX_YB = 53 + K_JPDA_BND_BOX_YT = 54 + K_MRR_RX_GAIN = 55 + K_USRR_RX_GAIN = 56 + K_TO_DSS = 57 + K_TO_DSS_2 = 58 \ No newline at end of file