#pragma once

#include "../../libs/include/pnet_api.h"

/**
 * The IO-controller has sent an alarm to the device.
 *
 * This functionality is used for alarms triggered by the IO-controller.
 *
 * When receiving this indication, the application shall
 * respond with \a pnet_alarm_send_ack(), which
 * may be called in the context of this callback.
 * 
 * IO-контроллер отправил сигнал тревоги на устройство. 
 * 
 * Эта функциональность используется для аварийных сигналов, запускаемых IO-контроллером. 
 * При получении этого указания приложение должно ответить \a pnet_alarm_send_ack(), которое 
 * может быть вызвано в контексте этого обратного вызова.
 *
 * @param net              InOut: The p-net stack instance
 * @param arg              InOut: User-defined data (not used by p-net)
 * @param arep             In:    The AREP.
 * @param p_alarm_argument In:    The alarm argument (with slot, subslot,
 *                                alarm_type etc)
 * @param data_len         In:    Data length
 * @param data_usi         In:    Alarm USI
 * @param p_data           In:    Alarm data
 * @return  0  on success.
 *          Other values are ignored.
 */
int profinet_cb_alarm_ind (
    pnet_t * net,
    void * arg,
    uint32_t arep,
    const pnet_alarm_argument_t * p_alarm_arg,
    uint16_t data_len,
    uint16_t data_usi,
    const uint8_t * p_data);