@@ -15,21 +15,77 @@ rp_module_section="driver"
15
15
rp_module_repo=" git https://github.com/MonsterJoysticks/SNESDev-RPi-Wiring-Pi.git master"
16
16
rp_module_flags=" noinstclean !all rpi"
17
17
18
+ # install the latest version of WiringPi
19
+ function _wiringpi_snesdev() {
20
+ pushd " $md_build "
21
+ gitPullOrClone wiringpi https://github.com/WiringPi/WiringPi.git
22
+ cd wiringpi
23
+ applyPatch " $md_data /001-wiringpi-static.diff"
24
+ make -C wiringPi libwiringPi.a
25
+ popd
26
+ }
27
+
18
28
function sources_snesdev() {
19
- gitPullOrClone " $md_inst "
29
+ gitPullOrClone
20
30
}
21
31
22
32
function build_snesdev() {
33
+ local wiringpi_version
34
+ wiringpi_version=" $( dpkg-query -f=' ${Version} ${Status}' -W wiringpi 2> /dev/null | grep installed | cut -f1) "
35
+
23
36
cd " $md_inst "
24
- make -j1
25
- md_ret_require=" $md_inst /src/SNESDev"
37
+ if [[ -z " $wiringpi_version " ]] || compareVersions " $wiringpi_version " lt 3.14; then
38
+ # when there's no WiringPi installed or there's an old version, build a static version and use it
39
+ printMsgs console " Using locally built WiringPi library"
40
+ _wiringpi_snesdev
41
+ make LDFLAGS=" -L" $md_build /wiringpi/wiringPi" " CFLAGS=" $CFLAGS -I" $md_build /wiringpi/wiringPi" "
42
+ else
43
+ make
44
+ fi
45
+ md_ret_require=" $md_build /src/SNESDev"
26
46
}
27
47
28
48
function install_snesdev() {
29
- cd " $md_inst "
30
- make install
49
+ md_ret_files=(
50
+ " src/SNESDev"
51
+ " README.md"
52
+ " supplementary/snesdev.cfg"
53
+ )
31
54
}
32
55
56
+ function configure_snesdev() {
57
+ if [[ " $md_mode " == " install" ]]; then
58
+ install -m 0755 " $md_inst /snesdev.cfg" " /etc/snesdev.cfg"
59
+ # remove old drivers and service
60
+ [[ -f " /usr/local/bin/SNESDev" ]] && rm -f " /usr/local/bin/SNESDev"
61
+ update-rc.d SNESDev remove
62
+ rm -f /etc/init.d/SNESDev
63
+ fi
64
+ }
65
+
66
+ function _systemd_install_snesdev() {
67
+ cat > /etc/systemd/system/snesdev.service << _EOF_
68
+ [Unit]
69
+ Description=Userspace SNES GPIO Driver
70
+
71
+ [Service]
72
+ ExecStart=$md_inst /SNESDev
73
+
74
+ [Install]
75
+ WantedBy=multi-user.target
76
+ _EOF_
77
+
78
+ systemctl daemon-reload
79
+ systemctl -q enable snesdev.service
80
+ }
81
+
82
+ function _systemd_uninstall_snesdev() {
83
+ if systemctl -q is-enabled snesdev.service 2> /dev/null; then
84
+ systemctl stop snesdev.service
85
+ systemctl -q disable snesdev.service
86
+ fi
87
+ [[ -f " /etc/systemd/system/snesdev.service" ]] && rm " /etc/systemd/system/snesdev.service"
88
+ }
33
89
# start SNESDev on boot and configure RetroArch input settings
34
90
function enable_at_start_snesdev() {
35
91
local mode=" $1 "
@@ -42,16 +98,19 @@ function enable_at_start_snesdev() {
42
98
iniSet " button_enabled" " 0"
43
99
iniSet " gamepad1_enabled" " 1"
44
100
iniSet " gamepad2_enabled" " 1"
101
+ _systemd_install_snesdev
45
102
;;
46
103
2)
47
104
iniSet " button_enabled" " 1"
48
105
iniSet " gamepad1_enabled" " 0"
49
106
iniSet " gamepad2_enabled" " 0"
107
+ _systemd_install_snesdev
50
108
;;
51
109
3)
52
110
iniSet " button_enabled" " 1"
53
111
iniSet " gamepad1_enabled" " 1"
54
112
iniSet " gamepad2_enabled" " 1"
113
+ _systemd_install_snesdev
55
114
;;
56
115
* )
57
116
echo " [enable_at_start_snesdev] I do not understand what is going on here."
@@ -71,8 +130,9 @@ function set_adapter_version_snesdev() {
71
130
}
72
131
73
132
function remove_snesdev() {
74
- make -C " $md_inst " uninstallservice
75
- make -C " $md_inst " uninstall
133
+ _systemd_uninstall_snesdev
134
+ # remove old versions if found
135
+ [[ -f " /usr/local/bin/SNESDev" ]] && rm -f " /usr/local/bin/SNESDev"
76
136
}
77
137
78
138
function gui_snesdev() {
@@ -90,17 +150,14 @@ function gui_snesdev() {
90
150
case " $choice " in
91
151
1)
92
152
enable_at_start_snesdev 3
93
- make -C " $md_inst " installservice
94
153
printMsgs " dialog" " Enabled SNESDev on boot (polling pads and button)."
95
154
;;
96
155
2)
97
156
enable_at_start_snesdev 1
98
- make -C " $md_inst " installservice
99
157
printMsgs " dialog" " Enabled SNESDev on boot (polling only pads)."
100
158
;;
101
159
3)
102
160
enable_at_start_snesdev 2
103
- make -C " $md_inst " installservice
104
161
printMsgs " dialog" " Enabled SNESDev on boot (polling only button)."
105
162
;;
106
163
4)
@@ -112,7 +169,7 @@ function gui_snesdev() {
112
169
printMsgs " dialog" " Switched to adapter version 2.X."
113
170
;;
114
171
D)
115
- make -C " $md_inst " uninstallservice
172
+ _systemd_uninstall_snesdev
116
173
printMsgs " dialog" " Disabled SNESDev on boot."
117
174
;;
118
175
esac
0 commit comments