// Auto-generated template file: command_ALARM_TIMEOUT_GET.tpl.c
// Generation timestamp: 2021-06-17 18:31:59.933877


#include "../typedefs.h"  
#include "../communication.h"  
#include "../hardware.h"
#include "../spurious.h" // NOT INCLUDED IN GENERATED CODE

err_t command_ALARM_TIMEOUT_GET(void) {
    // Command: ALARM_TIMEOUT_GET
    // Description: Get the timeout value of one alarm
    // 
    // Request code: CMDCODE_ALARM_TIMEOUT_GET_REQ
    // Response code: CMDCODE_ALARM_TIMEOUT_GET_REQ
    // Request payload (length in bytes is 1):
    //     field #0   (1 byte) [type: enum_alarm_number_t] : ALARM_NUMBER (Alarm number)
    // Response payload (length in bytes is 3):
    //     field #0   (1 byte) [type: enum_alarm_number_t] : ALARM_NUMBER (Alarm number)
    //     field #1   (2 bytes) [type: uint16_t  ] : TIMEOUT    (Timeout value)

    // Auto-generated section: request payload fields reading
    enum_alarm_number_t req_alarm_number = (enum_alarm_number_t)communication_request_payload_retrieve_uint8_t();
    // checking range for enum field req_alarm_number
    if((uint8_t)req_alarm_number < (uint8_t)enum_alarm_number_t_min) return ERR_RANGE;
    if((uint8_t)req_alarm_number > (uint8_t)enum_alarm_number_t_max) return ERR_RANGE;
    // End of auto-generated section

    // USER CODE HERE
    // CHECK : OK
    enum_alarm_number_t resp_alarm_number = req_alarm_number;
    uint16_t resp_timeout;     
    alarm_timeout_t* p_timeout = alarm_get_timeout_ptr_by_enum(req_alarm_number);
    INTERRUPT_GlobalInterruptDisable();
    resp_timeout = (*p_timeout);
    INTERRUPT_GlobalInterruptEnable();

    // Auto-generated section: response payload fields writing
    communication_response_payload_appender_reset();
    communication_response_payload_append_uint8_t((uint8_t)resp_alarm_number);
    communication_response_payload_append_uint16_t((uint16_t)resp_timeout);
    return NOERR;
    // End of auto-generated section
}