examples/DS401_Slave_Gui/TestSlaveGui.cpp
author Mongo
Thu, 13 Oct 2011 17:51:27 +0200
changeset 669 50da44ebaf00
parent 641 404a51700f40
permissions -rw-r--r--
Configuration manager with DCF in object 0x1F22 rewritten almost from scratch.
1. The boot-up message from a device starts a verification of entries
2. If all entries matches the node is started
3. If an entry differs the whole dcf is written and a save is done
4. A reset is send to the node
5. If several boot-up are received at the same time they will be managed one
by one thus only one free sdo client is needed for the whole process.
246
d635cfc520ee Added contribution from Nicolas GRANDEMANGE. DS-401 slave GUI based on wxwidget.
etisserant
parents:
diff changeset
     1
/*
d635cfc520ee Added contribution from Nicolas GRANDEMANGE. DS-401 slave GUI based on wxwidget.
etisserant
parents:
diff changeset
     2
This file is part of CanFestival, a library implementing CanOpen Stack. 
d635cfc520ee Added contribution from Nicolas GRANDEMANGE. DS-401 slave GUI based on wxwidget.
etisserant
parents:
diff changeset
     3
d635cfc520ee Added contribution from Nicolas GRANDEMANGE. DS-401 slave GUI based on wxwidget.
etisserant
parents:
diff changeset
     4
Copyright (C): Edouard TISSERANT and Francis DUPIN
d635cfc520ee Added contribution from Nicolas GRANDEMANGE. DS-401 slave GUI based on wxwidget.
etisserant
parents:
diff changeset
     5
d635cfc520ee Added contribution from Nicolas GRANDEMANGE. DS-401 slave GUI based on wxwidget.
etisserant
parents:
diff changeset
     6
See COPYING file for copyrights details.
d635cfc520ee Added contribution from Nicolas GRANDEMANGE. DS-401 slave GUI based on wxwidget.
etisserant
parents:
diff changeset
     7
d635cfc520ee Added contribution from Nicolas GRANDEMANGE. DS-401 slave GUI based on wxwidget.
etisserant
parents:
diff changeset
     8
This library is free software; you can redistribute it and/or
d635cfc520ee Added contribution from Nicolas GRANDEMANGE. DS-401 slave GUI based on wxwidget.
etisserant
parents:
diff changeset
     9
modify it under the terms of the GNU Lesser General Public
d635cfc520ee Added contribution from Nicolas GRANDEMANGE. DS-401 slave GUI based on wxwidget.
etisserant
parents:
diff changeset
    10
License as published by the Free Software Foundation; either
d635cfc520ee Added contribution from Nicolas GRANDEMANGE. DS-401 slave GUI based on wxwidget.
etisserant
parents:
diff changeset
    11
version 2.1 of the License, or (at your option) any later version.
d635cfc520ee Added contribution from Nicolas GRANDEMANGE. DS-401 slave GUI based on wxwidget.
etisserant
parents:
diff changeset
    12
d635cfc520ee Added contribution from Nicolas GRANDEMANGE. DS-401 slave GUI based on wxwidget.
etisserant
parents:
diff changeset
    13
This library is distributed in the hope that it will be useful,
d635cfc520ee Added contribution from Nicolas GRANDEMANGE. DS-401 slave GUI based on wxwidget.
etisserant
parents:
diff changeset
    14
but WITHOUT ANY WARRANTY; without even the implied warranty of
d635cfc520ee Added contribution from Nicolas GRANDEMANGE. DS-401 slave GUI based on wxwidget.
etisserant
parents:
diff changeset
    15
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
d635cfc520ee Added contribution from Nicolas GRANDEMANGE. DS-401 slave GUI based on wxwidget.
etisserant
parents:
diff changeset
    16
Lesser General Public License for more details.
d635cfc520ee Added contribution from Nicolas GRANDEMANGE. DS-401 slave GUI based on wxwidget.
etisserant
parents:
diff changeset
    17
d635cfc520ee Added contribution from Nicolas GRANDEMANGE. DS-401 slave GUI based on wxwidget.
etisserant
parents:
diff changeset
    18
You should have received a copy of the GNU Lesser General Public
d635cfc520ee Added contribution from Nicolas GRANDEMANGE. DS-401 slave GUI based on wxwidget.
etisserant
parents:
diff changeset
    19
License along with this library; if not, write to the Free Software
d635cfc520ee Added contribution from Nicolas GRANDEMANGE. DS-401 slave GUI based on wxwidget.
etisserant
parents:
diff changeset
    20
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
d635cfc520ee Added contribution from Nicolas GRANDEMANGE. DS-401 slave GUI based on wxwidget.
etisserant
parents:
diff changeset
    21
*/
d635cfc520ee Added contribution from Nicolas GRANDEMANGE. DS-401 slave GUI based on wxwidget.
etisserant
parents:
diff changeset
    22
d635cfc520ee Added contribution from Nicolas GRANDEMANGE. DS-401 slave GUI based on wxwidget.
etisserant
parents:
diff changeset
    23
#if defined(WIN32) && !defined(__CYGWIN__)
382
860e858685d3 Cleaned re-indented code of DS401_Slave_Gui
etisserant
parents: 331
diff changeset
    24
#include <windows.h>
641
404a51700f40 CHANGED: - moved wxwidget header
Christian Taedcke <Christian.Taedcke@ica-traffic.de>
parents: 458
diff changeset
    25
#include "getopt.h"
246
d635cfc520ee Added contribution from Nicolas GRANDEMANGE. DS-401 slave GUI based on wxwidget.
etisserant
parents:
diff changeset
    26
#else
382
860e858685d3 Cleaned re-indented code of DS401_Slave_Gui
etisserant
parents: 331
diff changeset
    27
#include <stdio.h>
860e858685d3 Cleaned re-indented code of DS401_Slave_Gui
etisserant
parents: 331
diff changeset
    28
#include <string.h>
860e858685d3 Cleaned re-indented code of DS401_Slave_Gui
etisserant
parents: 331
diff changeset
    29
#include <unistd.h>
860e858685d3 Cleaned re-indented code of DS401_Slave_Gui
etisserant
parents: 331
diff changeset
    30
#include <stdlib.h>
860e858685d3 Cleaned re-indented code of DS401_Slave_Gui
etisserant
parents: 331
diff changeset
    31
#include <signal.h>
246
d635cfc520ee Added contribution from Nicolas GRANDEMANGE. DS-401 slave GUI based on wxwidget.
etisserant
parents:
diff changeset
    32
#endif
d635cfc520ee Added contribution from Nicolas GRANDEMANGE. DS-401 slave GUI based on wxwidget.
etisserant
parents:
diff changeset
    33
641
404a51700f40 CHANGED: - moved wxwidget header
Christian Taedcke <Christian.Taedcke@ica-traffic.de>
parents: 458
diff changeset
    34
404a51700f40 CHANGED: - moved wxwidget header
Christian Taedcke <Christian.Taedcke@ica-traffic.de>
parents: 458
diff changeset
    35
#include <wx/wxprec.h>
404a51700f40 CHANGED: - moved wxwidget header
Christian Taedcke <Christian.Taedcke@ica-traffic.de>
parents: 458
diff changeset
    36
#include <wx/wx.h>
404a51700f40 CHANGED: - moved wxwidget header
Christian Taedcke <Christian.Taedcke@ica-traffic.de>
parents: 458
diff changeset
    37
#include <wx/textctrl.h>
404a51700f40 CHANGED: - moved wxwidget header
Christian Taedcke <Christian.Taedcke@ica-traffic.de>
parents: 458
diff changeset
    38
#include <iostream>
404a51700f40 CHANGED: - moved wxwidget header
Christian Taedcke <Christian.Taedcke@ica-traffic.de>
parents: 458
diff changeset
    39
404a51700f40 CHANGED: - moved wxwidget header
Christian Taedcke <Christian.Taedcke@ica-traffic.de>
parents: 458
diff changeset
    40
404a51700f40 CHANGED: - moved wxwidget header
Christian Taedcke <Christian.Taedcke@ica-traffic.de>
parents: 458
diff changeset
    41
246
d635cfc520ee Added contribution from Nicolas GRANDEMANGE. DS-401 slave GUI based on wxwidget.
etisserant
parents:
diff changeset
    42
//#include <can_driver.h>
d635cfc520ee Added contribution from Nicolas GRANDEMANGE. DS-401 slave GUI based on wxwidget.
etisserant
parents:
diff changeset
    43
//#include <timers_driver.h>
382
860e858685d3 Cleaned re-indented code of DS401_Slave_Gui
etisserant
parents: 331
diff changeset
    44
extern "C"
860e858685d3 Cleaned re-indented code of DS401_Slave_Gui
etisserant
parents: 331
diff changeset
    45
{
860e858685d3 Cleaned re-indented code of DS401_Slave_Gui
etisserant
parents: 331
diff changeset
    46
#include "canfestival.h"
860e858685d3 Cleaned re-indented code of DS401_Slave_Gui
etisserant
parents: 331
diff changeset
    47
}
246
d635cfc520ee Added contribution from Nicolas GRANDEMANGE. DS-401 slave GUI based on wxwidget.
etisserant
parents:
diff changeset
    48
#include "CallBack.h"
d635cfc520ee Added contribution from Nicolas GRANDEMANGE. DS-401 slave GUI based on wxwidget.
etisserant
parents:
diff changeset
    49
#include "TestSlaveGui.h"
d635cfc520ee Added contribution from Nicolas GRANDEMANGE. DS-401 slave GUI based on wxwidget.
etisserant
parents:
diff changeset
    50
#include "main.h"
d635cfc520ee Added contribution from Nicolas GRANDEMANGE. DS-401 slave GUI based on wxwidget.
etisserant
parents:
diff changeset
    51
382
860e858685d3 Cleaned re-indented code of DS401_Slave_Gui
etisserant
parents: 331
diff changeset
    52
extern wxTextCtrl *textLog;
860e858685d3 Cleaned re-indented code of DS401_Slave_Gui
etisserant
parents: 331
diff changeset
    53
extern int node_id_ext;
246
d635cfc520ee Added contribution from Nicolas GRANDEMANGE. DS-401 slave GUI based on wxwidget.
etisserant
parents:
diff changeset
    54
d635cfc520ee Added contribution from Nicolas GRANDEMANGE. DS-401 slave GUI based on wxwidget.
etisserant
parents:
diff changeset
    55
//***************************  INIT  *****************************************
382
860e858685d3 Cleaned re-indented code of DS401_Slave_Gui
etisserant
parents: 331
diff changeset
    56
void
860e858685d3 Cleaned re-indented code of DS401_Slave_Gui
etisserant
parents: 331
diff changeset
    57
InitNodes (CO_Data * d, UNS32 id)
246
d635cfc520ee Added contribution from Nicolas GRANDEMANGE. DS-401 slave GUI based on wxwidget.
etisserant
parents:
diff changeset
    58
{
382
860e858685d3 Cleaned re-indented code of DS401_Slave_Gui
etisserant
parents: 331
diff changeset
    59
  //****************************** INITIALISATION SLAVE *******************************
860e858685d3 Cleaned re-indented code of DS401_Slave_Gui
etisserant
parents: 331
diff changeset
    60
  /* Defining the node Id */
860e858685d3 Cleaned re-indented code of DS401_Slave_Gui
etisserant
parents: 331
diff changeset
    61
  setNodeId (&ObjDict_Data, node_id_ext);
860e858685d3 Cleaned re-indented code of DS401_Slave_Gui
etisserant
parents: 331
diff changeset
    62
  /* init */
860e858685d3 Cleaned re-indented code of DS401_Slave_Gui
etisserant
parents: 331
diff changeset
    63
  setState (&ObjDict_Data, Initialisation);
246
d635cfc520ee Added contribution from Nicolas GRANDEMANGE. DS-401 slave GUI based on wxwidget.
etisserant
parents:
diff changeset
    64
}
d635cfc520ee Added contribution from Nicolas GRANDEMANGE. DS-401 slave GUI based on wxwidget.
etisserant
parents:
diff changeset
    65
454
bc000083297a - add RTAI support
greg
parents: 382
diff changeset
    66
/***************************  EXIT  *****************************************/
bc000083297a - add RTAI support
greg
parents: 382
diff changeset
    67
void Exit(CO_Data* d, UNS32 id)
bc000083297a - add RTAI support
greg
parents: 382
diff changeset
    68
{
bc000083297a - add RTAI support
greg
parents: 382
diff changeset
    69
  	setState (&ObjDict_Data, Stopped);
bc000083297a - add RTAI support
greg
parents: 382
diff changeset
    70
	canClose (&ObjDict_Data);
bc000083297a - add RTAI support
greg
parents: 382
diff changeset
    71
}
246
d635cfc520ee Added contribution from Nicolas GRANDEMANGE. DS-401 slave GUI based on wxwidget.
etisserant
parents:
diff changeset
    72
//****************************************************************************
d635cfc520ee Added contribution from Nicolas GRANDEMANGE. DS-401 slave GUI based on wxwidget.
etisserant
parents:
diff changeset
    73
//***************************  MAIN  *****************************************
d635cfc520ee Added contribution from Nicolas GRANDEMANGE. DS-401 slave GUI based on wxwidget.
etisserant
parents:
diff changeset
    74
//****************************************************************************
382
860e858685d3 Cleaned re-indented code of DS401_Slave_Gui
etisserant
parents: 331
diff changeset
    75
int
860e858685d3 Cleaned re-indented code of DS401_Slave_Gui
etisserant
parents: 331
diff changeset
    76
main_can (s_BOARD SlaveBoard, char *LibraryPath)
246
d635cfc520ee Added contribution from Nicolas GRANDEMANGE. DS-401 slave GUI based on wxwidget.
etisserant
parents:
diff changeset
    77
{
458
a3906286b09b add Exit function to DS401SlaveGui, change StopTimerLoop's arg and add TimerCleanup function in timers_win32
greg
parents: 454
diff changeset
    78
#if !defined(WIN32) && !defined(__CYGWIN__)
641
404a51700f40 CHANGED: - moved wxwidget header
Christian Taedcke <Christian.Taedcke@ica-traffic.de>
parents: 458
diff changeset
    79
	//TimerInit();
404a51700f40 CHANGED: - moved wxwidget header
Christian Taedcke <Christian.Taedcke@ica-traffic.de>
parents: 458
diff changeset
    80
#endif	
458
a3906286b09b add Exit function to DS401SlaveGui, change StopTimerLoop's arg and add TimerCleanup function in timers_win32
greg
parents: 454
diff changeset
    81
	TimerInit();
a3906286b09b add Exit function to DS401SlaveGui, change StopTimerLoop's arg and add TimerCleanup function in timers_win32
greg
parents: 454
diff changeset
    82
	printf ("Bus name: %s        Freq: %s       Driver: %s\n",
382
860e858685d3 Cleaned re-indented code of DS401_Slave_Gui
etisserant
parents: 331
diff changeset
    83
	  SlaveBoard.busname, SlaveBoard.baudrate, LibraryPath);
246
d635cfc520ee Added contribution from Nicolas GRANDEMANGE. DS-401 slave GUI based on wxwidget.
etisserant
parents:
diff changeset
    84
382
860e858685d3 Cleaned re-indented code of DS401_Slave_Gui
etisserant
parents: 331
diff changeset
    85
#ifndef NOT_USE_DYNAMIC_LOADING
860e858685d3 Cleaned re-indented code of DS401_Slave_Gui
etisserant
parents: 331
diff changeset
    86
  if (LoadCanDriver (LibraryPath) == NULL)
860e858685d3 Cleaned re-indented code of DS401_Slave_Gui
etisserant
parents: 331
diff changeset
    87
    *textLog << wxT ("Unable to load library\n");
860e858685d3 Cleaned re-indented code of DS401_Slave_Gui
etisserant
parents: 331
diff changeset
    88
#endif
860e858685d3 Cleaned re-indented code of DS401_Slave_Gui
etisserant
parents: 331
diff changeset
    89
  // Open CAN devices
246
d635cfc520ee Added contribution from Nicolas GRANDEMANGE. DS-401 slave GUI based on wxwidget.
etisserant
parents:
diff changeset
    90
382
860e858685d3 Cleaned re-indented code of DS401_Slave_Gui
etisserant
parents: 331
diff changeset
    91
  ObjDict_Data.heartbeatError = Call_heartbeatError;
860e858685d3 Cleaned re-indented code of DS401_Slave_Gui
etisserant
parents: 331
diff changeset
    92
  ObjDict_Data.initialisation = Call_initialisation;
860e858685d3 Cleaned re-indented code of DS401_Slave_Gui
etisserant
parents: 331
diff changeset
    93
  ObjDict_Data.preOperational = Call_preOperational;
860e858685d3 Cleaned re-indented code of DS401_Slave_Gui
etisserant
parents: 331
diff changeset
    94
  ObjDict_Data.operational = Call_operational;
860e858685d3 Cleaned re-indented code of DS401_Slave_Gui
etisserant
parents: 331
diff changeset
    95
  ObjDict_Data.stopped = Call_stopped;
860e858685d3 Cleaned re-indented code of DS401_Slave_Gui
etisserant
parents: 331
diff changeset
    96
  ObjDict_Data.post_sync = Call_post_sync;
860e858685d3 Cleaned re-indented code of DS401_Slave_Gui
etisserant
parents: 331
diff changeset
    97
  ObjDict_Data.post_TPDO = Call_post_TPDO;
860e858685d3 Cleaned re-indented code of DS401_Slave_Gui
etisserant
parents: 331
diff changeset
    98
  ObjDict_Data.storeODSubIndex = Call_storeODSubIndex;
246
d635cfc520ee Added contribution from Nicolas GRANDEMANGE. DS-401 slave GUI based on wxwidget.
etisserant
parents:
diff changeset
    99
382
860e858685d3 Cleaned re-indented code of DS401_Slave_Gui
etisserant
parents: 331
diff changeset
   100
  if (!canOpen (&SlaveBoard, &ObjDict_Data))
860e858685d3 Cleaned re-indented code of DS401_Slave_Gui
etisserant
parents: 331
diff changeset
   101
    {
860e858685d3 Cleaned re-indented code of DS401_Slave_Gui
etisserant
parents: 331
diff changeset
   102
      printf ("Cannot open Slave Board (%s,%s)\n", SlaveBoard.busname,
860e858685d3 Cleaned re-indented code of DS401_Slave_Gui
etisserant
parents: 331
diff changeset
   103
	      SlaveBoard.baudrate);
860e858685d3 Cleaned re-indented code of DS401_Slave_Gui
etisserant
parents: 331
diff changeset
   104
      return (1);
860e858685d3 Cleaned re-indented code of DS401_Slave_Gui
etisserant
parents: 331
diff changeset
   105
    }
295
25ff2fadff89 DS401 Slave GUI : Added command line interface, cleaned up parts of code, added EDS.
etisserant
parents: 246
diff changeset
   106
382
860e858685d3 Cleaned re-indented code of DS401_Slave_Gui
etisserant
parents: 331
diff changeset
   107
  StartTimerLoop (&InitNodes);
295
25ff2fadff89 DS401 Slave GUI : Added command line interface, cleaned up parts of code, added EDS.
etisserant
parents: 246
diff changeset
   108
382
860e858685d3 Cleaned re-indented code of DS401_Slave_Gui
etisserant
parents: 331
diff changeset
   109
  return 0;
246
d635cfc520ee Added contribution from Nicolas GRANDEMANGE. DS-401 slave GUI based on wxwidget.
etisserant
parents:
diff changeset
   110
}
d635cfc520ee Added contribution from Nicolas GRANDEMANGE. DS-401 slave GUI based on wxwidget.
etisserant
parents:
diff changeset
   111
382
860e858685d3 Cleaned re-indented code of DS401_Slave_Gui
etisserant
parents: 331
diff changeset
   112
void
860e858685d3 Cleaned re-indented code of DS401_Slave_Gui
etisserant
parents: 331
diff changeset
   113
stop_slave ()
860e858685d3 Cleaned re-indented code of DS401_Slave_Gui
etisserant
parents: 331
diff changeset
   114
{
454
bc000083297a - add RTAI support
greg
parents: 382
diff changeset
   115
  StopTimerLoop (&Exit);
bc000083297a - add RTAI support
greg
parents: 382
diff changeset
   116
  TimerCleanup();
382
860e858685d3 Cleaned re-indented code of DS401_Slave_Gui
etisserant
parents: 331
diff changeset
   117
  return;
246
d635cfc520ee Added contribution from Nicolas GRANDEMANGE. DS-401 slave GUI based on wxwidget.
etisserant
parents:
diff changeset
   118
}