~ruther/avr-shift-registers

ref: c5b0c625dfd1bb40421c62ada2c79aa30a9cae0b avr-shift-registers/src/sr/data_position.c -rw-r--r-- 1012 bytes
c5b0c625 — František Boháček feat: initial commit 5 years ago
                                                                                
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#include "shift_register_internal.h"
#include <stdlib.h>

const DataPosition* data_position_create(volatile byte* ddr, volatile byte* port, volatile byte* pin, byte position) {
    DataPosition* dp = malloc(sizeof(DataPosition));
    dp->ddr = ddr;
    dp->port = port;
    dp->pin = pin;
    dp->position = position;

    return dp;
}

void data_position_destroy(const DataPosition* position)
{
    free((DataPosition*) position);
}

bool data_position_get_pin(const DataPosition* position)
{
    return get_value(position->pin, position->position);
}

void data_position_set_port(const DataPosition* position)
{
    set_value(position->port, position->position);
}

void data_position_reset_port(const DataPosition* position)
{
    reset_value(position->port, position->position);
}

void data_position_set_ddr(const DataPosition* position)
{
    set_value(position->ddr, position->position);
}

void data_position_reset_ddr(const DataPosition* position)
{
    reset_value(position->ddr, position->position);
}