diff options
Diffstat (limited to 'ucs2-lib/inc/ucs_net.h')
-rw-r--r-- | ucs2-lib/inc/ucs_net.h | 179 |
1 files changed, 179 insertions, 0 deletions
diff --git a/ucs2-lib/inc/ucs_net.h b/ucs2-lib/inc/ucs_net.h new file mode 100644 index 0000000..4e53c0b --- /dev/null +++ b/ucs2-lib/inc/ucs_net.h @@ -0,0 +1,179 @@ +/*------------------------------------------------------------------------------------------------*/ +/* UNICENS V2.1.0-3491 */ +/* Copyright (c) 2017 Microchip Technology Germany II GmbH & Co. KG. */ +/* */ +/* This program is free software: you can redistribute it and/or modify */ +/* it under the terms of the GNU General Public License as published by */ +/* the Free Software Foundation, either version 2 of the License, or */ +/* (at your option) any later version. */ +/* */ +/* This program is distributed in the hope that it will be useful, */ +/* but WITHOUT ANY WARRANTY; without even the implied warranty of */ +/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the */ +/* GNU General Public License for more details. */ +/* */ +/* You should have received a copy of the GNU General Public License */ +/* along with this program. If not, see <http://www.gnu.org/licenses/>. */ +/* */ +/* You may also obtain this software under a propriety license from Microchip. */ +/* Please contact Microchip for further information. */ +/*------------------------------------------------------------------------------------------------*/ + +/*! + * \file + * \brief Internal header file of the Network Management. + * + * \cond UCS_INTERNAL_DOC + * \addtogroup G_NET + * @{ + */ + +#ifndef UCS_NET_H +#define UCS_NET_H + +/*------------------------------------------------------------------------------------------------*/ +/* Includes */ +/*------------------------------------------------------------------------------------------------*/ +#include "ucs_base.h" +#include "ucs_inic.h" +#include "ucs_ret_pb.h" +#include "ucs_obs.h" +#include "ucs_fsm.h" + +#ifdef __cplusplus +extern "C" +{ +#endif + +/*------------------------------------------------------------------------------------------------*/ +/* Enumerations */ +/*------------------------------------------------------------------------------------------------*/ +/*! \brief Result codes of function Net_IsOwnAddress() */ +typedef enum Net_IsOwnAddrResult_ +{ + NET_IS_OWN_ADDR_NODE, /*!< \brief Is own node position address or own logical node address */ + NET_IS_OWN_ADDR_GROUP, /*!< \brief Is own group address */ + NET_IS_OWN_ADDR_NONE /*!< \brief Is foreign address */ + +} Net_IsOwnAddrResult_t; + +/*------------------------------------------------------------------------------------------------*/ +/* Structures */ +/*------------------------------------------------------------------------------------------------*/ +/*! \brief Initialization structure of the attach service. */ +typedef struct Net_InitData_ +{ + CBase *base_ptr; /*!< \brief Reference to base instance */ + CInic *inic_ptr; /*!< \brief Reference to INIC instance */ + +} Net_InitData_t; + +/*! \brief Parameter structure for MOST Network Status */ +typedef struct Net_NetworkStatusParam_ +{ + /*! \brief Indicates if parameters have been changed since last update */ + uint16_t change_mask; + /*! \brief Indicates if the MOST network is available and ready for control/packet + data transmission */ + Ucs_Network_Availability_t availability; + /*! \brief Indicates the sub state to parameter Availability */ + Ucs_Network_AvailInfo_t avail_info; + /*! \brief Indicates the transition cause of the MOST network going from Available to + NotAvailable or vice versa */ + Ucs_Network_AvailTransCause_t avail_trans_cause; + /*! \brief Contains events relating to the functionality for the MOST Network Interface */ + uint16_t events; + /*! \brief Current size of packet bandwidth */ + uint16_t packet_bw; + /*! \brief Current node address of the device */ + uint16_t node_address; + /*! \brief Node position of the device */ + uint8_t node_position; + /*! \brief Node position of last device in the ring */ + uint8_t max_position; + +} Net_NetworkStatusParam_t; + +/*! \brief Structure holds the parameters of property INIC.MOSTNetworkStatus */ +typedef struct Net_NetworkStatus_ +{ + /*! \brief Parameters of MOST Network Status */ + Net_NetworkStatusParam_t param; + /*! \brief Observe MOST Network status in INIC module */ + CObserver observer; + /*! \brief Subject to notify MOST Network Status the first time a observer has been added */ + CSubject pre_subject; + /*! \brief Subject to notify MOST Network Status */ + CSubject subject; + +} Net_NetworkStatus_t; + +/*! \brief Parameter structure for MOST Network Configuration */ +typedef struct Net_NetworkConfigParam_ +{ + /*! \brief Indicates if parameters have been changed since last update */ + uint16_t change_mask; + /*! \brief Current node address of the device */ + uint16_t node_address; + /*! \brief Current group address of the device */ + uint16_t group_address; + /*! \brief Low-level retry block count */ + uint8_t llrbc; + +} Net_NetworkConfigParam_t; + +/*! \brief Structure holds the parameters of property INIC.MOSTNetworkConfiguration */ +typedef struct Net_NetworkConfiguration_ +{ + /*! \brief Parameters of MOST Network Configuration */ + Net_NetworkConfigParam_t param; + /*! \brief Observe MOST Network Configuration in INIC module */ + CObserver observer; + /*! \brief Subject to notify MOST Network Configuration the first time a observer has been added */ + CSubject pre_subject; + /*! \brief Subject to notify MOST Network Configuration */ + CSubject subject; + +} Net_NetworkConfiguration_t; + +/*! \brief Class structure of the Network Management. */ +typedef struct CNetworkManagement_ +{ + /*! \brief Parameters of property INIC.MOSTNetworkStatus */ + Net_NetworkStatus_t network_status; + /*! \brief Parameters of property INIC.MOSTNetworkConfig. */ + Net_NetworkConfiguration_t network_configuration; + /*! \brief Reference to INIC instance */ + CInic *inic_ptr; + /*! \brief Reference to base instance */ + CBase *base_ptr; + /*! \brief Service instance for the scheduler */ + CService net_srv; + +} CNetworkManagement; + +/*------------------------------------------------------------------------------------------------*/ +/* Prototypes of class CNetworkManagement */ +/*------------------------------------------------------------------------------------------------*/ +extern void Net_Ctor(CNetworkManagement *self, Net_InitData_t *init_ptr); +extern void Net_AddObserverNetworkStatus(CNetworkManagement *self, CMaskedObserver *obs_ptr); +extern void Net_DelObserverNetworkStatus(CNetworkManagement *self, CMaskedObserver *obs_ptr); +extern void Net_AddObserverNetworkConfig(CNetworkManagement *self, CMaskedObserver *obs_ptr); +extern void Net_DelObserverNetworkConfig(CNetworkManagement *self, CMaskedObserver *obs_ptr); +extern Net_IsOwnAddrResult_t Net_IsOwnAddress(CNetworkManagement *self, uint16_t address); + +#ifdef __cplusplus +} /* extern "C" */ +#endif + +#endif /* #ifndef UCS_NET_H */ + +/*! + * @} + * \endcond + */ + +/*------------------------------------------------------------------------------------------------*/ +/* End of file */ +/*------------------------------------------------------------------------------------------------*/ + |