diff options
| author | Bdale Garbee <bdale@gag.com> | 2013-05-16 00:36:23 -0600 | 
|---|---|---|
| committer | Bdale Garbee <bdale@gag.com> | 2013-05-16 00:36:23 -0600 | 
| commit | 02d111b1b53ef01fc6e9ab6c4bc60b8af1be0067 (patch) | |
| tree | 8356f4a019969ee99a45e264c87d38555cf316cc /src/drivers/ao_hmc5883.c | |
| parent | 7a2e1f05adad990a6b161865267abf07ffec7a7e (diff) | |
| parent | 7699a55aed3a9a7daeb4c6a5a9a280f43edf455f (diff) | |
Merge branch 'branch-1.2' into debian
Diffstat (limited to 'src/drivers/ao_hmc5883.c')
| -rw-r--r-- | src/drivers/ao_hmc5883.c | 10 | 
1 files changed, 6 insertions, 4 deletions
diff --git a/src/drivers/ao_hmc5883.c b/src/drivers/ao_hmc5883.c index ade6c263..782d03f4 100644 --- a/src/drivers/ao_hmc5883.c +++ b/src/drivers/ao_hmc5883.c @@ -77,11 +77,11 @@ ao_hmc5883_sample(struct ao_hmc5883_sample *sample)  	ao_hmc5883_reg_write(HMC5883_MODE, HMC5883_MODE_SINGLE);  	ao_alarm(AO_MS_TO_TICKS(10)); -	cli(); +	ao_arch_block_interrupts();  	while (!ao_hmc5883_done)  		if (ao_sleep(&ao_hmc5883_done))  			++ao_hmc5883_missed_irq; -	sei(); +	ao_arch_release_interrupts();  	ao_clear_alarm();  	ao_hmc5883_read(HMC5883_X_MSB, (uint8_t *) sample, sizeof (struct ao_hmc5883_sample)); @@ -109,7 +109,7 @@ ao_hmc5883_setup(void)  	ao_i2c_put(AO_HMC5883_I2C_INDEX);  	if (!present) -		ao_panic(AO_PANIC_SELF_TEST); +		ao_panic(AO_PANIC_SELF_TEST_HMC5883);  	ao_hmc5883_reg_write(HMC5883_CONFIG_A,  			     (HMC5883_CONFIG_A_MA_8 << HMC5883_CONFIG_A_MA) | @@ -123,12 +123,14 @@ ao_hmc5883_setup(void)  	return 1;  } +struct ao_hmc5883_sample ao_hmc5883_current; +  static void  ao_hmc5883(void)  {  	ao_hmc5883_setup();  	for (;;) { -		ao_hmc5883_sample((struct ao_hmc5883_sample *) &ao_data_ring[ao_data_head].hmc5883); +		ao_hmc5883_sample(&ao_hmc5883_current);  		ao_arch_critical(  			AO_DATA_PRESENT(AO_DATA_HMC5883);  			AO_DATA_WAIT();  | 
