#pragma once

#include "../../libs/include/pnet_api.h"
/**
 * Indication to the application that a state transition has occurred within the
 * Profinet stack.
 *
 * This application call-back function is called by the Profinet stack on
 * specific state transitions within the Profinet stack.
 *
 * At the very least the application must react to the PNET_EVENT_PRMEND state
 * transition. After this event the application must call \a
 * pnet_application_ready(), when it has finished its setup and it is ready to
 * exchange data.
 *
 * The return value from this call-back function is ignored by the Profinet
 * stack.
 *
 * It is optional to implement this callback (but then it would be difficult
 * to know when to call the \a pnet_application_ready() function).
 * 
 * Указание приложению о том, что в стеке Profinet произошел переход состояния. 
 * 
 * Эта функция обратного вызова приложения вызывается стеком Profinet при определенных переходах состояний в стеке Profinet. 
 * 
 * По крайней мере, приложение должно реагировать на переход состояния PNET_EVENT_PRMEND. После этого события приложение 
 * должно вызвать \a pnet_application_ready(), когда оно закончит настройку и будет готово к обмену данными. 
 * 
 * Возвращаемое значение этой функции обратного вызова игнорируется стеком Profinet. 
 * 
 * Реализовать этот обратный вызов необязательно (но тогда будет трудно понять, когда вызывать функцию \a pnet_application_ready()).
 *
 * @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 state            In:    The state transition event. See
 *                                pnet_event_values_t.
 * @return 0 on success. Other values are ignored.
 */
int profinet_cb_state_ind( pnet_t * net, 
                           void * arg, 
                           uint32_t arep, 
                           pnet_event_values_t event);