summaryrefslogtreecommitdiff
path: root/blocks/Xcos/Xcos_CLOCK_c.sci
blob: acf7f04e609fab41db27ea9eb819dc231044248f (plain)
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
// list(), list(), list(1), list(5.2) = Xcos_CLOCK_c(5.2, list(), list(), list(), list(0.1, 0.1), list(5.1))

function [explicit_output_vector, implicit_output_vector, command_vector, new_state_vector] = Xcos_CLOCK_c(output_fd, time, explicit_input_vector, implicit_input_vector, control_vector, block_parameters, state_vector)
    assert_checkequal(0, size(explicit_input_vector));
    assert_checkequal(0, size(implicit_input_vector));
    assert_checkequal(0, size(control_vector));
    assert_checkequal(2, size(block_parameters));

    if size(state_vector) == 0 then
        state_vector = list(0);
    end

    time_difference = block_parameters(1);
    minimum_time = block_parameters(2);
    last_time = state_vector(1);
    if time < minimum_time || (time - last_time) < time_difference then
        next_state = 0;
        next_time = last_time;
    else
        next_state = 1;
        next_time = last_time + time_difference;
    end

    explicit_output_vector = list()
    implicit_output_vector = list()
    command_vector = list(next_state)
    new_state_vector = list(next_time)
endfunction