/* 2450 A/D */ static ZERO_OR_ERROR FS_volts(struct one_wire_query *owq) { struct parsedname *pn = PN(owq); int resolution ; int range ; _FLOAT V[4] ; switch ( pn->selected_filetype->data.i ) { case r_2V_8bit: range = 2 ; resolution = 8 ; break ; case r_5V_8bit: range = 5 ; resolution = 8 ; break ; case r_2V_16bit: range = 2 ; resolution = 16 ; break ; case r_5V_16bit: default: range = 5 ; resolution = 16 ; break ; } if ( BAD( OW_set_resolution( resolution, pn ) ) ) { return -EINVAL ; } if ( BAD( OW_set_range( range, pn ) ) ) { return -EINVAL ; } // Start A/D process if needed if ( BAD( OW_convert( OWQ_SIMUL_TEST(owq), (int)(.5+.16+4.*resolution*.08), pn) )) { return -EINVAL ; } if ( BAD( OW_volts( V, pn ) )) { return -EINVAL ; } switch ( pn->selected_filetype->data.i ) { case r_2V_8bit: case r_2V_16bit: OWQ_array_F(owq, 0) = V[0]*.5; OWQ_array_F(owq, 1) = V[1]*.5; OWQ_array_F(owq, 2) = V[2]*.5; OWQ_array_F(owq, 3) = V[3]*.5; break ; case r_5V_8bit: case r_5V_16bit: default: OWQ_array_F(owq, 0) = V[0]; OWQ_array_F(owq, 1) = V[1]; OWQ_array_F(owq, 2) = V[2]; OWQ_array_F(owq, 3) = V[3]; break ; } return 0 ; }
static ZERO_OR_ERROR FS_volts(struct one_wire_query *owq) { return GB_to_Z_OR_E(OW_volts(&OWQ_F(owq), PN(owq))) ; }