6 * @brief Header file for the IXP400 ATM Manager component (IxAtmm)
10 * IXP400 SW Release version 2.0
12 * -- Copyright Notice --
15 * Copyright 2001-2005, Intel Corporation.
16 * All rights reserved.
19 * Redistribution and use in source and binary forms, with or without
20 * modification, are permitted provided that the following conditions
22 * 1. Redistributions of source code must retain the above copyright
23 * notice, this list of conditions and the following disclaimer.
24 * 2. Redistributions in binary form must reproduce the above copyright
25 * notice, this list of conditions and the following disclaimer in the
26 * documentation and/or other materials provided with the distribution.
27 * 3. Neither the name of the Intel Corporation nor the names of its contributors
28 * may be used to endorse or promote products derived from this software
29 * without specific prior written permission.
32 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
33 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
34 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
35 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
36 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
37 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
38 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
39 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
40 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
41 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
45 * -- End of Copyright Notice --
50 * @defgroup IxAtmm IXP400 ATM Manager (IxAtmm) API
52 * @brief IXP400 ATM Manager component Public API
61 * Put the user defined include files required
64 #include "IxOsalTypes.h"
67 * #defines and macros used in this file.
71 * @def IX_ATMM_RET_ALREADY_INITIALIZED
73 * @brief Component has already been initialized
75 #define IX_ATMM_RET_ALREADY_INITIALIZED 2
78 * @def IX_ATMM_RET_INVALID_PORT
80 * @brief Specified port does not exist or is out of range */
81 #define IX_ATMM_RET_INVALID_PORT 3
84 * @def IX_ATMM_RET_INVALID_VC_DESCRIPTOR
86 * @brief The VC description does not adhere to ATM standards */
87 #define IX_ATMM_RET_INVALID_VC_DESCRIPTOR 4
90 * @def IX_ATMM_RET_VC_CONFLICT
92 * @brief The VPI/VCI values supplied are either reserved, or they
93 * conflict with a previously registered VC on this port */
94 #define IX_ATMM_RET_VC_CONFLICT 5
97 * @def IX_ATMM_RET_PORT_CAPACITY_IS_FULL
99 * @brief The virtual connection cannot be established on the port
100 * because the remaining port capacity is not sufficient to
102 #define IX_ATMM_RET_PORT_CAPACITY_IS_FULL 6
105 * @def IX_ATMM_RET_NO_SUCH_VC
107 * @brief No registered VC, as described by the supplied VCI/VPI or
108 * VC identifier values, exists on this port */
109 #define IX_ATMM_RET_NO_SUCH_VC 7
112 * @def IX_ATMM_RET_INVALID_VC_ID
114 * @brief The specified VC identifier is out of range. */
115 #define IX_ATMM_RET_INVALID_VC_ID 8
118 * @def IX_ATMM_RET_INVALID_PARAM_PTR
120 * @brief A pointer parameter was NULL. */
121 #define IX_ATMM_RET_INVALID_PARAM_PTR 9
124 * @def IX_ATMM_UTOPIA_SPHY_ADDR
126 * @brief The phy address when in SPHY mode */
127 #define IX_ATMM_UTOPIA_SPHY_ADDR 31
130 * @def IX_ATMM_THREAD_PRI_HIGH
132 * @brief The value of high priority thread */
133 #define IX_ATMM_THREAD_PRI_HIGH 90
136 * Typedefs whose scope is limited to this file.
139 /** @brief Definition for use in the @ref IxAtmmVc structure.
140 * Indicates the direction of a VC */
143 IX_ATMM_VC_DIRECTION_TX=0, /**< Atmm Vc direction transmit*/
144 IX_ATMM_VC_DIRECTION_RX, /**< Atmm Vc direction receive*/
145 IX_ATMM_VC_DIRECTION_INVALID /**< Atmm Vc direction invalid*/
148 /** @brief Definition for use with @ref IxAtmmVcChangeCallback
149 * callback. Indicates that the event type represented by the
150 * callback for this VC. */
153 IX_ATMM_VC_CHANGE_EVENT_REGISTER=0, /**< Atmm Vc event register*/
154 IX_ATMM_VC_CHANGE_EVENT_DEREGISTER, /**< Atmm Vc event de-register*/
155 IX_ATMM_VC_CHANGE_EVENT_INVALID /**< Atmm Vc event invalid*/
156 } IxAtmmVcChangeEvent;
158 /** @brief Definitions for use with @ref ixAtmmUTOPIAInit interface to
159 * indicate that UTOPIA loopback should be enabled or disabled
160 * on initialisation. */
163 IX_ATMM_UTOPIA_LOOPBACK_DISABLED=0, /**< Atmm Utopia loopback mode disabled*/
164 IX_ATMM_UTOPIA_LOOPBACK_ENABLED, /**< Atmm Utopia loopback mode enabled*/
165 IX_ATMM_UTOPIA_LOOPBACK_INVALID /**< Atmm Utopia loopback mode invalid*/
166 } IxAtmmUtopiaLoopbackMode;
168 /** @brief This structure describes the required attributes of a
169 * virtual connection.
172 unsigned vpi; /**< VPI value of this virtual connection */
173 unsigned vci; /**< VCI value of this virtual connection. */
174 IxAtmmVcDirection direction; /**< VC direction */
176 /** Traffic descriptor of this virtual connection. This structure
177 * is defined by the @ref IxAtmSch component. */
178 IxAtmTrafficDescriptor trafficDesc;
182 /** @brief Definitions for use with @ref ixAtmmUtopiaInit interface to
183 * indicate that UTOPIA multi-phy/single-phy mode is used.
187 IX_ATMM_MPHY_MODE = 0, /**< Atmm phy mode mphy*/
188 IX_ATMM_SPHY_MODE, /**< Atmm phy mode sphy*/
189 IX_ATMM_PHY_MODE_INVALID /**< Atmm phy mode invalid*/
193 /** @brief Structure contains port-specific information required to
194 * initialize IxAtmm, and specifically, the IXP400 UTOPIA
197 unsigned reserved_1:11; /**< [31:21] Should be zero */
198 unsigned UtopiaTxPhyAddr:5; /**< [20:16] Address of the
199 * transmit (Tx) PHY for this
200 * port on the 5-bit UTOPIA
201 * Level-2 address bus */
202 unsigned reserved_2:11; /**< [15:5] Should be zero */
203 unsigned UtopiaRxPhyAddr:5; /**< [4:0] Address of the receive
204 * (Rx) PHY for this port on the
205 * 5-bit UTOPIA Level-2
209 /** @brief Callback type used with @ref ixAtmmVcChangeCallbackRegister interface
210 * Defines a callback type which will be used to notify registered
211 * users of registration/deregistration events on a particular port
213 * @param eventType @ref IxAtmmVcChangeEvent [in] - Event indicating
214 * whether the VC supplied has been added or
217 * @param port @ref IxAtmLogicalPort [in] - Specifies the port on which the event has
220 * @param vcChanged @ref IxAtmmVc* [in] - Pointer to a structure which gives
221 * details of the VC which has been added
222 * or removed on the port
224 typedef void (*IxAtmmVcChangeCallback) (IxAtmmVcChangeEvent eventType,
225 IxAtmLogicalPort port,
226 const IxAtmmVc* vcChanged);
229 * Variable declarations global to this file only. Externs are followed by
234 * Extern function prototypes
238 * Function declarations
245 * @fn ixAtmmInit (void)
247 * @brief Interface to initialize the IxAtmm software component. Can
248 * be called once only.
250 * Must be called before any other IxAtmm API is called.
254 * @return @li IX_SUCCESS : IxAtmm has been successfully initialized.
255 * Calls to other IxAtmm interfaces may now be performed.
256 * @return @li IX_FAIL : IxAtmm has already been initialized.
264 * @fn ixAtmmUtopiaInit (unsigned numPorts,
265 IxAtmmPhyMode phyMode,
266 IxAtmmPortCfg portCfgs[],
267 IxAtmmUtopiaLoopbackMode loopbackMode)
269 * @brief Interface to initialize the UTOPIA Level-2 ATM coprocessor
270 * for the specified number of physical ports. The function
271 * must be called before the ixAtmmPortInitialize interface
272 * can operate successfully.
274 * @param numPorts unsigned [in] - Indicates the total number of logical
275 * ports that are active on the device. Up to 12 ports are
278 * @param phyMode @ref IxAtmmPhyMode [in] - Put the Utopia coprocessor in SPHY
281 * @param portCfgs[] @ref IxAtmmPortCfg [in] - Pointer to an array of elements
282 * detailing the UTOPIA specific port characteristics. The
283 * length of the array must be equal to the number of ports
284 * activated. ATM ports are referred to by the relevant
285 * offset in this array in all subsequent IxAtmm interface
288 * @param loopbackMode @ref IxAtmmUtopiaLoopbackMode [in] - Value must be one of
289 * @ref IX_ATMM_UTOPIA_LOOPBACK_ENABLED or @ref
290 * IX_ATMM_UTOPIA_LOOPBACK_DISABLED indicating whether
291 * loopback should be enabled on the device. Loopback can
292 * only be supported on a single PHY, therefore the numPorts
293 * parameter must be 1 if loopback is enabled.
295 * @return @li IX_SUCCESS : Indicates that the UTOPIA device has been
296 * successfully initialized for the supplied ports.
297 * @return @li IX_ATMM_RET_ALREADY_INITIALIZED : The UTOPIA device has
298 * already been initialized.
299 * @return @li IX_FAIL : The supplied parameters are invalid or have been
300 * rejected by the UTOPIA-NPE device.
303 * This interface may only be called once.
304 * Port identifiers are assumed to range from 0 to (numPorts - 1) in all
306 * In all subsequent calls to interfaces supplied by IxAtmm, the specified
307 * port value is expected to represent the offset in the portCfgs array
308 * specified in this interface. i.e. The first port in this array will
309 * subsequently be represented as port 0, the second port as port 1,
312 ixAtmmUtopiaInit (unsigned numPorts,
313 IxAtmmPhyMode phyMode,
314 IxAtmmPortCfg portCfgs[],
315 IxAtmmUtopiaLoopbackMode loopbackMode);
321 * @fn ixAtmmPortInitialize (IxAtmLogicalPort port,
325 * @brief The interface is called following @ref ixAtmmUtopiaInit ()
326 * and before calls to any other IxAtmm interface. It serves
327 * to activate the registered ATM port with IxAtmm.
329 * The transmit and receive port rates are specified in bits per
330 * second. This translates to ATM cells per second according to the
331 * following formula: CellsPerSecond = portRate / (53*8) The
332 * IXP400 device supports only 53 byte cells. The client shall make
333 * sure that the off-chip physical layer device has already been
336 * IxAtmm will configure IxAtmdAcc and IxAtmSch to enable scheduling
339 * This interface must be called once for each active port in the
340 * system. The first time the interface is invoked, it will configure
341 * the mechanism by which the handling of transmit, transmit-done and
342 * receive are driven with the IxAtmdAcc component.
344 * This function is reentrant.
346 * @note The minimum tx rate that will be accepted is 424 bit/s which equates
347 * to 1 cell (53 bytes) per second.
349 * @param port @ref IxAtmLogicalPort [in] - Identifies the port which is to be
352 * @param txPortRate unsigned [in] - Value specifies the
353 * transmit port rate for this port in
354 * bits/second. This value is used by the ATM Scheduler
355 * component is evaluating VC access requests for the port.
357 * @param rxPortRate unsigned [in] - Value specifies the
358 * receive port rate for this port in bits/second.
360 * @return @li IX_SUCCESS : The specificed ATM port has been successfully
361 * initialized. IxAtmm is ready to accept VC registrations on
364 * @return @li IX_ATMM_RET_ALREADY_INITIALIZED : ixAtmmPortInitialize has
365 * already been called successfully on this port. The current
368 * @return @li IX_ATMM_RET_INVALID_PORT : The port value indicated in the
369 * input is not valid. The request is rejected.
371 * @return @li IX_FAIL : IxAtmm could not initialize the port because the
372 * inputs are not understood.
374 * @sa ixAtmmPortEnable, ixAtmmPortDisable
378 ixAtmmPortInitialize (IxAtmLogicalPort port,
380 unsigned rxPortRate);
385 * @fn ixAtmmPortModify (IxAtmLogicalPort port,
389 * @brief A client may call this interface to change the existing
390 * port rate (expressed in bits/second) on an established ATM
393 * @param port @ref IxAtmLogicalPort [in] - Identifies the port which is to be
396 * @param txPortRate unsigned [in] - Value specifies the``
397 * transmit port rate for this port in
398 * bits/second. This value is used by the ATM Scheduler
399 * component is evaluating VC access requests for the port.
401 * @param rxPortRate unsigned [in] - Value specifies the
402 * receive port rate for this port in
405 * @return @li IX_SUCCESS : The indicated ATM port rates have been
406 * successfully modified.
408 * @return @li IX_ATMM_RET_INVALID_PORT : The port value indicated in the
409 * input is not valid. The request is rejected.
411 * @return @li IX_FAIL : IxAtmm could not update the port because the
412 * inputs are not understood, or the interface was called before
413 * the port was initialized. */
415 ixAtmmPortModify (IxAtmLogicalPort port,
417 unsigned rxPortRate);
422 * @fn ixAtmmPortQuery (IxAtmLogicalPort port,
423 unsigned *txPortRate,
424 unsigned *rxPortRate);
427 * @brief The client may call this interface to request details on
428 * currently registered transmit and receive rates for an ATM
431 * @param port @ref IxAtmLogicalPort [in] - Value identifies the port from which the
432 * rate details are requested.
434 * @param *txPortRate unsigned [out] - Pointer to a value
435 * which will be filled with the value of the transmit port
436 * rate specified in bits/second.
438 * @param *rxPortRate unsigned [out] - Pointer to a value
439 * which will be filled with the value of the receive port
440 * rate specified in bits/second.
442 * @return @li IX_SUCCESS : The information requested on the specified
443 * port has been successfully supplied in the output.
445 * @return @li IX_ATMM_RET_INVALID_PORT : The port value indicated in the
446 * input is not valid. The request is rejected.
448 * @return @li IX_ATMM_RET_INVALID_PARAM_PTR : A pointer parameter was
451 * @return @li IX_FAIL : IxAtmm could not update the port because the
452 * inputs are not understood, or the interface was called before
453 * the port was initialized. */
455 ixAtmmPortQuery (IxAtmLogicalPort port,
456 unsigned *txPortRate,
457 unsigned *rxPortRate);
462 * @fn ixAtmmPortEnable(IxAtmLogicalPort port)
464 * @brief The client call this interface to enable transmit for an ATM
465 * port. At initialisation, all the ports are disabled.
467 * @param port @ref IxAtmLogicalPort [in] - Value identifies the port
469 * @return @li IX_SUCCESS : Transmission over this port is started.
471 * @return @li IX_FAIL : The port parameter is not valid, or the
472 * port is already enabled
474 * @note - When a port is disabled, Rx and Tx VC Connect requests will fail
476 * @note - This function uses system resources and should not be used
477 * inside an interrupt context.
479 * @sa ixAtmmPortDisable */
481 ixAtmmPortEnable(IxAtmLogicalPort port);
486 * @fn ixAtmmPortDisable(IxAtmLogicalPort port)
488 * @brief The client call this interface to disable transmit for an ATM
489 * port. At initialisation, all the ports are disabled.
491 * @param port @ref IxAtmLogicalPort [in] - Value identifies the port
493 * @return @li IX_SUCCESS : Transmission over this port is stopped.
495 * @return @li IX_FAIL : The port parameter is not valid, or the
496 * port is already disabled
498 * @note - When a port is disabled, Rx and Tx VC Connect requests will fail
500 * @note - This function call does not stop RX traffic. It is supposed
501 * that this function is invoked when a serious problem
502 * is detected (e.g. physical layer broken). Then, the RX traffic
505 * @note - This function is blocking until the hw acknowledge that the
506 * transmission is stopped.
508 * @note - This function uses system resources and should not be used
509 * inside an interrupt context.
511 * @sa ixAtmmPortEnable */
513 ixAtmmPortDisable(IxAtmLogicalPort port);
518 * @fn ixAtmmVcRegister (IxAtmLogicalPort port,
520 IxAtmSchedulerVcId *vcId)
522 * @brief This interface is used to register an ATM Virtual
523 * Connection on the specified ATM port.
525 * Each call to this interface registers a unidirectional virtual
526 * connection with the parameters specified. If a bi-directional VC
527 * is needed, the function should be called twice (once for each
528 * direction, Tx & Rx) where the VPI and VCI and port parameters in
529 * each call are identical.
531 * With the addition of each new VC to a port, a series of
532 * callback functions are invoked by the IxAtmm component to notify
533 * possible external components of the change. The callback functions
534 * are registered using the @ref ixAtmmVcChangeCallbackRegister interface.
536 * The IxAtmSch component is notified of the registration of transmit
539 * @param port @ref IxAtmLogicalPort [in] - Identifies port on which the specified VC is
542 * @param *vcToAdd @ref IxAtmmVc [in] - Pointer to an @ref IxAtmmVc structure
543 * containing a description of the VC to be registered. The
544 * client shall fill the vpi, vci and direction and relevant
545 * trafficDesc members of this structure before calling this
548 * @param *vcId @ref IxAtmSchedulerVcId [out] - Pointer to an integer value which is filled
549 * with the per-port unique identifier value for this VC.
550 * This identifier will be required when a request is
551 * made to deregister or change this VC. VC identifiers
552 * for transmit VCs will have a value between 0-43,
553 * i.e. 32 data Tx VCs + 12 OAM Tx Port VCs.
554 * Receive VCs will have a value between 44-66,
555 * i.e. 32 data Rx VCs + 1 OAM Rx VC.
557 * @return @li IX_SUCCESS : The VC has been successfully registered on
558 * this port. The VC is ready for a client to configure IxAtmdAcc
559 * for receive and transmit operations on the VC.
560 * @return @li IX_ATMM_RET_INVALID_PORT : The port value indicated in the
561 * input is not valid or has not been initialized. The request
563 * @return @li IX_ATMM_RET_INVALID_VC_DESCRIPTOR : The descriptor
564 * pointed to by vcToAdd is invalid. The registration request
566 * @return @li IX_ATMM_RET_VC_CONFLICT : The VC requested conflicts with
567 * reserved VPI and/or VCI values or with another VC already activated
569 * @return @li IX_ATMM_RET_PORT_CAPACITY_IS_FULL : The VC cannot be
570 * registered in the port becuase the port capacity is
571 * insufficient to support the requested ATM traffic contract.
572 * The registration request is rejected.
573 * @return @li IX_ATMM_RET_INVALID_PARAM_PTR : A pointer parameter was
576 * @warning IxAtmm has no capability of signaling or negotiating a virtual
577 * connection. Negotiation of the admission of the VC to the network
578 * is beyond the scope of this function. This is assumed to be
579 * performed by the calling client, if appropriate,
580 * before or after this function is called.
583 ixAtmmVcRegister (IxAtmLogicalPort port,
585 IxAtmSchedulerVcId *vcId);
590 * @fn ixAtmmVcDeregister (IxAtmLogicalPort port, IxAtmSchedulerVcId vcId)
592 * @brief Function called by a client to deregister a VC from the
595 * With the removal of each new VC from a port, a series of
596 * registered callback functions are invoked by the IxAtmm component
597 * to notify possible external components of the change. The callback
598 * functions are registered using the @ref ixAtmmVcChangeCallbackRegister.
600 * The IxAtmSch component is notified of the removal of transmit VCs.
602 * @param port @ref IxAtmLogicalPort [in] - Identifies port on which the VC to be
603 * removed is currently registered.
605 * @param vcId @ref IxAtmSchedulerVcId [in] - VC identifier value of the VC to
606 * be deregistered. This value was supplied to the client when
607 the VC was originally registered. This value can also be
608 queried from the IxAtmm component through the @ref ixAtmmVcQuery
611 * @return @li IX_SUCCESS : The specified VC has been successfully
612 * removed from this port.
613 * @return @li IX_ATMM_RET_INVALID_PORT : The port value indicated in the
614 * input is not valid or has not been initialized. The request
616 * @return @li IX_FAIL : There is no registered VC associated with the
617 * supplied identifier registered on this port. */
619 ixAtmmVcDeregister (IxAtmLogicalPort port, IxAtmSchedulerVcId vcId);
624 * @fn ixAtmmVcQuery (IxAtmLogicalPort port,
627 IxAtmmVcDirection direction,
628 IxAtmSchedulerVcId *vcId,
631 * @brief This interface supplies information about an active VC on a
632 * particular port when supplied with the VPI, VCI and
633 * direction of that VC.
635 * @param port @ref IxAtmLogicalPort [in] - Identifies port on which the VC to be
636 * queried is currently registered.
638 * @param vpi unsigned [in] - ATM VPI value of the requested VC.
640 * @param vci unsigned [in] - ATM VCI value of the requested VC.
642 * @param direction @ref IxAtmmVcDirection [in] - One of @ref
643 * IX_ATMM_VC_DIRECTION_TX or @ref IX_ATMM_VC_DIRECTION_RX
644 * indicating the direction (Tx or Rx) of the requested VC.
646 * @param *vcId @ref IxAtmSchedulerVcId [out] - Pointer to an integer value which will be
647 * filled with the VC identifier value for the requested
648 * VC (as returned by @ref ixAtmmVcRegister), if it
649 * exists on this port.
651 * @param *vcDesc @ref IxAtmmVc [out] - Pointer to an @ref IxAtmmVc structure
652 * which will be filled with the specific details of the
653 * requested VC, if it exists on this port.
655 * @return @li IX_SUCCESS : The specified VC has been found on this port
656 * and the requested details have been returned.
657 * @return @li IX_ATMM_RET_INVALID_PORT : The port value indicated in the
658 * input is not valid or has not been initialized. The request
660 * @return @li IX_ATMM_RET_NO_SUCH_VC : No VC exists on the specified
661 * port which matches the search criteria (VPI, VCI, direction)
662 * given. No data is returned.
663 * @return @li IX_ATMM_RET_INVALID_PARAM_PTR : A pointer parameter was
668 ixAtmmVcQuery (IxAtmLogicalPort port,
671 IxAtmmVcDirection direction,
672 IxAtmSchedulerVcId *vcId,
679 * @fn ixAtmmVcIdQuery (IxAtmLogicalPort port, IxAtmSchedulerVcId vcId, IxAtmmVc *vcDesc)
681 * @brief This interface supplies information about an active VC on a
682 * particular port when supplied with a vcId for that VC.
684 * @param port @ref IxAtmLogicalPort [in] - Identifies port on which the VC to be
685 * queried is currently registered.
687 * @param vcId @ref IxAtmSchedulerVcId [in] - Value returned by @ref ixAtmmVcRegister which
688 * uniquely identifies the requested VC on this port.
690 * @param *vcDesc @ref IxAtmmVc [out] - Pointer to an @ref IxAtmmVc structure
691 * which will be filled with the specific details of the
692 * requested VC, if it exists on this port.
694 * @return @li IX_SUCCESS : The specified VC has been found on this port
695 * and the requested details have been returned.
696 * @return @li IX_ATMM_RET_INVALID_PORT : The port value indicated in the
697 * input is not valid or has not been initialized. The request
699 * @return @li IX_ATMM_RET_NO_SUCH_VC : No VC exists on the specified
700 * port which matches the supplied identifier. No data is
702 * @return @li IX_ATMM_RET_INVALID_PARAM_PTR : A pointer parameter was
706 ixAtmmVcIdQuery (IxAtmLogicalPort port, IxAtmSchedulerVcId vcId, IxAtmmVc *vcDesc);
711 * @fn ixAtmmVcChangeCallbackRegister (IxAtmmVcChangeCallback callback)
713 * @brief This interface is invoked to supply a function to IxAtmm
714 * which will be called to notify the client if a new VC is
715 * registered with IxAtmm or an existing VC is removed.
717 * The callback, when invoked, will run within the context of the call
718 * to @ref ixAtmmVcRegister or @ref ixAtmmVcDeregister which caused
719 * the change of state.
721 * A maximum of 32 calbacks may be registered in with IxAtmm.
723 * @param callback @ref IxAtmmVcChangeCallback [in] - Callback which complies
724 * with the @ref IxAtmmVcChangeCallback definition. This
725 * function will be invoked by IxAtmm with the appropiate
726 * parameters for the relevant VC when any VC has been
727 * registered or deregistered with IxAtmm.
729 * @return @li IX_SUCCESS : The specified callback has been registered
730 * successfully with IxAtmm and will be invoked when appropriate.
731 * @return @li IX_FAIL : Either the supplied callback is invalid, or
732 * IxAtmm has already registered 32 and connot accommodate
733 * any further registrations of this type. The request is
736 * @warning The client must not call either the @ref
737 * ixAtmmVcRegister or @ref ixAtmmVcDeregister interfaces
738 * from within the supplied callback function. */
739 PUBLIC IX_STATUS ixAtmmVcChangeCallbackRegister (IxAtmmVcChangeCallback callback);
745 * @fn ixAtmmVcChangeCallbackDeregister (IxAtmmVcChangeCallback callback)
747 * @brief This interface is invoked to deregister a previously supplied
750 * @param callback @ref IxAtmmVcChangeCallback [in] - Callback which complies
751 * with the @ref IxAtmmVcChangeCallback definition. This
752 * function will removed from the table of callbacks.
754 * @return @li IX_SUCCESS : The specified callback has been deregistered
755 * successfully from IxAtmm.
756 * @return @li IX_FAIL : Either the supplied callback is invalid, or
757 * is not currently registered with IxAtmm.
760 ixAtmmVcChangeCallbackDeregister (IxAtmmVcChangeCallback callback);
765 * @fn ixAtmmUtopiaStatusShow (void)
767 * @brief Display utopia status counters
771 * @return @li IX_SUCCESS : Show function was successful
772 * @return @li IX_FAIL : Internal failure
775 ixAtmmUtopiaStatusShow (void);
780 * @fn ixAtmmUtopiaCfgShow (void)
782 * @brief Display utopia information(config registers and status registers)
786 * @return @li IX_SUCCESS : Show function was successful
787 * @return @li IX_FAIL : Internal failure
790 ixAtmmUtopiaCfgShow (void);