tools: fix hackrf_si5351c to print ms6 and 7

6 and 7 are integer only. Also fixes printing of the output divider
value.
This commit is contained in:
Hoernchen
2013-05-29 19:41:37 +02:00
parent b6a0b09b1d
commit 762f6054e9

View File

@ -107,7 +107,10 @@ int dump_multisynth_config(hackrf_device* device, const uint_fast8_t ms_number)
uint_fast8_t reg_base; uint_fast8_t reg_base;
uint16_t parameters[8]; uint16_t parameters[8];
uint32_t p1,p2,p3,r_div; uint32_t p1,p2,p3,r_div;
uint_fast8_t div_lut[] = {1,2,4,8,16,32,64,128};
printf("MS%d:", ms_number);
if(ms_number <6){
reg_base = 42 + (ms_number * 8); reg_base = 42 + (ms_number * 8);
for(i=0; i<8; i++) { for(i=0; i<8; i++) {
uint_fast8_t reg_number = reg_base + i; uint_fast8_t reg_number = reg_base + i;
@ -136,11 +139,24 @@ int dump_multisynth_config(hackrf_device* device, const uint_fast8_t ms_number)
(parameters[2] >> 4) & 0x7 (parameters[2] >> 4) & 0x7
; ;
printf("MS%d:", ms_number);
printf("\tp1 = %u\n", p1); printf("\tp1 = %u\n", p1);
printf("\tp2 = %u\n", p2); printf("\tp2 = %u\n", p2);
printf("\tp3 = %u\n", p3); printf("\tp3 = %u\n", p3);
printf("\toutput divider = %u\n", 1 << r_div); } else {
// MS6 and 7 are integer only
reg_base = 90;
for(i=0; i<3; i++) {
uint_fast8_t reg_number = reg_base + i;
int result = hackrf_si5351c_read(device, reg_number, &parameters[i]);
if( result != HACKRF_SUCCESS ) {
return result;
}
}
r_div = (ms_number == 6) ? parameters[2] & 0x7 : parameters[2] & 0x70 >> 4 ;
printf("\tp1_int = %u\n", (ms_number == 6) ? parameters[0] : parameters[1]);
}
printf("\toutput divider = %u\n", div_lut[r_div]);
return HACKRF_SUCCESS; return HACKRF_SUCCESS;
} }