include/def.h
author fbeaulier
Tue, 16 Aug 2011 14:15:52 +0200
changeset 663 70fc3603e36f
parent 343 118c1cabd0b0
child 664 a03f0aa7d219
permissions -rw-r--r--
timers_unix.c : remove sigint and sigterm catch
sdo : Allow multiple servers
The sdo transfer struct is not anymore referenced by server's node id but by
client or server number in the OD. Node id is not relevant in SDO transfert.
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
288
26015ee2c2c9 Modified codes in MSG_ERR and MSG_WAR in emcy.c
luis
parents: 235
diff changeset
    38
#define OD_VALUE_RANGE_EXCEEDED      0x06090030 /* Value range test result */
0
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    39
#define OD_VALUE_TOO_LOW             0x06090031 /* Value range test result */
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    40
#define OD_VALUE_TOO_HIGH            0x06090032 /* Value range test result */
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    41
/* Others SDO abort codes 
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    42
 */
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    43
#define SDOABT_TOGGLE_NOT_ALTERNED   0x05030000
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    44
#define SDOABT_TIMED_OUT             0x05040000
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    45
#define SDOABT_OUT_OF_MEMORY         0x05040005 /* Size data exceed SDO_MAX_LENGTH_TRANSFERT */
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    46
#define SDOABT_GENERAL_ERROR         0x08000000 /* Error size of SDO message */
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    47
#define SDOABT_LOCAL_CTRL_ERROR      0x08000021 
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    48
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    49
/******************** CONSTANTS ****************/
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    50
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    51
/** Constantes which permit to define if a PDO frame
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    52
   is a request one or a data one
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    53
*/
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    54
/* Should not be modified */
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    55
#define REQUEST 1
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    56
#define NOT_A_REQUEST 0
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    57
71
95cd3376cc9f compilator compatitibility
frdupin
parents: 0
diff changeset
    58
/* Misc constants */
95cd3376cc9f compilator compatitibility
frdupin
parents: 0
diff changeset
    59
/* -------------- */
0
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    60
/* Should not be modified */
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    61
#define Rx 0
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    62
#define Tx 1
320
f82e758840bd Some fixes suggested by Luis Jim?nez, plus some minor enhancements in DCF.
etisserant
parents: 301
diff changeset
    63
#ifndef TRUE
0
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    64
#define TRUE  1
320
f82e758840bd Some fixes suggested by Luis Jim?nez, plus some minor enhancements in DCF.
etisserant
parents: 301
diff changeset
    65
#endif
f82e758840bd Some fixes suggested by Luis Jim?nez, plus some minor enhancements in DCF.
etisserant
parents: 301
diff changeset
    66
#ifndef FALSE
0
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    67
#define FALSE 0
320
f82e758840bd Some fixes suggested by Luis Jim?nez, plus some minor enhancements in DCF.
etisserant
parents: 301
diff changeset
    68
#endif
235
f812bf6b7237 Preliminary implementation of Event Timer and Inhibit Timer driven TPDO
etisserant
parents: 71
diff changeset
    69
    
0
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    70
/** Status of the SDO transmission
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    71
 */
71
95cd3376cc9f compilator compatitibility
frdupin
parents: 0
diff changeset
    72
#define SDO_RESET                0x0      /* Transmission not started. Init state. */
95cd3376cc9f compilator compatitibility
frdupin
parents: 0
diff changeset
    73
#define SDO_FINISHED             0x1      /* data are available */                          
95cd3376cc9f compilator compatitibility
frdupin
parents: 0
diff changeset
    74
#define	SDO_ABORTED_RCV          0x80     /* Received an abort message. Data not available */
95cd3376cc9f compilator compatitibility
frdupin
parents: 0
diff changeset
    75
#define	SDO_ABORTED_INTERNAL     0x85     /* Aborted but not because of an abort message. */
0
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    76
#define	SDO_DOWNLOAD_IN_PROGRESS 0x2 
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    77
#define	SDO_UPLOAD_IN_PROGRESS   0x3   
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    78
71
95cd3376cc9f compilator compatitibility
frdupin
parents: 0
diff changeset
    79
/* Status of the node during the SDO transfert : */
0
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    80
#define SDO_SERVER  0x1
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    81
#define SDO_CLIENT  0x2
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    82
#define SDO_UNKNOWN 0x3             
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    83
301
f4b64aa848e1 more fancy print_message for debug
etisserant
parents: 288
diff changeset
    84
/* SDOrx ccs: client command specifier */
f4b64aa848e1 more fancy print_message for debug
etisserant
parents: 288
diff changeset
    85
#define DOWNLOAD_SEGMENT_REQUEST     0
f4b64aa848e1 more fancy print_message for debug
etisserant
parents: 288
diff changeset
    86
#define INITIATE_DOWNLOAD_REQUEST    1
f4b64aa848e1 more fancy print_message for debug
etisserant
parents: 288
diff changeset
    87
#define INITIATE_UPLOAD_REQUEST      2
f4b64aa848e1 more fancy print_message for debug
etisserant
parents: 288
diff changeset
    88
#define UPLOAD_SEGMENT_REQUEST       3
f4b64aa848e1 more fancy print_message for debug
etisserant
parents: 288
diff changeset
    89
#define ABORT_TRANSFER_REQUEST       4
f4b64aa848e1 more fancy print_message for debug
etisserant
parents: 288
diff changeset
    90
f4b64aa848e1 more fancy print_message for debug
etisserant
parents: 288
diff changeset
    91
/* SDOtx scs: server command specifier */
f4b64aa848e1 more fancy print_message for debug
etisserant
parents: 288
diff changeset
    92
#define UPLOAD_SEGMENT_RESPONSE      0
f4b64aa848e1 more fancy print_message for debug
etisserant
parents: 288
diff changeset
    93
#define DOWNLOAD_SEGMENT_RESPONSE    1
f4b64aa848e1 more fancy print_message for debug
etisserant
parents: 288
diff changeset
    94
#define INITIATE_DOWNLOAD_RESPONSE   3
f4b64aa848e1 more fancy print_message for debug
etisserant
parents: 288
diff changeset
    95
#define INITIATE_UPLOAD_RESPONSE     2
f4b64aa848e1 more fancy print_message for debug
etisserant
parents: 288
diff changeset
    96
#define ABORT_TRANSFER_REQUEST       4
f4b64aa848e1 more fancy print_message for debug
etisserant
parents: 288
diff changeset
    97
f4b64aa848e1 more fancy print_message for debug
etisserant
parents: 288
diff changeset
    98
0
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
    99
/*  Function Codes 
71
95cd3376cc9f compilator compatitibility
frdupin
parents: 0
diff changeset
   100
   ---------------
0
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   101
  defined in the canopen DS301 
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   102
*/
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   103
#define NMT	   0x0
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   104
#define SYNC       0x1
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   105
#define TIME_STAMP 0x2
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   106
#define PDO1tx     0x3
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   107
#define PDO1rx     0x4
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   108
#define PDO2tx     0x5
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   109
#define PDO2rx     0x6
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   110
#define PDO3tx     0x7
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   111
#define PDO3rx     0x8
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   112
#define PDO4tx     0x9
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   113
#define PDO4rx     0xA
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   114
#define SDOtx      0xB
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   115
#define SDOrx      0xC
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   116
#define NODE_GUARD 0xE
343
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents: 320
diff changeset
   117
#define LSS 	   0xF
0
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   118
71
95cd3376cc9f compilator compatitibility
frdupin
parents: 0
diff changeset
   119
/* NMT Command Specifier, sent by master to change a slave state */
95cd3376cc9f compilator compatitibility
frdupin
parents: 0
diff changeset
   120
/* ------------------------------------------------------------- */
0
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   121
/* Should not be modified */
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   122
#define NMT_Start_Node              0x01
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   123
#define NMT_Stop_Node               0x02
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   124
#define NMT_Enter_PreOperational    0x80
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   125
#define NMT_Reset_Node              0x81
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   126
#define NMT_Reset_Comunication      0x82
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   127
343
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents: 320
diff changeset
   128
/** Status of the LSS transmission
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents: 320
diff changeset
   129
 */
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents: 320
diff changeset
   130
#define LSS_RESET                0x0      /* Transmission not started. Init state. */
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents: 320
diff changeset
   131
#define LSS_FINISHED             0x1      /* data are available */                          
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents: 320
diff changeset
   132
#define	LSS_ABORTED_INTERNAL     0x2     /* Aborted but not because of an abort message. */
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents: 320
diff changeset
   133
#define	LSS_TRANS_IN_PROGRESS 	 0x3    
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents: 320
diff changeset
   134
71
95cd3376cc9f compilator compatitibility
frdupin
parents: 0
diff changeset
   135
/* constantes used in the different state machines */
95cd3376cc9f compilator compatitibility
frdupin
parents: 0
diff changeset
   136
/* ----------------------------------------------- */
0
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   137
/* Must not be modified */
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   138
#define state1  0x01
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   139
#define state2  0x02
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   140
#define state3  0x03
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   141
#define state4  0x04
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   142
#define state5  0x05
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   143
#define state6  0x06
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   144
#define state7  0x07
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   145
#define state8  0x08
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   146
#define state9  0x09
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   147
#define state10 0x0A
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   148
#define state11 0x0B
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   149
71
95cd3376cc9f compilator compatitibility
frdupin
parents: 0
diff changeset
   150
#endif /* __def_h__ */
0
4472ee7c6c3e Commit a new cvs repo.
etisserant
parents:
diff changeset
   151