cvt_V812.c

Go to the documentation of this file.
00001 
00002 
00010 
00011 
00013 // File includes
00015 #include <memory.h>
00016 #include <string.h>
00017 #include "cvt_V812.h"
00018 
00020 // File local defines
00022 
00023 
00025 // Static variables declaration
00027 
00029 
00034 
00035 static const cvt_reg_table CVT_V812_REG_TABLE[]=
00036 {
00037         { CVT_V812_THRESHOLD_0_ADD,             CVT_V812_THRESHOLD_AM,          CVT_V812_THRESHOLD_DATA_SIZE},                          
00038         { CVT_V812_THRESHOLD_1_ADD,             CVT_V812_THRESHOLD_AM,          CVT_V812_THRESHOLD_DATA_SIZE},                          
00039         { CVT_V812_THRESHOLD_2_ADD,             CVT_V812_THRESHOLD_AM,          CVT_V812_THRESHOLD_DATA_SIZE},                          
00040         { CVT_V812_THRESHOLD_3_ADD,             CVT_V812_THRESHOLD_AM,          CVT_V812_THRESHOLD_DATA_SIZE},                          
00041         { CVT_V812_THRESHOLD_4_ADD,             CVT_V812_THRESHOLD_AM,          CVT_V812_THRESHOLD_DATA_SIZE},                          
00042         { CVT_V812_THRESHOLD_5_ADD,             CVT_V812_THRESHOLD_AM,          CVT_V812_THRESHOLD_DATA_SIZE},                          
00043         { CVT_V812_THRESHOLD_6_ADD,             CVT_V812_THRESHOLD_AM,          CVT_V812_THRESHOLD_DATA_SIZE},                          
00044         { CVT_V812_THRESHOLD_7_ADD,             CVT_V812_THRESHOLD_AM,          CVT_V812_THRESHOLD_DATA_SIZE},                          
00045         { CVT_V812_THRESHOLD_8_ADD,             CVT_V812_THRESHOLD_AM,          CVT_V812_THRESHOLD_DATA_SIZE},                          
00046         { CVT_V812_THRESHOLD_9_ADD,             CVT_V812_THRESHOLD_AM,          CVT_V812_THRESHOLD_DATA_SIZE},                          
00047         { CVT_V812_THRESHOLD_10_ADD,    CVT_V812_THRESHOLD_AM,          CVT_V812_THRESHOLD_DATA_SIZE},                          
00048         { CVT_V812_THRESHOLD_11_ADD,    CVT_V812_THRESHOLD_AM,          CVT_V812_THRESHOLD_DATA_SIZE},                          
00049         { CVT_V812_THRESHOLD_12_ADD,    CVT_V812_THRESHOLD_AM,          CVT_V812_THRESHOLD_DATA_SIZE},                          
00050         { CVT_V812_THRESHOLD_13_ADD,    CVT_V812_THRESHOLD_AM,          CVT_V812_THRESHOLD_DATA_SIZE},                          
00051         { CVT_V812_THRESHOLD_14_ADD,    CVT_V812_THRESHOLD_AM,          CVT_V812_THRESHOLD_DATA_SIZE},                          
00052         { CVT_V812_THRESHOLD_15_ADD,    CVT_V812_THRESHOLD_AM,          CVT_V812_THRESHOLD_DATA_SIZE},                          
00053         { CVT_V812_OUT_WIDTH_0_7_ADD,   CVT_V812_OUT_WIDTH_0_7_AM,      CVT_V812_OUT_WIDTH_0_7_DATA_SIZE},                      
00054         { CVT_V812_OUT_WIDTH_8_15_ADD,  CVT_V812_OUT_WIDTH_8_15_AM,     CVT_V812_OUT_WIDTH_8_15_DATA_SIZE},                     
00055         { CVT_V812_DEAD_TIME_0_7_ADD,   CVT_V812_DEAD_TIME_0_7_AM,      CVT_V812_DEAD_TIME_0_7_DATA_SIZE},                      
00056         { CVT_V812_DEAD_TIME_8_15_ADD,  CVT_V812_DEAD_TIME_8_15_AM,     CVT_V812_DEAD_TIME_8_15_DATA_SIZE},                     
00057         { CVT_V812_MAJORITY_ADD,                CVT_V812_MAJORITY_AM,           CVT_V812_MAJORITY_DATA_SIZE},                           
00058         { CVT_V812_PATTERN_INHIBIT_ADD, CVT_V812_PATTERN_INHIBIT_AM,CVT_V812_PATTERN_INHIBIT_DATA_SIZE},                
00059         { CVT_V812_TEST_PULSE_ADD,              CVT_V812_TEST_PULSE_AM,         CVT_V812_TEST_PULSE_DATA_SIZE},                         
00060         { CVT_V812_FIXED_CODE_ADD,              CVT_V812_FIXED_CODE_AM,         CVT_V812_FIXED_CODE_DATA_SIZE},                         
00061         { CVT_V812_MANUFACTURER_ADD,    CVT_V812_MANUFACTURER_AM,       CVT_V812_MANUFACTURER_DATA_SIZE},                       
00062         { CVT_V812_VERSION_ADD,                 CVT_V812_VERSION_AM,            CVT_V812_VERSION_DATA_SIZE},                            
00063 };
00065 // Static methods declaration
00067 
00069 // Global visible variables declaration
00071 
00073 //
00074 //     B O A R D S   H A N D L I N G
00075 //
00077 
00079 // 
00081 BOOL cvt_V812_open( cvt_V812_data* p_data, UINT16 base_address, long vme_handle)
00082 {
00083         memset( p_data, 0, sizeof( cvt_V812_data));
00084         // basic data initialization
00085         if( !cvt_board_open( &p_data->m_common_data, base_address, vme_handle, CVT_V812_REG_TABLE))
00086                 return FALSE;
00087         // board specific data initialization
00088 
00089         return TRUE;
00090 }
00091 
00093 // 
00095 BOOL cvt_V812_close( cvt_V812_data* p_data)
00096 {
00097         if( !cvt_board_close( &p_data->m_common_data))
00098                 return FALSE;
00099         return TRUE;
00100 }
00101 
00103 //
00104 //     L E V E L   0   A P I s
00105 //
00107 
00109 //
00110 //     L E V E L   1   A P I s
00111 //
00113 
00114 
00116 // 
00118 BOOL cvt_V812_set_threshold( cvt_V812_data* p_data, cvt_V812_threshold_id threshold_id, UINT16 value)
00119 {
00120         UINT16 reg_value= value;
00121         // Parameter checking
00122         switch( threshold_id)
00123         {
00124         case CVT_V812_THRESHOLD_ALL:                                            // Catch all the thresholds
00125                 {
00126                         // write every threshold
00127                         int i;
00128                         for( i= CVT_V812_THRESHOLD_0; i< CVT_V812_MAX_THRESHOLD; i++)
00129                         {
00130                                 if( !cvt_write_reg( &p_data->m_common_data, CVT_V812_THRESHOLD_0_INDEX+ (i- CVT_V812_THRESHOLD_0), &reg_value))
00131                                 {
00132                                         TRACE1( "V812 THRESHOLD %i write failed !\n", i- CVT_V812_THRESHOLD_0);
00133                                         return FALSE;
00134                                 }
00135                         }
00136                 }
00137                 break;
00138         case CVT_V812_THRESHOLD_0:                                                      // Threshold 0 register
00139         case CVT_V812_THRESHOLD_1:                                                      // Threshold 1 register
00140         case CVT_V812_THRESHOLD_2:                                                      // Threshold 2 register
00141         case CVT_V812_THRESHOLD_3:                                                      // Threshold 3 register
00142         case CVT_V812_THRESHOLD_4:                                                      // Threshold 4 register
00143         case CVT_V812_THRESHOLD_5:                                                      // Threshold 5 register
00144         case CVT_V812_THRESHOLD_6:                                                      // Threshold 6 register
00145         case CVT_V812_THRESHOLD_7:                                                      // Threshold 7 register
00146         case CVT_V812_THRESHOLD_8:                                                      // Threshold 8 register
00147         case CVT_V812_THRESHOLD_9:                                                      // Threshold 9 register
00148         case CVT_V812_THRESHOLD_10:                                                     // Threshold 10 register
00149         case CVT_V812_THRESHOLD_11:                                                     // Threshold 11 register
00150         case CVT_V812_THRESHOLD_12:                                                     // Threshold 12 register
00151         case CVT_V812_THRESHOLD_13:                                                     // Threshold 13 register
00152         case CVT_V812_THRESHOLD_14:                                                     // Threshold 14 register
00153         case CVT_V812_THRESHOLD_15:                                                     // Threshold 15 register
00154                 // write specific threshold
00155                 if( !cvt_write_reg( &p_data->m_common_data, CVT_V812_THRESHOLD_0_INDEX+ ( threshold_id- CVT_V812_THRESHOLD_0), &reg_value))
00156                 {
00157                         TRACE1( "V812 THRESHOLD %i write failed !\n", threshold_id- CVT_V812_THRESHOLD_0);
00158                         return FALSE;
00159                 }
00160         default:
00161                 TRACE1( "V812 Unhandled threshold id %i !\n", threshold_id);
00162                 return FALSE;
00163         }
00164         return TRUE;
00165 }
00166 
00168 // 
00170 BOOL cvt_V812_set_output_width( cvt_V812_data* p_data, UINT8 value)
00171 {
00172         UINT16 reg_value= value;
00173         // write registers
00174         if( !cvt_write_reg( &p_data->m_common_data, CVT_V812_OUT_WIDTH_0_7_INDEX, &reg_value))
00175         {
00176                 TRACE( "V812 OUT_WIDTH_0_7 write failed !\n");
00177                 return FALSE;
00178         }
00179         if( !cvt_write_reg( &p_data->m_common_data, CVT_V812_OUT_WIDTH_8_15_INDEX, &reg_value))
00180         {
00181                 TRACE( "V812 OUT_WIDTH_8_15 write failed !\n");
00182                 return FALSE;
00183         }
00184         return TRUE;
00185 }
00186 
00188 // 
00190 BOOL cvt_V812_set_dead_time( cvt_V812_data* p_data, UINT8 value)
00191 {
00192         UINT16 reg_value= value;
00193         // write registers
00194         if( !cvt_write_reg( &p_data->m_common_data, CVT_V812_DEAD_TIME_0_7_INDEX, &reg_value))
00195         {
00196                 TRACE( "V812 CVT_V812_DEAD_TIME_0_7 write failed !\n");
00197                 return FALSE;
00198         }
00199         if( !cvt_write_reg( &p_data->m_common_data, CVT_V812_DEAD_TIME_8_15_INDEX, &reg_value))
00200         {
00201                 TRACE( "V812 CVT_V812_DEAD_TIME_8_15 write failed !\n");
00202                 return FALSE;
00203         }
00204         return TRUE;
00205 }
00206 
00208 // 
00210 BOOL cvt_V812_set_majority_threshold( cvt_V812_data* p_data, UINT8 value)
00211 {
00212         UINT16 reg_value= value;
00213         // write register
00214         if( !cvt_write_reg( &p_data->m_common_data, CVT_V812_MAJORITY_INDEX, &reg_value))
00215         {
00216                 TRACE( "V812 CVT_V812_MAJORITY write failed !\n");
00217                 return FALSE;
00218         }
00219         return TRUE;
00220 }
00221 
00223 // 
00225 BOOL cvt_V812_set_pattern_inhibit( cvt_V812_data* p_data, UINT16 value)
00226 {
00227         UINT16 reg_value= value;
00228         // write register
00229         if( !cvt_write_reg( &p_data->m_common_data, CVT_V812_PATTERN_INHIBIT_INDEX, &reg_value))
00230         {
00231                 TRACE( "V812 CVT_V812_PATTERN_INHIBIT write failed !\n");
00232                 return FALSE;
00233         }
00234         return TRUE;
00235 }
00236 
00238 // 
00240 BOOL cvt_V812_set_test_pulse( cvt_V812_data* p_data)
00241 {
00242         UINT16 reg_value= 0;
00243         // write register
00244         if( !cvt_write_reg( &p_data->m_common_data, CVT_V812_TEST_PULSE_INDEX, &reg_value))
00245         {
00246                 TRACE( "V812 CVT_V812_TEST_PULSE write failed !\n");
00247                 return FALSE;
00248         }
00249         return TRUE;
00250 }
00251 
00253 // 
00255 BOOL cvt_V812_get_fixed_code( cvt_V812_data* p_data, UINT16 *p_value)
00256 {
00257         UINT16 reg_value= 0;
00258         // read register
00259         if( !cvt_read_reg( &p_data->m_common_data, CVT_V812_FIXED_CODE_INDEX, &reg_value))
00260         {
00261                 TRACE( "V812 CVT_V812_FIXED_CODE read failed !\n");
00262                 return FALSE;
00263         }
00264         *p_value= reg_value;
00265         return TRUE;
00266 }
00267 
00269 // 
00271 BOOL cvt_V812_get_manufacturer_number( cvt_V812_data* p_data, UINT8 *p_value)
00272 {
00273         UINT16 reg_value= 0;
00274         // read register
00275         if( !cvt_read_reg( &p_data->m_common_data, CVT_V812_MANUFACTURER_INDEX, &reg_value))
00276         {
00277                 TRACE( "V812 CVT_V812_MANUFACTURER_NUMBER read failed !\n");
00278                 return FALSE;
00279         }
00280         *p_value= (UINT8)( ((UINT16)(reg_value>> 10))& 0x3f);
00281         return TRUE;
00282 }
00283 
00285 // 
00287 BOOL cvt_V812_get_module_type( cvt_V812_data* p_data, UINT16 *p_value)
00288 {
00289         UINT16 reg_value= 0;
00290         // read register
00291         if( !cvt_read_reg( &p_data->m_common_data, CVT_V812_MANUFACTURER_INDEX, &reg_value))
00292         {
00293                 TRACE( "V812 CVT_V812_MODULE_TYPE read failed !\n");
00294                 return FALSE;
00295         }
00296         *p_value= (UINT16)( reg_value& 0x03ff);
00297         return TRUE;
00298 }
00299 
00301 // 
00303 BOOL cvt_V812_get_version( cvt_V812_data* p_data, UINT8 *p_value)
00304 {
00305         UINT16 reg_value= 0;
00306         // read register
00307         if( !cvt_read_reg( &p_data->m_common_data, CVT_V812_VERSION_INDEX, &reg_value))
00308         {
00309                 TRACE( "V812 CVT_V812_VERSION read failed !\n");
00310                 return FALSE;
00311         }
00312         *p_value= (UINT8)( ((UINT16)(reg_value>> 12))& 0x0f);
00313         return TRUE;
00314 }
00315 
00317 // 
00319 BOOL cvt_V812_get_serial_number( cvt_V812_data* p_data, UINT16 *p_value)
00320 {
00321         UINT16 reg_value= 0;
00322         // read register
00323         if( !cvt_read_reg( &p_data->m_common_data, CVT_V812_VERSION_INDEX, &reg_value))
00324         {
00325                 TRACE( "V812 CVT_V812_SERIAL_NUMBER read failed !\n");
00326                 return FALSE;
00327         }
00328         *p_value= (UINT16)( reg_value& 0x0fff);
00329         return TRUE;
00330 }
00331 
00332 
00334 //
00335 //     L E V E L   2   A P I s
00336 //
00338 

Generated on Wed Oct 18 12:36:55 2006 for CAEVMEToolLib by  doxygen 1.4.6-NO