diff --git a/src/shared/sensors/Vectornav/VN300/VN300.cpp b/src/shared/sensors/Vectornav/VN300/VN300.cpp index 430760dbdbab738743307a816d11842ee46b41bc..60a0499cba59f81f7ca785477008e84b68ff94b9 100755 --- a/src/shared/sensors/Vectornav/VN300/VN300.cpp +++ b/src/shared/sensors/Vectornav/VN300/VN300.cpp @@ -499,29 +499,6 @@ bool VN300::configBaudRate(int baudRate) return true; } -[[maybe_unused]] bool VN300::resetFactorySettings() -{ - // Command string - std::string command = - "VNRFS"; // Put 0 in register number 0 (Factory Settings) - - // Send the command - if (!sendStringCommand(command)) - { - return false; - } - - if (!recvStringCommand(recvString.data(), recvStringMaxDimension)) - { - LOG_WARN(logger, "Unable to sample due to serial communication error"); - return false; - } - - miosix::Thread::sleep(500); - - return true; -} - bool VN300::setCrc(bool waitResponse) { // TODO: refactor this function @@ -962,105 +939,4 @@ bool VN300::recvStringCommand(char *command, int maxLength) return false; } -[[maybe_unused]] int VN300::recvBinaryCommand(uint8_t *command) -{ - uint8_t initByte; - int i = 0; - int j = 1; - bool read = false; - memset(command, '-', sizeof(uint8_t)); - - miosix::Thread::sleep(2); - while (read == false && i < 10000) - { - if (usart.read(&initByte, 1)) - { - command[0] = initByte; - - while (usart.read(&initByte, 1) && j < 200) - { - command[j] = initByte; - j++; - read = true; - } - - break; - } - - i++; - } - - if (read) - { - return --j; - } - else - { - return 0; - } -} - -uint8_t VN300::checkErrorVN(const char *message) -{ - if (strncmp(message, "$VNERR,", 7) == 0) - { - // Extract the error code - int errorCode = atoi(&message[7]); - string error; - // Handle the error based on the error code - - // TODO: the error string is set but never used - - switch (errorCode) - { - case 1: - error = "VN300 Hard Fault"; - break; - case 2: - error = "VN300 Serial Buffer Overflow"; - break; - case 3: - error = "VN300 Invalid Checksum"; - break; - case 4: - error = "VN300 Invalid Command"; - break; - case 5: - error = "VN300 Not Enough Parameters"; - break; - case 6: - error = "VN300 Too Many Parameters"; - break; - case 7: - error = "VN300 Invalid Parameter"; - break; - case 8: - error = "VN300 Invalid Register"; - break; - case 9: - error = "VN300 Unauthorized Access"; - break; - case 10: - error = "VN300 Watchdog Reset"; - break; - case 11: - error = "VN300 Output Buffer Overflow"; - break; - case 12: - error = "VN300 Insufficient Baud Rate"; - break; - case 255: - error = "VN300 Error Buffer Overflow"; - break; - default: - error = "VN300 Unknown error"; - break; - } - - return errorCode; // Error detected - } - - return 0; // No error detected -} - } // namespace Boardcore diff --git a/src/shared/sensors/Vectornav/VN300/VN300.h b/src/shared/sensors/Vectornav/VN300/VN300.h index 9e88c7072ae65785bab996e3aa8cb129c86b4d34..c82675f75cdc16c53bf6725972412adcd1c00ae2 100755 --- a/src/shared/sensors/Vectornav/VN300/VN300.h +++ b/src/shared/sensors/Vectornav/VN300/VN300.h @@ -138,14 +138,6 @@ private: bool configBaudRate(int baud); // TODO: move to common files - /** - * @brief reset to factory settings. - * - * @return True if operation succeeded. - */ - bool resetFactorySettings(); - // TODO: [[maybe_unused]] ... remove - /** * @brief Sets the user selected crc method. * @@ -252,30 +244,6 @@ private: bool sampleBin(VN300Defs::BinaryData &bindata); // TODO: can be removed and placed inside sampleBinary() - /** - * @brief Receives binary data and it parses it in a generic buffer - * - * @param command which will be filled with the message - * - * @return The length of the message in bytes - */ - int recvBinaryCommand(uint8_t *command); - // TODO: [[maybe_unused]] ... remove - - /** - * @brief check if the VN-300 returned an error and differentiate between - * them. The error is formatted as $VNERR,xx*XX - * - * xx can go from 01 to 12 and 255 and XX is the checksum. - * - * @param message to be checked. - * - * @return error code. - */ - uint8_t checkErrorVN(const char *message); - // TODO: used only 1 time to infer the type of error, all other times is - // "check if ==VNERR" ... can be replaced with a function in common files? - /** * @brief Default baudrate value for the usart communication. */ diff --git a/src/shared/sensors/Vectornav/VNCommonSerial.cpp b/src/shared/sensors/Vectornav/VNCommonSerial.cpp index 21fb61f5cdb2c43dc60741554089d49f277c73e2..3f0b9d3e7fdb58ed3260c5810a3dc21db174fb8f 100644 --- a/src/shared/sensors/Vectornav/VNCommonSerial.cpp +++ b/src/shared/sensors/Vectornav/VNCommonSerial.cpp @@ -254,4 +254,16 @@ GyroscopeData VNCommonSerial::sampleGyroscope() return data; } +uint8_t VNCommonSerial::checkErrorVN(const char *message) +{ + if (strncmp(message, "$VNERR,", 7) == 0) + { + // Extract the error code + int errorCode = atoi(&message[7]); + return errorCode; // Error detected + } + + return 0; // No error detected +} + } // namespace Boardcore diff --git a/src/shared/sensors/Vectornav/VNCommonSerial.h b/src/shared/sensors/Vectornav/VNCommonSerial.h index 1f2e4c7f0cf8fc257dbdf0f7d7633f1f7bce7b47..550289d35e5a2d1f4fde57fe7753d00315d5e9fd 100644 --- a/src/shared/sensors/Vectornav/VNCommonSerial.h +++ b/src/shared/sensors/Vectornav/VNCommonSerial.h @@ -123,6 +123,16 @@ protected: */ GyroscopeData sampleGyroscope(); + /** + * @brief Check if the message received from the sensor contains an error. + * + * @param message The message to be checked. + * + * @return Returns 0 if no error was found, else returns the actual error + * code. + */ + uint8_t checkErrorVN(const char *message); + /** * @brief Serial interface that is needed to communicate * with the sensor via ASCII codes.