mirror of
https://github.com/nasa/trick.git
synced 2024-12-24 23:36:43 +00:00
19025d77ad
Reorganized. Created a new top level include directory that will hold all of Trick's header files. Moved all of the Trick headers to this directory. Created a libexec directory that holds all of the executables that users don't need to execute directly. Changed all of the executables remaining in bin to start with "trick-". In the sim_services directories changed all source files to find the Trick headers in their new location. Since all of the include files are gone in sim_services, removed the src directories as well, moving all of the source files up a level. Moved the makefiles, docs, man, and other architecture independent files into a top level share directory. Renamed lib_${TRICK_HOST_CPU} to lib64 or lib depending on the platform we're currently on. refs #63
89 lines
2.4 KiB
C++
89 lines
2.4 KiB
C++
|
|
#include <iostream>
|
|
#include <string.h>
|
|
|
|
#include "trick/VariableServer.hh"
|
|
#include "trick/variable_server_sync_types.h"
|
|
#include "trick/exec_proto.h"
|
|
#include "trick/realtimesync_proto.h"
|
|
|
|
int Trick::VariableServerThread::copy_data_freeze() {
|
|
|
|
int ret = 0 ;
|
|
long long curr_frame = exec_get_freeze_frame_count() ;
|
|
long long temp_frame ;
|
|
|
|
if ( enabled and copy_mode == VS_COPY_TOP_OF_FRAME) {
|
|
temp_frame = curr_frame % freeze_frame_multiple ;
|
|
if ( temp_frame == freeze_frame_offset ) {
|
|
copy_sim_data() ;
|
|
if ( !pause_cmd and write_mode == VS_WRITE_WHEN_COPIED and is_real_time()) {
|
|
ret = write_data() ;
|
|
if ( ret < 0 ) {
|
|
exit_cmd = true ;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return ret ;
|
|
}
|
|
|
|
int Trick::VariableServerThread::copy_data_freeze_scheduled(long long curr_tics) {
|
|
|
|
int ret = 0 ;
|
|
|
|
if ( enabled and copy_mode == VS_COPY_SCHEDULED) {
|
|
if ( freeze_next_tics <= curr_tics ) {
|
|
copy_sim_data() ;
|
|
if ( !pause_cmd and write_mode == VS_WRITE_WHEN_COPIED and is_real_time()) {
|
|
ret = write_data() ;
|
|
if ( ret < 0 ) {
|
|
exit_cmd = true ;
|
|
}
|
|
}
|
|
freeze_next_tics = curr_tics + cycle_tics ;
|
|
}
|
|
}
|
|
return ret ;
|
|
}
|
|
|
|
int Trick::VariableServerThread::copy_data_scheduled(long long curr_tics) {
|
|
|
|
int ret = 0 ;
|
|
|
|
if ( enabled and copy_mode == VS_COPY_SCHEDULED) {
|
|
if ( next_tics <= curr_tics ) {
|
|
copy_sim_data() ;
|
|
if ( !pause_cmd and write_mode == VS_WRITE_WHEN_COPIED and is_real_time()) {
|
|
ret = write_data() ;
|
|
if ( ret < 0 ) {
|
|
exit_cmd = true ;
|
|
}
|
|
}
|
|
next_tics = curr_tics + cycle_tics ;
|
|
}
|
|
}
|
|
return ret ;
|
|
}
|
|
|
|
int Trick::VariableServerThread::copy_data_top() {
|
|
|
|
int ret = 0 ;
|
|
long long curr_frame = exec_get_frame_count() ;
|
|
long long temp_frame ;
|
|
|
|
if ( enabled and copy_mode == VS_COPY_TOP_OF_FRAME) {
|
|
temp_frame = curr_frame % frame_multiple ;
|
|
if ( temp_frame == frame_offset ) {
|
|
copy_sim_data() ;
|
|
if ( !pause_cmd and write_mode == VS_WRITE_WHEN_COPIED and is_real_time()) {
|
|
ret = write_data() ;
|
|
if ( ret < 0 ) {
|
|
exit_cmd = true ;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return ret ;
|
|
}
|