Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Tammo Jan Dijkema
dt_ctrl
Commits
ff4ab2ff
Commit
ff4ab2ff
authored
Mar 04, 2015
by
Jeroen Vreeken
Browse files
Oops, forgot to add block
parent
451a3008
Changes
1
Hide whitespace changes
Inline
Side-by-side
controller/block/block_and.c
0 → 100644
View file @
ff4ab2ff
/*
Copyright Jeroen Vreeken (pe1rxq@amsat.org), 2015
Copyright Stichting C.A. Muller Radioastronomiestation, 2015
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include
<stdio.h>
#include
<stdlib.h>
#include
<string.h>
#include
<controller/controller_block.h>
#include
<log/log.h>
/*
inputs outputs
nr name nr name
----------------------
| |
---| 0 a 0 q |----
| |
---| 1 b |
| |
----------------------
*/
struct
controller_block_private
{
bool
q
;
bool
i
[
0
];
};
void
calculate_2
(
struct
controller_block
*
block
)
{
struct
controller_block_private
*
priv
=
block
->
private
;
priv
->
q
=
priv
->
i
[
0
]
&
priv
->
i
[
1
];
}
void
calculate_4
(
struct
controller_block
*
block
)
{
struct
controller_block_private
*
priv
=
block
->
private
;
priv
->
q
=
priv
->
i
[
0
]
&
priv
->
i
[
1
]
&
priv
->
i
[
2
]
&
priv
->
i
[
3
];
}
static
struct
controller_block_interm_list
interms_2
[]
=
{
{
"a"
,
CONTROLLER_BLOCK_TERM_BOOL
,
offsetof
(
struct
controller_block_private
,
i
[
0
])
},
{
"b"
,
CONTROLLER_BLOCK_TERM_BOOL
,
offsetof
(
struct
controller_block_private
,
i
[
1
])
},
{
NULL
}
};
static
struct
controller_block_interm_list
interms_4
[]
=
{
{
"a"
,
CONTROLLER_BLOCK_TERM_BOOL
,
offsetof
(
struct
controller_block_private
,
i
[
0
])
},
{
"b"
,
CONTROLLER_BLOCK_TERM_BOOL
,
offsetof
(
struct
controller_block_private
,
i
[
1
])
},
{
"c"
,
CONTROLLER_BLOCK_TERM_BOOL
,
offsetof
(
struct
controller_block_private
,
i
[
2
])
},
{
"d"
,
CONTROLLER_BLOCK_TERM_BOOL
,
offsetof
(
struct
controller_block_private
,
i
[
3
])
},
{
NULL
}
};
static
struct
controller_block_outterm_list
outterms
[]
=
{
{
"q"
,
CONTROLLER_BLOCK_TERM_BOOL
,
offsetof
(
struct
controller_block_private
,
q
)
},
{
NULL
}
};
static
struct
controller_block
*
block_and
(
struct
controller_block
*
block
)
{
block
->
private
->
q
=
false
;
if
(
controller_block_outterm_list_init
(
block
,
outterms
))
goto
err_block
;
if
(
controller_block_add
(
block
))
goto
err_block
;
return
block
;
err_block:
controller_block_free
(
block
);
return
NULL
;
}
static
struct
controller_block
*
block_err
(
struct
controller_block
*
block
)
{
controller_block_free
(
block
);
return
NULL
;
}
static
struct
controller_block
*
block_and2_create
(
char
*
name
,
int
argc
,
va_list
val
)
{
struct
controller_block
*
block
;
if
(
!
(
block
=
controller_block_alloc
(
"and2"
,
name
,
sizeof
(
struct
controller_block_private
)
+
sizeof
(
bool
)
*
2
)))
return
NULL
;
if
(
controller_block_interm_list_init
(
block
,
interms_2
))
return
block_err
(
block
);
block
->
calculate
=
calculate_2
;
return
block_and
(
block
);
}
BLOCK_CREATE
(
and2
)
=
{
.
create
=
block_and2_create
,
.
args
=
{
NULL
},
};
static
struct
controller_block
*
block_and4_create
(
char
*
name
,
int
argc
,
va_list
val
)
{
struct
controller_block
*
block
;
if
(
!
(
block
=
controller_block_alloc
(
"and4"
,
name
,
sizeof
(
struct
controller_block_private
)
+
sizeof
(
bool
)
*
4
)))
return
NULL
;
if
(
controller_block_interm_list_init
(
block
,
interms_4
))
return
block_err
(
block
);
block
->
calculate
=
calculate_4
;
return
block_and
(
block
);
}
BLOCK_CREATE
(
and4
)
=
{
.
create
=
block_and4_create
,
.
args
=
{
NULL
},
};
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment