Changeset 1138 for trunk


Ignore:
Timestamp:
12/21/01 11:59:50 (23 years ago)
Author:
tbretz
Message:
*** empty log message ***
Location:
trunk/MagicSoft/Cosy/candrv
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/MagicSoft/Cosy/candrv/canopen.cc

    r1109 r1138  
     1/* ======================================================================== *\
     2!
     3! *
     4! * This file is part of Stesy, the MAGIC Steering System
     5! * Software. It is distributed to you in the hope that it can be a useful
     6! * and timesaving tool in analysing Data of imaging Cerenkov telescopes.
     7! * It is distributed WITHOUT ANY WARRANTY.
     8! *
     9! * Permission to use, copy, modify and distribute this software and its
     10! * documentation for any purpose is hereby granted without fee,
     11! * provided that the above copyright notice appear in all copies and
     12! * that both that copyright notice and this permission notice appear
     13! * in supporting documentation. It is provided "as is" without express
     14! * or implied warranty.
     15! *
     16!
     17!
     18!   Author(s): Thomas Bretz, 2001 <mailto:tbretz@uni-sw.gwdg.de>
     19!
     20!   Copyright: MAGIC Software Development, 2000-2001
     21!
     22!
     23\* ======================================================================== */
     24
     25///////////////////////////////////////////////////////////////////////
     26//
     27// CanOpen
     28//
     29// implements the canopen layer over the raw device driver
     30//
     31///////////////////////////////////////////////////////////////////////
    132#include "canopen.h"
    233
     
    637ClassImp(CanOpen);
    738
     39// --------------------------------------------------------------------------
     40//
     41// Initializes a conditional and a mutex semaphore for all possible
     42// PDO combinations
     43//
    844CanOpen::CanOpen(const char *dev, const int baud, MLog &out) : VmodIcan(dev, baud, out)
    945{
     
    1753}
    1854
     55// --------------------------------------------------------------------------
     56//
     57// Destroys all conditional and mutex semaphores
     58//
    1959CanOpen::~CanOpen()
    2060{
     
    2767}
    2868
     69// --------------------------------------------------------------------------
     70//
     71// This overloads VmodIcan::HandleCanMessage. It is called if a can
     72// message was received with all message relevant data (COBId, data, time)
     73// It distributes the data depending on its function code to several
     74// functions (to be obverloaded)
     75// In case of a PDO the conditional semaphore corresponding to this PDO
     76// is raised (WaitForNextPDO)
     77//  HandleSDO:       handles a SDO message
     78//  HandlePDO1/2/3/4:handles received PDOs
     79//
    2980void CanOpen::HandleCanMessage(WORD_t cobid, BYTE_t *data, struct timeval *tv)
    3081{
     
    95146}
    96147
     148// --------------------------------------------------------------------------
     149//
     150// Enables can messaged for a given node ID and function code.
     151//
    97152void CanOpen::EnableCanMsg(BYTE_t node, BYTE_t fcode, int flag)
    98153{
     
    103158}
    104159
     160// --------------------------------------------------------------------------
     161//
     162// Enables Emergency messages for a given node
     163//
    105164void CanOpen::EnableEmcy(BYTE_t node)
    106165{
     
    109168
    110169
     170// --------------------------------------------------------------------------
     171//
     172// Enables SDO rx messages for a given node
     173//
    111174void CanOpen::EnableSdoRx(BYTE_t node)
    112175{
     
    114177}
    115178
     179// --------------------------------------------------------------------------
     180//
     181// Enables PDO1 tx messages for a given node
     182//
    116183void CanOpen::EnablePdo1Rx(BYTE_t node)
    117184{
     
    119186}
    120187
     188// --------------------------------------------------------------------------
     189//
     190// Enables PDO2 tx messages for a given node
     191//
    121192void CanOpen::EnablePdo2Rx(BYTE_t node)
    122193{
     
    124195}
    125196
     197// --------------------------------------------------------------------------
     198//
     199// Enables PDO3 rx messages for a given node
     200//
    126201void CanOpen::EnablePdo3Rx(BYTE_t node)
    127202{
     
    129204}
    130205
     206// --------------------------------------------------------------------------
     207//
     208// Enables PDO4 rx messages for a given node
     209//
    131210void CanOpen::EnablePdo4Rx(BYTE_t node)
    132211{
     
    134213}
    135214
     215// --------------------------------------------------------------------------
     216//
     217// Sends a PDO1 message with the given data to the given node
     218//
    136219void CanOpen::SendPDO1(BYTE_t node, BYTE_t data[8])
    137220{
     
    139222}
    140223
     224// --------------------------------------------------------------------------
     225//
     226// Sends a PDO2 message with the given data to the given node
     227//
    141228void CanOpen::SendPDO2(BYTE_t node, BYTE_t data[8])
    142229{
     
    144231}
    145232
     233// --------------------------------------------------------------------------
     234//
     235// Sends a PDO3 message with the given data to the given node
     236//
    146237void CanOpen::SendPDO3(BYTE_t node, BYTE_t data[8])
    147238{
     
    149240}
    150241
     242// --------------------------------------------------------------------------
     243//
     244// Sends a PDO4 message with the given data to the given node
     245//
    151246void CanOpen::SendPDO4(BYTE_t node, BYTE_t data[8])
    152247{
     
    154249}
    155250
     251// --------------------------------------------------------------------------
     252//
     253// Sends a PDO1 message with the given data to the given node
     254//
    156255void CanOpen::SendPDO1(BYTE_t node,
    157256              BYTE_t m0=0, BYTE_t m1=0, BYTE_t m2=0, BYTE_t m3=0,
     
    162261}
    163262
     263// --------------------------------------------------------------------------
     264//
     265// Sends a PDO2 message with the given data to the given node
     266//
    164267void CanOpen::SendPDO2(BYTE_t node,
    165268              BYTE_t m0=0, BYTE_t m1=0, BYTE_t m2=0, BYTE_t m3=0,
     
    170273}
    171274
     275// --------------------------------------------------------------------------
     276//
     277// Sends a PDO3 message with the given data to the given node
     278//
    172279void CanOpen::SendPDO3(BYTE_t node,
    173280              BYTE_t m0=0, BYTE_t m1=0, BYTE_t m2=0, BYTE_t m3=0,
     
    178285}
    179286
     287// --------------------------------------------------------------------------
     288//
     289// Sends a PDO4 message with the given data to the given node
     290//
    180291void CanOpen::SendPDO4(BYTE_t node,
    181292              BYTE_t m0=0, BYTE_t m1=0, BYTE_t m2=0, BYTE_t m3=0,
     
    186297}
    187298 
     299// --------------------------------------------------------------------------
     300//
     301// Sends a SDO message with the given data to the given node:
     302//  - index describing the dictionary index to set
     303//  - subindex describing the dictionary subindex of theindex to set
     304//  - val describing the value to set.
     305//  - store describes whether the sdo should be stored in a list to
     306//    be able to wait for an answer
     307//
    188308void CanOpen::SendSDO(BYTE_t node, WORD_t idx, BYTE_t subidx, BYTE_t val, bool store)
    189309{
     
    195315}
    196316
     317// --------------------------------------------------------------------------
     318//
     319// Sends a SDO message with the given data to the given node:
     320//  - index describing the dictionary index to set
     321//  - subindex describing the dictionary subindex of theindex to set
     322//  - val describing the value to set.
     323//  - store describes whether the sdo should be stored in a list to
     324//    be able to wait for an answer
     325//
    197326void CanOpen::SendSDO(BYTE_t node, WORD_t idx, BYTE_t subidx, WORD_t val, bool store)
    198327{
     
    205334}
    206335
     336// --------------------------------------------------------------------------
     337//
     338// Sends a SDO message with the given data to the given node:
     339//  - index describing the dictionary index to set
     340//  - subindex describing the dictionary subindex of theindex to set
     341//  - val describing the value to set.
     342//  - store describes whether the sdo should be stored in a list to
     343//    be able to wait for an answer
     344//
    207345void CanOpen::SendSDO(BYTE_t node, WORD_t idx, BYTE_t subidx, LWORD_t val, bool store)
    208346{
     
    216354}
    217355
     356// --------------------------------------------------------------------------
     357//
     358// Request a SDO message from the given node:
     359//  - index describing the dictionary index to request
     360//  - subindex describing the dictionary subindex of the index to request
     361//
    218362void CanOpen::RequestSDO(BYTE_t node, WORD_t idx, BYTE_t subidx)
    219363{
     
    223367}
    224368
     369// --------------------------------------------------------------------------
     370//
     371// Send an NMT Message to the given node with command cmd
     372//
    225373void CanOpen::SendNMT(BYTE_t node, BYTE_t cmd)
    226374{
     
    228376}
    229377
     378// --------------------------------------------------------------------------
     379//
     380// Decodes node and function code into a CobId
     381//
    230382WORD_t CanOpen::CobId(BYTE_t node, BYTE_t fcode) const
    231383{
  • trunk/MagicSoft/Cosy/candrv/network.cc

    r1109 r1138  
     1/* ======================================================================== *\
     2!
     3! *
     4! * This file is part of Stesy, the MAGIC Steering System
     5! * Software. It is distributed to you in the hope that it can be a useful
     6! * and timesaving tool in analysing Data of imaging Cerenkov telescopes.
     7! * It is distributed WITHOUT ANY WARRANTY.
     8! *
     9! * Permission to use, copy, modify and distribute this software and its
     10! * documentation for any purpose is hereby granted without fee,
     11! * provided that the above copyright notice appear in all copies and
     12! * that both that copyright notice and this permission notice appear
     13! * in supporting documentation. It is provided "as is" without express
     14! * or implied warranty.
     15! *
     16!
     17!
     18!   Author(s): Thomas Bretz, 2001 <mailto:tbretz@uni-sw.gwdg.de>
     19!
     20!   Copyright: MAGIC Software Development, 2000-2001
     21!
     22!
     23\* ======================================================================== */
     24
     25///////////////////////////////////////////////////////////////////////
     26//
     27// Network
     28//
     29// is a collection of nodes which coordinates the network
     30//
     31///////////////////////////////////////////////////////////////////////
    132#include "network.h"
    233
     
    637ClassImp(Network);
    738
     39// --------------------------------------------------------------------------
     40//
     41// Start the canopen module
     42// Initialize all nodes (calling NodeDrv::Init()
     43//
    844void Network::Start()
    945{
     
    1652}
    1753
     54// --------------------------------------------------------------------------
     55//
     56// Stop all nodes, stop the can module
     57//
    1858void Network::Stop()
    1959{
     
    2666}
    2767
     68// --------------------------------------------------------------------------
     69//
     70// Initialize the network, set all nodes to NULL (n/a)
     71//
    2872Network::Network(const char *dev, const int baud, MLog &out) : CanOpen(dev, baud, out)
    2973{
     
    3276}
    3377
     78// --------------------------------------------------------------------------
     79//
     80// Distributes the received SDO messages to the addressed nodes.
     81// Depending on the received command either HandleSDO, HandleSDOOK or
     82// HandleSDOError called.
     83//  HandleSDO:      Handles a received value
     84//  HandleSDOOK:    Handles the acknoledgment of a trasmitted SDO
     85//  HandleSDOError: Handles error occursion (see CanOpen standard)
     86//
    3487void Network::HandleSDO(BYTE_t node, BYTE_t cmd, WORD_t idx, BYTE_t subidx, LWORD_t data, struct timeval *tv)
    3588{
     
    82135}
    83136
     137// --------------------------------------------------------------------------
     138//
     139// Distributes PDO1 messages to the correspoding node calling HandlePDO1
     140//
    84141void Network::HandlePDO1(BYTE_t node, BYTE_t *data, struct timeval *tv)
    85142{
     
    96153}
    97154
     155// --------------------------------------------------------------------------
     156//
     157// Distributes PDO2 messages to the correspoding node calling HandlePDO2
     158//
    98159void Network::HandlePDO2(BYTE_t node, BYTE_t *data, struct timeval *tv)
    99160{
     
    110171}
    111172
     173// --------------------------------------------------------------------------
     174//
     175// Distributes PDO3 messages to the correspoding node calling HandlePDO3
     176//
    112177void Network::HandlePDO3(BYTE_t node, BYTE_t *data, struct timeval *tv)
    113178{
     
    124189}
    125190
     191// --------------------------------------------------------------------------
     192//
     193// Distributes PDO4 messages to the correspoding node calling HandlePDO4
     194//
    126195void Network::HandlePDO4(BYTE_t node, BYTE_t *data, struct timeval *tv)
    127196{
     
    138207}
    139208
     209// --------------------------------------------------------------------------
     210//
     211// Sets a node to a given nodedrv. The id is requested from the drv object.
     212//
    140213void Network::SetNode(NodeDrv *drv)
    141214{
     
    151224}
    152225
     226// --------------------------------------------------------------------------
     227//
     228// Initializes all nodes calling InitDevice
     229//
    153230void Network::InitNodes()
    154231{
     
    163240}
    164241
     242// --------------------------------------------------------------------------
     243//
     244// Stop all nodes calling StopDevice
     245//
    165246void Network::StopNodes()
    166247{
     
    174255}
    175256
     257// --------------------------------------------------------------------------
     258//
     259// returns true if one of the nodes has the error-flag set (HasError).
     260//
    176261bool Network::HasError() const
    177262{
  • trunk/MagicSoft/Cosy/candrv/nodedrv.cc

    r1136 r1138  
    140140// Sends the given PDO1 through the network to this device
    141141// A PDO is carrying up to eight bytes of information.
    142 // PDO messages are broadcasts.
    143142//
    144143void NodeDrv::SendPDO1(BYTE_t data[8])
     
    151150// Sends the given PDO2 through the network to this device
    152151// A PDO is carrying up to eight bytes of information.
    153 // PDO messages are broadcasts.
    154152//
    155153void NodeDrv::SendPDO2(BYTE_t data[8])
     
    162160// Sends the given PDO1 through the network to this device
    163161// A PDO is carrying up to eight bytes of information.
    164 // PDO messages are broadcasts.
    165162//
    166163void NodeDrv::SendPDO1(BYTE_t m0=0, BYTE_t m1=0, BYTE_t m2=0, BYTE_t m3=0,
     
    174171// Sends the given PDO2 through the network to this device
    175172// A PDO is carrying up to eight bytes of information.
    176 // PDO messages are broadcasts.
    177173//
    178174void NodeDrv::SendPDO2(BYTE_t m0=0, BYTE_t m1=0, BYTE_t m2=0, BYTE_t m3=0,
  • trunk/MagicSoft/Cosy/candrv/nodedrv.h

    r1109 r1138  
    2323    BYTE_t   fId;
    2424
    25     char *fName;
     25    TString fName;
    2626
    2727    int fError;
Note: See TracChangeset for help on using the changeset viewer.