using#include <PMR/Common/MessageContainer.pb-c.h>
#include "include.h"
#include "driverlib/gpio.h"
//#include "usb_serial_adapter.h"
//#include "graphics_adapter.h"
#include "Calculate.h"
#include "Progress.h"
#include "Stub_Cartridge.h"
#include "Stub_Dispenser.h"
#include "Stub_GPIO.h"
#include "Stub_Heater.h"
#include "Stub_MotorEncoder.h"
#include "Stub_OptLimitSwitch.h"
#include "Stub_SteperMotor.h"
#include "Stub_Valve.h"
#include "Stub_ExtFlash.h"
#include "Stub_FPGAReadBackReg.h"
#include "Stub_FPGAReadVersion.h"
#include "Stub_L6470.h"
#include "Stub_Motor.h"
#include "Stub_HW_Version.h"
#include "General/GeneralHardware.h"
#include "heaters/heaters_ex.h"
#include "Drivers/USB_Communication/USBCDCD.h"
#include "StateMachines/Printing/PrintingSTM.h"
#include "Modules/General/process.h"
#include "Modules/Thread/Thread_ex.h"
#include "Common/report/report.h"
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 = 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;
}
void receive_callback(char* buffer, size_t length)
{
//SendChars(buffer,length);
//draw_string(buffer, length);
//draw_image((uint8_t *)buffer);
//writeLine("Received ");
//writeFloat(length);
//writeString(" bytes");
//writeLine("Parsing message...");
MessageContainer* requestContainer = message_container__unpack(NULL, length, (uint8_t*)buffer);
switch(requestContainer->type)
{
case MESSAGE_TYPE__CalculateRequest:
Stub_CalculateRequest(requestContainer);
break;
case MESSAGE_TYPE__ProgressRequest:
Stub_ProgressRequest(requestContainer);
break;
case MESSAGE_TYPE__StubCartridgeReadRequest:
Stub_CartridgeReadRequest(requestContainer);
break;
case MESSAGE_TYPE__StubCartridgeWriteRequest:
Stub_CartridgeWriteRequest(requestContainer);
break;
case MESSAGE_TYPE__StubDispenserRequest:
Stub_DispenserRequest(requestContainer);
break;
case MESSAGE_TYPE__StubGPIOInputSetupRequest:
Stub_GPIOInputSetupRequest(requestContainer);
break;
case MESSAGE_TYPE__StubGPIOReadBitRequest:
Stub_GPIOReadBitRequest(requestContainer);
break;
case MESSAGE_TYPE__StubGPIOReadByteRequest:
Stub_GPIOReadByteRequest(requestContainer);
break;
case MESSAGE_TYPE__StubGPIOWriteBitRequest:
Stub_GPIOWriteBitRequest(requestContainer);
break;
case MESSAGE_TYPE__StubGPIOWriteByteRequest:
Stub_GPIOWriteByteRequest(requestContainer);
break;
case MESSAGE_TYPE__StubHeaterRequest:
Stub_HeaterRequest(requestContainer);
break;
case MESSAGE_TYPE__StubMotorEncoderRequest:
Stub_MotorEncoderRequest(requestContainer);
break;
case MESSAGE_TYPE__StubOptLimitSwitchRequest:
Stub_OptLimitSwitchRequest(requestContainer);
break;
case MESSAGE_TYPE__StubSteperMotorRequest:
Stub_SteperMotorRequest(requestContainer);
break;
case MESSAGE_TYPE__StubValveRequest:
Stub_ValveRequest(requestContainer);
break;
case MESSAGE_TYPE__StubExtFlashReadRequest:
Stub_ExtFlashReadRequest(requestContainer);
break;
case MESSAGE_TYPE__StubExtFlashWriteRequest:
Stub_ExtFlashWriteRequest(requestContainer);
break;
case MESSAGE_TYPE__StubFPGAReadBackRegRequest:
Stub_FPGAReadBackRegRequest(requestContainer);
break;
case MESSAGE_TYPE__StubFPGAReadVersionRequest:
Stub_FPGAReadVersionRequest(requestContainer);
break;
case MESSAGE_TYPE__StubL6470DriverRequest:
Stub_L6470DriverRequest(requestContainer);
break;
case MESSAGE_TYPE__StubMotorInitRequest:
Stub_MotorInitRequest(requestContainer);
break;
case MESSAGE_TYPE__StubMotorRunRequest:
Stub_MotorRunRequest(requestContainer);
break;
case MESSAGE_TYPE__StubMotorStopRequest:
Stub_MotorStopRequest(requestContainer);
break;
case MESSAGE_TYPE__StubMotorStatusRequest:
Stub_MotorStatusRequest(requestContainer);
break;
case MESSAGE_TYPE__StubMotorPositionRequest:
Stub_MotorPositionRequest(requestContainer);
break;
case MESSAGE_TYPE__StubMotorSpeedRequest:
Stub_MotorSpeedRequest(requestContainer);
break;
case MESSAGE_TYPE__StubMotorMovRequest:
Stub_MotorMovRequest(requestContainer);
break;
case MESSAGE_TYPE__StubHWVersionRequest:
Stub_HWVersionRequest(requestContainer);
break;
case MESSAGE_TYPE__DebugLogRequest:
ReportInitMessage(requestContainer);
break;
case MESSAGE_TYPE__JobRequest:
JobRequestFunc(requestContainer);
break;
case MESSAGE_TYPE__UploadHardwareConfigurationRequest:
HWConfigurationFunc(requestContainer);
break;
case MESSAGE_TYPE__UploadProcessParametersRequest:
ProcessRequestFunc(requestContainer);
break;
case MESSAGE_TYPE__StubHeatingTestRequest:
HeatingTestRequest(requestContainer);
break;
case MESSAGE_TYPE__StubHeatingTestPollRequest:
HeatingTestPollRequest(requestContainer);
break;
case MESSAGE_TYPE__SystemResetRequest:
HWSystemResetRequest(requestContainer);
break;
default:
//unsupported message type !!
break;
}
}