Showing the changes to Source/Libraries/TimeSeriesPlatformLibrary/Transport/DataSubscriber.cpp (1 of 6 files). Show all
Unified · Split
| @@ -852,6 +852,38 @@ void gsfts::Transport::DataSubscriber::SendServerCommand(uint8_t commandCode) · 851 unmodified lines | ||
| 852 | 852 | SendServerCommand(commandCode, 0, 0, 0); |
| 853 | 853 | } |
| 854 | 854 | |
| 855 | +// Sends a command along with the given message to the server. | |
| 856 | +void gsfts::Transport::DataSubscriber::SendServerCommand(uint8_t commandCode, std::string message) | |
| 857 | +{ | |
| 858 | + const std::size_t CharSize = sizeof(char); | |
| 859 | + | |
| 860 | + uint32_t bufferSize; | |
| 861 | + std::vector<uint8_t> buffer; | |
| 862 | + | |
| 863 | + uint8_t* messagePtr; | |
| 864 | + uint32_t messageSize; | |
| 865 | + uint32_t bigEndianMessageSize; | |
| 866 | + uint8_t* bigEndianMessageSizePtr; | |
| 867 | + | |
| 868 | + messagePtr = (uint8_t*)&message[0]; | |
| 869 | + messageSize = (uint32_t)(message.size() * CharSize); | |
| 870 | + bigEndianMessageSize = m_endianConverter.ConvertBigEndian(messageSize); | |
| 871 | + bigEndianMessageSizePtr = (uint8_t*)&bigEndianMessageSize; | |
| 872 | + | |
| 873 | + bufferSize = 4 + messageSize; | |
| 874 | + buffer.reserve(bufferSize); | |
| 875 | + | |
| 876 | + buffer[0] = bigEndianMessageSizePtr[0]; | |
| 877 | + buffer[1] = bigEndianMessageSizePtr[1]; | |
| 878 | + buffer[2] = bigEndianMessageSizePtr[2]; | |
| 879 | + buffer[3] = bigEndianMessageSizePtr[3]; | |
| 880 | + | |
| 881 | + for (i = 0; i < messageSize; ++i) | |
| 882 | + buffer[4 + i] = messagePtr[i]; | |
| 883 | + | |
| 884 | + SendServerCommand(commandCode, &buffer[0], 0, bufferSize); | |
| 885 | +} | |
| 886 | + | |
| 855 | 887 | // Sends a command along with the given data to the server. |
| 856 | 888 | void gsfts::Transport::DataSubscriber::SendServerCommand(uint8_t commandCode, uint8_t* data, std::size_t offset, std::size_t length) |
| 857 | 889 | { |