First draft HMC5883 magnetometer sensor using physical quantities, outputting via serial port using std::cout on mbed os 5

Committer:
skyscraper
Date:
Tue Mar 24 15:21:34 2020 +0000
Revision:
2:9ffb2f18756b
Child:
3:2834be4e10ef
move hmc5883 code to separate source and header file

Who changed what in which revision?

UserRevisionLine numberNew contents of line
skyscraper 2:9ffb2f18756b 1
skyscraper 2:9ffb2f18756b 2 #include <quan/out/magnetic_flux_density.hpp>
skyscraper 2:9ffb2f18756b 3 #include <quan/three_d/out/vect.hpp>
skyscraper 2:9ffb2f18756b 4
skyscraper 2:9ffb2f18756b 5 //true if the hmc5883 is detected
skyscraper 2:9ffb2f18756b 6 bool mag_detected();
skyscraper 2:9ffb2f18756b 7
skyscraper 2:9ffb2f18756b 8 // only 1,2,4,8 available
skyscraper 2:9ffb2f18756b 9 // else returns false and does nothing
skyscraper 2:9ffb2f18756b 10 bool mag_set_samples_average(int n_samples);
skyscraper 2:9ffb2f18756b 11
skyscraper 2:9ffb2f18756b 12 // set data rate specified as a rational
skyscraper 2:9ffb2f18756b 13 //data rate 0.75 <3,4>, 1.5 <3,2>, 3 <3>,7.5 <15,2>, 15 <15>(Default)
skyscraper 2:9ffb2f18756b 14 // , 30 <30>, 75 <75>
skyscraper 2:9ffb2f18756b 15 //N.B. wont link if other values specified
skyscraper 2:9ffb2f18756b 16 template <int N, int D=1>
skyscraper 2:9ffb2f18756b 17 bool mag_set_data_rate();
skyscraper 2:9ffb2f18756b 18
skyscraper 2:9ffb2f18756b 19 // set +- range
skyscraper 2:9ffb2f18756b 20 // sets the nearest greater equal +-range to abs(range_in)
skyscraper 2:9ffb2f18756b 21 // N.B so wont necessarily set exact range input
skyscraper 2:9ffb2f18756b 22 // TODO: get_range
skyscraper 2:9ffb2f18756b 23 // returns false if range is too big
skyscraper 2:9ffb2f18756b 24 bool mag_set_range(quan::magnetic_flux_density::uT const & range_in);
skyscraper 2:9ffb2f18756b 25
skyscraper 2:9ffb2f18756b 26 quan::magnetic_flux_density::uT mag_get_range();
skyscraper 2:9ffb2f18756b 27
skyscraper 2:9ffb2f18756b 28 // probably remove and decide how to do this behind the scenes
skyscraper 2:9ffb2f18756b 29 // in concert with mag_set_data_rate
skyscraper 2:9ffb2f18756b 30 bool mag_set_continuous_measurement_mode();
skyscraper 2:9ffb2f18756b 31 bool mag_set_single_measurement_mode();
skyscraper 2:9ffb2f18756b 32
skyscraper 2:9ffb2f18756b 33 bool mag_do_single_measurement(
skyscraper 2:9ffb2f18756b 34 quan::three_d::vect<quan::magnetic_flux_density::uT>& result
skyscraper 2:9ffb2f18756b 35 );
skyscraper 2:9ffb2f18756b 36
skyscraper 2:9ffb2f18756b 37 // TODO prefer mag enable / disable() ?
skyscraper 2:9ffb2f18756b 38 bool mag_set_idle_mode();
skyscraper 2:9ffb2f18756b 39
skyscraper 2:9ffb2f18756b 40 // TODO callback?
skyscraper 2:9ffb2f18756b 41 bool mag_data_ready();
skyscraper 2:9ffb2f18756b 42
skyscraper 2:9ffb2f18756b 43 // TODO ignore this make private
skyscraper 2:9ffb2f18756b 44 bool mag_data_locked();
skyscraper 2:9ffb2f18756b 45
skyscraper 2:9ffb2f18756b 46 bool mag_read(quan::three_d::vect<quan::magnetic_flux_density::uT> & v);