3. Given the following code snippet, what will be the output printed?
typedef enum {IDLE, WAIT_ACK, SEND_DATA} State;
void handle_event(State *state, int event) {
switch (*state) {
case IDLE:
if (event == 1) {
*state = SEND_DATA;
printf("Sending data\n");
}
break;
case SEND_DATA:
if (event == 2) {
*state = WAIT_ACK;
printf("Waiting for ACK\n");
}
break;
case WAIT_ACK:
if (event == 3) {
*state = IDLE;
printf("ACK received, back to IDLE\n");
}
break;
}
}
int main() {
State current_state = IDLE;
handle_event(¤t_state, 1);
handle_event(¤t_state, 2);
handle_event(¤t_state, 3);
return 0;
}