aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Container.c
blob: b9c3ffbd0fd6551acdb1576c78a1ebbc2e5a9434 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
#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 "General/GeneralHardware.h"
#include "heaters/heaters_ex.h"
#include "StateMachines/Printing/PrintingSTM.h"
#include "Modules/General/process.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__DebugLogRequest:
             ReportInitMessage(requestContainer);
             break;
         case MESSAGE_TYPE__JobRequest:
             JobRequestFunc(requestContainer);
             break;
         case MESSAGE_TYPE__UploadProcessParametersRequest:
             ProcessRequestFunc(requestContainer);
             break;
         default:
             //unsupported message type !!
             break;
     }
}