include/lss.h
author Robert Lehmann <robert.lehmann@sitec-systems.de>
Tue, 28 Jul 2015 16:36:55 +0200
changeset 793 72e9e1064432
parent 529 c171e11707c5
child 801 32d146b64a35
permissions -rw-r--r--
timers_unix: Fix termination problem of WaitReceiveTaskEnd

The function pthread_kill sends the Signal thread and to the own process.
If you use this construct than the application which calls uses the
canfestival api will terminate at the call of canClose. To avoid that
use pthread_cancel instead of pthread_kill. To use the pthread_cancel call
you need to set the cancel ability in the thread function. That means
you need to call pthread_setcancelstate and pthread_setcanceltype.
For the termination of the thread at any time it is important to set the
cancel type to PTHREAD_CANCEL_ASYNCHRONOUS.
343
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
     1
/*
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
     2
This file is part of CanFestival, a library implementing CanOpen Stack. 
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
     3
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
     4
Copyright (C): Jorge Berzosa
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
     5
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
     6
See COPYING file for copyrights details.
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
     7
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
     8
This library is free software; you can redistribute it and/or
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
     9
modify it under the terms of the GNU Lesser General Public
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
    10
License as published by the Free Software Foundation; either
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
    11
version 2.1 of the License, or (at your option) any later version.
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
    12
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
    13
This library is distributed in the hope that it will be useful,
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
    14
but WITHOUT ANY WARRANTY; without even the implied warranty of
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
    15
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
    16
Lesser General Public License for more details.
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
    17
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
    18
You should have received a copy of the GNU Lesser General Public
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
    19
License along with this library; if not, write to the Free Software
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
    20
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
    21
*/
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
    22
529
c171e11707c5 Second time, Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 528
diff changeset
    23
/** @defgroup lss Layer Setting Services Object
c171e11707c5 Second time, Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 528
diff changeset
    24
 * @brief LSS offers the possibility to inquire and change the settings of certain parameters of the local layers on
c171e11707c5 Second time, Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 528
diff changeset
    25
 * a CANopen module with LSS Slave capabilities by a CANopen module with LSS Master capabilities via the
c171e11707c5 Second time, Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 528
diff changeset
    26
 * CAN Network.
c171e11707c5 Second time, Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 528
diff changeset
    27
 * The following parameters can be inquired and/or changed by the use of LSS:
c171e11707c5 Second time, Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 528
diff changeset
    28
 *               - Node-ID of the CANopen Slave
c171e11707c5 Second time, Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 528
diff changeset
    29
 *               - Bit timing parameters of the physical layer (baud rate)
c171e11707c5 Second time, Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 528
diff changeset
    30
 *               - LSS address (/2/ Identity Object, Index 1018H)
528
0a30e161d63c Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 517
diff changeset
    31
 *  @ingroup comobj
0a30e161d63c Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 517
diff changeset
    32
 */
0a30e161d63c Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 517
diff changeset
    33
					 
343
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
    34
#ifndef __LSS_h__
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
    35
#define __LSS_h__
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
    36
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
    37
#define SLSS_ADRESS	0x7E4
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
    38
#define MLSS_ADRESS	0x7E5
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
    39
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
    40
#define SDELAY_OFF		0
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
    41
#define SDELAY_FIRST 	1
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
    42
#define SDELAY_SECOND 	2
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
    43
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
    44
#define LSS_WAITING_MODE 0
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
    45
#define LSS_CONFIGURATION_MODE 1
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
    46
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
    47
/* Switch mode services */
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
    48
#define LSS_SM_GLOBAL 				 4
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
    49
#define LSS_SM_SELECTIVE_VENDOR 	64
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
    50
#define LSS_SM_SELECTIVE_PRODUCT 	65
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
    51
#define LSS_SM_SELECTIVE_REVISION 	66
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
    52
#define LSS_SM_SELECTIVE_SERIAL 	67
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
    53
#define LSS_SM_SELECTIVE_RESP 		68
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
    54
/* Configuration services */
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
    55
#define LSS_CONF_NODE_ID 			17
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
    56
#define LSS_CONF_BIT_TIMING 		19
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
    57
#define LSS_CONF_ACT_BIT_TIMING 	21
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
    58
#define LSS_CONF_STORE 				23
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
    59
/* Inquire services */
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
    60
#define LSS_INQ_VENDOR_ID 		90
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
    61
#define LSS_INQ_PRODUCT_CODE 	91
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
    62
#define LSS_INQ_REV_NUMBER 		92
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
    63
#define LSS_INQ_SERIAL_NUMBER 	93
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
    64
#define LSS_INQ_NODE_ID 		94
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
    65
/* Identification services */
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
    66
#define LSS_IDENT_REMOTE_VENDOR 		70
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
    67
#define LSS_IDENT_REMOTE_PRODUCT 		71
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
    68
#define LSS_IDENT_REMOTE_REV_LOW 		72
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
    69
#define LSS_IDENT_REMOTE_REV_HIGH 		73
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
    70
#define LSS_IDENT_REMOTE_SERIAL_LOW 	74
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
    71
#define LSS_IDENT_REMOTE_SERIAL_HIGH 	75
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
    72
#define LSS_IDENT_REMOTE_NON_CONF 		76
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
    73
#define LSS_IDENT_SLAVE 				79
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
    74
#define LSS_IDENT_NON_CONF_SLAVE 		80
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
    75
#define LSS_IDENT_FASTSCAN				81
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
    76
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
    77
/*FastScan State Machine*/
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
    78
#define LSS_FS_RESET	0
361
2220813498f2 Added FastScan support to the LSS services.
groke6
parents: 343
diff changeset
    79
#define LSS_FS_PROCESSING 1
2220813498f2 Added FastScan support to the LSS services.
groke6
parents: 343
diff changeset
    80
#define LSS_FS_CONFIRMATION 2
343
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
    81
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
    82
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
    83
typedef void (*LSSCallback_t)(CO_Data* d, UNS8 command); 
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
    84
381
854c43cdc24a added TestMasterSlaveLSS. LSS protocol revised.
groke6
parents: 361
diff changeset
    85
typedef void (*lss_StoreConfiguration_t)(CO_Data* d,UNS8*,UNS8*);
343
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
    86
//void _lss_StoreConfiguration(UNS8 *error, UNS8 *spec_error);
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
    87
384
83793fc7ce48 added canChangeBaudRate to the driver interface
groke6
parents: 381
diff changeset
    88
//typedef void (*lss_ChangeBaudRate_t)(CO_Data* d,char*);
343
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
    89
//void _lss_ChangeBaudRate(char *BaudRate);
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
    90
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
    91
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
    92
struct struct_lss_transfer;
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
    93
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
    94
//#include "timer.h"
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
    95
517
003679edc437 FastScan review
groke6
parents: 405
diff changeset
    96
#ifdef CO_ENABLE_LSS_FS
003679edc437 FastScan review
groke6
parents: 405
diff changeset
    97
struct struct_lss_fs_transfer {
003679edc437 FastScan review
groke6
parents: 405
diff changeset
    98
	UNS32 FS_LSS_ID[4];
003679edc437 FastScan review
groke6
parents: 405
diff changeset
    99
	UNS8 FS_BitChecked[4];
003679edc437 FastScan review
groke6
parents: 405
diff changeset
   100
};
003679edc437 FastScan review
groke6
parents: 405
diff changeset
   101
003679edc437 FastScan review
groke6
parents: 405
diff changeset
   102
typedef struct struct_lss_fs_transfer lss_fs_transfer_t;
003679edc437 FastScan review
groke6
parents: 405
diff changeset
   103
#endif
003679edc437 FastScan review
groke6
parents: 405
diff changeset
   104
343
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
   105
/* The Transfer structure
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
   106
* Used to store the different fields of the internal state of the LSS  
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
   107
*/
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
   108
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
   109
struct struct_lss_transfer {
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
   110
  UNS8          state;      /* state of the transmission : Takes the values LSS_... */
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
   111
  UNS8 			command;     /* the LSS command of the transmision */
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
   112
  UNS8			mode;       /* LSS mode */
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
   113
  
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
   114
  UNS32 		dat1;		/* the data from the last msg received */
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
   115
  UNS8			dat2; 
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
   116
  
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
   117
  UNS8 nodeID;              /* the new nodeid stored to update the nodeid when switching to LSS operational*/
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
   118
  UNS8 addr_sel_match;    	/* the matching mask for the LSS Switch Mode Selective service */
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
   119
  UNS8 addr_ident_match;    /* the matching mask for the LSS Identify Remote Slaves service*/
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
   120
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
   121
  char *baudRate;           /* the new baudrate stored to update the node baudrate when a Activate Bit 
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
   122
  							 * Timing Parameters is received*/
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
   123
  UNS16 switchDelay;		/* the period of the two delay */
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
   124
  UNS8  switchDelayState;   /* the state machine for the switchDelay */
405
487b37176423 Changed CAN_HANDLE into CAN_PORT in data.h and lss.h. More semanticaly correct.
etisserant
parents: 384
diff changeset
   125
  CAN_PORT canHandle_t;
381
854c43cdc24a added TestMasterSlaveLSS. LSS protocol revised.
groke6
parents: 361
diff changeset
   126
    
854c43cdc24a added TestMasterSlaveLSS. LSS protocol revised.
groke6
parents: 361
diff changeset
   127
                              /* Time counters to implement a timeout in milliseconds.*/
854c43cdc24a added TestMasterSlaveLSS. LSS protocol revised.
groke6
parents: 361
diff changeset
   128
  TIMER_HANDLE timerMSG;	  /* timerMSG is automatically incremented whenever 
343
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
   129
                              * the lss state is in LSS_TRANS_IN_PROGRESS, and reseted to 0 
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
   130
                              * when the response LSS have been received.
381
854c43cdc24a added TestMasterSlaveLSS. LSS protocol revised.
groke6
parents: 361
diff changeset
   131
                              */
854c43cdc24a added TestMasterSlaveLSS. LSS protocol revised.
groke6
parents: 361
diff changeset
   132
                             
854c43cdc24a added TestMasterSlaveLSS. LSS protocol revised.
groke6
parents: 361
diff changeset
   133
  TIMER_HANDLE timerSDELAY;	  /* timerSDELAY is automatically incremented whenever 
343
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
   134
                              * the lss switchDelayState is in SDELAY_FIRST or SDELAY_SECOND, and reseted to 0 
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
   135
                              * when the two periods have been expired.
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
   136
                              */
381
854c43cdc24a added TestMasterSlaveLSS. LSS protocol revised.
groke6
parents: 361
diff changeset
   137
                              
343
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
   138
  LSSCallback_t Callback;   /* The user callback func to be called at LSS transaction end */
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
   139
  
361
2220813498f2 Added FastScan support to the LSS services.
groke6
parents: 343
diff changeset
   140
  UNS8 LSSanswer;			/* stores if a message has been received during a timer period */
381
854c43cdc24a added TestMasterSlaveLSS. LSS protocol revised.
groke6
parents: 361
diff changeset
   141
854c43cdc24a added TestMasterSlaveLSS. LSS protocol revised.
groke6
parents: 361
diff changeset
   142
#ifdef CO_ENABLE_LSS_FS 
361
2220813498f2 Added FastScan support to the LSS services.
groke6
parents: 343
diff changeset
   143
  UNS32 IDNumber;			/* in the master, the LSS address parameter which it currently tries to identify.
2220813498f2 Added FastScan support to the LSS services.
groke6
parents: 343
diff changeset
   144
  							 * in the slave, the LSS address parameter which is being checked (LSS-ID[sub]). */
2220813498f2 Added FastScan support to the LSS services.
groke6
parents: 343
diff changeset
   145
  UNS8 BitChecked;			/* bits of the current IDNumber that are currently checked */
2220813498f2 Added FastScan support to the LSS services.
groke6
parents: 343
diff changeset
   146
  UNS8 LSSSub;				/* which part of the LSS-ID is currently checked in IDNumber */
2220813498f2 Added FastScan support to the LSS services.
groke6
parents: 343
diff changeset
   147
  UNS8 LSSNext;				/* which LSSSub value will be used in the next request */
2220813498f2 Added FastScan support to the LSS services.
groke6
parents: 343
diff changeset
   148
  UNS8 LSSPos;				/* in the slave, which part of the LSS-ID is currently processed*/
2220813498f2 Added FastScan support to the LSS services.
groke6
parents: 343
diff changeset
   149
  UNS8 FastScan_SM;			/* the state machine for the FastScan protocol */
381
854c43cdc24a added TestMasterSlaveLSS. LSS protocol revised.
groke6
parents: 361
diff changeset
   150
  TIMER_HANDLE timerFS;		/* timerFS is automatically incremented when the FastScan service
854c43cdc24a added TestMasterSlaveLSS. LSS protocol revised.
groke6
parents: 361
diff changeset
   151
  							 * has been requested and reseted to 0 when the protocol ends.
854c43cdc24a added TestMasterSlaveLSS. LSS protocol revised.
groke6
parents: 361
diff changeset
   152
                              */
517
003679edc437 FastScan review
groke6
parents: 405
diff changeset
   153
#ifdef CO_ENABLE_LSS_FS
003679edc437 FastScan review
groke6
parents: 405
diff changeset
   154
  lss_fs_transfer_t lss_fs_transfer;
003679edc437 FastScan review
groke6
parents: 405
diff changeset
   155
#endif
003679edc437 FastScan review
groke6
parents: 405
diff changeset
   156
  
381
854c43cdc24a added TestMasterSlaveLSS. LSS protocol revised.
groke6
parents: 361
diff changeset
   157
#endif                           
343
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
   158
};
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
   159
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
   160
#ifdef CO_ENABLE_LSS
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
   161
typedef struct struct_lss_transfer lss_transfer_t;
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
   162
#else
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
   163
typedef UNS8 lss_transfer_t;
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
   164
#endif
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
   165
  
517
003679edc437 FastScan review
groke6
parents: 405
diff changeset
   166
003679edc437 FastScan review
groke6
parents: 405
diff changeset
   167
343
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
   168
void startLSS(CO_Data* d);
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
   169
void stopLSS(CO_Data* d);
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
   170
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
   171
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
   172
/** transmit a LSS message 
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
   173
 * command is the LSS command specifier
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
   174
 * dat1 and dat2 are pointers to optional data (depend on command)
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
   175
 * return sendLSSMessage(d,command,dat1,dat2)
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
   176
 */
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
   177
UNS8 sendLSS (CO_Data* d, UNS8 command,void *dat1, void *dat2);
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
   178
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
   179
/** transmit a LSS message on CAN bus
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
   180
 * comamnd is the LSS command specifier
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
   181
 * bus_id is MLSS_ADRESS or SLSS_ADRESS depending in d->iam_a_slave. 
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
   182
 * dat1 and dat2 are pointers to optional data (depend on command).
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
   183
 * return canSend(bus_id,&m)
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
   184
 */
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
   185
 
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
   186
UNS8 sendLSSMessage(CO_Data* d, UNS8 command,  void *dat1, void *dat2);
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
   187
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
   188
/** This function is called when the node is receiving a Master LSS message (cob-id = 0x7E5).
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
   189
 *  - Check if there is a callback which will take care of the response. If not return 0 but does nothing.
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
   190
 *  - Stops the timer so the alarm wont raise an error.
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
   191
 *  - return 0 if OK
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
   192
 */
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
   193
UNS8 proceedLSS_Master (CO_Data* d, Message* m );
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
   194
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
   195
/** This function is called when the node is receiving a Slave LSS message (cob-id = 0x7E4).
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
   196
 *  - Call the callback function or send the response message depending on the LSS comand within m.
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
   197
 *  - return 0 if OK
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
   198
 */
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
   199
UNS8 proceedLSS_Slave (CO_Data* d, Message* m );
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
   200
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
   201
/** Used by the Master application to send a LSS command, WITHOUT response, to the slave. 
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
   202
 * command: the LSS command. LSS_...
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
   203
 * dat1 and dat2: pointers to optional data (depend on command).
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
   204
 * return sendLSS(d,command,dat1,dat2)
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
   205
 */
381
854c43cdc24a added TestMasterSlaveLSS. LSS protocol revised.
groke6
parents: 361
diff changeset
   206
//UNS8 configNetworkNode(CO_Data* d, UNS8 command, void *dat1, void* dat2);
343
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
   207
529
c171e11707c5 Second time, Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 528
diff changeset
   208
/** 
c171e11707c5 Second time, Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 528
diff changeset
   209
 * @ingroup lss
c171e11707c5 Second time, Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 528
diff changeset
   210
 * @brief Used by the Master application to send a LSS command, WITH response, to the slave. 
c171e11707c5 Second time, Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 528
diff changeset
   211
 * @param *d Pointer on a CAN object data structure
c171e11707c5 Second time, Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 528
diff changeset
   212
 * @param command
c171e11707c5 Second time, Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 528
diff changeset
   213
 * @param *dat1
c171e11707c5 Second time, Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 528
diff changeset
   214
 * @param *dat2
c171e11707c5 Second time, Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 528
diff changeset
   215
 * @param Callback The function Callback, which must be defined in the user code, is called at the
343
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
   216
 * end of the exchange (on succes or abort) and can be NULL.
529
c171e11707c5 Second time, Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 528
diff changeset
   217
 * @return sendLSS(d,command,dat1,dat2)
343
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
   218
 * The LSS_MSG_TIMER timer is started to control the timeout
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
   219
 */
381
854c43cdc24a added TestMasterSlaveLSS. LSS protocol revised.
groke6
parents: 361
diff changeset
   220
UNS8 configNetworkNode (CO_Data* d, UNS8 command, void *dat1, void* dat2, LSSCallback_t Callback);
343
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
   221
529
c171e11707c5 Second time, Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 528
diff changeset
   222
/**
c171e11707c5 Second time, Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 528
diff changeset
   223
 * @ingroup lss 
c171e11707c5 Second time, Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 528
diff changeset
   224
 * @brief Use this function after a configNetworkNode or configNetworkNodeCallBack to get the result.
c171e11707c5 Second time, Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 528
diff changeset
   225
 * @param *d Pointer on a CAN object data structure
c171e11707c5 Second time, Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 528
diff changeset
   226
 * @param command The LSS command (unused).
c171e11707c5 Second time, Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 528
diff changeset
   227
 * @param *dat1
c171e11707c5 Second time, Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 528
diff changeset
   228
 * @param *dat2
c171e11707c5 Second time, Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 528
diff changeset
   229
 * @return : 
c171e11707c5 Second time, Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 528
diff changeset
   230
 *          - LSS_RESET				// Transmission not started. Init state.
c171e11707c5 Second time, Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 528
diff changeset
   231
 *          - LSS_FINISHED			// data are available                           
c171e11707c5 Second time, Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 528
diff changeset
   232
 *          - LSS_ABORTED_INTERNAL	// Aborted but not because of an abort message. 
c171e11707c5 Second time, Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 528
diff changeset
   233
 *          - LSS_TRANS_IN_PROGRESS	// Data not yet available
c171e11707c5 Second time, Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 528
diff changeset
   234
 * @code
c171e11707c5 Second time, Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 528
diff changeset
   235
 * example:
c171e11707c5 Second time, Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 528
diff changeset
   236
 * UNS32 dat1;
c171e11707c5 Second time, Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 528
diff changeset
   237
 * UNS8 dat2;
c171e11707c5 Second time, Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 528
diff changeset
   238
 * res=configNetworkNodeCallBack(&_Data,LSS_INQ_NODE_ID,0,0,NULL); // inquire the nodeID
c171e11707c5 Second time, Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 528
diff changeset
   239
 * while (getConfigResultNetworkNode (&_Data, LSS_INQ_NODE_ID, &dat1, &dat2) != LSS_TRANS_IN_PROGRESS);
c171e11707c5 Second time, Re-write doxygen tags in headers files to generate User API documentation
greg
parents: 528
diff changeset
   240
 * @endcode
343
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
   241
*/
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
   242
UNS8 getConfigResultNetworkNode (CO_Data* d, UNS8 command, UNS32* dat1, UNS8* dat2);
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
   243
118c1cabd0b0 Primary LSS support, thanks to Jorge Berzosa.
etisserant
parents:
diff changeset
   244
#endif