int main(int argc, char *argv[]) { int ret = 0; (void) argc; (void) argv; eo_init(); Eo *obj = eo_add(SIMPLE_CLASS, NULL); fail_if(my_init_count != 2); eo_do(obj, simple_a_set(1), simple_b_set(2)); int a, b; eo_do(obj, simple_a_get(&a), simple_b_get(&b), mixin_add_and_print(5)); eo_unref(obj); fail_if(my_init_count != 0); obj = eo_add(SIMPLE2_CLASS, NULL); fail_if(obj); obj = eo_add(SIMPLE3_CLASS, NULL); fail_if(obj); my_init_count = 0; obj = eo_add(SIMPLE4_CLASS, NULL); fail_if(my_init_count != 2); eo_unref(obj); fail_if(my_init_count != 0); obj = eo_add(SIMPLE5_CLASS, NULL); fail_if(!obj); eo_unref(obj); obj = eo_add(SIMPLE6_CLASS, NULL); fail_if(!obj); eo_unref(obj); obj = eo_add(SIMPLE7_CLASS, NULL); fail_if(obj); my_init_count = 0; obj = eo_add_custom(SIMPLE_CLASS, NULL, simple_constructor(7)); fail_if(!obj); fail_if(my_init_count != 2); eo_do(obj, simple_a_get(&a)); fail_if(a != 7); eo_unref(obj); eo_shutdown(); return ret; }
void constructor(void) { _Static_assert(sizeof(BrickContext) <= BRICKLET_CONTEXT_MAX_SIZE, "BrickContext too big"); simple_constructor(); BC->pin_alert = &BS->pin2_da; BC->pin_alert->type = PIO_INPUT; BC->pin_alert->attribute = PIO_PULLUP; BA->PIO_Configure(BC->pin_alert, 1); BC->averaging = INA226_DEFAULT_AVERAGING; BC->voltage_conversion_time = INA226_DEFAULT_CONVERSION_BV; BC->current_conversion_time = INA226_DEFAULT_CONVERSION_SV; ina226_configure(); eeprom_read_calibration(); ina226_write_mask(); // 2 Milliohm // (((0.002/(2.5/1000/1000))*2097.152)/2048)*40.0 = 2^15 // 4 Milliohm // (((0.004/(2.5/1000/1000))*2097.152)/2048)*20.0 = 2^15 ina226_write_register(INA226_REG_CALIBRATION, 2048); }
void constructor(void) { _Static_assert(sizeof(BrickContext) <= BRICKLET_CONTEXT_MAX_SIZE, "BrickContext too big"); PIN_PWR.type = PIO_OUTPUT_0; PIN_PWR.attribute = PIO_DEFAULT; BA->PIO_Configure(&PIN_PWR, 1); PIN_SCL.type = PIO_INPUT; PIN_SCL.attribute = PIO_PULLUP; BA->PIO_Configure(&PIN_SCL, 1); PIN_SDA.type = PIO_INPUT; PIN_SDA.attribute = PIO_PULLUP; BA->PIO_Configure(&PIN_SCL, 1); PIN_PWM.type = PIO_INPUT; PIN_PWM.attribute = PIO_PULLUP; BA->PIO_Configure(&PIN_PWM, 1); SLEEP_MS(100); PIN_PWR.type = PIO_OUTPUT_1; BA->PIO_Configure(&PIN_PWR, 1); simple_constructor(); BC->laser_enabled = false; BC->new_mode = 0; BC->moving_average_upto[SIMPLE_UNIT_DISTANCE] = DEFAULT_MOVING_AVERAGE_DISTANCE; BC->moving_average_upto[SIMPLE_UNIT_VELOCITY] = DEFAULT_MOVING_AVERAGE_VELOCITY; reinitialize_moving_average_distance(); reinitialize_moving_average_velocity(); BC->measurement_state = MS_START_ACQUISITION; BC->next_measurement_state_counter = 100; }
void constructor(void) { _Static_assert(sizeof(BrickContext) <= BRICKLET_CONTEXT_MAX_SIZE, "BrickContext too big"); PIN_OVER_CURRENT.type = PIO_INPUT; PIN_OVER_CURRENT.attribute = PIO_PULLUP; BA->PIO_Configure(&PIN_OVER_CURRENT, 1); BC->over_current = false; BC->current_avg = 0; adc_channel_enable(BS->adc_channel); uint16_t data; BA->bricklet_select(BS->port - 'a'); BA->i2c_eeprom_master_read(BA->twid->pTwi, EEPROM_POSITION, (char *)&data, 2); BA->bricklet_deselect(BS->port - 'a'); if(data == 0xFFFF) { BC->offset = 0; } else { BC->offset = data; } simple_constructor(); }
void constructor(void) { _Static_assert(sizeof(BrickContext) <= BRICKLET_CONTEXT_MAX_SIZE, "BrickContext too big"); BC->value[SIMPLE_UNIT_HEART_RATE] = 0; BC->beat_intervals_filled = false; BC->debounce_high_filled = false; BC->previous_signal_state = false; BC->beat_state = 0; BC->beat_state_changed = 0; BC->beat_state_changed_callback_enabled = 0; BC->beat_intervals_iterator = 0; BC->debounce_high_iterator = 0; BC->tick_counter = 0; BC->last_high_at = 0; BC->last_low_at = 0; BC->beat_intervals[0] = 0; BC->beat_intervals[1] = 0; BC->beat_intervals[2] = 0; BC->beat_intervals[3] = 0; BC->beat_intervals[4] = 0; BC->beat_intervals[5] = 0; BC->beat_intervals[6] = 0; BC->beat_intervals[7] = 0; BC->debounce_high_times[0] = 0; BC->debounce_high_times[1] = 0; BC->debounce_high_times[2] = 0; BC->debounce_high_times[3] = 0; BC->debounce_high_times[4] = 0; BC->debounce_high_times[5] = 0; BC->debounce_high_times[6] = 0; BC->debounce_high_times[7] = 0; BC->debounce_low_times[0] = 0; BC->debounce_low_times[1] = 0; BC->debounce_low_times[2] = 0; BC->debounce_low_times[3] = 0; BC->debounce_low_times[4] = 0; BC->debounce_low_times[5] = 0; BC->debounce_low_times[6] = 0; BC->debounce_low_times[7] = 0; //default debounce values BC->debounce_high = MIN_DEBOUNCE; BC->debounce_low = MIN_DEBOUNCE; // Setting the signal pin as input PIN_SIGNAL.pio->PIO_ODR = PIN_SIGNAL.mask; PIN_SIGNAL.pio->PIO_PER = PIN_SIGNAL.mask; simple_constructor(); }
void constructor(void) { _Static_assert(sizeof(BrickContext) <= BRICKLET_CONTEXT_MAX_SIZE, "BrickContext too big"); BC->i2c_mode = I2C_MODE_FAST; simple_constructor(); }