diff options
Diffstat (limited to 'src/drivers')
| -rw-r--r-- | src/drivers/ao_btm.c | 24 | ||||
| -rw-r--r-- | src/drivers/ao_packet.c | 8 | ||||
| -rw-r--r-- | src/drivers/ao_packet_master.c | 2 | 
3 files changed, 21 insertions, 13 deletions
diff --git a/src/drivers/ao_btm.c b/src/drivers/ao_btm.c index f193ac8e..f3816047 100644 --- a/src/drivers/ao_btm.c +++ b/src/drivers/ao_btm.c @@ -312,18 +312,20 @@ __xdata struct ao_task ao_btm_task;  #endif  void -ao_btm_check_link() __critical +ao_btm_check_link()  { -	/* Check the pin and configure the interrupt detector to wait for the -	 * pin to flip the other way -	 */ -	if (BT_LINK_PIN) { -		ao_btm_connected = 0; -		PICTL |= BT_PICTL_ICON; -	} else { -		ao_btm_connected = 1; -		PICTL &= ~BT_PICTL_ICON; -	} +	ao_arch_critical( +		/* Check the pin and configure the interrupt detector to wait for the +		 * pin to flip the other way +		 */ +		if (BT_LINK_PIN) { +			ao_btm_connected = 0; +			PICTL |= BT_PICTL_ICON; +		} else { +			ao_btm_connected = 1; +			PICTL &= ~BT_PICTL_ICON; +		} +		);  }  void diff --git a/src/drivers/ao_packet.c b/src/drivers/ao_packet.c index 2bada949..3c1e7a18 100644 --- a/src/drivers/ao_packet.c +++ b/src/drivers/ao_packet.c @@ -155,6 +155,9 @@ ao_packet_flush(void)  void  ao_packet_putchar(char c) __reentrant  { +	/* No need to block interrupts, all variables here +	 * are only manipulated in task context +	 */  	while (ao_packet_tx_used == AO_PACKET_MAX && ao_packet_enable) {  #if PACKET_HAS_MASTER  		ao_packet_flush(); @@ -167,8 +170,11 @@ ao_packet_putchar(char c) __reentrant  }  char -ao_packet_pollchar(void) __critical +ao_packet_pollchar(void)  { +	/* No need to block interrupts, all variables here +	 * are only manipulated in task context +	 */  	if (!ao_packet_enable)  		return AO_READ_AGAIN; diff --git a/src/drivers/ao_packet_master.c b/src/drivers/ao_packet_master.c index e97a6648..481232df 100644 --- a/src/drivers/ao_packet_master.c +++ b/src/drivers/ao_packet_master.c @@ -18,7 +18,7 @@  #include "ao.h"  static char -ao_packet_getchar(void) __critical +ao_packet_getchar(void)  {  	char c;  	while ((c = ao_packet_pollchar()) == AO_READ_AGAIN) {  | 
