static int yas_bma250_set_delay(int delay)
{
    unsigned char odr;
    int i;

    /* Check initialize */
    if (acc_data.initialize == 0) {
        return YAS_ERROR_NOT_INITIALIZED;
    }

    /* Determine optimum odr */
    for (i = 1; i < (int)(sizeof(yas_bma250_odr_tbl) / sizeof(struct yas_bma250_odr)) &&
             delay >= (int)yas_bma250_odr_tbl[i].delay; i++)
        ;

    odr = yas_bma250_odr_tbl[i-1].odr;
    acc_data.delay = delay;

    if (yas_bma250_get_enable()) {
        yas_bma250_update_bits(YAS_BMA250_BANDWIDTH, odr);
        yas_bma250_update_bits(YAS_BMA250_SLEEP_DUR, bma250_set_sleep_dur(odr));
    } else {
        yas_bma250_power_up();
        yas_bma250_update_bits(YAS_BMA250_BANDWIDTH, odr);
        yas_bma250_update_bits(YAS_BMA250_SLEEP_DUR, bma250_set_sleep_dur(odr));
        yas_bma250_power_down();
    }

    return YAS_NO_ERROR;
}
static int yas_get_enable(void)
{
    int err;

    /* Check intialize */
    if (pcb == NULL) {
        return YAS_ERROR_NOT_INITIALIZED;
    }

    yas_bma250_lock();
    err = yas_bma250_get_enable();
    yas_bma250_unlock();

    return err;
}
示例#3
0
static int yas_bma250_set_delay(int delay)
{
	unsigned char odr;
	int i;

	/* Output data rate */
	static const struct yas_bma250_odr yas_bma250_odr_tbl[] = {
	{1,   YAS_BMA250_BANDWIDTH_1000HZ},
	{2,   YAS_BMA250_BANDWIDTH_500HZ},
	{4,   YAS_BMA250_BANDWIDTH_250HZ},
	{8,   YAS_BMA250_BANDWIDTH_125HZ},
	{16,  YAS_BMA250_BANDWIDTH_63HZ},
	{32,  YAS_BMA250_BANDWIDTH_32HZ},
	{64,  YAS_BMA250_BANDWIDTH_16HZ},
	{128, YAS_BMA250_BANDWIDTH_8HZ},
	};

	/* Check initialize */
	if (acc_data.initialize == 0)
		return YAS_ERROR_NOT_INITIALIZED;

	for (i = 1; i < 8; i++) {
		if (delay <= (int)yas_bma250_odr_tbl[i].delay)
			break;
	};

	odr = yas_bma250_odr_tbl[i-1].odr;
	acc_data.delay = delay;

	if (yas_bma250_get_enable()) {
		yas_bma250_update_bits(YAS_BMA250_BANDWIDTH, odr);
		yas_bma250_update_bits(YAS_BMA250_SLEEP_DUR,
			bma250_set_sleep_dur(odr));
	} else {
		yas_bma250_power_up();
		yas_bma250_update_bits(YAS_BMA250_BANDWIDTH, odr);
		yas_bma250_update_bits(YAS_BMA250_SLEEP_DUR,
			bma250_set_sleep_dur(odr));
		yas_bma250_power_down();
	}

	return YAS_NO_ERROR;
}