Do you mean something like this:
Code:
typdef struct{
uint16_t data0;
uint16_t data1;
uint16_t data2;
uint16_t data3;
} data_st;
enum RequestType { REQUEST_NONE, REQUEST0, REQUEST1, ... };
void handle_request(RequestType request_type) {
static RequestType prev_request = REQUEST_NONE;
static data_st request[4] = { // however many there are
{ 0x0102, 0x0304, 0x0506, 0x0708 }, // whatever the data is
// ...
};
data_st response;
switch (request_type) {
case REQUEST0:
request_response(&request[0], &response);
if (prev_request != REQUEST_NONE)
handle_prev_response(prev_request_type, &response);
prev_request = REQUEST0;
break;
case REQUEST1:
request_response(&request[1], &response);
if (prev_request != REQUEST_NONE)
handle_prev_response(prev_request, &response);
prev_request = REQUEST1;
break;
// etc.
}
}
void handle_prev_response(RequestType rt, data_st *response) {
switch (rt) {
case REQUEST0:
// process response for request-0 type
break;
case REQUEST1:
// process response for request-1 type
break;
// etc.
}
}