int main(void) { uart_init(UART_BAUD_SELECT(UART_BAUD_RATE,F_CPU)); i2c_init(); buck_init(); buckAdc_init(); sei(); //Turn off buck converter DDRB |= (1<<DDB0); PORTB |= (1<<PORTB0); while(1) { cell_numberCount(); cell_adcReadings(); cell_balance(); uart_out(); mean_readings(); if (PINB & (1<<PORTB1)) buck(ENABLE); else buck(DISABLE); } return 0; }
rala_cell_t* cell_insert_index(cell_tree_t** ct, arrow_tree_t* at, int x, int y, index_t index, cell_type_t cell_type, void *extra_information) { rala_cell_t* result = NULL; if(*ct == NULL) { *ct = malloc(sizeof(cell_tree_t)); (*ct)->index = index; (*ct)->data.x = x; (*ct)->data.y = y; (*ct)->data.state = cell_type; (*ct)->data.extra_information = extra_information; (*ct)->left_subtree = NULL; (*ct)->right_subtree = NULL; (*ct)->height=1; (*ct)->balance_factor=0; (*ct)->data.inputs[RALA_IO_NORTH] = arrow_lookup(at, x, y, ARROW_DIR_N); if((*ct)->data.inputs[RALA_IO_NORTH]) { (*ct)->data.inputs[RALA_IO_NORTH]->to = &((*ct)->data); } (*ct)->data.inputs[RALA_IO_SOUTH] = arrow_lookup(at, x, y, ARROW_DIR_S); if((*ct)->data.inputs[RALA_IO_SOUTH]) { (*ct)->data.inputs[RALA_IO_SOUTH]->to = &((*ct)->data); } (*ct)->data.inputs[RALA_IO_WEST] = arrow_lookup(at, x, y, ARROW_DIR_W); if((*ct)->data.inputs[RALA_IO_WEST]) { (*ct)->data.inputs[RALA_IO_WEST]->to = &((*ct)->data); } (*ct)->data.inputs[RALA_IO_EAST] = arrow_lookup(at, x, y, ARROW_DIR_E); if((*ct)->data.inputs[RALA_IO_EAST]) { (*ct)->data.inputs[RALA_IO_EAST]->to = &((*ct)->data); } (*ct)->data.outputs[RALA_IO_NORTH] = arrow_lookup(at, x, y+1, ARROW_DIR_S); if((*ct)->data.outputs[RALA_IO_NORTH]) { (*ct)->data.outputs[RALA_IO_NORTH]->from = &((*ct)->data); } (*ct)->data.outputs[RALA_IO_SOUTH] = arrow_lookup(at, x, y-1, ARROW_DIR_N); if((*ct)->data.outputs[RALA_IO_SOUTH]) { (*ct)->data.outputs[RALA_IO_SOUTH]->from = &((*ct)->data); } (*ct)->data.outputs[RALA_IO_WEST] = arrow_lookup(at, x-1, y, ARROW_DIR_E); if((*ct)->data.outputs[RALA_IO_WEST]) { (*ct)->data.outputs[RALA_IO_WEST]->from = &((*ct)->data); } (*ct)->data.outputs[RALA_IO_EAST] = arrow_lookup(at, x+1, y, ARROW_DIR_W); if((*ct)->data.outputs[RALA_IO_EAST]) { (*ct)->data.outputs[RALA_IO_EAST]->from = &((*ct)->data); } result = &((*ct)->data); } else if ((*ct)->index == index) { (*ct)->data.state = cell_type; (*ct)->data.extra_information = extra_information; return &((*ct)->data); } else if ((*ct)->index < index) { result = cell_insert_index(&((*ct)->right_subtree), at, x, y, index, cell_type, extra_information); cell_update_height(*ct); cell_balance(ct); } else if ((*ct)->index > index) { result = cell_insert_index(&((*ct)->left_subtree), at, x, y, index, cell_type, extra_information); cell_update_height(*ct); cell_balance(ct); } return result; }