From e29de860906682fb744aa703c47dc91883700e49 Mon Sep 17 00:00:00 2001 From: Roy Ben-Shabat Date: Tue, 22 May 2018 14:24:19 +0300 Subject: Implemented Numeric touch keyboard. Implemented Native RoundTrip for Machine Emulator. --- .../Tango.Emulations.Native/EmbeddedEmulator.cpp | 65 ++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 Software/Visual_Studio/Native/Tango.Emulations.Native/EmbeddedEmulator.cpp (limited to 'Software/Visual_Studio/Native/Tango.Emulations.Native/EmbeddedEmulator.cpp') diff --git a/Software/Visual_Studio/Native/Tango.Emulations.Native/EmbeddedEmulator.cpp b/Software/Visual_Studio/Native/Tango.Emulations.Native/EmbeddedEmulator.cpp new file mode 100644 index 000000000..431b641cd --- /dev/null +++ b/Software/Visual_Studio/Native/Tango.Emulations.Native/EmbeddedEmulator.cpp @@ -0,0 +1,65 @@ +#include "EmbeddedEmulator.h" +#include "MessageContainer.pb-c.h" +#include "MessageType.pb-c.h" +#include "UploadHardwareConfigurationRequest.pb-c.h"; + +using namespace std; + +namespace Tango +{ + namespace Emulations + { + namespace Native + { + EmbeddedEmulator::EmbeddedEmulator() + { + } + + + EmbeddedEmulator::~EmbeddedEmulator() + { + + } + + MessageContainer createContainer(MessageType type, char* token, protobuf_c_boolean completed, void* response, size_t(*packPtr)(void*, uint8_t*), size_t(*sizePtr)(void*)) + { + MessageContainer container = MESSAGE_CONTAINER__INIT; + container.completed = completed; + container.token = token; + container.has_completed = true; + container.has_data = true; + container.has_type = true; + container.type = type; + + + + uint8_t* response_buffer = (uint8_t*)malloc((*sizePtr)(response)); + size_t response_size = (*packPtr)(response, response_buffer); + container.data.data = response_buffer; + container.data.len = response_size; + + //free(response); + return container; + } + + size_t EmbeddedEmulator::ProcessMessage(uint8_t * input_buffer, size_t input_buffer_size, uint8_t *& output_buffer) + { + MessageContainer * container = message_container__unpack(NULL, input_buffer_size, input_buffer); + + switch (container->type) + { + case MESSAGE_TYPE__UploadHardwareConfigurationRequest: + + UploadHardwareConfigurationRequest* hardwareRequest = upload_hardware_configuration_request__unpack(NULL, container->data.len, container->data.data); + MessageContainer responseContainer = createContainer(MESSAGE_TYPE__UploadHardwareConfigurationRequest, container->token, true, hardwareRequest, (size_t(*)(void*, uint8_t*))&upload_hardware_configuration_request__pack, (size_t(*)(void*))&upload_hardware_configuration_request__get_packed_size); + + output_buffer = (uint8_t*)malloc(message_container__get_packed_size(&responseContainer)); + size_t container_size = message_container__pack(&responseContainer, output_buffer); + return container_size; + } + + return 0; + } + } + } +} -- cgit v1.3.1