include/def.h
author etisserant
Mon, 02 Jul 2007 18:22:58 +0200
changeset 236 905677ed00f3
parent 235 f812bf6b7237
child 288 26015ee2c2c9
permissions -rw-r--r--
Full preliminary implementation of TPDO transmit type:
- SYNC (N) (1-240)
- RTR only + SYNC (252)
- RTR only (253)
- EVENT, with timer and inhibit time (254 and 255)

User app have to call sendPDOevent(d) to eventually signal mapped data changes.
Callbacks added to 0x140N, TPDO comm parameters for on the fly timers values change.
TestMasterSlave updated.
0
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
     1
/*
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
     2
This file is part of CanFestival, a library implementing CanOpen Stack. 
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
     3
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
     4
Copyright (C): Edouard TISSERANT and Francis DUPIN
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
     5
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
     6
See COPYING file for copyrights details.
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
     7
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
     8
This library is free software; you can redistribute it and/or
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
     9
modify it under the terms of the GNU Lesser General Public
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    10
License as published by the Free Software Foundation; either
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    11
version 2.1 of the License, or (at your option) any later version.
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    12
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    13
This library is distributed in the hope that it will be useful,
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    14
but WITHOUT ANY WARRANTY; without even the implied warranty of
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    15
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    16
Lesser General Public License for more details.
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    17
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    18
You should have received a copy of the GNU Lesser General Public
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    19
License along with this library; if not, write to the Free Software
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    20
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    21
*/
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    22
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    23
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    24
#ifndef __def_h__
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    25
#define __def_h__
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    26
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    27
#include "config.h"
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    28
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    29
/** definitions used for object dictionary access. ie SDO Abort codes . (See DS 301 v.4.02 p.48)
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    30
 */
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    31
#define OD_SUCCESSFUL 	             0x00000000
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    32
#define OD_READ_NOT_ALLOWED          0x06010001
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    33
#define OD_WRITE_NOT_ALLOWED         0x06010002
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    34
#define OD_NO_SUCH_OBJECT            0x06020000
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    35
#define OD_NOT_MAPPABLE              0x06040041
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    36
#define OD_LENGTH_DATA_INVALID       0x06070010
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    37
#define OD_NO_SUCH_SUBINDEX 	     0x06090011
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    38
#define OD_VALUE_TOO_LOW             0x06090031 /* Value range test result */
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    39
#define OD_VALUE_TOO_HIGH            0x06090032 /* Value range test result */
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    40
/* Others SDO abort codes 
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    41
 */
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    42
#define SDOABT_TOGGLE_NOT_ALTERNED   0x05030000
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    43
#define SDOABT_TIMED_OUT             0x05040000
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    44
#define SDOABT_OUT_OF_MEMORY         0x05040005 /* Size data exceed SDO_MAX_LENGTH_TRANSFERT */
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    45
#define SDOABT_GENERAL_ERROR         0x08000000 /* Error size of SDO message */
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    46
#define SDOABT_LOCAL_CTRL_ERROR      0x08000021 
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    47
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    48
/******************** CONSTANTS ****************/
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    49
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    50
/** Constantes which permit to define if a PDO frame
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    51
   is a request one or a data one
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    52
*/
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    53
/* Should not be modified */
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    54
#define REQUEST 1
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    55
#define NOT_A_REQUEST 0
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    56
71
95cd3376cc9f compilator compatitibility
frdupin
parents: 0
diff changeset
    57
/* Misc constants */
95cd3376cc9f compilator compatitibility
frdupin
parents: 0
diff changeset
    58
/* -------------- */
0
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    59
/* Should not be modified */
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    60
#define Rx 0
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    61
#define Tx 1
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    62
#define TRUE  1
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    63
#define FALSE 0
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    64
235
f812bf6b7237 Preliminary implementation of Event Timer and Inhibit Timer driven TPDO
etisserant
parents: 71
diff changeset
    65
    
0
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    66
/** Status of the SDO transmission
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    67
 */
71
95cd3376cc9f compilator compatitibility
frdupin
parents: 0
diff changeset
    68
#define SDO_RESET                0x0      /* Transmission not started. Init state. */
95cd3376cc9f compilator compatitibility
frdupin
parents: 0
diff changeset
    69
#define SDO_FINISHED             0x1      /* data are available */                          
95cd3376cc9f compilator compatitibility
frdupin
parents: 0
diff changeset
    70
#define	SDO_ABORTED_RCV          0x80     /* Received an abort message. Data not available */
95cd3376cc9f compilator compatitibility
frdupin
parents: 0
diff changeset
    71
#define	SDO_ABORTED_INTERNAL     0x85     /* Aborted but not because of an abort message. */
0
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    72
#define	SDO_DOWNLOAD_IN_PROGRESS 0x2 
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    73
#define	SDO_UPLOAD_IN_PROGRESS   0x3   
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    74
71
95cd3376cc9f compilator compatitibility
frdupin
parents: 0
diff changeset
    75
/* Status of the node during the SDO transfert : */
0
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    76
#define SDO_SERVER  0x1
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    77
#define SDO_CLIENT  0x2
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    78
#define SDO_UNKNOWN 0x3             
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    79
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    80
/*  Function Codes 
71
95cd3376cc9f compilator compatitibility
frdupin
parents: 0
diff changeset
    81
   ---------------
0
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    82
  defined in the canopen DS301 
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    83
*/
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    84
#define NMT	   0x0
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    85
#define SYNC       0x1
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    86
#define TIME_STAMP 0x2
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    87
#define PDO1tx     0x3
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    88
#define PDO1rx     0x4
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    89
#define PDO2tx     0x5
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    90
#define PDO2rx     0x6
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    91
#define PDO3tx     0x7
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    92
#define PDO3rx     0x8
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    93
#define PDO4tx     0x9
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    94
#define PDO4rx     0xA
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    95
#define SDOtx      0xB
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    96
#define SDOrx      0xC
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    97
#define NODE_GUARD 0xE
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    98
71
95cd3376cc9f compilator compatitibility
frdupin
parents: 0
diff changeset
    99
/* NMT Command Specifier, sent by master to change a slave state */
95cd3376cc9f compilator compatitibility
frdupin
parents: 0
diff changeset
   100
/* ------------------------------------------------------------- */
0
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   101
/* Should not be modified */
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   102
#define NMT_Start_Node              0x01
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   103
#define NMT_Stop_Node               0x02
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   104
#define NMT_Enter_PreOperational    0x80
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   105
#define NMT_Reset_Node              0x81
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   106
#define NMT_Reset_Comunication      0x82
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   107
71
95cd3376cc9f compilator compatitibility
frdupin
parents: 0
diff changeset
   108
/* constantes used in the different state machines */
95cd3376cc9f compilator compatitibility
frdupin
parents: 0
diff changeset
   109
/* ----------------------------------------------- */
0
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   110
/* Must not be modified */
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   111
#define state1  0x01
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   112
#define state2  0x02
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   113
#define state3  0x03
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   114
#define state4  0x04
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   115
#define state5  0x05
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   116
#define state6  0x06
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   117
#define state7  0x07
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   118
#define state8  0x08
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   119
#define state9  0x09
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   120
#define state10 0x0A
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   121
#define state11 0x0B
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   122
71
95cd3376cc9f compilator compatitibility
frdupin
parents: 0
diff changeset
   123
#endif /* __def_h__ */
0
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   124