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;
}
}
|