William Kane / Generic

Dependents:   LaserioLib

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers prt.c Source File

prt.c

00001 /*******************************************************************************
00002 ********************************************************************************
00003 **                                                                            **
00004 ** ABCC Starter Kit version 2.01.01 (2015-12-14)                              **
00005 **                                                                            **
00006 ** Delivered with:                                                            **
00007 **    ABCC Driver 4.01.01 (2015-12-14)                                        **
00008 **    ABP         7.16.01 (2015-10-14)                                        **
00009 **                                                                            */
00010 /*******************************************************************************
00011 ********************************************************************************
00012 ** COPYRIGHT NOTIFICATION (c) 2015 HMS Industrial Networks AB                 **
00013 **                                                                            **
00014 ** This code is the property of HMS Industrial Networks AB.                   **
00015 ** The source code may not be reproduced, distributed, or used without        **
00016 ** permission. When used together with a product from HMS, permission is      **
00017 ** granted to modify, reproduce and distribute the code in binary form        **
00018 ** without any restrictions.                                                  **
00019 **                                                                            **
00020 ** THE CODE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. HMS DOES NOT    **
00021 ** WARRANT THAT THE FUNCTIONS OF THE CODE WILL MEET YOUR REQUIREMENTS, OR     **
00022 ** THAT THE OPERATION OF THE CODE WILL BE UNINTERRUPTED OR ERROR-FREE, OR     **
00023 ** THAT DEFECTS IN IT CAN BE CORRECTED.                                       **
00024 ********************************************************************************
00025 ********************************************************************************
00026 ** Source file for the Profinet IO object.
00027 ********************************************************************************
00028 ********************************************************************************
00029 */
00030 
00031 #include "abcc_td.h"
00032 #include "abcc_sys_adapt.h"
00033 #include "abcc_obj_cfg.h"
00034 #include "abcc.h"
00035 #include "prt.h"
00036 #include "abp_pnio.h"
00037 #include "string.h"
00038 #include "appl_abcc_handler.h"
00039 #include "abcc_port.h"
00040 
00041 #if PRT_OBJ_ENABLE
00042 
00043 /*******************************************************************************
00044 ** Defines
00045 ********************************************************************************
00046 */
00047 
00048 /*------------------------------------------------------------------------------
00049 ** Object attribute values
00050 **------------------------------------------------------------------------------
00051 */
00052 #define PRT_OA_NAME_VALUE                          "PROFINET IO"
00053 #define PRT_OA_REV_VALUE                           1
00054 #define PRT_OA_NUM_INST_VALUE                      1
00055 #define PRT_OA_HIGHEST_INST_VALUE                  1
00056 
00057 /*******************************************************************************
00058 ** Typedefs
00059 ********************************************************************************
00060 */
00061 
00062 /*------------------------------------------------------------------------------
00063 ** prt_ObjectType.
00064 ** Structure describing an ProfiNet Object.
00065 **------------------------------------------------------------------------------
00066 */
00067 typedef struct prt_ObjectType
00068 {
00069     const  char* pcName;
00070     UINT8  bRevision;
00071     UINT16 iNumberOfInstances;
00072     UINT16 iHighestInstanceNo;
00073 }
00074 prt_ObjectType;
00075 
00076 /*------------------------------------------------------------------------------
00077 ** Forward declarations
00078 **------------------------------------------------------------------------------
00079 */
00080 static void InstanceCommand( ABP_MsgType* psNewMessage );
00081 static void ObjectCommand( ABP_MsgType* psNewMessage );
00082 
00083 /*******************************************************************************
00084 ** Private Globals
00085 ********************************************************************************
00086 */
00087 
00088 static const prt_ObjectType prt_sObject =
00089 {
00090    PRT_OA_NAME_VALUE,                           /* Name.                                              */
00091    PRT_OA_REV_VALUE,                            /* Revision.                                          */
00092    PRT_OA_NUM_INST_VALUE,                       /* Number of instances.                               */
00093    PRT_OA_HIGHEST_INST_VALUE                    /* Highest instance number.                           */
00094 };
00095 
00096 /*******************************************************************************
00097 ** Public Services
00098 ********************************************************************************
00099 */
00100 
00101 void PRT_ProcessCmdMsg( ABP_MsgType* psNewMessage )
00102 {
00103    /*
00104    ** This function processes commands to the Profinet Object and it's Instance.
00105    */
00106    if( ABCC_GetMsgInstance( psNewMessage ) == ABP_INST_OBJ )
00107    {
00108       /*
00109       ** Profinet object Command
00110       */
00111       ObjectCommand( psNewMessage );
00112    }
00113    else
00114    {
00115       /*
00116       ** Profinet instance Command
00117       */
00118       InstanceCommand( psNewMessage );
00119    }
00120 
00121    ABCC_SendRespMsg( psNewMessage );
00122 }
00123 
00124 
00125 /*******************************************************************************
00126 ** Private Services
00127 ********************************************************************************
00128 */
00129 
00130 /*------------------------------------------------------------------------------
00131 ** Processes commands to PRT Instances
00132 **------------------------------------------------------------------------------
00133 ** Arguments:
00134 **    psNewMessage      - Pointer to a ABP_MsgType message.
00135 **
00136 ** Returns:
00137 **    None
00138 **------------------------------------------------------------------------------
00139 */
00140 static void InstanceCommand( ABP_MsgType* psNewMessage )
00141 {
00142    /*
00143    ** This function processes commands to the Profinet Instance.
00144    */
00145    if( ABCC_GetMsgInstance( psNewMessage ) != 1 )
00146    {
00147       /*
00148       ** The Instance does not exist.
00149       */
00150       ABP_SetMsgErrorResponse( psNewMessage, 1, ABP_ERR_UNSUP_INST );
00151       return;
00152    }
00153 
00154    switch ( ABCC_GetMsgCmdBits( psNewMessage ) )
00155    {
00156    case ABP_CMD_GET_ATTR:
00157 
00158       switch( ABCC_GetMsgCmdExt0( psNewMessage ) )
00159       {
00160 #if PRT_IA_DEVICE_ID_ENABLE
00161       case ABP_PNIO_IA_DEVICE_ID:
00162 
00163          /*
00164          ** Copy the 1st Instance 1 attribute (Device ID) to the message.
00165          */
00166          ABCC_SetMsgData16( psNewMessage, PRT_IA_DEVICE_ID_VALUE, 0 );
00167          ABP_SetMsgResponse( psNewMessage, ABP_PNIO_IA_DEVICE_ID_DS );
00168          break;
00169 #endif
00170 #if PRT_IA_VENDOR_ID_ENABLE
00171       case ABP_PNIO_IA_VENDOR_ID:
00172 
00173          /*
00174          ** Copy the 2nd Instance 1 attribute (Vendor ID) to the message.
00175          */
00176          ABCC_SetMsgData16( psNewMessage, PRT_IA_VENDOR_ID_VALUE, 0 );
00177          ABP_SetMsgResponse( psNewMessage, ABP_PNIO_IA_VENDOR_ID_DS );
00178          break;
00179 #endif
00180 #if PRT_IA_STATION_TYPE_ENABLE
00181       case ABP_PNIO_IA_STATION_TYPE:
00182       {
00183          UINT16 iStrLength;
00184 
00185          iStrLength = (UINT16)strlen( PRT_IA_STATION_TYPE_VALUE );
00186 
00187          /*
00188          ** The maximum number of elements allowed in the array should not be
00189          ** checked here. It should be checked earlier...
00190          */
00191          if( iStrLength > ABP_PNIO_IA_STATION_TYPE_DS )
00192          {
00193             iStrLength = ABP_PNIO_IA_STATION_TYPE_DS;
00194          }
00195 
00196          /*
00197          ** Copy the 3rd Instance 1 attribute (Station Type) to the message.
00198          */
00199          ABCC_SetMsgString( psNewMessage, PRT_IA_STATION_TYPE_VALUE, iStrLength, 0 );
00200          ABP_SetMsgResponse( psNewMessage, iStrLength );
00201          break;
00202       }
00203 #endif
00204 #if PRT_IA_MAX_AR_ENABLE
00205       case ABP_PNIO_IA_MAX_AR:
00206 
00207          /*
00208          ** Copy the 4th Instance 1 attribute (MaxAr) to the message.
00209          */
00210          ABCC_SetMsgData32( psNewMessage, PRT_IA_MAX_AR_VALUE, 0 );
00211          ABP_SetMsgResponse( psNewMessage, ABP_PNIO_IA_MAX_AR_DS );
00212          break;
00213 #endif
00214 #if PRT_IA_RTM_ENABLE
00215       case ABP_PNIO_IA_RTM:
00216 
00217          /*
00218          ** Copy the 7th Instance 1 attribute (Record Data Transparent Mode) to the message.
00219          */
00220          ABCC_SetMsgData32( psNewMessage, PRT_IA_RTM_VALUE, 0 );
00221          ABP_SetMsgResponse( psNewMessage, ABP_PNIO_IA_RTM_DS );
00222          break;
00223 #endif
00224 #if PRT_IA_IM_ORDER_ID_ENABLE
00225       case ABP_PNIO_IA_IM_ORDER_ID:
00226       {
00227          UINT16 iStrLength;
00228 
00229          iStrLength = (UINT16)strlen( PRT_IA_IM_ORDER_ID_VALUE );
00230 
00231          /*
00232          ** The maximum number of elements allowed in the array should not be
00233          ** checked here. It should be checked earlier...
00234          */
00235          if( iStrLength > ABP_PNIO_IA_IM_ORDER_ID_DS )
00236          {
00237             iStrLength = ABP_PNIO_IA_IM_ORDER_ID_DS;
00238          }
00239 
00240          /*
00241          ** Copy the 8th Instance 1 attribute (IM Order ID) to the message.
00242          */
00243          ABCC_SetMsgString( psNewMessage, PRT_IA_IM_ORDER_ID_VALUE, iStrLength, 0 );
00244          ABP_SetMsgResponse( psNewMessage, iStrLength );
00245          break;
00246       }
00247 #endif
00248 #if PRT_IA_IM_SERIAL_NBR_ENABLE
00249       case ABP_PNIO_IA_IM_SERIAL_NBR:
00250       {
00251          UINT16 iStrLength;
00252 
00253          iStrLength = (UINT16)strlen( PRT_IA_IM_SERIAL_NBR_VALUE );
00254 
00255          /*
00256          ** The maximum number of elements allowed in the array should not be
00257          ** checked here. It should be checked earlier...
00258          */
00259          if( iStrLength > ABP_PNIO_IA_IM_SERIAL_NBR_DS )
00260          {
00261             iStrLength = ABP_PNIO_IA_IM_SERIAL_NBR_DS;
00262          }
00263 
00264          /*
00265          ** Copy the 9th Instance 1 attribute (IM Serial number) to the message.
00266          */
00267          ABCC_SetMsgString( psNewMessage, PRT_IA_IM_SERIAL_NBR_VALUE, iStrLength, 0 );
00268          ABP_SetMsgResponse( psNewMessage, iStrLength );
00269          break;
00270       }
00271 #endif
00272 #if PRT_IA_IM_HW_REV_ENABLE
00273       case ABP_PNIO_IA_IM_HW_REV:
00274 
00275          /*
00276          ** Copy the 10th Instance 1 attribute (IM Hardware revision) to the message.
00277          */
00278          ABCC_SetMsgData16( psNewMessage, PRT_IA_IM_HW_REV_VALUE, 0 );
00279          ABP_SetMsgResponse( psNewMessage, ABP_PNIO_IA_IM_HW_REV_DS );
00280          break;
00281 #endif
00282 #if PRT_IA_IM_SW_REV_ENABLE
00283       case ABP_PNIO_IA_IM_SW_REV:
00284 
00285          /*
00286          ** Copy the 11th Instance 1 attribute (Software revision) to the message.
00287          */
00288          ABCC_SetMsgData8( psNewMessage, PRT_IA_IM_SW_REV_SYMBOL_VALUE, 0 );
00289          ABCC_SetMsgData8( psNewMessage, PRT_IA_IM_SW_REV_MAJOR_VALUE, 1 );
00290          ABCC_SetMsgData8( psNewMessage, PRT_IA_IM_SW_REV_MINOR_VALUE, 2 );
00291          ABCC_SetMsgData8( psNewMessage, PRT_IA_IM_SW_REV_BUILD_VALUE, 3 );
00292 
00293          ABP_SetMsgResponse( psNewMessage, ABP_PNIO_IA_IM_SW_REV_DS );
00294          break;
00295 #endif
00296 #if PRT_IA_IM_REV_CNT_ENABLE
00297       case ABP_PNIO_IA_IM_REV_CNT:
00298 
00299          /*
00300          ** Copy the 12th Instance 1 attribute (IM Revision Counter) to the message.
00301          */
00302          ABCC_SetMsgData16( psNewMessage, PRT_IA_IM_REV_CNT_VALUE, 0 );
00303          ABP_SetMsgResponse( psNewMessage, ABP_PNIO_IA_IM_REV_CNT_DS );
00304          break;
00305 #endif
00306 #if PRT_IA_IM_PROFILE_ID_ENABLE
00307       case ABP_PNIO_IA_IM_PROFILE_ID:
00308 
00309          /*
00310          ** Copy the 13th Instance 1 attribute (IM Profile ID) to the message.
00311          */
00312          ABCC_SetMsgData16( psNewMessage, PRT_IA_IM_PROFILE_ID_VALUE, 0 );
00313          ABP_SetMsgResponse( psNewMessage, ABP_PNIO_IA_IM_PROFILE_ID_DS );
00314          break;
00315 #endif
00316 #if PRT_IA_IM_PROFILE_SPEC_TYPE_ENABLE
00317       case ABP_PNIO_IA_IM_PROFILE_SPEC_TYPE:
00318 
00319          /*
00320          ** Copy the 14th Instance 1 attribute (IM Profile Specific Type) to the message.
00321          */
00322          ABCC_SetMsgData16( psNewMessage, PRT_IA_IM_PROFILE_SPEC_TYPE_VALUE, 0 );
00323          ABP_SetMsgResponse( psNewMessage, ABP_PNIO_IA_IM_PROFILE_SPEC_TYPE_DS );
00324          break;
00325 #endif
00326 #if PRT_IA_IM_VER_ENABLE
00327       case ABP_PNIO_IA_IM_VER:
00328 
00329          /*
00330          ** Copy the 15th Instance 1 attribute (IM Version) to the message.
00331          */
00332          ABCC_SetMsgData8( psNewMessage, PRT_IA_IM_VER_MAJOR_VALUE, 0 );
00333          ABCC_SetMsgData8( psNewMessage, PRT_IA_IM_VER_MINOR_VALUE, 1 );
00334          ABP_SetMsgResponse( psNewMessage, ABP_PNIO_IA_IM_VER_DS );
00335          break;
00336 #endif
00337 #if PRT_IA_IM_SUPPORTED_ENABLE
00338       case ABP_PNIO_IA_IM_SUPPORTED:
00339 
00340          /*
00341          ** Copy the 16th Instance 1 attribute (IM Supported) to the message.
00342          */
00343          ABCC_SetMsgData16( psNewMessage, PRT_IA_IM_SUPPORTED_VALUE, 0 );
00344          ABP_SetMsgResponse( psNewMessage, ABP_PNIO_IA_IM_SUPPORTED_DS );
00345          break;
00346 #endif
00347 #if PRT_IA_PORT1_MAC_ADDRESS_ENABLE
00348       case ABP_PNIO_IA_PORT1_MAC_ADDRESS:
00349       {
00350          UINT16 i;
00351          UINT8  abMac[ 6 ];
00352 
00353          /*
00354          ** Copy the 17th Instance 1 attribute (Port 1 MAC Address) to the message.
00355          */
00356 
00357          ABCC_PORT_MemCpy( abMac, PRT_IA_PORT1_MAC_ADDRESS_VALUE, 6 );
00358 
00359          for( i = 0; i < 6; i++ )
00360          {
00361             ABCC_SetMsgData8( psNewMessage, abMac[ i ], i );
00362          }
00363          ABP_SetMsgResponse( psNewMessage, ABP_PNIO_IA_PORT1_MAC_ADDRESS_DS );
00364          break;
00365       }
00366 #endif
00367 #if PRT_IA_PORT2_MAC_ADDRESS_ENABLE
00368       case ABP_PNIO_IA_PORT2_MAC_ADDRESS:
00369       {
00370          UINT16 i;
00371          UINT8  abMac[ 6 ];
00372 
00373          /*
00374          ** Copy the 18th Instance 1 attribute (Port 2 MAC Address) to the message.
00375          */
00376 
00377          ABCC_PORT_MemCpy( abMac, PRT_IA_PORT2_MAC_ADDRESS_VALUE, 6 );
00378 
00379          for( i = 0; i < 6; i++ )
00380          {
00381             ABCC_SetMsgData8( psNewMessage, abMac[ i ], i );
00382          }
00383          ABP_SetMsgResponse( psNewMessage, ABP_PNIO_IA_PORT2_MAC_ADDRESS_DS );
00384          break;
00385       }
00386 #endif
00387 #if PRT_IA_SYSTEM_DESCRIPTION_ENABLE
00388       case ABP_PNIO_IA_SYSTEM_DESCRIPTION:
00389       {
00390          UINT16 iStrLength;
00391 
00392          iStrLength = (UINT16)strlen( PRT_IA_SYSTEM_DESCRIPTION_VALUE );
00393 
00394          /*
00395          ** Copy the 19th Instance 1 attribute (System description) to the message.
00396          */
00397          ABCC_SetMsgString( psNewMessage, PRT_IA_SYSTEM_DESCRIPTION_VALUE, iStrLength, 0 );
00398          ABP_SetMsgResponse( psNewMessage, iStrLength );
00399          break;
00400       }
00401 #endif
00402 #if PRT_IA_INTERFACE_DESCRIPTION_ENABLE
00403       case ABP_PNIO_IA_INTERFACE_DESCRIPTION:
00404       {
00405          UINT16 iStrLength;
00406 
00407          iStrLength = (UINT16)strlen( PRT_IA_INTERFACE_DESCRIPTION_VALUE );
00408          /*
00409          ** Copy the 20th Instance 1 attribute (Interface Description) to the message.
00410          */
00411          ABCC_SetMsgString( psNewMessage, PRT_IA_INTERFACE_DESCRIPTION_VALUE, iStrLength, 0 );
00412          ABP_SetMsgResponse( psNewMessage, iStrLength );
00413          break;
00414       }
00415 #endif
00416 #if PRT_IA_MOD_ID_ASSIGN_MODE_ENABLE
00417       case ABP_PNIO_IA_MOD_ID_ASSIGN_MODE:
00418 
00419          /*
00420          ** Copy the 21st Instance 1 attribute (Module ID Assignment Mode) to the message.
00421          */
00422          ABCC_SetMsgData8( psNewMessage, PRT_IA_MOD_ID_ASSIGN_MODE_VALUE, 0 );
00423          ABP_SetMsgResponse( psNewMessage, ABP_PNIO_IA_MOD_ID_ASSIGN_MODE_DS );
00424          break;
00425 #endif
00426 #if PRT_IA_SYSTEM_CONTACT_ENABLE
00427       case ABP_PNIO_IA_SYSTEM_CONTACT:
00428       {
00429          UINT16 iStrLength;
00430 
00431          iStrLength = (UINT16)strlen( PRT_IA_SYSTEM_CONTACT_VALUE );
00432 
00433          /*
00434          ** Copy the 22nd Instance 1 attribute (System contact) to the message.
00435          */
00436          ABCC_SetMsgString( psNewMessage, PRT_IA_SYSTEM_CONTACT_VALUE, iStrLength, 0 );
00437          ABP_SetMsgResponse( psNewMessage, iStrLength );
00438          break;
00439       }
00440 #endif
00441 #if PRT_IA_PROFIENERGY_FUNC_ENABLE
00442       case ABP_PNIO_IA_PROFIENERGY_FUNC:
00443 
00444          /*
00445          ** Copy the 23rd Instance 1 attribute (PROFIenergy Functionality) to the message.
00446          */
00447          ABCC_SetMsgData8( psNewMessage, PRT_IA_PROFIENERGY_FUNC_VALUE, 0 );
00448          ABP_SetMsgResponse( psNewMessage, ABP_PNIO_IA_PROFIENERGY_FUNC_DS );
00449          break;
00450 #endif
00451       default:
00452 
00453          /*
00454          ** Unsupported attribute.
00455          */
00456          ABP_SetMsgErrorResponse( psNewMessage, 1, ABP_ERR_INV_CMD_EXT_0 );
00457          break;
00458       }
00459       break;
00460 
00461    default:
00462 
00463       /*
00464       ** Unsupported command.
00465       */
00466       ABP_SetMsgErrorResponse( psNewMessage, 1, ABP_ERR_UNSUP_CMD );
00467       break;
00468    }
00469 }
00470 
00471 /*------------------------------------------------------------------------------
00472 ** Processes commands to the PRT Object (Instance 0)
00473 **------------------------------------------------------------------------------
00474 ** Arguments:
00475 **    psNewMessage      - Pointer to a ABP_MsgType message.
00476 **
00477 ** Returns:
00478 **    None
00479 **------------------------------------------------------------------------------
00480 */
00481 static void ObjectCommand( ABP_MsgType* psNewMessage )
00482 {
00483    /*
00484    ** This function processes commands to the Profinet Object (Instance 0).
00485    */
00486    switch ( ABCC_GetMsgCmdBits( psNewMessage ) )
00487    {
00488    case ABP_CMD_GET_ATTR:
00489    {
00490       switch( ABCC_GetMsgCmdExt0( psNewMessage ) )
00491       {
00492       case ABP_OA_NAME:
00493       {
00494          UINT16 iStrLength;
00495 
00496          /*
00497          ** Copy the attribute to a message.
00498          */
00499          iStrLength = (UINT16)strlen( prt_sObject.pcName );
00500          ABCC_SetMsgString( psNewMessage, prt_sObject.pcName, iStrLength, 0 );
00501          ABP_SetMsgResponse( psNewMessage, (UINT8)iStrLength );
00502          break;
00503       }
00504 
00505       case ABP_OA_REV:
00506 
00507          /*
00508          ** Copy the attribute to a message.
00509          */
00510          ABCC_SetMsgData8( psNewMessage, prt_sObject.bRevision, 0 );
00511          ABP_SetMsgResponse( psNewMessage, ABP_OA_REV_DS );
00512          break;
00513 
00514       case ABP_OA_NUM_INST:
00515 
00516          /*
00517          ** Copy the attribute to a message.
00518          */
00519          ABCC_SetMsgData16( psNewMessage, prt_sObject.iNumberOfInstances, 0 );
00520          ABP_SetMsgResponse( psNewMessage, ABP_OA_NUM_INST_DS );
00521          break;
00522 
00523       case ABP_OA_HIGHEST_INST:
00524 
00525          /*
00526          ** Copy the attribute to a message.
00527          */
00528          ABCC_SetMsgData16( psNewMessage, prt_sObject.iHighestInstanceNo, 0 );
00529          ABP_SetMsgResponse( psNewMessage, ABP_OA_HIGHEST_INST_DS );
00530          break;
00531 
00532       default:
00533 
00534          /*
00535          ** Unsupported attribute.
00536          */
00537          ABP_SetMsgErrorResponse( psNewMessage, 1, ABP_ERR_INV_CMD_EXT_0 );
00538          break;
00539       }
00540       break;
00541    }
00542    case ABP_PNIO_CMD_GET_RECORD:
00543 
00544       /*
00545       ** Optionally implement the Get Record service here.
00546       */
00547       ABP_SetMsgErrorResponse( psNewMessage, 1, ABP_ERR_UNSUP_CMD );
00548       break;
00549 
00550    case ABP_PNIO_CMD_SET_RECORD:
00551 
00552       /*
00553       ** Optionally implement the Set Record service here.
00554       */
00555       ABP_SetMsgErrorResponse( psNewMessage, 1, ABP_ERR_UNSUP_CMD );
00556       break;
00557 
00558    case ABP_PNIO_CMD_GET_IM_RECORD:
00559 
00560       /*
00561       ** Optionally implement the Get IM Record service here.
00562       */
00563       ABP_SetMsgErrorResponse( psNewMessage, 1, ABP_ERR_UNSUP_CMD );
00564       break;
00565 
00566    case ABP_PNIO_CMD_SET_IM_RECORD:
00567 
00568       /*
00569       ** Optionally implement the Set IM Record service here.
00570       */
00571       ABP_SetMsgErrorResponse( psNewMessage, 1, ABP_ERR_UNSUP_CMD );
00572       break;
00573 
00574    case ABP_PNIO_CMD_AR_CHECK_IND:
00575 
00576       /*
00577       ** Optionally implement the AR Check Ind. service here.
00578       */
00579       ABP_SetMsgErrorResponse( psNewMessage, 1, ABP_ERR_UNSUP_CMD );
00580       break;
00581 
00582    default:
00583 
00584       /*
00585       ** Unsupported command.
00586       */
00587       ABP_SetMsgErrorResponse( psNewMessage, 1, ABP_ERR_UNSUP_CMD );
00588       break;
00589 
00590    } /* End of switch( Command number ) */
00591 }
00592 
00593 #endif /* PRT_OBJ_ENABLE */