00001 00005 #include <bpm/bpm_messages.h> 00006 #include <bpm/bpm_process.h> 00007 00008 int get_IQ( double amp, double phase, double refamp, double refphase, 00009 double *Q, double *I ) { 00010 00011 if( ! Q || ! I ) { 00012 bpm_error( "Invalid pointer arguments in get_IQ(...)", 00013 __FILE__, __LINE__ ); 00014 return BPM_FAILURE; 00015 } 00016 00017 *I = -DBL_MAX; 00018 *Q = -DBL_MAX; 00019 00020 if( refamp > 0. ) { 00021 *I = amp / refamp * cos( phase - refphase ); 00022 *Q = amp / refamp * sin( phase - refphase ); 00023 } else { 00024 bpm_warning( "Reference amplitude is 0 in get_IQ(...)", 00025 __FILE__, __LINE__ ); 00026 return BPM_FAILURE; 00027 } 00028 00029 return BPM_SUCCESS; 00030 }