typedef enum 
{
	ERRNO = 0,
	INIT_ERR = 1,
	CONFIG_ERR = 2
} hw_driver_err;

/* initialization */
hw_driver_err hw_driver_init (void);

/* SPS30 device (UART,MUX dependent) */
hw_driver_err hw_driver_enable_sps30 (void);
hw_driver_err hw_driver_disable_sps30 (void);
hw_driver_err hw_driver_mux_sps30 (void);

/* drive MUX for BLE UART communication */
hw_driver_err hw_driver_mux_ble (void);

/* i2c device VDD_SENSE dependent */
hw_driver_err hw_driver_enable_ToF (void); //p0.8
hw_driver_err hw_driver_enable_EEPROM (void);
hw_driver_err hw_driver_enable_bme680 (void);
hw_driver_err hw_driver_enable_Mic (void);
hw_driver_err hw_driver_enable_NOx (void);
hw_driver_err hw_driver_enable_NOx_pre_heat (void);
hw_driver_err hw_driver_enable_reed (void);
hw_driver_err hw_driver_enable_bq35100 (void);
hw_driver_err hw_driver_enable_display(void);
hw_driver_err hw_driver_disable_ToF (void);
hw_driver_err hw_driver_disable_EEPROM (void);
hw_driver_err hw_driver_disable_NOx (void);
hw_driver_err hw_driver_disable_NOx_pre_heat (void);
hw_driver_err hw_driver_disable_bme680 (void);
hw_driver_err hw_driver_disable_Mic (void);
hw_driver_err hw_driver_disable_reed (void);
hw_driver_err hw_driver_disable_bq35100 (void);
hw_driver_err hw_driver_disable_display(void);

void hw_driver_suspend_uart(void);

void hw_driver_sleep(void);
void hw_driver_resume(void);
