Ignore:
Timestamp:
12/21/01 11:59:50 (23 years ago)
Author:
tbretz
Message:
*** empty log message ***
File:
1 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{
Note: See TracChangeset for help on using the changeset viewer.