Skip to content

Commit ed41c10

Browse files
committed
Initial release
0 parents  commit ed41c10

35 files changed

+1486
-0
lines changed

Makefile

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
APPID = org.webosinternals.pulsecontrol
2+
3+
package: clean
4+
cp -a c-binary node-service/bin
5+
rm -f node-service/bin/*.c
6+
palm-package enjo-app package node-service
7+
rm -rf node-service/bin
8+
ar q ${APPID}_*.ipk pmPostInstall.script
9+
ar q ${APPID}_*.ipk pmPreRemove.script
10+
11+
test: package
12+
- palm-install -r ${APPID}
13+
palm-install ${APPID}_*.ipk
14+
palm-launch ${APPID}
15+
16+
clean:
17+
find . -name '*~' -delete
18+
rm -f ipkgtmp*.tar.gz
19+
rm -f ${APPID}_*.ipk
20+
21+
clobber: clean

c-binary/papctl

5.91 KB
Binary file not shown.

c-binary/papctl.c

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
#include <stdio.h>
2+
#include <stdlib.h>
3+
#include <string.h>
4+
5+
#include <sys/socket.h>
6+
#include <sys/types.h>
7+
#include <sys/un.h>
8+
9+
#define _PALM_SOCKET_NAME "palmaudio"
10+
11+
#define _NAME_STRUCT_OFFSET(struct_type, member) ((long) ((unsigned char*) &((struct_type*) 0)->member))
12+
13+
int main(int argc, char **argv) {
14+
int sock, path_len;
15+
16+
struct sockaddr_un server;
17+
18+
if(argc < 2)
19+
exit(1);
20+
21+
sock = socket(AF_UNIX, SOCK_STREAM, 0);
22+
23+
if(sock < 0) {
24+
perror("opening stream socket");
25+
26+
exit(1);
27+
}
28+
29+
server.sun_family = AF_UNIX;
30+
31+
server.sun_path[0] = '\0';
32+
33+
path_len = strlen(_PALM_SOCKET_NAME) + 1;
34+
35+
strncpy(&server.sun_path[1], _PALM_SOCKET_NAME, path_len);
36+
37+
if(connect(sock, (struct sockaddr *) &server, _NAME_STRUCT_OFFSET (struct sockaddr_un, sun_path) + path_len) < 0) {
38+
close(sock);
39+
40+
perror("connecting stream socket");
41+
42+
exit(1);
43+
}
44+
45+
if(write(sock, argv[1], strlen(argv[1])) < 0) {
46+
perror("writing to stream socket");
47+
48+
close(sock);
49+
}
50+
51+
close(sock);
52+
}

c-binary/papctl.sh

Lines changed: 307 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,307 @@
1+
#!/bin/sh
2+
3+
export HOME="/home/root"
4+
5+
mkdir -p /home/root >/dev/null 2>&1
6+
7+
DIR=$(dirname ${0})
8+
9+
if [ -z "${1}" ]; then
10+
exit 0
11+
fi
12+
13+
if [ -e /tmp/papctl-lock ]; then
14+
exit 0
15+
fi
16+
17+
case ${1} in
18+
reset)
19+
touch /tmp/papctl-lock
20+
21+
COUNT="0";
22+
23+
while [ ${COUNT} -lt 15 ]; do
24+
${DIR}/papctl "C ${COUNT} 0 0"
25+
26+
let COUNT="${COUNT} + 1"
27+
done
28+
29+
if [ -e "/tmp/papctl-listen" ]; then
30+
CUR_LISTEN=$(cat /tmp/papctl-listen)
31+
32+
/usr/bin/pactl unload-module ${CUR_LISTEN}
33+
fi
34+
35+
if [ -e "/tmp/papctl-module" ]; then
36+
CUR_MODULE=$(cat /tmp/papctl-module)
37+
38+
/usr/bin/pactl unload-module ${CUR_MODULE}
39+
fi
40+
41+
sleep 2
42+
43+
rm -f /tmp/papctl-listen
44+
rm -f /tmp/papctl-module
45+
rm -f /tmp/papctl-server
46+
rm -f /tmp/papctl-vsinks
47+
;;
48+
49+
connect)
50+
if [ -z "${2}" ]; then
51+
exit 1
52+
fi
53+
54+
touch /tmp/papctl-lock
55+
56+
SERVER="${2}" ; VSINKS="${3}"
57+
58+
CUR_SERVER="" ; CUR_MODULE="" ; CUR_VSINKS=""
59+
60+
if [ -e "/tmp/papctl-server" ]; then
61+
CUR_SERVER=$(cat /tmp/papctl-server)
62+
fi
63+
64+
if [ -e "/tmp/papctl-module" ]; then
65+
CUR_MODULE=$(cat /tmp/papctl-module)
66+
fi
67+
68+
if [ -e "/tmp/papctl-vsinks" ]; then
69+
CUR_VSINKS=$(cat /tmp/papctl-vsinks)
70+
fi
71+
72+
if [ "${SERVER}" != "${CUR_SERVER}" ]; then
73+
echo "${SERVER}" >/tmp/papctl-server
74+
75+
if [ -e "/tmp/papctl-vsinks" ]; then
76+
cat /tmp/papctl-vsinks | sed s/","/"\n"/g >/tmp/papctl-list
77+
78+
cat /tmp/papctl-list | while read SINK ; do
79+
NO=""
80+
81+
case ${SINK} in
82+
palerts) NO="0" ;;
83+
pnotifications) NO="1" ;;
84+
pfeedback) NO="2" ;;
85+
pringtones) NO="3" ;;
86+
pmedia) NO="4" ;;
87+
pflash) NO="5" ;;
88+
pnavigation) NO="6" ;;
89+
pvoicedial) NO="7" ;;
90+
pvvm) NO="8" ;;
91+
pvoip) NO="9" ;;
92+
pdefaultapp) NO="10" ;;
93+
peffects) NO="11" ;;
94+
pDTMF) NO="12" ;;
95+
pcalendar) NO="13" ;;
96+
palarm) NO="14" ;;
97+
esac
98+
99+
if [ ! -z "${NO}" ]; then
100+
${DIR}/papctl "C ${NO} 0 0"
101+
fi
102+
done
103+
fi
104+
105+
sleep 1
106+
107+
if [ -e "/tmp/papctl-module" ]; then
108+
/usr/bin/pactl unload-module ${CUR_MODULE}
109+
110+
sleep 2
111+
fi
112+
113+
/usr/bin/pactl load-module module-tunnel-sink server=${SERVER} sink_name=wifi >/tmp/papctl-module
114+
115+
if [ "${?}" == "0" ]; then
116+
sleep 5
117+
118+
/usr/bin/pactl list | grep -q "wifi"
119+
120+
if [ "${?}" == "0" ]; then
121+
echo ${VSINKS} >/tmp/papctl-vsinks
122+
123+
echo ${VSINKS} | sed s/","/"\n"/g >/tmp/papctl-list
124+
125+
cat /tmp/papctl-list | while read SINK ; do
126+
NO=""
127+
128+
case ${SINK} in
129+
palerts) NO="0" ;;
130+
pnotifications) NO="1" ;;
131+
pfeedback) NO="2" ;;
132+
pringtones) NO="3" ;;
133+
pmedia) NO="4" ;;
134+
pflash) NO="5" ;;
135+
pnavigation) NO="6" ;;
136+
pvoicedial) NO="7" ;;
137+
pvvm) NO="8" ;;
138+
pvoip) NO="9" ;;
139+
pdefaultapp) NO="10" ;;
140+
peffects) NO="11" ;;
141+
pDTMF) NO="12" ;;
142+
pcalendar) NO="13" ;;
143+
palarm) NO="14" ;;
144+
esac
145+
146+
if [ ! -z "${NO}" ]; then
147+
${DIR}/papctl "O ${NO} 2 0"
148+
fi
149+
done
150+
else
151+
echo "Connection error"
152+
153+
CUR_MODULE=$(cat /tmp/papctl-module)
154+
155+
/usr/bin/pactl unload-module ${CUR_MODULE}
156+
157+
sleep 2
158+
159+
rm -f /tmp/papctl-module
160+
rm -f /tmp/papctl-server
161+
rm -f /tmp/papctl-vsinks
162+
fi
163+
else
164+
echo "Module load error"
165+
166+
rm -f /tmp/papctl-module
167+
rm -f /tmp/papctl-server
168+
rm -f /tmp/papctl-vsinks
169+
fi
170+
elif [ "${VSINKS}" != "${CUR_VSINKS}" ]; then
171+
if [ -e "/tmp/papctl-vsinks" ]; then
172+
cat /tmp/papctl-vsinks | sed s/","/"\n"/g >/tmp/papctl-list
173+
174+
cat /tmp/papctl-list | while read SINK ; do
175+
NO=""
176+
177+
case ${SINK} in
178+
palerts) NO="0" ;;
179+
pnotifications) NO="1" ;;
180+
pfeedback) NO="2" ;;
181+
pringtones) NO="3" ;;
182+
pmedia) NO="4" ;;
183+
pflash) NO="5" ;;
184+
pnavigation) NO="6" ;;
185+
pvoicedial) NO="7" ;;
186+
pvvm) NO="8" ;;
187+
pvoip) NO="9" ;;
188+
pdefaultapp) NO="10" ;;
189+
peffects) NO="11" ;;
190+
pDTMF) NO="12" ;;
191+
pcalendar) NO="13" ;;
192+
palarm) NO="14" ;;
193+
esac
194+
195+
if [ ! -z "${NO}" ]; then
196+
${DIR}/papctl "C ${NO} 0 0"
197+
fi
198+
done
199+
fi
200+
201+
echo ${VSINKS} >/tmp/papctl-vsinks
202+
203+
echo ${VSINKS} | sed s/","/"\n"/g >/tmp/papctl-list
204+
205+
cat /tmp/papctl-list | while read SINK ; do
206+
NO=""
207+
208+
case ${SINK} in
209+
palerts) NO="0" ;;
210+
pnotifications) NO="1" ;;
211+
pfeedback) NO="2" ;;
212+
pringtones) NO="3" ;;
213+
pmedia) NO="4" ;;
214+
pflash) NO="5" ;;
215+
pnavigation) NO="6" ;;
216+
pvoicedial) NO="7" ;;
217+
pvvm) NO="8" ;;
218+
pvoip) NO="9" ;;
219+
pdefaultapp) NO="10" ;;
220+
peffects) NO="11" ;;
221+
pDTMF) NO="12" ;;
222+
pcalendar) NO="13" ;;
223+
palarm) NO="14" ;;
224+
esac
225+
226+
if [ ! -z "${NO}" ]; then
227+
${DIR}/papctl "O ${NO} 2 0"
228+
fi
229+
done
230+
fi
231+
;;
232+
233+
disconnect)
234+
touch /tmp/papctl-lock
235+
236+
if [ -e "/tmp/papctl-vsinks" ]; then
237+
cat /tmp/papctl-vsinks | sed s/","/"\n"/g >/tmp/papctl-list
238+
239+
cat /tmp/papctl-list | while read SINK ; do
240+
NO=""
241+
242+
case ${SINK} in
243+
palerts) NO="0" ;;
244+
pnotifications) NO="1" ;;
245+
pfeedback) NO="2" ;;
246+
pringtones) NO="3" ;;
247+
pmedia) NO="4" ;;
248+
pflash) NO="5" ;;
249+
pnavigation) NO="6" ;;
250+
pvoicedial) NO="7" ;;
251+
pvvm) NO="8" ;;
252+
pvoip) NO="9" ;;
253+
pdefaultapp) NO="10" ;;
254+
peffects) NO="11" ;;
255+
pDTMF) NO="12" ;;
256+
pcalendar) NO="13" ;;
257+
palarm) NO="14" ;;
258+
esac
259+
260+
if [ ! -z "${NO}" ]; then
261+
${DIR}/papctl "C ${NO} 0 0"
262+
fi
263+
done
264+
fi
265+
266+
if [ -e "/tmp/papctl-module" ]; then
267+
CUR_MODULE=$(cat /tmp/papctl-module)
268+
269+
/usr/bin/pactl unload-module ${CUR_MODULE}
270+
271+
sleep 2
272+
273+
rm -f /tmp/papctl-module
274+
rm -f /tmp/papctl-server
275+
rm -f /tmp/papctl-vsinks
276+
fi
277+
;;
278+
279+
enable)
280+
touch /tmp/papctl-lock
281+
282+
if [ ! -e "/tmp/papctl-listen" ]; then
283+
/usr/bin/pactl load-module module-native-protocol-tcp auth-anonymous=1 >/tmp/papctl-listen
284+
285+
sleep 2
286+
fi
287+
;;
288+
289+
disable)
290+
touch /tmp/papctl-lock
291+
292+
if [ -e "/tmp/papctl-listen" ]; then
293+
CUR_LISTEN=$(cat /tmp/papctl-listen)
294+
295+
/usr/bin/pactl unload-module ${CUR_LISTEN}
296+
297+
rm -f /tmp/papctl-listen
298+
299+
sleep 2
300+
fi
301+
;;
302+
esac
303+
304+
rm -f /tmp/papctl-list >/dev/null 2>&1
305+
rm -f /tmp/papctl-lock >/dev/null 2>&1
306+
307+
exit 0

control/postinst

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
#!/bin/sh
2+
3+
# Handle execution as pmPostInstall.script
4+
if [ -z "$IPKG_OFFLINE_ROOT" ]; then
5+
IPKG_OFFLINE_ROOT=/media/cryptofs/apps
6+
mount -o remount,rw /
7+
fi
8+
9+
SRV_ID=org.webosinternals.pulsecontrol.srv
10+
SRV_DIR=/media/cryptofs/apps/usr/palm/services/${SRV_ID}
11+
12+
/usr/bin/ls-control scan-services || true

0 commit comments

Comments
 (0)