Commit 45980764 authored by Claes Sjofors's avatar Claes Sjofors

Merge branch 'master' of claes@pwrcvs:/data1/git/pwr

parents 81fc08cd 3d091e4a
typedef struct {
unsigned long channel;
unsigned long board;
CIFXHANDLE chan;
unsigned int diag_cnt;
unsigned int diag_interval;
unsigned int dev_init;
unsigned int dev_init_cnt;
unsigned int dev_init_limit;
int input_area_size;
int output_area_size;
void *input_area;
void *output_area;
} io_sLocalHilscher_cifX_Master;
typedef struct {
int byte_ordering;
int float_representation;
} io_sLocalHilscher_cifX_Device;
/*
* Proview $Id$
* Copyright (C) 2005 SSAB Oxelsund AB.
*
* 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 the program, if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
/* rt_io_m_hilscher_cifx_master.c -- I/O methods for class Hilscher_cifX_Master. */
#include <float.h>
#include "pwr.h"
#include "pwr_basecomponentclasses.h"
#include "pwr_otherioclasses.h"
#include "co_cdh.h"
#include "rt_io_base.h"
#include "rt_io_bus.h"
#include "rt_io_agent_init.h"
#include "rt_io_agent_close.h"
#include "rt_io_agent_read.h"
#include "rt_io_agent_write.h"
#include "rt_io_msg.h"
#if defined PWRE_CONF_CIFX
#include "cifxlinux.h"
#include "cifXEndianess.h"
#include "rcX_Public.h"
#include "rt_io_m_hilscher_cifx.h"
#define CIFX_DEV "cifX0"
// One common handle to the driver
static CIFXHANDLE driver = 0;
static void get_diag( pwr_sClass_Hilscher_cifX_Diag *diag, CIFXHANDLE chan)
{
int32_t sts;
uint32_t state;
CIFXHANDLE sysdevice = NULL;
sts = xSysdeviceOpen( driver, CIFX_DEV, &sysdevice);
if ( sts == CIFX_NO_ERROR) {
SYSTEM_CHANNEL_SYSTEM_STATUS_BLOCK statusblock = {0};
sts = xSysdeviceInfo( sysdevice, CIFX_INFO_CMD_SYSTEM_STATUS_BLOCK, sizeof(statusblock),
&statusblock);
if ( sts == CIFX_NO_ERROR) {
diag->SystemStatus = statusblock.ulSystemStatus;
diag->SystemError = statusblock.ulSystemError;
diag->TimeSinceStart.tv_sec = statusblock.ulTimeSinceStart;
diag->CpuLoad = (float) statusblock.usCpuLoad / 100.0;
}
}
NETX_COMMON_STATUS_BLOCK csb = {0};
sts = xChannelCommonStatusBlock( chan, CIFX_CMD_READ_DATA, 0, sizeof(csb), &csb);
if ( sts == CIFX_NO_ERROR) {
diag->CommState = csb.ulCommunicationState;
diag->CommError = csb.ulCommunicationError;
diag->ErrorCount = csb.ulErrorCount;
diag->ConfigSlaves = csb.uStackDepended.tMasterStatusBlock.ulNumOfConfigSlaves;
diag->ActiveSlaves = csb.uStackDepended.tMasterStatusBlock.ulNumOfActiveSlaves;
diag->SlaveState = csb.uStackDepended.tMasterStatusBlock.ulSlaveState;
}
sts = xChannelHostState( chan, CIFX_HOST_STATE_READ, &state, 0);
if ( sts == CIFX_NO_ERROR) {
diag->HostState = state;
}
sts = xChannelBusState( chan, CIFX_BUS_STATE_GETSTATE, &state, 0);
if ( sts == CIFX_NO_ERROR) {
diag->BusState = state;
}
}
static pwr_tStatus IoAgentInit( io_tCtx ctx,
io_sAgent *ap)
{
io_sLocalHilscher_cifX_Master *local;
int sts;
pwr_sClass_Hilscher_cifX_Master *op = (pwr_sClass_Hilscher_cifX_Master *)ap->op;
local = (io_sLocalHilscher_cifX_Master *) calloc( 1, sizeof(io_sLocalHilscher_cifX_Master));
ap->Local = local;
if ( driver == 0) {
struct CIFX_LINUX_INIT init;
memset( &init, 0, sizeof(init));
init.init_options = CIFX_DRIVER_INIT_AUTOSCAN;
init.trace_level = 255;
sts = cifXDriverInit( &init);
if ( sts != CIFX_NO_ERROR) {
xDriverGetErrorDescription( sts, op->ErrorStr, sizeof(op->ErrorStr));
op->Status = sts;
return IO__INITFAIL;
}
sts = xDriverOpen( &driver);
if ( sts != CIFX_NO_ERROR) {
xDriverGetErrorDescription( sts, op->ErrorStr, sizeof(op->ErrorStr));
op->Status = sts;
return IO__INITFAIL;
}
}
// Find the board
unsigned long board = 0;
BOARD_INFORMATION boardinfo;
boardinfo.lBoardError = 0;
int found = 0;
while ( xDriverEnumBoards( driver, board, sizeof(boardinfo), &boardinfo)
== CIFX_NO_ERROR) {
if ( cdh_NoCaseStrcmp( boardinfo.abBoardAlias, op->Alias) == 0) {
found = 1;
break;
}
board++;
}
if ( !found) {
sprintf( op->ErrorStr, "Board with alias \"%s\" not found", op->Alias);
return IO__INITFAIL;
}
local->board = board;
op->Diag.DeviceNumber = boardinfo.tSystemInfo.ulDeviceNumber;
op->Diag.SerialNumber = boardinfo.tSystemInfo.ulSerialNumber;
op->Diag.SystemError = boardinfo.ulSystemError;
local->channel = 0;
local->chan = NULL;
sts = xChannelOpen( NULL, CIFX_DEV, local->channel, &local->chan);
if ( sts != CIFX_NO_ERROR) {
xDriverGetErrorDescription( sts, op->ErrorStr, sizeof(op->ErrorStr));
op->Status = sts;
return IO__INITFAIL;
}
CHANNEL_INFORMATION channelinfo = {{0}};
sts = xDriverEnumChannels( driver, board, local->channel, sizeof(channelinfo), &channelinfo);
if ( sts == CIFX_NO_ERROR) {
strncpy( op->Diag.FirmwareName, (char *)channelinfo.abFWName, sizeof(op->Diag.FirmwareName));
snprintf( op->Diag.FirmwareVersion, sizeof(op->Diag.FirmwareVersion),
"%u.%u.%u-%u (%4u-%02hu-%02hu)", channelinfo.usFWMajor, channelinfo.usFWMinor,
channelinfo.usFWBuild, channelinfo.usFWRevision, channelinfo.usFWYear,
channelinfo.bFWMonth, channelinfo.bFWDay);
}
// Init the I/O area
unsigned int input_area_offset = 0;
unsigned int input_area_chansize = 0;
unsigned int output_area_offset = 0;
unsigned int output_area_chansize = 0;
io_sRack *rp;
io_sCard *cp;
for ( rp = ap->racklist; rp; rp = rp->next) {
rp->Local = calloc( 1, sizeof(io_sLocalHilscher_cifX_Device));
rp->MethodDisabled = 1;
// Show device offset and size
if ( rp->Class == pwr_cClass_Hilscher_cifX_Device && rp->op) {
((pwr_sClass_Hilscher_cifX_Device *)rp->op)->InputAreaOffset = input_area_offset +
input_area_chansize;
((pwr_sClass_Hilscher_cifX_Device *)rp->op)->OutputAreaOffset = output_area_offset +
output_area_chansize;
}
// Get byte ordering
pwr_tAName name;
pwr_tEnum byte_ordering;
strcpy( name, rp->Name);
strcat( name, ".ByteOrdering");
sts = gdh_GetObjectInfo( name, &byte_ordering, sizeof(byte_ordering));
if ( ODD(sts))
((io_sLocalHilscher_cifX_Device *)rp->Local)->byte_ordering = byte_ordering;
else
((io_sLocalHilscher_cifX_Device *)rp->Local)->byte_ordering =
pwr_eByteOrderingEnum_LittleEndian;
for ( cp = rp->cardlist; cp; cp = cp->next) {
cp->MethodDisabled = 1;
// Show module offset and size
if ( cp->Class == pwr_cClass_Hilscher_cifX_Module && cp->op) {
((pwr_sClass_Hilscher_cifX_Module *)cp->op)->InputAreaOffset = input_area_offset +
input_area_chansize;
((pwr_sClass_Hilscher_cifX_Module *)cp->op)->OutputAreaOffset = output_area_offset +
output_area_chansize;
}
io_bus_card_init( ctx, cp, &input_area_offset, &input_area_chansize,
&output_area_offset, &output_area_chansize, byte_ordering);
// Show module offset and size
if ( cp->Class == pwr_cClass_Hilscher_cifX_Module && cp->op) {
((pwr_sClass_Hilscher_cifX_Module *)cp->op)->InputAreaSize = input_area_offset +
input_area_chansize - ((pwr_sClass_Hilscher_cifX_Module *)cp->op)->InputAreaOffset;
((pwr_sClass_Hilscher_cifX_Module *)cp->op)->OutputAreaSize = output_area_offset +
output_area_chansize - ((pwr_sClass_Hilscher_cifX_Module *)cp->op)->OutputAreaOffset;
}
}
// Show device offset and size
if ( rp->Class == pwr_cClass_Hilscher_cifX_Device && rp->op) {
((pwr_sClass_Hilscher_cifX_Device *)rp->op)->InputAreaSize = input_area_offset +
input_area_chansize - ((pwr_sClass_Hilscher_cifX_Device *)rp->op)->InputAreaOffset;
((pwr_sClass_Hilscher_cifX_Device *)rp->op)->OutputAreaSize = output_area_offset +
output_area_chansize - ((pwr_sClass_Hilscher_cifX_Device *)rp->op)->OutputAreaOffset;
}
}
local->input_area_size = input_area_offset + input_area_chansize;
local->output_area_size = output_area_offset + output_area_chansize;
if ( local->input_area_size > 0)
local->input_area = calloc( 1, local->input_area_size);
if ( local->output_area_size > 0)
local->output_area = calloc( 1, local->output_area_size);
if ( ctx->ScanTime < 1 && ctx->ScanTime > FLT_EPSILON)
local->diag_interval = (unsigned int) (1.0 / ctx->ScanTime + 0.5);
else
local->diag_interval = 1;
get_diag( &op->Diag, local->chan);
// It takes ~20 s to get COM-flag
local->dev_init = 1;
local->dev_init_limit = (unsigned int) (30.0 / ctx->ScanTime + 0.5);
errh_Info( "Init of Hilsher cifX Master '%s'", ap->Name);
return IO__SUCCESS;
}
static pwr_tStatus IoAgentClose( io_tCtx ctx,
io_sAgent *ap)
{
io_sRack *rp;
io_sLocalHilscher_cifX_Master *local = (io_sLocalHilscher_cifX_Master *)ap->Local;
if ( driver) {
xDriverClose( driver);
driver = 0;
}
if ( local->input_area_size > 0)
free( local->input_area);
if ( local->output_area_size > 0)
free( local->output_area);
for ( rp = ap->racklist; rp; rp = rp->next)
free( rp->Local);
free( local);
return IO__SUCCESS;
}
static pwr_tStatus IoAgentRead( io_tCtx ctx, io_sAgent *ap)
{
io_sLocalHilscher_cifX_Master *local = (io_sLocalHilscher_cifX_Master *)ap->Local;
pwr_sClass_Hilscher_cifX_Master *op = (pwr_sClass_Hilscher_cifX_Master *)ap->op;
io_sRack *rp;
io_sCard *cp;
int32_t sts;
if ( local->diag_cnt == 0)
get_diag( &op->Diag, local->chan);
if ( local->diag_cnt > local->diag_interval)
local->diag_cnt = 0;
else
local->diag_cnt++;
sts = xChannelIORead( local->chan, 0, 0, local->input_area_size, local->input_area, 10);
op->Status = sts;
if ( sts == CIFX_NO_ERROR) {
if ( local->dev_init)
local->dev_init = 0;
for ( rp = ap->racklist; rp; rp = rp->next) {
for ( cp = rp->cardlist; cp; cp = cp->next) {
io_bus_card_read( ctx, rp, cp, local->input_area, 0,
((io_sLocalHilscher_cifX_Device *)rp->Local)->byte_ordering,
pwr_eFloatRepEnum_FloatIEEE);
}
}
}
else {
if ( sts == CIFX_DEV_NO_COM_FLAG && local->dev_init &&
local->dev_init_cnt < local->dev_init_limit)
local->dev_init_cnt++;
else {
xDriverGetErrorDescription( sts, op->ErrorStr, sizeof(op->ErrorStr));
op->ErrorCount++;
}
if ( op->ErrorCount == op->ErrorSoftLimit)
errh_Error( "IO Error soft limit reached on agent '%s'", ap->Name);
if ( op->ErrorCount >= op->ErrorHardLimit) {
ctx->Node->EmergBreakTrue = 1;
return IO__ERRDEVICE;
}
}
return IO__SUCCESS;
}
static pwr_tStatus IoAgentWrite( io_tCtx ctx, io_sAgent *ap)
{
io_sLocalHilscher_cifX_Master *local = (io_sLocalHilscher_cifX_Master *)ap->Local;
io_sRack *rp;
io_sCard *cp;
int32_t sts;
pwr_sClass_Hilscher_cifX_Master *op = (pwr_sClass_Hilscher_cifX_Master *)ap->op;
for ( rp = ap->racklist; rp; rp = rp->next) {
for ( cp = rp->cardlist; cp; cp = cp->next) {
io_bus_card_write( ctx, cp, local->output_area,
((io_sLocalHilscher_cifX_Device *)rp->Local)->byte_ordering,
pwr_eFloatRepEnum_FloatIEEE);
}
}
sts = xChannelIOWrite( local->chan, 0, 0, local->output_area_size, local->output_area, 10);
op->Status = sts;
if ( sts != CIFX_NO_ERROR) {
if ( ! local->dev_init) {
op->ErrorCount++;
xDriverGetErrorDescription( sts, op->ErrorStr, sizeof(op->ErrorStr));
}
if ( op->ErrorCount == op->ErrorSoftLimit)
errh_Error( "IO Error soft limit reached on agent '%s'", ap->Name);
if ( op->ErrorCount >= op->ErrorHardLimit) {
ctx->Node->EmergBreakTrue = 1;
return IO__ERRDEVICE;
}
}
return IO__SUCCESS;
}
#else
static pwr_tStatus IoAgentInit( io_tCtx ctx, io_sAgent *ap) { return IO__RELEASEBUILD;}
static pwr_tStatus IoAgentClose( io_tCtx ctx, io_sAgent *ap) { return IO__RELEASEBUILD;}
static pwr_tStatus IoAgentRead( io_tCtx ctx, io_sAgent *ap) { return IO__RELEASEBUILD;}
static pwr_tStatus IoAgentWrite( io_tCtx ctx, io_sAgent *ap) { return IO__RELEASEBUILD;}
#endif
/* Every method should be registred here. */
pwr_dExport pwr_BindIoMethods(Hilscher_cifX_Master) = {
pwr_BindIoMethod(IoAgentInit),
pwr_BindIoMethod(IoAgentClose),
pwr_BindIoMethod(IoAgentRead),
pwr_BindIoMethod(IoAgentWrite),
pwr_NullMethod
};
/*
* Proview $Id$
* Copyright (C) 2005 SSAB Oxelsund AB.
*
* 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 the program, if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
/* rt_io_m_hilscher_cifx_module.c -- I/O methods for class Hilscher_cifX_Module. */
#include "pwr.h"
#include "pwr_basecomponentclasses.h"
#include "pwr_otherioclasses.h"
#include "co_cdh.h"
#include "rt_io_base.h"
#include "rt_io_bus.h"
#include "rt_io_card_init.h"
#include "rt_io_card_close.h"
#include "rt_io_msg.h"
#if defined PWRE_CONF_CIFX
static pwr_tStatus IoCardInit( io_tCtx ctx,
io_sAgent *ap,
io_sRack *rp,
io_sCard *cp)
{
return IO__SUCCESS;
}
static pwr_tStatus IoCardClose( io_tCtx ctx,
io_sAgent *ap,
io_sRack *rp,
io_sCard *cp)
{
return IO__SUCCESS;
}
#else
static pwr_tStatus IoCardInit( io_tCtx ctx, io_sAgent *ap, io_sRack *rp, io_sCard *cp) { return IO__RELEASEBUILD;}
static pwr_tStatus IoCardClose( io_tCtx ctx, io_sAgent *ap, io_sRack *rp, io_sCard *cp) { return IO__RELEASEBUILD;}
#endif
/* Every method should be registred here. */
pwr_dExport pwr_BindIoMethods(Hilscher_cifX_Module) = {
pwr_BindIoMethod(IoCardInit),
pwr_BindIoMethod(IoCardClose),
pwr_NullMethod
};
......@@ -101,7 +101,7 @@ static pwr_tStatus IoCardRead (
}
if (slave->Status == MB__NORMAL) {
io_card_read(ctx, rp, cp, local->input_area, NULL, pwr_eByteOrderingEnum_BigEndian, pwr_eFloatRepEnum_FloatIntel);
io_bus_card_read(ctx, rp, cp, local->input_area, NULL, pwr_eByteOrderingEnum_BigEndian, pwr_eFloatRepEnum_FloatIntel);
}
// printf("Method Modbus_Module-IoCardRead\n");
return IO__SUCCESS;
......@@ -142,7 +142,7 @@ static pwr_tStatus IoCardWrite (
}
if (slave->Status == MB__NORMAL) {
io_card_write(ctx, cp, local->output_area, pwr_eByteOrderingEnum_BigEndian, pwr_eFloatRepEnum_FloatIntel);
io_bus_card_write(ctx, cp, local->output_area, pwr_eByteOrderingEnum_BigEndian, pwr_eFloatRepEnum_FloatIntel);
}
// printf("Method Modbus_Module-IoCardWrite\n");
return IO__SUCCESS;
......
......@@ -98,7 +98,7 @@ static pwr_tStatus IoCardRead (
if (server->Status == MB__NORMAL) {
thread_MutexLock( &local_server->mutex);
io_card_read(ctx, rp, cp, local->input_area, NULL, pwr_eByteOrderingEnum_BigEndian, pwr_eFloatRepEnum_FloatIntel);
io_bus_card_read(ctx, rp, cp, local->input_area, NULL, pwr_eByteOrderingEnum_BigEndian, pwr_eFloatRepEnum_FloatIntel);
thread_MutexUnlock( &local_server->mutex);
}
......@@ -133,7 +133,7 @@ static pwr_tStatus IoCardWrite (
if (server->Status == MB__NORMAL) {
thread_MutexLock( &local_server->mutex);
io_card_write(ctx, cp, local->output_area, pwr_eByteOrderingEnum_BigEndian, pwr_eFloatRepEnum_FloatIntel);
io_bus_card_write(ctx, cp, local->output_area, pwr_eByteOrderingEnum_BigEndian, pwr_eFloatRepEnum_FloatIntel);
thread_MutexUnlock( &local_server->mutex);
}
......
......@@ -48,7 +48,7 @@ static pwr_tStatus IoAgentInit( io_tCtx ctx,
op->Status = IO__DUMMYBUILD;
else
op->Status = IO__INITFAIL;
errh_Error( "Init of USB agent failed '%s', error status %d", ap->Name, sts);
errh_Error( "Init of USB agent failed '%s', error status %d", ap->Name, sts);
local->libusb_ctx = 0;
return op->Status;
......
......@@ -12,4 +12,6 @@ GPIO_Module
Maxim_DS18B20
USB_Agent
Velleman_K8055_Board
Hilscher_cifX_Master
Hilscher_cifX_Module
#endif
\ No newline at end of file
Volume OtherIO $ClassVolume 0.0.250.10
Body SysBody 01-JAN-1970 01:00:00.00
Attr NextOix = "_X171"
Attr NextCix = "_X17"
Attr NextTix[0] = "_X8"
Attr NextOix = "_X212"
Attr NextCix = "_X21"
Attr NextTix[0] = "_X10"
EndBody
Object Type $TypeHier 1 15-NOV-2007 14:35:37.90
Object MotionControl_StatusEnum $TypeDef 1 15-NOV-2007 14:36:24.17
......@@ -464,6 +464,79 @@ Volume OtherIO $ClassVolume 0.0.250.10
EndBody
EndObject
EndObject
Object Hilscher_cifX_CommStateEnum $TypeDef 8 11-MAR-2011 09:57:02.13
Body SysBody 11-MAR-2011 09:57:13.54
Attr TypeRef = "pwrs:Type-$Enum"
Attr Elements = 1
EndBody
Object Unknown $Value 204 11-MAR-2011 09:57:25.59
Body SysBody 11-MAR-2011 09:57:27.92
Attr Text = "Unknown"
Attr PgmName = "Unknown"
EndBody
EndObject
Object Offline $Value 208 11-MAR-2011 09:57:47.63
Body SysBody 11-MAR-2011 09:57:50.59
Attr Text = "Offline"
Attr PgmName = "Offline"
Attr Value = 1
EndBody
EndObject
Object Stop $Value 207 11-MAR-2011 09:57:57.39
Body SysBody 11-MAR-2011 09:58:03.69
Attr Text = "Stop"
Attr PgmName = "Stop"
Attr Value = 2
EndBody
EndObject
Object Idle $Value 206 11-MAR-2011 09:58:09.22
Body SysBody 11-MAR-2011 09:58:15.87
Attr Text = "Idle"
Attr PgmName = "Idle"
Attr Value = 3
EndBody
EndObject
Object Operate $Value 205 11-MAR-2011 09:58:34.38
Body SysBody 11-MAR-2011 09:58:36.21
Attr Text = "Operate"
Attr PgmName = "Operate"
Attr Value = 4
EndBody
EndObject
EndObject
Object Hilscher_cifX_SlaveStateEnum $TypeDef 9 11-MAR-2011 10:08:09.85
Body SysBody 11-MAR-2011 10:08:21.31
Attr TypeRef = "pwrs:Type-$Enum"
Attr Elements = 1
EndBody
Object Undefined $Value 209 11-MAR-2011 10:08:33.45
Body SysBody 11-MAR-2011 10:08:35.56
Attr Text = "Undefined"
Attr PgmName = "Undefined"
EndBody
EndObject
Object Ok $Value 212 11-MAR-2011 10:08:46.88
Body SysBody 11-MAR-2011 10:08:49.67
Attr Text = "Ok"
Attr PgmName = "Ok"
Attr Value = 1
EndBody
EndObject
Object Failed $Value 211 11-MAR-2011 10:08:55.87
Body SysBody 11-MAR-2011 10:09:01.70
Attr Text = "Failed"
Attr PgmName = "Failed"
Attr Value = 2
EndBody
EndObject
Object Warning $Value 210 11-MAR-2011 10:09:07.83
Body SysBody 11-MAR-2011 10:09:12.14
Attr Text = "Warning"
Attr PgmName = "Warning"
Attr Value = 3
EndBody
EndObject
EndObject
EndObject
Object Class $ClassHier 2 15-NOV-2007 14:35:40.72
!/**
......@@ -2461,7 +2534,8 @@ Volume OtherIO $ClassVolume 0.0.250.10
EndBody
EndObject
Object Template Arduino_USB 2151645184 01-JAN-1970 01:00:00.00
Body RtBody 01-JAN-1970 01:00:00.00
Body RtBody 09-MAR-2011 15:42:19.36
Attr Process = 1
EndBody
EndObject
EndObject
......@@ -2644,7 +2718,6 @@ Volume OtherIO $ClassVolume 0.0.250.10
Object AoScanInterval $Attribute 24 19-JAN-2011 18:24:34.75
Body SysBody 19-JAN-2011 18:24:35.83
Attr PgmName = "AoScanInterval"
Attr Flags = 16777216
Attr TypeRef = "pwrs:Type-$UInt32"
EndBody
EndObject
......@@ -2677,7 +2750,8 @@ Volume OtherIO $ClassVolume 0.0.250.10
EndBody
EndObject
Object Template Arduino_Uno 2151907328 01-JAN-1970 01:00:00.00
Body RtBody 03-JAN-2011 21:19:26.25
Body RtBody 09-MAR-2011 15:42:29.56
Attr Process = 1
Attr ErrorSoftLimit = 25
Attr ErrorHardLimit = 50
Attr WatchdogTime = 5.000000e+00
......@@ -2685,5 +2759,466 @@ Volume OtherIO $ClassVolume 0.0.250.10
EndBody
EndObject
EndObject
Object Hilscher_cifX_Diag $ClassDef 20 04-MAR-2011 14:16:20.12
Body SysBody 04-MAR-2011 14:15:45.77
Attr Editor = 0
Attr Method = 0
Attr Flags = 16
EndBody
Object RtBody $ObjBodyDef 1 04-MAR-2011 14:16:34.29
Body SysBody 04-MAR-2011 14:16:34.29
Attr StructName = "Hilscher_cifX_Diag"
Attr NextAix = "_X17"
EndBody
Object DeviceNumber $Attribute 3 04-MAR-2011 14:29:58.06
Body SysBody 11-MAR-2011 10:01:35.56
Attr PgmName = "DeviceNumber"
Attr Flags = 1024
Attr TypeRef = "pwrs:Type-$UInt32"
EndBody
EndObject
Object SerialNumber $Attribute 4 04-MAR-2011 14:30:15.60
Body SysBody 11-MAR-2011 10:01:42.88
Attr PgmName = "SerialNumber"
Attr Flags = 1024
Attr TypeRef = "pwrs:Type-$UInt32"
EndBody
EndObject
Object FirmwareName $Attribute 15 11-MAR-2011 11:13:13.95
Body SysBody 11-MAR-2011 11:13:29.65
Attr Flags = 16778240
Attr TypeRef = "pwrs:Type-$String40"
EndBody
EndObject
Object FirmwareVersion $Attribute 16 11-MAR-2011 11:13:42.31
Body SysBody 11-MAR-2011 11:13:32.93
Attr Flags = 16778240
Attr TypeRef = "pwrs:Type-$String40"
EndBody
EndObject
Object SystemError $Attribute 5 04-MAR-2011 14:30:29.02
Body SysBody 11-MAR-2011 10:01:48.67
Attr PgmName = "SystemError"
Attr Flags = 1024
Attr TypeRef = "pwrs:Type-$UInt32"
EndBody
EndObject
Object SystemStatus $Attribute 6 04-MAR-2011 14:31:01.22
Body SysBody 11-MAR-2011 10:01:55.81
Attr PgmName = "SystemStatus"
Attr Flags = 1024
Attr TypeRef = "pwrs:Type-$UInt32"
EndBody
EndObject
Object TimeSinceStart $Attribute 7 11-MAR-2011 09:53:27.01
Body SysBody 11-MAR-2011 10:02:03.22
Attr PgmName = "TimeSinceStart"
Attr Flags = 1024
Attr TypeRef = "pwrs:Type-$DeltaTime"
EndBody
EndObject
Object CpuLoad $Attribute 8 11-MAR-2011 09:53:50.36
Body SysBody 11-MAR-2011 10:02:09.47
Attr PgmName = "CpuLoad"
Attr Flags = 1024
Attr TypeRef = "pwrs:Type-$Float32"
EndBody
EndObject
Object CommState $Attribute 9 11-MAR-2011 09:54:28.93
Body SysBody 11-MAR-2011 10:02:14.79
Attr PgmName = "CommState"
Attr Flags = 1024
Attr TypeRef = "OtherIO:Type-Hilscher_cifX_CommStateEnum"
EndBody
EndObject
Object CommError $Attribute 10 11-MAR-2011 09:54:46.70
Body SysBody 11-MAR-2011 10:02:19.62
Attr PgmName = "CommError"
Attr Flags = 1024
Attr TypeRef = "pwrs:Type-$UInt32"
EndBody
EndObject
Object ErrorCount $Attribute 11 11-MAR-2011 09:55:06.60
Body SysBody 11-MAR-2011 10:02:24.52
Attr PgmName = "ErrorCount"
Attr Flags = 1024
Attr TypeRef = "pwrs:Type-$UInt32"
EndBody
EndObject
Object ConfigSlaves $Attribute 12 11-MAR-2011 09:55:20.72
Body SysBody 11-MAR-2011 10:02:29.55
Attr PgmName = "ConfigSlaves"
Attr Flags = 1024
Attr TypeRef = "pwrs:Type-$UInt32"
EndBody
EndObject
Object ActiveSlaves $Attribute 13 11-MAR-2011 09:55:28.90
Body SysBody 11-MAR-2011 10:02:38.38
Attr PgmName = "ActiveSlaves"
Attr Flags = 1024
Attr TypeRef = "pwrs:Type-$UInt32"
EndBody
EndObject
Object SlaveState $Attribute 14 11-MAR-2011 09:55:39.61
Body SysBody 11-MAR-2011 10:10:14.15
Attr PgmName = "SlaveState"
Attr Flags = 1024
Attr TypeRef = "OtherIO:Type-Hilscher_cifX_SlaveStateEnum"
EndBody
EndObject
Object HostState $Attribute 1 04-MAR-2011 14:17:52.72
Body SysBody 11-MAR-2011 10:17:10.58
Attr PgmName = "HostState"
Attr Flags = 1024
Attr TypeRef = "pwrb:Type-ReadyNotReadyEnum"
EndBody
EndObject
Object BusState $Attribute 2 04-MAR-2011 14:17:45.36
Body SysBody 11-MAR-2011 10:03:59.20
Attr PgmName = "BusState"
Attr Flags = 1024
Attr TypeRef = "pwrb:Type-OnOffEnum"
EndBody
EndObject
EndObject
Object Template Hilscher_cifX_Diag 2152955904 01-JAN-1970 01:00:00.00
Body RtBody 01-JAN-1970 01:00:00.00
EndBody
EndObject
EndObject
Object Hilscher_cifX_Master $ClassDef 17 23-FEB-2011 15:22:46.32
Body SysBody 23-FEB-2011 14:03:13.10
Attr Editor = 0
Attr Method = 0
Attr Flags = 38992
EndBody
Object RtBody $ObjBodyDef 1 23-FEB-2011 13:52:45.64
Body SysBody 23-FEB-2011 15:22:52.63
Attr StructName = "Hilscher_cifX_Master"
Attr NextAix = "_X14"
EndBody
Object Description $Attribute 1 23-FEB-2011 13:53:04.77
Body SysBody 23-FEB-2011 13:53:04.77
Attr PgmName = "Description"
Attr TypeRef = "pwrs:Type-$String80"
EndBody
EndObject
Object Specification $Attribute 12 09-MAR-2011 17:28:57.42
Body SysBody 09-MAR-2011 17:28:57.42
Attr PgmName = "Specification"
Attr TypeRef = "pwrs:Type-$String80"
EndBody
EndObject
Object DataSheet $Attribute 13 09-MAR-2011 17:28:57.42
Body SysBody 09-MAR-2011 17:28:57.42
Attr PgmName = "DataSheet"
Attr TypeRef = "pwrs:Type-$URL"
EndBody
EndObject
Object Alias $Attribute 4 23-FEB-2011 13:53:17.54
Body SysBody 23-FEB-2011 13:53:27.97
Attr PgmName = "Alias"
Attr TypeRef = "pwrs:Type-$String40"
EndBody
EndObject
Object Channel $Attribute 5 23-FEB-2011 13:53:43.84
Body SysBody 23-FEB-2011 13:53:53.75
Attr PgmName = "Channel"
Attr TypeRef = "pwrs:Type-$UInt32"
EndBody
EndObject
Object Status $Attribute 11 07-MAR-2011 09:01:35.86
Body SysBody 07-MAR-2011 09:01:37.24
Attr PgmName = "Status"
Attr TypeRef = "pwrs:Type-$UInt32"
EndBody
EndObject
Object Process $Attribute 2 23-FEB-2011 13:53:04.77
Body SysBody 23-FEB-2011 13:53:04.77
Attr PgmName = "Process"
Attr TypeRef = "pwrb:Type-IoProcessMask"
EndBody
EndObject
Object ThreadObject $Attribute 3 23-FEB-2011 13:53:04.77
Body SysBody 23-FEB-2011 13:53:04.77
Attr PgmName = "ThreadObject"
Attr TypeRef = "pwrs:Type-$Objid"
EndBody
EndObject
Object ErrorCount $Attribute 8 07-MAR-2011 08:39:54.17
Body SysBody 07-MAR-2011 08:40:02.94
Attr PgmName = "ErrorCount"
Attr Flags = 1040
Attr TypeRef = "pwrs:Type-$UInt32"
EndBody
EndObject
Object ErrorStr $Attribute 6 07-MAR-2011 09:01:18.62
Body SysBody 07-MAR-2011 09:01:19.70
Attr PgmName = "ErrorStr"
Attr TypeRef = "pwrs:Type-$String80"
EndBody
EndObject
Object ErrorSoftLimit $Attribute 9 07-MAR-2011 08:40:26.77
Body SysBody 07-MAR-2011 08:40:28.83
Attr PgmName = "ErrorSoftLimit"
Attr TypeRef = "pwrs:Type-$UInt32"
EndBody
EndObject
Object ErrorHardLimit $Attribute 10 07-MAR-2011 08:40:39.64
Body SysBody 07-MAR-2011 08:40:40.71
Attr PgmName = "ErrorHardLimit"
Attr TypeRef = "pwrs:Type-$UInt32"
EndBody
EndObject
Object Diag $Attribute 7 04-MAR-2011 14:19:32.00
Body SysBody 04-MAR-2011 14:19:50.47
Attr PgmName = "Diag"
Attr Flags = 131072
Attr TypeRef = "OtherIO:Class-Hilscher_cifX_Diag"
EndBody
EndObject
EndObject
Object IoMethods $RtMethod 176 23-FEB-2011 13:57:12.20
Object IoAgentInit $Method 177 23-FEB-2011 13:57:51.95
Body SysBody 23-FEB-2011 13:58:19.45
Attr MethodName = "Hilscher_cifX_Master-IoAgentInit"
EndBody
EndObject
Object IoAgentClose $Method 178 23-FEB-2011 13:58:31.23
Body SysBody 23-FEB-2011 13:58:39.05
Attr MethodName = "Hilscher_cifX_Master-IoAgentClose"
EndBody
EndObject
Object IoAgentRead $Method 179 23-FEB-2011 13:59:57.78
Body SysBody 23-FEB-2011 14:00:04.26
Attr MethodName = "Hilscher_cifX_Master-IoAgentRead"
EndBody
EndObject
Object IoAgentWrite $Method 180 23-FEB-2011 14:00:14.37
Body SysBody 23-FEB-2011 14:00:20.08
Attr MethodName = "Hilscher_cifX_Master-IoAgentWrite"
EndBody
EndObject
EndObject
Object ConfiguratorPoson $Menu 172 23-FEB-2011 13:54:52.05
Object Pointed $Menu 173 23-FEB-2011 13:54:52.05
Object Connect $MenuButton 174 23-FEB-2011 13:54:52.05
Body SysBody 23-FEB-2011 13:54:52.05
Attr ButtonName = "Connect PlcThread"
Attr MethodName = "$Objid-Connect"
Attr MethodArguments[0] = "ThreadObject"
Attr MethodArguments[1] = "PlcThread"
Attr FilterName = "$Objid-IsOkConnect"
Attr FilterArguments[0] = "ThreadObject"
Attr FilterArguments[1] = "PlcThread"
EndBody
EndObject
EndObject
EndObject
Object PostCreate $DbCallBack 175 23-FEB-2011 13:54:52.05
Body SysBody 23-FEB-2011 13:55:50.62
Attr MethodName = "BaseIORack-PostCreate"
EndBody
EndObject
Object Template Hilscher_cifX_Master 2152169472 01-JAN-1970 01:00:00.00
Body RtBody 07-MAR-2011 08:41:02.70
Attr Process = 1
Attr ErrorSoftLimit = 50
Attr ErrorHardLimit = 100
EndBody
EndObject
EndObject
Object Hilscher_cifX_Device $ClassDef 18 23-FEB-2011 15:23:00.07
Body SysBody 23-FEB-2011 14:03:06.90
Attr Editor = 0
Attr Method = 0
Attr Flags = 43088
EndBody
Object RtBody $ObjBodyDef 1 23-FEB-2011 14:02:06.55
Body SysBody 23-FEB-2011 15:23:05.82
Attr StructName = "Hilscher_cifX_Device"
Attr NextAix = "_X17"
EndBody
Object Description $Attribute 6 23-FEB-2011 14:01:08.18
Body SysBody 23-FEB-2011 14:01:08.18
Attr PgmName = "Description"
Attr TypeRef = "pwrs:Type-$String80"
EndBody
EndObject
Object ByteOrdering $Attribute 15 09-MAR-2011 17:31:00.41
Body SysBody 09-MAR-2011 17:31:17.44
Attr PgmName = "ByteOrdering"
Attr TypeRef = "pwrb:Type-ByteOrderingEnum"
EndBody
EndObject
Object FloatRepresentation $Attribute 16 09-MAR-2011 17:32:02.70
Body SysBody 09-MAR-2011 17:33:34.38
Attr PgmName = "FloatRepresentation"
Attr TypeRef = "pwrb:Type-FloatRepEnum"
EndBody
EndObject
Object Process $Attribute 9 23-FEB-2011 14:01:08.18
Body SysBody 23-FEB-2011 14:01:08.18
Attr PgmName = "Process"
Attr TypeRef = "pwrb:Type-IoProcessMask"
EndBody
EndObject
Object ThreadObject $Attribute 10 23-FEB-2011 14:01:08.18
Body SysBody 23-FEB-2011 14:01:08.18
Attr PgmName = "ThreadObject"
Attr TypeRef = "pwrs:Type-$Objid"
EndBody
EndObject
Object InputAreaOffset $Attribute 11 04-MAR-2011 10:18:56.35
Body SysBody 04-MAR-2011 10:19:17.94
Attr PgmName = "InputAreaOffset"
Attr Flags = 2048
Attr TypeRef = "pwrs:Type-$UInt32"
EndBody
EndObject
Object InputAreaSize $Attribute 12 04-MAR-2011 10:19:46.95
Body SysBody 04-MAR-2011 10:19:37.75
Attr PgmName = "InputAreaSize"
Attr Flags = 2048
Attr TypeRef = "pwrs:Type-$UInt32"
EndBody
EndObject
Object OutputAreaOffset $Attribute 13 04-MAR-2011 10:20:07.15
Body SysBody 04-MAR-2011 10:19:58.64
Attr PgmName = "OutputAreaOffset"
Attr Flags = 2048
Attr TypeRef = "pwrs:Type-$UInt32"
EndBody
EndObject
Object OutputAreaSize $Attribute 14 04-MAR-2011 10:20:18.60
Body SysBody 04-MAR-2011 10:19:58.64
Attr PgmName = "OutputAreaSize"
Attr Flags = 2048
Attr TypeRef = "pwrs:Type-$UInt32"
EndBody
EndObject
EndObject
Object ConfiguratorPoson $Menu 186 23-FEB-2011 14:01:08.18
Object Pointed $Menu 187 23-FEB-2011 14:01:08.18
Object Connect $MenuButton 188 23-FEB-2011 14:01:08.18
Body SysBody 23-FEB-2011 14:01:08.18
Attr ButtonName = "Connect PlcThread"
Attr MethodName = "$Objid-Connect"
Attr MethodArguments[0] = "ThreadObject"
Attr MethodArguments[1] = "PlcThread"
Attr FilterName = "$Objid-IsOkConnect"
Attr FilterArguments[0] = "ThreadObject"
Attr FilterArguments[1] = "PlcThread"
EndBody
EndObject
EndObject
EndObject
Object PostCreate $DbCallBack 189 23-FEB-2011 14:01:08.18
Body SysBody 23-FEB-2011 14:01:08.18
Attr MethodName = "BaseIORack-PostCreate"
EndBody
EndObject
Object Template Hilscher_cifX_Device 2152431616 01-JAN-1970 01:00:00.00
Body RtBody 04-MAR-2011 12:49:41.10
Attr Process = 1
EndBody
EndObject
EndObject
Object Hilscher_cifX_Module $ClassDef 19 23-FEB-2011 15:23:13.31
Body SysBody 23-FEB-2011 14:02:55.28
Attr Editor = 0
Attr Method = 0
Attr Flags = 51280
EndBody
Object RtBody $ObjBodyDef 1 23-FEB-2011 14:04:41.24
Body SysBody 23-FEB-2011 15:23:18.56
Attr StructName = "Hilscher_cifX_Module"
Attr NextAix = "_X15"
EndBody
Object Description $Attribute 6 23-FEB-2011 14:02:24.06
Body SysBody 23-FEB-2011 14:02:24.06
Attr PgmName = "Description"
Attr TypeRef = "pwrs:Type-$String80"
EndBody
EndObject
Object Process $Attribute 9 23-FEB-2011 14:02:24.06
Body SysBody 23-FEB-2011 14:02:24.06
Attr PgmName = "Process"
Attr TypeRef = "pwrb:Type-IoProcessMask"
EndBody
EndObject
Object ThreadObject $Attribute 10 23-FEB-2011 14:02:24.06
Body SysBody 23-FEB-2011 14:02:24.06
Attr PgmName = "ThreadObject"
Attr TypeRef = "pwrs:Type-$Objid"
EndBody
EndObject
Object InputAreaOffset $Attribute 11 04-MAR-2011 10:20:33.79
Body SysBody 04-MAR-2011 10:20:33.79
Attr PgmName = "InputAreaOffset"
Attr Flags = 2048
Attr TypeRef = "pwrs:Type-$UInt32"
EndBody
EndObject
Object InputAreaSize $Attribute 12 04-MAR-2011 10:20:33.79
Body SysBody 04-MAR-2011 10:20:33.79
Attr PgmName = "InputAreaSize"
Attr Flags = 2048
Attr TypeRef = "pwrs:Type-$UInt32"
EndBody
EndObject
Object OutputAreaOffset $Attribute 13 04-MAR-2011 10:20:33.79
Body SysBody 04-MAR-2011 10:20:33.79
Attr PgmName = "OutputAreaOffset"
Attr Flags = 2048
Attr TypeRef = "pwrs:Type-$UInt32"
EndBody
EndObject
Object OutputAreaSize $Attribute 14 04-MAR-2011 10:20:33.79
Body SysBody 04-MAR-2011 10:20:33.79
Attr PgmName = "OutputAreaSize"
Attr Flags = 2048
Attr TypeRef = "pwrs:Type-$UInt32"
EndBody
EndObject
EndObject
Object IoMethods $RtMethod 199 04-MAR-2011 12:47:33.99
Object IoCardtInit $Method 200 04-MAR-2011 12:47:48.83
Body SysBody 04-MAR-2011 12:48:02.47
Attr MethodName = "Hilscher_cifX_Module-IoCardInit"
EndBody
EndObject
Object IoCardClose $Method 201 04-MAR-2011 12:48:09.81
Body SysBody 04-MAR-2011 12:48:17.79
Attr MethodName = "Hilscher_cifX_Module-IoCardClose"
EndBody
EndObject
EndObject
Object ConfiguratorPoson $Menu 195 23-FEB-2011 14:02:24.06
Object Pointed $Menu 196 23-FEB-2011 14:02:24.06
Object Connect $MenuButton 197 23-FEB-2011 14:02:24.06
Body SysBody 23-FEB-2011 14:02:24.06
Attr ButtonName = "Connect PlcThread"
Attr MethodName = "$Objid-Connect"
Attr MethodArguments[0] = "ThreadObject"
Attr MethodArguments[1] = "PlcThread"
Attr FilterName = "$Objid-IsOkConnect"
Attr FilterArguments[0] = "ThreadObject"
Attr FilterArguments[1] = "PlcThread"
EndBody
EndObject
EndObject
EndObject
Object PostCreate $DbCallBack 198 23-FEB-2011 14:02:24.06
Body SysBody 04-MAR-2011 12:49:27.28
Attr MethodName = "BaseIOCard-PostCreate"
EndBody
EndObject
Object Template Hilscher_cifX_Module 2152693760 01-JAN-1970 01:00:00.00
Body RtBody 04-MAR-2011 12:49:32.39
Attr Process = 1
EndBody
EndObject
EndObject
EndObject
EndVolume
......@@ -87,8 +87,8 @@ static pwr_tStatus IoCardRead (
/* on all inputs. Default StallAction is ResetInputs which means that */
/* all inputs will be zeroed */
io_card_read(ctx, rp, cp, local->input_area, slave->Diag, slave->ByteOrdering,
slave->FloatRepresentation);
io_bus_card_read(ctx, rp, cp, local->input_area, slave->Diag, slave->ByteOrdering,
slave->FloatRepresentation);
// printf("Method Pb_Module-IoCardRead\n");
return IO__SUCCESS;
......@@ -116,8 +116,8 @@ static pwr_tStatus IoCardWrite (
op->Status = slave->Status;
if (op->Status == PB__NORMAL) {
io_card_write(ctx, cp, local->output_area, slave->ByteOrdering,
slave->FloatRepresentation);
io_bus_card_write(ctx, cp, local->output_area, slave->ByteOrdering,
slave->FloatRepresentation);
}
// printf("Method Pb_Module-IoCardWrite\n");
return IO__SUCCESS;
......
......@@ -88,8 +88,8 @@ static pwr_tStatus IoCardRead (
/* on all inputs. Default StallAction is ResetInputs which means that */
/* all inputs will be zeroed */
io_card_read(ctx, rp, cp, local->input_area, 0, slave->ByteOrdering,
slave->FloatRepresentation);
io_bus_card_read(ctx, rp, cp, local->input_area, 0, slave->ByteOrdering,
slave->FloatRepresentation);
return IO__SUCCESS;
}
......@@ -116,8 +116,8 @@ static pwr_tStatus IoCardWrite (
op->Status = slave->Status;
if (op->Status == PB__NORMAL) {
io_card_write(ctx, cp, local->output_area, slave->ByteOrdering,
slave->FloatRepresentation);
io_bus_card_write(ctx, cp, local->output_area, slave->ByteOrdering,
slave->FloatRepresentation);
}
// printf("Method Pb_Module-IoCardWrite\n");
return IO__SUCCESS;
......
......@@ -178,7 +178,7 @@ a realtime database, rtdb. The transfer from the Workbench to rtdb is done with
loadfiles, files that are generated from the Workbench and contains all its objects.
<h1>Control program
Proview offers a graphical programming language in witch logic, Grafcet sequences and control
Proview offers a graphical programming language in which logic, Grafcet sequences and control
loops is programmed. It is named the PLC program. Also the PLC program is a part of the object
tree. It is configured by placing specific program objects, PlcPgm, in the Plant hierarchy.
When opening a PlcPgm you enter the Plc Editor, in which the graphical programming is preformed.
......@@ -7393,7 +7393,7 @@ IndError in the main object, and color the symbol yellow or red, or flashing red
are set.
<image> ced_fig20.gif
<b>The grahic symbol is drawn in Ge witch HostObject default dynamic.
<b>The grahic symbol is drawn in Ge with HostObject default dynamic.
......
......@@ -2541,7 +2541,8 @@ pwr_tStatus io_init (
{
if ( rp->Process & process)
{
if ( rp->Init != NULL)
if ( rp->Init != NULL &&
!rp->MethodDisabled)
{
sts = (rp->Init) ( *ctx, ap, rp);
if ( EVEN(sts)) return sts;
......@@ -2551,7 +2552,8 @@ pwr_tStatus io_init (
}
for ( cp = rp->cardlist; cp != NULL; cp = cp->next)
{
if ( cp->Init != NULL)
if ( cp->Init != NULL &&
!cp->MethodDisabled)
{
sts = (cp->Init) ( *ctx, ap, rp, cp);
if ( EVEN(sts)) return sts;
......@@ -2670,7 +2672,8 @@ pwr_tStatus io_read(
for ( rp = ap->racklist; rp != NULL; rp = rp->next)
{
if ( rp->Process & ctx->Process &&
rp->Action & io_mAction_Read)
rp->Action & io_mAction_Read &&
!rp->MethodDisabled)
{
if ( rp->scan_interval_cnt <= 1)
{
......@@ -2684,7 +2687,8 @@ pwr_tStatus io_read(
for ( cp = rp->cardlist; cp != NULL; cp = cp->next)
{
if ( cp->Action & io_mAction_Read)
if ( cp->Action & io_mAction_Read &&
!cp->MethodDisabled)
{
if ( cp->scan_interval_cnt <= 1)
{
......@@ -2728,7 +2732,7 @@ pwr_tStatus io_write(
{
for ( cp = rp->cardlist; cp != NULL; cp = cp->next)
{
if ( cp->Action & io_mAction_Write)
if ( cp->Action & io_mAction_Write && !cp->MethodDisabled)
{
if ( cp->scan_interval_cnt <= 1)
{
......@@ -2741,7 +2745,8 @@ pwr_tStatus io_write(
}
}
if ( rp->Process & ctx->Process &&
rp->Action & io_mAction_Write)
rp->Action & io_mAction_Write &&
!rp->MethodDisabled)
{
if ( rp->scan_interval_cnt <= 1)
{
......@@ -2803,7 +2808,8 @@ pwr_tStatus io_swap(
for ( rp = ap->racklist; rp != NULL; rp = rp->next)
{
if (rp->Action & io_mAction_Swap)
if (rp->Action & io_mAction_Swap &&
!rp->MethodDisabled)
{
if ( rp->scan_interval_cnt <= 1)
{
......@@ -2817,7 +2823,8 @@ pwr_tStatus io_swap(
for ( cp = rp->cardlist; cp != NULL; cp = cp->next)
{
if (cp->Action & io_mAction_Swap)
if (cp->Action & io_mAction_Swap &&
!cp->MethodDisabled)
{
if ( cp->scan_interval_cnt <= 1)
{
......
......@@ -66,122 +66,124 @@ extern pwr_tBoolean io_fatal_error;
typedef enum {
io_eType_Node,
io_eType_Agent,
io_eType_Rack,
io_eType_Card
io_eType_Node,
io_eType_Agent,
io_eType_Rack,
io_eType_Card
} io_eType;
typedef enum {
io_mAction_None = 0,
io_mAction_Read = 1 << 0,
io_mAction_Write = 1 << 1,
io_mAction_Swap = 1 << 2
io_mAction_None = 0,
io_mAction_Read = 1 << 0,
io_mAction_Write = 1 << 1,
io_mAction_Swap = 1 << 2
} io_mAction;
typedef enum {
io_mProcess_None = 0,
io_mProcess_Plc = 1 << 0,
io_mProcess_IoComm = 1 << 1,
io_mProcess_Profibus = 1 << 2,
io_mProcess_User = 1 << 3,
io_mProcess_All = ~0
io_mProcess_None = 0,
io_mProcess_Plc = 1 << 0,
io_mProcess_IoComm = 1 << 1,
io_mProcess_Profibus = 1 << 2,
io_mProcess_User = 1 << 3,
io_mProcess_All = ~0
} io_mProcess;
typedef struct {
void *cop; /* Pointer to channel object */
pwr_tDlid ChanDlid; /* Dlid for pointer to channel */
pwr_sAttrRef ChanAref; /* AttrRef for channel */
void *sop; /* Pointer to signal object */
pwr_tDlid SigDlid; /* Dlid for pointer to signal */
pwr_sAttrRef SigAref; /* AttrRef for signal */
void *vbp; /* Pointer to valuebase for signal */
void *abs_vbp; /* Pointer to absvaluebase (Co only) */
pwr_tClassId ChanClass; /* Class of channel object */
pwr_tClassId SigClass; /* Class of signal object */
pwr_tUInt32 size; /* Size of channel in byte */
pwr_tUInt32 offset; /* Offset to channel in card */
pwr_tUInt32 mask; /* Mask for bit oriented channels */
pwr_tUInt32 udata; /* User defined data */
void *cop; /* Pointer to channel object */
pwr_tDlid ChanDlid; /* Dlid for pointer to channel */
pwr_sAttrRef ChanAref; /* AttrRef for channel */
void *sop; /* Pointer to signal object */
pwr_tDlid SigDlid; /* Dlid for pointer to signal */
pwr_sAttrRef SigAref; /* AttrRef for signal */
void *vbp; /* Pointer to valuebase for signal */
void *abs_vbp; /* Pointer to absvaluebase (Co only) */
pwr_tClassId ChanClass; /* Class of channel object */
pwr_tClassId SigClass; /* Class of signal object */
pwr_tUInt32 size; /* Size of channel in byte */
pwr_tUInt32 offset; /* Offset to channel in card */
pwr_tUInt32 mask; /* Mask for bit oriented channels */
pwr_tUInt32 udata; /* User defined data */
} io_sChannel;
typedef struct s_Card {
pwr_tClassId Class; /* Class of card object */
pwr_tObjid Objid; /* Objid of card object */
pwr_tOName Name; /* Full name of card object */
io_mAction Action; /* Type of method defined (Read/Write)*/
io_mProcess Process; /* Process number */
pwr_tStatus (* Init) (); /* Init method */
pwr_tStatus (* Close) (); /* Close method */
pwr_tStatus (* Read) (); /* Read method */
pwr_tStatus (* Write) (); /* Write method */
pwr_tStatus (* Swap) (); /* Write method */
pwr_tAddress *op; /* Pointer to card object */
pwr_tDlid Dlid; /* Dlid for card object pointer */
pwr_tUInt32 size; /* Size of card data area in byte */
pwr_tUInt32 offset; /* Offset to card data area in rack */
int scan_interval; /* Interval between scans */
int scan_interval_cnt;/* Counter to detect next time to scan */
int AgentControlled;/* TRUE if kontrolled by agent */
int ChanListSize; /* Size of chanlist */
io_sChannel *chanlist; /* Array of channel structures */
void *Local; /* Pointer to method defined data structure */
struct s_Card *next; /* Next card */
pwr_tClassId Class; /* Class of card object */
pwr_tObjid Objid; /* Objid of card object */
pwr_tOName Name; /* Full name of card object */
io_mAction Action; /* Type of method defined (Read/Write)*/
io_mProcess Process; /* Process number */
pwr_tStatus (* Init) (); /* Init method */
pwr_tStatus (* Close) (); /* Close method */
pwr_tStatus (* Read) (); /* Read method */
pwr_tStatus (* Write) (); /* Write method */
pwr_tStatus (* Swap) (); /* Swap method */
pwr_tAddress *op; /* Pointer to card object */
pwr_tDlid Dlid; /* Dlid for card object pointer */
pwr_tUInt32 size; /* Size of card data area in byte */
pwr_tUInt32 offset; /* Offset to card data area in rack */
int scan_interval; /* Interval between scans */
int scan_interval_cnt;/* Counter to detect next time to scan */
int AgentControlled;/* TRUE if kontrolled by agent */
int ChanListSize; /* Size of chanlist */
io_sChannel *chanlist; /* Array of channel structures */
void *Local; /* Pointer to method defined data structure */
int MethodDisabled; /* Card method disabled */
struct s_Card *next; /* Next card */
} io_sCard;
typedef struct s_Rack {
pwr_tClassId Class; /* Class of rack object */
pwr_tObjid Objid; /* Objid of rack object */
pwr_tOName Name; /* Full name of rack object */
io_mAction Action; /* Type of method defined (Read/Write)*/
io_mProcess Process; /* Process number */
pwr_tStatus (* Init) (); /* Init method */
pwr_tStatus (* Close) (); /* Close method */
pwr_tStatus (* Read) (); /* Read method */
pwr_tStatus (* Write) (); /* Write method */
pwr_tStatus (* Swap) (); /* Swap method */
void *op; /* Pointer to rack object */
pwr_tDlid Dlid; /* Dlid fr rack object pointer */
pwr_tUInt32 size; /* Size of rack data area in byte */
pwr_tUInt32 offset; /* Offset to rack data area in agent */
int scan_interval; /* Interval between scans */
int scan_interval_cnt;/* Counter to detect next time to scan */
int AgentControlled;/* TRUE if kontrolled by agent */
io_sCard *cardlist; /* List of card structures */
void *Local; /* Pointer to method defined data structure */
struct s_Rack *next; /* Next rack */
pwr_tClassId Class; /* Class of rack object */
pwr_tObjid Objid; /* Objid of rack object */
pwr_tOName Name; /* Full name of rack object */
io_mAction Action; /* Type of method defined (Read/Write)*/
io_mProcess Process; /* Process number */
pwr_tStatus (* Init) (); /* Init method */
pwr_tStatus (* Close) (); /* Close method */
pwr_tStatus (* Read) (); /* Read method */
pwr_tStatus (* Write) (); /* Write method */
pwr_tStatus (* Swap) (); /* Swap method */
void *op; /* Pointer to rack object */
pwr_tDlid Dlid; /* Dlid fr rack object pointer */
pwr_tUInt32 size; /* Size of rack data area in byte */
pwr_tUInt32 offset; /* Offset to rack data area in agent */
int scan_interval; /* Interval between scans */
int scan_interval_cnt;/* Counter to detect next time to scan */
int AgentControlled;/* TRUE if kontrolled by agent */
io_sCard *cardlist; /* List of card structures */
void *Local; /* Pointer to method defined data structure */
int MethodDisabled; /* Rack method disabled */
struct s_Rack *next; /* Next rack */
} io_sRack;
typedef struct s_Agent {
pwr_tClassId Class; /* Class of agent object */
pwr_tObjid Objid; /* Objid of agent object */
pwr_tOName Name; /* Full name of agent object */
io_mAction Action; /* Type of method defined (Read/Write)*/
io_mProcess Process; /* Process number */
pwr_tStatus (* Init) (); /* Init method */
pwr_tStatus (* Close) (); /* Close method */
pwr_tStatus (* Read) (); /* Read method */
pwr_tStatus (* Write) (); /* Write method */
pwr_tStatus (* Swap) (); /* Write method */
void *op; /* Pointer to agent object */
pwr_tDlid Dlid; /* Dlid for agent object pointer */
int scan_interval; /* Interval between scans */
int scan_interval_cnt;/* Counter to detect next time to scan */
io_sRack *racklist; /* List of rack structures */
void *Local; /* Pointer to method defined data structure */
struct s_Agent *next; /* Next agent */
pwr_tClassId Class; /* Class of agent object */
pwr_tObjid Objid; /* Objid of agent object */
pwr_tOName Name; /* Full name of agent object */
io_mAction Action; /* Type of method defined (Read/Write)*/
io_mProcess Process; /* Process number */
pwr_tStatus (* Init) (); /* Init method */
pwr_tStatus (* Close) (); /* Close method */
pwr_tStatus (* Read) (); /* Read method */
pwr_tStatus (* Write) (); /* Write method */
pwr_tStatus (* Swap) (); /* Swap method */
void *op; /* Pointer to agent object */
pwr_tDlid Dlid; /* Dlid for agent object pointer */
int scan_interval; /* Interval between scans */
int scan_interval_cnt;/* Counter to detect next time to scan */
io_sRack *racklist; /* List of rack structures */
void *Local; /* Pointer to method defined data structure */
struct s_Agent *next; /* Next agent */
} io_sAgent;
struct io_sCtx {
io_sAgent *agentlist; /* List of agent structures */
io_mProcess Process; /* Callers process number */
pwr_tObjid Thread; /* Callers thread objid */
int RelativVector; /* Used by plc */
pwr_sNode *Node; /* Pointer to node object */
pwr_sClass_IOHandler *IOHandler; /* Pointer to IO Handler object */
float ScanTime; /* Scantime supplied by caller */
io_tSupCtx SupCtx; /* Context for supervise object lists */
io_sAgent *agentlist; /* List of agent structures */
io_mProcess Process; /* Callers process number */
pwr_tObjid Thread; /* Callers thread objid */
int RelativVector; /* Used by plc */
pwr_sNode *Node; /* Pointer to node object */
pwr_sClass_IOHandler *IOHandler; /* Pointer to IO Handler object */
float ScanTime; /* Scantime supplied by caller */
io_tSupCtx SupCtx; /* Context for supervise object lists */
};
/*----------------------------------------------------------------------------*\
......
......@@ -180,18 +180,129 @@ static void ConvertAi ( io_tCtx ctx,
}
/*----------------------------------------------------------------------------*\
Initialization of ai signals and channels.
Initialization of a bus card.
\*----------------------------------------------------------------------------*/
void io_card_read(
io_tCtx ctx,
io_sRack *rp,
io_sCard *cp,
void *input_area,
void *diag_area,
pwr_tByteOrderingEnum byte_order,
pwr_tFloatRepEnum float_rep
)
pwr_tStatus io_bus_card_init( io_tCtx ctx,
io_sCard *cp,
unsigned int *input_area_offset,
unsigned int *input_area_chansize,
unsigned int *output_area_offset,
unsigned int *output_area_chansize,
pwr_tByteOrderingEnum byte_order)
{
int i;
for ( i = 0; i < cp->ChanListSize; i++) {
io_sChannel *chanp = &cp->chanlist[i];
if ( !chanp->sop)
continue;
switch (chanp->ChanClass) {
case pwr_cClass_ChanDi: {
pwr_sClass_ChanDi *chan_di = (pwr_sClass_ChanDi *) chanp->cop;
if (chan_di->Number == 0) {
*input_area_offset += *input_area_chansize;
*input_area_chansize = GetChanSize( chan_di->Representation);
}
chanp->offset = *input_area_offset;
chanp->mask = 1 << chan_di->Number;
if ( byte_order == pwr_eByteOrderingEnum_BigEndian) {
if ( chan_di->Representation == pwr_eDataRepEnum_Bit16)
chanp->mask = swap16( (unsigned short)chanp->mask);
else if ( chan_di->Representation == pwr_eDataRepEnum_Bit32)
chanp->mask = swap32( chanp->mask);
}
break;
}
case pwr_cClass_ChanAi: {
pwr_sClass_ChanAi *chan_ai = (pwr_sClass_ChanAi *) chanp->cop;
*input_area_offset += *input_area_chansize;
*input_area_chansize = GetChanSize(chan_ai->Representation);
chanp->offset = *input_area_offset;
chanp->size = *input_area_chansize;
chanp->mask = 0;
io_AiRangeToCoef(chanp);
break;
}
case pwr_cClass_ChanAit: {
pwr_sClass_ChanAit *chan_ai = (pwr_sClass_ChanAit *) chanp->cop;
*input_area_offset += *input_area_chansize;
*input_area_chansize = GetChanSize(chan_ai->Representation);
chanp->offset = *input_area_offset;
chanp->size = *input_area_chansize;
chanp->mask = 0;
io_AiRangeToCoef(chanp);
break;
}
case pwr_cClass_ChanIi: {
pwr_sClass_ChanIi *chan_ii = (pwr_sClass_ChanIi *) chanp->cop;
*input_area_offset += *input_area_chansize;
*input_area_chansize = GetChanSize(chan_ii->Representation);
chanp->offset = *input_area_offset;
chanp->size = *input_area_chansize;
chanp->mask = 0;
break;
}
case pwr_cClass_ChanDo: {
pwr_sClass_ChanDo *chan_do = (pwr_sClass_ChanDo *) chanp->cop;
if (chan_do->Number == 0) {
*output_area_offset += *output_area_chansize;
*output_area_chansize = GetChanSize( chan_do->Representation);
}
chanp->offset = *output_area_offset;
chanp->mask = 1 << chan_do->Number;
if ( byte_order == pwr_eByteOrderingEnum_BigEndian) {
if ( chan_do->Representation == pwr_eDataRepEnum_Bit16)
chanp->mask = swap16( (unsigned short)chanp->mask);
else if ( chan_do->Representation == pwr_eDataRepEnum_Bit32)
chanp->mask = swap32( chanp->mask);
}
break;
}
case pwr_cClass_ChanAo: {
pwr_sClass_ChanAo *chan_ao = (pwr_sClass_ChanAo *) chanp->cop;
*output_area_offset += *output_area_chansize;
*output_area_chansize = GetChanSize(chan_ao->Representation);
chanp->offset = *output_area_offset;
chanp->size = *output_area_chansize;
chanp->mask = 0;
io_AoRangeToCoef(chanp);
break;
}
case pwr_cClass_ChanIo: {
pwr_sClass_ChanIo *chan_io = (pwr_sClass_ChanIo *) chanp->cop;
*output_area_offset += *output_area_chansize;
*output_area_chansize = GetChanSize(chan_io->Representation);
chanp->offset = *output_area_offset;
chanp->size = *output_area_chansize;
chanp->mask = 0;
break;
}
}
}
return IO__SUCCESS;
}
/*----------------------------------------------------------------------------*\
Read method for bus-card
\*----------------------------------------------------------------------------*/
void io_bus_card_read( io_tCtx ctx,
io_sRack *rp,
io_sCard *cp,
void *input_area,
void *diag_area,
pwr_tByteOrderingEnum byte_order,
pwr_tFloatRepEnum float_rep)
{
io_sChannel *chanp;
pwr_sClass_ChanDi *chan_di;
......@@ -485,14 +596,11 @@ void io_card_read(
\*----------------------------------------------------------------------------*/
void io_card_write(
io_tCtx ctx,
io_sCard *cp,
void *output_area,
pwr_tByteOrderingEnum byte_order,
pwr_tFloatRepEnum float_rep
)
void io_bus_card_write( io_tCtx ctx,
io_sCard *cp,
void *output_area,
pwr_tByteOrderingEnum byte_order,
pwr_tFloatRepEnum float_rep)
{
io_sChannel *chanp;
......
......@@ -65,23 +65,27 @@ unsigned short swap16(unsigned short in);
unsigned int swap32(unsigned int in);
void io_card_read(
io_tCtx ctx,
io_sRack *rp,
io_sCard *cp,
void *input_area,
void *diag_area,
pwr_tByteOrderingEnum byte_order,
pwr_tFloatRepEnum float_rep
);
void io_card_write(
io_tCtx ctx,
io_sCard *cp,
void *output_area,
pwr_tByteOrderingEnum byte_order,
pwr_tFloatRepEnum float_rep
);
pwr_tStatus io_bus_card_init( io_tCtx ctx,
io_sCard *cp,
unsigned int *input_area_offset,
unsigned int *input_area_chansize,
unsigned int *output_area_offset,
unsigned int *output_area_chansize,
pwr_tByteOrderingEnum byte_order);
void io_bus_card_read( io_tCtx ctx,
io_sRack *rp,
io_sCard *cp,
void *input_area,
void *diag_area,
pwr_tByteOrderingEnum byte_order,
pwr_tFloatRepEnum float_rep);
void io_bus_card_write( io_tCtx ctx,
io_sCard *cp,
void *output_area,
pwr_tByteOrderingEnum byte_order,
pwr_tFloatRepEnum float_rep);
#ifdef __cplusplus
}
......
......@@ -116,7 +116,7 @@ pwre_config_check_lib()
elif test $4 == "wmq"; then
conf_libwmq=$conf_libwmq" -l${lib%.*}"
else
conf_lib=$conf_lib" -l${lib%.*}"
conf_lib=$conf_lib" -l${lib%%.*}"
fi
elif test $3 == "gtk"; then
conf_libgtk=$conf_libgtk" \\\`pkg-config --libs gtk+-2.0\\\`"
......@@ -318,6 +318,7 @@ else
pwre_config_check_lib wmq WMQ lib wmq 1 /usr/lib/libmqic.so
pwre_config_check_lib libpnioif PNAK lib lib 1 /usr/lib/libpnioif.a:/usr/local/lib/libpnioif.a
pwre_config_check_lib libusb LIBUSB lib lib 1 /usr/lib/libusb-1.0.so
pwre_config_check_lib libcifx LIBCIFX lib lib 1 /usr/lib/libcifx.so.1
pwre_config_check_lib librt LIBRT lib lib 0 /usr/lib/librt.so:/usr/lib/librt.a
pwre_config_check_lib libfl LIBFL lib lib 0 /usr/lib/libfl.so:/usr/lib/libfl.a
pwre_config_check_lib libX11 LIBX11 lib lib 0 /usr/lib/libX11.so
......@@ -329,6 +330,7 @@ else
pwre_config_check_include jni JNI 1 $jdk/include/jni.h
pwre_config_check_include jni JNI 0 $jdk/include/linux/jni_md.h
pwre_config_check_include wmq WMQ 1 /opt/mqm/inc/cmqc.h
pwre_config_check_include cifx CIFX 1 /usr/local/include/cifx/cifxlinux.h
export pwre_conf_alsa=1
......
......@@ -41,7 +41,7 @@ SObject pwrb:Class
Attr StructName = "Max"
EndBody
!/**
! Integer input.
! Analog input.
!*/
Object In1 $Input 1
Body SysBody
......@@ -51,7 +51,7 @@ SObject pwrb:Class
EndBody
EndObject
!/**
! Integer input.
! Analog input.
!*/
Object In2 $Input 2
Body SysBody
......@@ -61,7 +61,7 @@ SObject pwrb:Class
EndBody
EndObject
!/**
! Integer input.
! Analog input.
!*/
Object In3 $Input 3
Body SysBody
......@@ -71,7 +71,7 @@ SObject pwrb:Class
EndBody
EndObject
!/**
! Integer input.
! Analog input.
!*/
Object In4 $Input 4
Body SysBody
......@@ -81,7 +81,7 @@ SObject pwrb:Class
EndBody
EndObject
!/**
! Integer input.
! Analog input.
!*/
Object In5 $Input 5
Body SysBody
......@@ -91,7 +91,7 @@ SObject pwrb:Class
EndBody
EndObject
!/**
! Integer input.
! Analog input.
!*/
Object In6 $Input 6
Body SysBody
......@@ -101,7 +101,7 @@ SObject pwrb:Class
EndBody
EndObject
!/**
! Integer input.
! Analog input.
!*/
Object In7 $Input 7
Body SysBody
......@@ -111,7 +111,7 @@ SObject pwrb:Class
EndBody
EndObject
!/**
! Integer input.
! Analog input.
!*/
Object In8 $Input 8
Body SysBody
......
......@@ -41,7 +41,7 @@ SObject pwrb:Class
Attr StructName = "Min"
EndBody
!/**
! Integer input.
! Analog input.
!*/
Object In1 $Input 1
Body SysBody
......@@ -51,7 +51,7 @@ SObject pwrb:Class
EndBody
EndObject
!/**
! Integer input.
! Analog input.
!*/
Object In2 $Input 2
Body SysBody
......@@ -61,7 +61,7 @@ SObject pwrb:Class
EndBody
EndObject
!/**
! Integer input.
! Analog input.
!*/
Object In3 $Input 3
Body SysBody
......@@ -71,7 +71,7 @@ SObject pwrb:Class
EndBody
EndObject
!/**
! Integer input.
! Analog input.
!*/
Object In4 $Input 4
Body SysBody
......@@ -81,7 +81,7 @@ SObject pwrb:Class
EndBody
EndObject
!/**
! Integer input.
! Analog input.
!*/
Object In5 $Input 5
Body SysBody
......@@ -91,7 +91,7 @@ SObject pwrb:Class
EndBody
EndObject
!/**
! Integer input.
! Analog input.
!*/
Object In6 $Input 6
Body SysBody
......@@ -101,7 +101,7 @@ SObject pwrb:Class
EndBody
EndObject
!/**
! Integer input.
! Analog input.
!*/
Object In7 $Input 7
Body SysBody
......@@ -111,7 +111,7 @@ SObject pwrb:Class
EndBody
EndObject
!/**
! Integer input.
! Analog input.
!*/
Object In8 $Input 8
Body SysBody
......
!
! Proview $Id$
! Copyright (C) 2005 SSAB Oxelsund AB.
!
! 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 the program, if not, write to the Free Software
! Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
!
! pwrb_td_readynotreadyenum.wb_load -- Defines the enum type ReadyNotReady
!
SObject pwrb:Type
!/**
! @Version 1.0
! @Group Types
! Enumeration for ready/not ready.
!*/
Object ReadyNotReadyEnum $TypeDef 54
Body SysBody
Attr TypeRef = "pwrs:Type-$Enum"
Attr PgmName = "ReadyNotReadyEnum"
EndBody
!/**
! Not Ready.
!*/
Object NotReady $Value
Body SysBody
Attr PgmName = "NotReady"
Attr Text = "Not Ready"
Attr Value = 0
EndBody
EndObject
!/**
! Ready.
!*/
Object Ready $Value
Body SysBody
Attr PgmName = "Ready"
Attr Text = "Ready"
Attr Value = 1
EndBody
EndObject
EndObject
EndSObject
......@@ -1827,6 +1827,9 @@ pwr_tStatus WFoeGtk::create_window( int x_top,
gtk_container_add( GTK_CONTAINER(widgets.tools_build),
gtk_image_new_from_stock( "gtk-execute", GTK_ICON_SIZE_SMALL_TOOLBAR));
g_signal_connect(widgets.tools_build, "clicked", G_CALLBACK(WFoeGtk::activate_compile), this);
gtk_widget_add_accelerator( widgets.tools_build, "activate", accel_g,
'b', GdkModifierType( GDK_CONTROL_MASK | GDK_SHIFT_MASK),
GTK_ACCEL_VISIBLE);
g_object_set( widgets.tools_build, "can-focus", FALSE, NULL);
gtk_toolbar_append_widget( tools, widgets.tools_build, "Build Program", "");
......
......@@ -6296,6 +6296,16 @@ static int utl_set_parameter (
sprintf( logstrptr + strlen(logstr), "%s", valuestr);
break;
}
case pwr_eType_DeltaTime:
{
sts = time_AsciiToD( valuestr, (pwr_tDeltaTime *)object_element);
if ( EVEN(sts)) {
printf("DeltaTime format syntax error\n");
return FOE__SUCCESS;
}
sprintf( logstrptr + strlen(logstr), "%s", valuestr);
break;
}
case pwr_eType_ObjDId:
{
pwr_tOName objdid_name;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment