00001
00005 #include <stdio.h>
00006 #include <bpm/bpm_messages.h>
00007 #include <bpm/bpm_process.h>
00008
00009
00010 int process_dipole( doublewf_t *sig, bpmconf_t *bpm, bpmcalib_t *cal, bpmproc_t *proc,
00011 bpmproc_t *trig, bpmproc_t *ampref, bpmproc_t *phaseref, unsigned int mode ) {
00012
00013 char msg[128];
00014
00015 if ( ! bpm || ! sig || ! cal || ! proc || ! trig || ! ampref || ! phaseref ) {
00016 bpm_error( "Invalid pointer arguments in process_dipole(...)",
00017 __FILE__, __LINE__ );
00018 return BPM_FAILURE;
00019 }
00020
00021 if ( process_waveform( sig, bpm, proc, trig, mode ) == BPM_FAILURE ) {
00022 sprintf( msg, "Unable to process waveform for BPM %s in process_dipole(...)", bpm->name );
00023 bpm_error( msg, __FILE__, __LINE__ );
00024 return BPM_FAILURE;
00025 }
00026
00027
00028 if ( correct_gain( proc, cal, mode ) == BPM_FAILURE ) {
00029 sprintf( msg, "Unable to correct gains for BPM %s in process_dipole(...)", bpm->name );
00030 bpm_error( msg, __FILE__, __LINE__ );
00031 return BPM_FAILURE;
00032 }
00033
00034 if ( postprocess_waveform( bpm, proc, cal, ampref, phaseref, mode ) == BPM_FAILURE ) {
00035 sprintf( msg, "Unable to handle post processing for BPM %s in process_dipole(...)", bpm->name );
00036 bpm_error( msg, __FILE__, __LINE__ );
00037 return BPM_FAILURE;
00038 }
00039
00040 return BPM_SUCCESS;
00041 }
00042
00043