diff --git a/i2c-hub/firmware/i2c-hub-firmware/docs/.$NetworkStack.drawio.bkp b/i2c-hub/firmware/i2c-hub-firmware/docs/.$NetworkStack.drawio.bkp index 0e3a49c..4b68a4c 100644 --- a/i2c-hub/firmware/i2c-hub-firmware/docs/.$NetworkStack.drawio.bkp +++ b/i2c-hub/firmware/i2c-hub-firmware/docs/.$NetworkStack.drawio.bkp @@ -1,16 +1,16 @@ - + - - + + - + @@ -1027,7 +1027,7 @@ - + @@ -1035,12 +1035,12 @@ - + - + @@ -1070,7 +1070,7 @@ - + @@ -1104,6 +1104,19 @@ + + + + + + + + + + + + + @@ -1117,7 +1130,7 @@ - + @@ -1126,7 +1139,7 @@ - + @@ -1279,10 +1292,10 @@ - + - + @@ -1299,7 +1312,7 @@ - + @@ -1315,7 +1328,7 @@ - + @@ -1374,6 +1387,65 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/i2c-hub/firmware/i2c-hub-firmware/docs/NetworkStack.drawio b/i2c-hub/firmware/i2c-hub-firmware/docs/NetworkStack.drawio index 4b68a4c..c86c49a 100644 --- a/i2c-hub/firmware/i2c-hub-firmware/docs/NetworkStack.drawio +++ b/i2c-hub/firmware/i2c-hub-firmware/docs/NetworkStack.drawio @@ -1,6 +1,6 @@ - + @@ -1446,6 +1446,27 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/i2c-hub/firmware/i2c-hub-firmware/src/gobotrpc/ctrl_interface/base.cpp b/i2c-hub/firmware/i2c-hub-firmware/src/gobotrpc/ctrl_interface/base.cpp index 050a1f9..9ceae58 100644 --- a/i2c-hub/firmware/i2c-hub-firmware/src/gobotrpc/ctrl_interface/base.cpp +++ b/i2c-hub/firmware/i2c-hub-firmware/src/gobotrpc/ctrl_interface/base.cpp @@ -68,17 +68,3 @@ void GobotRPC_CI::heartBeartTaskFn() { vTaskDelay(GOBOTRPC_HEARTBEAT_INTERVAL / portTICK_PERIOD_MS); } } - -void GobotRPC_CI::send_ErrorTransmission(bool rx, uint64_t addr) { - char errorPacket[7]; - - errorPacket[0] = ERROR_TRANMISSION; - errorPacket[1] = 7; - errorPacket[2] = rx ? 0x01 : 0x00; - errorPacket[3] = (addr >> 24) & 0xff; - errorPacket[4] = (addr >> 16) & 0xff; - errorPacket[5] = (addr >> 8) & 0xff; - errorPacket[6] = addr & 0xff; - - this->hardware->send(errorPacket, 7); -} \ No newline at end of file diff --git a/i2c-hub/firmware/i2c-hub-firmware/src/gobotrpc/ctrl_interface/ci_instruction.cpp b/i2c-hub/firmware/i2c-hub-firmware/src/gobotrpc/ctrl_interface/ci_instruction.cpp index c156cbb..debabd4 100644 --- a/i2c-hub/firmware/i2c-hub-firmware/src/gobotrpc/ctrl_interface/ci_instruction.cpp +++ b/i2c-hub/firmware/i2c-hub-firmware/src/gobotrpc/ctrl_interface/ci_instruction.cpp @@ -17,11 +17,44 @@ void GobotRPC_CI::txCIInstructionTask() { xQueueReceive(ciInstructionQueue, &ciInstruction, portMAX_DELAY); switch (ciInstruction.type) { - case CI_INSTRUCTION_SEND_TRANMISSION_ERROR: - uint32_t addr = ciInstruction.data[1] | (ciInstruction.data[2] << 8) | (ciInstruction.data[3] << 16) | (ciInstruction.data[4] << 24); - uint8_t rx = ciInstruction.data[0]; - send_ErrorTransmission(rx, addr); - break; + case CI_INSTRUCTION_SEND_TRANMISSION_ERROR: { + uint32_t addr = ciInstruction.data[1] | (ciInstruction.data[2] << 8) | (ciInstruction.data[3] << 16) | (ciInstruction.data[4] << 24); + uint8_t rx = ciInstruction.data[0]; + send_ErrorTransmission(rx, addr); + break; + } + case CI_INSTRUCTION_SEND_TRANMISSION_SUCCESS: { + uint32_t addr = ciInstruction.data[1] | (ciInstruction.data[2] << 8) | (ciInstruction.data[3] << 16) | (ciInstruction.data[4] << 24); + send_SuccessTransmission(addr); + break; + } } } +} + +void GobotRPC_CI::send_ErrorTransmission(bool rx, uint64_t addr) { + char errorPacket[7]; + + errorPacket[0] = ERROR_TRANMISSION; + errorPacket[1] = 7; + errorPacket[2] = rx ? 0x01 : 0x00; + errorPacket[3] = (addr >> 24) & 0xff; + errorPacket[4] = (addr >> 16) & 0xff; + errorPacket[5] = (addr >> 8) & 0xff; + errorPacket[6] = addr & 0xff; + + this->hardware->send(errorPacket, 7); +} + +void GobotRPC_CI::send_SuccessTransmission(uint64_t addr) { + char successPacket[6]; + + successPacket[0] = SUCESS_TRANMISSION; + successPacket[1] = 6; + successPacket[2] = (addr >> 24) & 0xff; + successPacket[3] = (addr >> 16) & 0xff; + successPacket[4] = (addr >> 8) & 0xff; + successPacket[5] = addr & 0xff; + + this->hardware->send(successPacket, 6); } \ No newline at end of file diff --git a/i2c-hub/firmware/i2c-hub-firmware/src/gobotrpc/include/ctrl_interface.hpp b/i2c-hub/firmware/i2c-hub-firmware/src/gobotrpc/include/ctrl_interface.hpp index 1b85ca3..ec62004 100644 --- a/i2c-hub/firmware/i2c-hub-firmware/src/gobotrpc/include/ctrl_interface.hpp +++ b/i2c-hub/firmware/i2c-hub-firmware/src/gobotrpc/include/ctrl_interface.hpp @@ -7,6 +7,7 @@ enum GobotRPC_CI_CMD { RX_CI_PACKET = 0x02, PERFORM_SCAN_CI_PACKET = 0x03, SCAN_RESULT_CI_PACKET = 0x04, + SUCESS_TRANMISSION = 0xfc, ERROR_TRANMISSION = 0xfd, HEARTBEAT = 0xff }; @@ -46,4 +47,5 @@ public: // CI Instruction Stuff void txCIInstructionTask(); void send_ErrorTransmission(bool rx, uint64_t addr); + void send_SuccessTransmission(uint64_t addr); }; \ No newline at end of file diff --git a/i2c-hub/firmware/i2c-hub-firmware/src/gobotrpc/include/ctrl_interface_instructions.hpp b/i2c-hub/firmware/i2c-hub-firmware/src/gobotrpc/include/ctrl_interface_instructions.hpp index 3e5fd50..686dcb2 100644 --- a/i2c-hub/firmware/i2c-hub-firmware/src/gobotrpc/include/ctrl_interface_instructions.hpp +++ b/i2c-hub/firmware/i2c-hub-firmware/src/gobotrpc/include/ctrl_interface_instructions.hpp @@ -1,5 +1,6 @@ enum CI_Instruction_Type { - CI_INSTRUCTION_SEND_TRANMISSION_ERROR + CI_INSTRUCTION_SEND_TRANMISSION_ERROR, + CI_INSTRUCTION_SEND_TRANMISSION_SUCCESS }; struct CI_Instruction_Transport { diff --git a/i2c-hub/firmware/i2c-hub-firmware/src/gobotrpc/include/ti/transmission_interface.hpp b/i2c-hub/firmware/i2c-hub-firmware/src/gobotrpc/include/ti/transmission_interface.hpp index 72ce904..616b8d0 100644 --- a/i2c-hub/firmware/i2c-hub-firmware/src/gobotrpc/include/ti/transmission_interface.hpp +++ b/i2c-hub/firmware/i2c-hub-firmware/src/gobotrpc/include/ti/transmission_interface.hpp @@ -77,6 +77,7 @@ public: uint32_t readIntPins(); void raiseTranmissionError(bool rx, uint32_t addr); + void raiseTransmissionSuceess(uint32_t addr); }; diff --git a/i2c-hub/firmware/i2c-hub-firmware/src/gobotrpc/transmission_interface/rp2040_i2c_ci_instructions.cpp b/i2c-hub/firmware/i2c-hub-firmware/src/gobotrpc/transmission_interface/rp2040_i2c_ci_instructions.cpp index cf058ff..e227332 100644 --- a/i2c-hub/firmware/i2c-hub-firmware/src/gobotrpc/transmission_interface/rp2040_i2c_ci_instructions.cpp +++ b/i2c-hub/firmware/i2c-hub-firmware/src/gobotrpc/transmission_interface/rp2040_i2c_ci_instructions.cpp @@ -12,5 +12,16 @@ void GobotRPC_TI_Hardware_RP2040_I2C::raiseTranmissionError(bool rx, uint32_t ad ciInstruction.data[3] = (addr >> 16) & 0xff; ciInstruction.data[4] = (addr >> 24) & 0xff; + this->pushCIInstructionCB(&ciInstruction, pushCIInstructionCBArgs); +} + +void GobotRPC_TI_Hardware_RP2040_I2C::raiseTransmissionSuceess(uint32_t addr) { + CI_Instruction_Transport ciInstruction; + ciInstruction.type = CI_INSTRUCTION_SEND_TRANMISSION_SUCCESS; + ciInstruction.data[0] = addr & 0xff; + ciInstruction.data[1] = (addr >> 8) & 0xff; + ciInstruction.data[2] = (addr >> 16) & 0xff; + ciInstruction.data[3] = (addr >> 24) & 0xff; + this->pushCIInstructionCB(&ciInstruction, pushCIInstructionCBArgs); } \ No newline at end of file diff --git a/i2c-hub/firmware/i2c-hub-firmware/src/gobotrpc/transmission_interface/rp2040_i2c_tx.cpp b/i2c-hub/firmware/i2c-hub-firmware/src/gobotrpc/transmission_interface/rp2040_i2c_tx.cpp index e21f57e..4972415 100644 --- a/i2c-hub/firmware/i2c-hub-firmware/src/gobotrpc/transmission_interface/rp2040_i2c_tx.cpp +++ b/i2c-hub/firmware/i2c-hub-firmware/src/gobotrpc/transmission_interface/rp2040_i2c_tx.cpp @@ -20,8 +20,10 @@ void GobotRPC_TI_Hardware_RP2040_I2C::i2cTxTask() { unsigned int res = i2c_write_burst_blocking(i2c, pkg.addr & 0x7f, (uint8_t *)(&pkg.data), pkg.len); xSemaphoreGive(i2cMutex); - if(res == PICO_ERROR_GENERIC) { + if(res != PICO_ERROR_GENERIC) { raiseTranmissionError(false, pkg.addr); + } else { + raiseTransmissionSuceess(pkg.addr); } } } \ No newline at end of file diff --git a/i2c-hub/uart-adapter/src/uart_interface/__init__.py b/i2c-hub/uart-adapter/src/uart_interface/__init__.py index 187a014..d9efab1 100644 --- a/i2c-hub/uart-adapter/src/uart_interface/__init__.py +++ b/i2c-hub/uart-adapter/src/uart_interface/__init__.py @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e5399f7a953fa63d941844bb406be10da6bc5e579daa73c76b0c455d63538983 -size 1098 +oid sha256:056cffc0bf931040267ea9f404fcd33b29952f4bece549bf54eef0fa0639ceb2 +size 1128 diff --git a/i2c-hub/uart-adapter/src/uart_interface/__pycache__/__init__.cpython-312.pyc b/i2c-hub/uart-adapter/src/uart_interface/__pycache__/__init__.cpython-312.pyc index ab56bc2..7c1cf91 100644 Binary files a/i2c-hub/uart-adapter/src/uart_interface/__pycache__/__init__.cpython-312.pyc and b/i2c-hub/uart-adapter/src/uart_interface/__pycache__/__init__.cpython-312.pyc differ diff --git a/i2c-hub/uart-adapter/src/uart_interface/__pycache__/ci_packages.cpython-312.pyc b/i2c-hub/uart-adapter/src/uart_interface/__pycache__/ci_packages.cpython-312.pyc index 4ec2924..9ee6cdd 100644 Binary files a/i2c-hub/uart-adapter/src/uart_interface/__pycache__/ci_packages.cpython-312.pyc and b/i2c-hub/uart-adapter/src/uart_interface/__pycache__/ci_packages.cpython-312.pyc differ diff --git a/i2c-hub/uart-adapter/src/uart_interface/__pycache__/pares_packages.cpython-312.pyc b/i2c-hub/uart-adapter/src/uart_interface/__pycache__/pares_packages.cpython-312.pyc index 752015e..1da0cc0 100644 Binary files a/i2c-hub/uart-adapter/src/uart_interface/__pycache__/pares_packages.cpython-312.pyc and b/i2c-hub/uart-adapter/src/uart_interface/__pycache__/pares_packages.cpython-312.pyc differ diff --git a/i2c-hub/uart-adapter/src/uart_interface/ci_packages.py b/i2c-hub/uart-adapter/src/uart_interface/ci_packages.py index 7af1b55..5bac6c5 100644 --- a/i2c-hub/uart-adapter/src/uart_interface/ci_packages.py +++ b/i2c-hub/uart-adapter/src/uart_interface/ci_packages.py @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e70a2e925b79af063d9f2c3e341ec24955a173f3dfb9b15ab658c9146983b6f4 -size 3991 +oid sha256:fea6510954db5600c2a73580644d87d7d47374aeee9c6e22e7c5eba22d658266 +size 4854 diff --git a/i2c-hub/uart-adapter/src/uart_interface/pares_packages.py b/i2c-hub/uart-adapter/src/uart_interface/pares_packages.py index e45e899..4d42b02 100644 --- a/i2c-hub/uart-adapter/src/uart_interface/pares_packages.py +++ b/i2c-hub/uart-adapter/src/uart_interface/pares_packages.py @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4fb294bbb8b0760aff4935eb2910a852e06bd8d98721cc024c0bf6e69b6f982e -size 731 +oid sha256:af8b27955cb70e39a17a8c133770dc87eb8b0ab63f20e45614b3c5c78b8026f7 +size 858