?? hrtsrvin.c
字號:
/**********************************************************************
* Function Block Factory Files Generator V 1.0 *
* This file was generated automatically! *
* ============================================== *
* DO NEVER MAKE CHANGES IN THIS FILE MANUALLY!!! *
* ============================================== *
* Date/Time: 31.07.00 12:54:37 *
* *
* *
* Copyright 2000, Borst Automation, Fachingen *
* All Rights Reserved *
* *
* File Name: HrtSrvIn.c *
* Device: MyDevice *
* Profile: HART *
* Author(s): *
* Walter Borst *
* *
* Revision History *
* ================ *
* 7.11.1999, W. Borst: *
* Initial Version *
* 29.7.2000 *
* Some Improvals for HART conformance testing *
* *
**********************************************************************/
/**********************************************************************
* The standard include *
**********************************************************************/
#define __HRTSRVIN_H__
#include "..\HrtSrvIn\HrtSrvIn.h"
/**********************************************************************
* User Includes and Definitions *
**********************************************************************/
//No user additions so far
/**********************************************************************
* Global Variables *
**********************************************************************/
T_BOOL g_bNoData;
T_BOOL g_bConfChange;
/**********************************************************************
* The Service Interpreter *
**********************************************************************/
/*******************/
void hrtSrvInterpreter(
/*******************/
void
)
/*
* The HART Command Interpreter
*/
{
g_bNoData = T_FALSE;
if (strHrtAppIf.byStatus != HRT_APP_BUSY)
return;
switch(strHrtAppIf.bySrvID)
{
case 0:
hrtSrvFnc000();
break;
case 1:
hrtSrvFnc001();
break;
case 2:
hrtSrvFnc002();
break;
case 3:
hrtSrvFnc003();
break;
case 6:
hrtSrvFnc006();
break;
case 11:
hrtSrvFnc011();
break;
case 12:
hrtSrvFnc012();
break;
case 13:
hrtSrvFnc013();
break;
case 14:
hrtSrvFnc014();
break;
case 15:
hrtSrvFnc015();
break;
case 16:
hrtSrvFnc016();
break;
case 17:
hrtSrvFnc017();
break;
case 18:
hrtSrvFnc018();
break;
case 19:
hrtSrvFnc019();
break;
default:
strHrtAppIf.byResponse1 = HRT_CMD_NOT_IMPL;
strHrtAppIf.byDataLen = 0;
}
if (g_bNoData)
strHrtAppIf.byDataLen = 0;
strHrtAppIf.byResponse2 = FbHartGetResponse2();
strHrtAppIf.byStatus = HRT_APP_DONE;
}
/**********************************************************************
* HART Service Handling Procedures *
**********************************************************************/
/**************/
static void hrtSrvFnc000(
/**************/
void
)
/*
* HART Command 0 Handling Function
*/
{
strHrtAppIf.byResponse1 = 0;
strHrtAppIf.byData[0] = (BYTE) co_ui8FbHartCmd0ID;
strHrtAppIf.byData[1] = (BYTE) co_ui8FbHartMfrID;
strHrtAppIf.byData[2] = (BYTE) co_ui8FbHartMfrDevType;
strHrtAppIf.byData[3] = (BYTE) co_ui8FbHartNoReqPreAmbs;
strHrtAppIf.byData[4] = (BYTE) co_ui8FbHartUnivCmdRev;
strHrtAppIf.byData[5] = (BYTE) co_ui8FbHartTransmSpecRev;
strHrtAppIf.byData[6] = (BYTE) co_ui8FbHartSoftwRev;
strHrtAppIf.byData[7] = (BYTE) co_ui8FbHartHardwRev;
strHrtAppIf.byData[8] = (BYTE) co_ui8FbHartFlags;
M_API_MEMCPY(&strHrtAppIf.byData[9],&co_ui24FbHartDeviceIDnum,3);
#ifdef VC_STUDIO
M_API_SWAP3(&strHrtAppIf.byData[9]);
#endif
strHrtAppIf.byDataLen = 12;
}
/**************/
static void hrtSrvFnc001(
/**************/
void
)
/*
* HART Command 1 Handling Function
*/
{
strHrtAppIf.byResponse1 = (BYTE) FbHartGetRspCmd1();
strHrtAppIf.byData[0] = (BYTE) co_ui8MeasPv1unit;
bLowLevelLocked = TRUE;
M_API_MEMCPY(&strHrtAppIf.byData[1],&rl_flMeasPv1,4);
#ifdef VC_STUDIO
M_API_MSfloatToIEEE(&strHrtAppIf.byData[1]);
#endif
bLowLevelLocked = FALSE;
strHrtAppIf.byDataLen = 5;
}
/**************/
static void hrtSrvFnc002(
/**************/
void
)
/*
* HART Command 2 Handling Function
*/
{
strHrtAppIf.byResponse1 = 0;
bLowLevelLocked = TRUE;
M_API_MEMCPY(&strHrtAppIf.byData[0],&rl_flIoutActCurrent,4);
#ifdef VC_STUDIO
M_API_MSfloatToIEEE(&strHrtAppIf.byData[0]);
#endif
M_API_MEMCPY(&strHrtAppIf.byData[4],&rl_flIoutActPercent,4);
#ifdef VC_STUDIO
M_API_MSfloatToIEEE(&strHrtAppIf.byData[4]);
#endif
bLowLevelLocked = FALSE;
strHrtAppIf.byDataLen = 8;
}
/**************/
static void hrtSrvFnc003(
/**************/
void
)
/*
* HART Command 3 Handling Function
*/
{
strHrtAppIf.byResponse1 = 0;
bLowLevelLocked = TRUE;
M_API_MEMCPY(&strHrtAppIf.byData[0],&rl_flIoutActCurrent,4);
#ifdef VC_STUDIO
M_API_MSfloatToIEEE(&strHrtAppIf.byData[0]);
#endif
strHrtAppIf.byData[4] = (BYTE) co_ui8MeasPv1unit;
M_API_MEMCPY(&strHrtAppIf.byData[5],&rl_flMeasPv1,4);
#ifdef VC_STUDIO
M_API_MSfloatToIEEE(&strHrtAppIf.byData[5]);
#endif
strHrtAppIf.byData[9] = (BYTE) co_ui8MeasPv2unit;
M_API_MEMCPY(&strHrtAppIf.byData[10],&rl_flMeasPv2,4);
#ifdef VC_STUDIO
M_API_MSfloatToIEEE(&strHrtAppIf.byData[10]);
#endif
bLowLevelLocked = FALSE;
strHrtAppIf.byDataLen = 14;
}
/**************/
static void hrtSrvFnc006(
/**************/
void
)
/*
* HART Command 6 Handling Function
*/
{
/* Write Part of Service */
if (M_API_IS_WR_PROTECTED)
{ strHrtAppIf.byResponse1 = HRT_IN_WR_PROT_MODE;
g_bNoData = T_TRUE;
}
else
{ if (strHrtAppIf.byDataLen < 1)
{ strHrtAppIf.byResponse1 = HRT_TOO_FEW_DATA_BYTES;
g_bNoData = T_TRUE;
}
else
{ strHrtAppIf.byResponse1 = (BYTE) FbHartGetRspCmd6();
if (strHrtAppIf.byResponse1 == 0)
{ if(rl_ui8FbHartAddress != strHrtAppIf.byData[0])
{ rl_ui8FbHartAddress = (BYTE) strHrtAppIf.byData[0];
M_API_EE_WRITE(&ee_ui8FbHartAddress,&rl_ui8FbHartAddress,1);
se_bFbHartParamChanged = TRUE;
g_bConfChange = TRUE;
}
}
}
}
/* Get the response data */
strHrtAppIf.byData[0] = (BYTE) rl_ui8FbHartAddress;
strHrtAppIf.byDataLen = 1;
}
/**************/
static void hrtSrvFnc011(
/**************/
void
)
/*
* HART Command 11 Handling Function
*/
{
strHrtAppIf.byResponse1 = 0;
strHrtAppIf.byData[0] = (BYTE) co_ui8FbHartCmd0ID;
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -