-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathknx.sql
136 lines (126 loc) · 3.9 KB
/
knx.sql
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
-- complain if script is sourced in psql, rather than via CREATE EXTENSION
\echo Use "CREATE EXTENSION knx" to load this file. \quit
--
-- Input and output functions and data types:
--
---------------------------------------------------
-- Level 3
CREATE FUNCTION knx_ga3_in(cstring)
RETURNS knx_group_address3
AS 'MODULE_PATHNAME'
LANGUAGE C
IMMUTABLE STRICT
PARALLEL SAFE;
CREATE FUNCTION knx_ga3_out(knx_group_address3)
RETURNS cstring
AS 'MODULE_PATHNAME'
LANGUAGE C
IMMUTABLE STRICT
PARALLEL SAFE;
CREATE FUNCTION knx_ga3_recv(internal) RETURNS knx_group_address3
IMMUTABLE
STRICT
LANGUAGE C
AS 'MODULE_PATHNAME',
'knx_addr_recv';
CREATE FUNCTION knx_ga3_send(knx_group_address3) RETURNS bytea
IMMUTABLE
STRICT
LANGUAGE C
AS 'MODULE_PATHNAME',
'knx_addr_send';
CREATE TYPE knx_group_address3 (
INPUT = knx_ga3_in,
OUTPUT = knx_ga3_out,
RECEIVE = knx_ga3_recv,
SEND = knx_ga3_send,
INTERNALLENGTH = 2,
PASSEDBYVALUE,
ALIGNMENT = int2
);
COMMENT ON TYPE knx_group_address3
IS 'KNX Group Address Level 3';
CREATE FUNCTION int2ga3(integer) RETURNS knx_group_address3 IMMUTABLE STRICT LANGUAGE C AS '$libdir/knx', 'int_to_knx_addr';
CREATE CAST (integer AS knx_group_address3) WITH FUNCTION int2ga3(integer) AS IMPLICIT;
CREATE FUNCTION ga32int(knx_group_address3) RETURNS integer IMMUTABLE STRICT LANGUAGE C AS '$libdir/knx', 'knx_addr_to_int';
CREATE CAST (knx_group_address3 AS integer) WITH FUNCTION ga32int(knx_group_address3) AS IMPLICIT;
-- Level 2
CREATE FUNCTION knx_ga2_in(cstring)
RETURNS knx_group_address2
AS 'MODULE_PATHNAME'
LANGUAGE C
IMMUTABLE STRICT
PARALLEL SAFE;
CREATE FUNCTION knx_ga2_out(knx_group_address2)
RETURNS cstring
AS 'MODULE_PATHNAME'
LANGUAGE C
IMMUTABLE STRICT
PARALLEL SAFE;
CREATE FUNCTION knx_ga2_recv(internal) RETURNS knx_group_address2
IMMUTABLE
STRICT
LANGUAGE C
AS 'MODULE_PATHNAME',
'knx_addr_recv';
CREATE FUNCTION knx_ga2_send(knx_group_address2) RETURNS bytea
IMMUTABLE
STRICT
LANGUAGE C
AS 'MODULE_PATHNAME',
'knx_addr_send';
CREATE TYPE knx_group_address2 (
INPUT = knx_ga2_in,
OUTPUT = knx_ga2_out,
RECEIVE = knx_ga2_recv,
SEND = knx_ga2_send,
INTERNALLENGTH = 2,
PASSEDBYVALUE,
ALIGNMENT = int2
);
COMMENT ON TYPE knx_group_address2
IS 'KNX Group Address Level 2';
CREATE FUNCTION int2ga2(integer) RETURNS knx_group_address2 IMMUTABLE STRICT LANGUAGE C AS '$libdir/knx', 'int_to_knx_addr';
CREATE CAST (integer AS knx_group_address2) WITH FUNCTION int2ga2(integer) AS IMPLICIT;
CREATE FUNCTION ga32int(knx_group_address2) RETURNS integer IMMUTABLE STRICT LANGUAGE C AS '$libdir/knx', 'knx_addr_to_int';
CREATE CAST (knx_group_address2 AS integer) WITH FUNCTION ga32int(knx_group_address2) AS IMPLICIT;
-- Individual
CREATE FUNCTION knx_ia_in(cstring)
RETURNS knx_individual_address
AS 'MODULE_PATHNAME'
LANGUAGE C
IMMUTABLE STRICT
PARALLEL SAFE;
CREATE FUNCTION knx_ia_out(knx_individual_address)
RETURNS cstring
AS 'MODULE_PATHNAME'
LANGUAGE C
IMMUTABLE STRICT
PARALLEL SAFE;
CREATE FUNCTION knx_ia_recv(internal) RETURNS knx_individual_address
IMMUTABLE
STRICT
LANGUAGE C
AS 'MODULE_PATHNAME',
'knx_addr_recv';
CREATE FUNCTION knx_ia_send(knx_individual_address) RETURNS bytea
IMMUTABLE
STRICT
LANGUAGE C
AS 'MODULE_PATHNAME',
'knx_addr_send';
CREATE TYPE knx_individual_address (
INPUT = knx_ia_in,
OUTPUT = knx_ia_out,
RECEIVE = knx_ia_recv,
SEND = knx_ia_send,
INTERNALLENGTH = 2,
PASSEDBYVALUE,
ALIGNMENT = int2
);
COMMENT ON TYPE knx_individual_address
IS 'KNX Individual Address';
CREATE FUNCTION int2ia(integer) RETURNS knx_individual_address IMMUTABLE STRICT LANGUAGE C AS '$libdir/knx', 'int_to_knx_addr';
CREATE CAST (integer AS knx_individual_address) WITH FUNCTION int2ia(integer) AS IMPLICIT;
CREATE FUNCTION ga32int(knx_individual_address) RETURNS integer IMMUTABLE STRICT LANGUAGE C AS '$libdir/knx', 'knx_addr_to_int';
CREATE CAST (knx_individual_address AS integer) WITH FUNCTION ga32int(knx_individual_address) AS IMPLICIT;