Skip to content

Commit a378e04

Browse files
Add support for IS31fl3731 LED matrix driver
1 parent 36a3cb6 commit a378e04

File tree

7 files changed

+663
-0
lines changed

7 files changed

+663
-0
lines changed
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
------------------------------------------------------------------------------
2+
-- --
3+
-- Copyright (C) 2019, AdaCore --
4+
-- --
5+
-- Redistribution and use in source and binary forms, with or without --
6+
-- modification, are permitted provided that the following conditions are --
7+
-- met: --
8+
-- 1. Redistributions of source code must retain the above copyright --
9+
-- notice, this list of conditions and the following disclaimer. --
10+
-- 2. Redistributions in binary form must reproduce the above copyright --
11+
-- notice, this list of conditions and the following disclaimer in --
12+
-- the documentation and/or other materials provided with the --
13+
-- distribution. --
14+
-- 3. Neither the name of the copyright holder nor the names of its --
15+
-- contributors may be used to endorse or promote products derived --
16+
-- from this software without specific prior written permission. --
17+
-- --
18+
-- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS --
19+
-- "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT --
20+
-- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR --
21+
-- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT --
22+
-- HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, --
23+
-- SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT --
24+
-- LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, --
25+
-- DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY --
26+
-- THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT --
27+
-- (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE --
28+
-- OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --
29+
-- --
30+
------------------------------------------------------------------------------
31+
32+
package body AdaFruit.CharlieWing is
33+
34+
-----------------
35+
-- LED_Address --
36+
-----------------
37+
38+
overriding
39+
function LED_Address (This : Device;
40+
X : IS31FL3731.X_Coord;
41+
Y : IS31FL3731.Y_Coord)
42+
return IS31FL3731.LED_Id
43+
is
44+
pragma Unreferenced (This);
45+
X2 : Natural := X;
46+
Y2 : Natural := Y;
47+
begin
48+
if X2 > 7 then
49+
X2 := 15 - X2;
50+
Y2 := Y2 + 8;
51+
else
52+
Y2 := 7 - Y2;
53+
end if;
54+
return IS31FL3731.LED_Id (X2 * 16 + Y2);
55+
end LED_Address;
56+
57+
end AdaFruit.CharlieWing;
Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
------------------------------------------------------------------------------
2+
-- --
3+
-- Copyright (C) 2019, AdaCore --
4+
-- --
5+
-- Redistribution and use in source and binary forms, with or without --
6+
-- modification, are permitted provided that the following conditions are --
7+
-- met: --
8+
-- 1. Redistributions of source code must retain the above copyright --
9+
-- notice, this list of conditions and the following disclaimer. --
10+
-- 2. Redistributions in binary form must reproduce the above copyright --
11+
-- notice, this list of conditions and the following disclaimer in --
12+
-- the documentation and/or other materials provided with the --
13+
-- distribution. --
14+
-- 3. Neither the name of the copyright holder nor the names of its --
15+
-- contributors may be used to endorse or promote products derived --
16+
-- from this software without specific prior written permission. --
17+
-- --
18+
-- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS --
19+
-- "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT --
20+
-- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR --
21+
-- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT --
22+
-- HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, --
23+
-- SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT --
24+
-- LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, --
25+
-- DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY --
26+
-- THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT --
27+
-- (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE --
28+
-- OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --
29+
-- --
30+
------------------------------------------------------------------------------
31+
32+
-- Driver for the AdaFruit Charlie Wing matrix LED board.
33+
-- See the IS31FL3731 package for API documentation.
34+
35+
with HAL;
36+
with HAL.I2C;
37+
38+
with IS31FL3731;
39+
40+
package AdaFruit.CharlieWing is
41+
42+
subtype X_Coord is IS31FL3731.X_Coord range 0 .. 15;
43+
subtype Y_Coord is IS31FL3731.Y_Coord range 0 .. 6;
44+
45+
type Device
46+
(Port : not null HAL.I2C.Any_I2C_Port;
47+
AD : HAL.UInt2)
48+
is new IS31FL3731.Device
49+
with private;
50+
51+
overriding
52+
function LED_Address (This : Device;
53+
X : IS31FL3731.X_Coord;
54+
Y : IS31FL3731.Y_Coord)
55+
return IS31FL3731.LED_Id
56+
with Pre => X in X_Coord and then Y in Y_Coord;
57+
-- LED address conversion specific to the LED arrangement of the Charlie
58+
-- Wing.
59+
60+
private
61+
62+
type Device
63+
(Port : not null HAL.I2C.Any_I2C_Port;
64+
AD : HAL.UInt2)
65+
is new IS31FL3731.Device (Port, AD)
66+
with null record;
67+
68+
end AdaFruit.CharlieWing;

0 commit comments

Comments
 (0)