Cleanup calling - mostly working; misc cleanup scripts; add vibrate program
This commit is contained in:
parent
fd286101d8
commit
22d974f22f
17 changed files with 366 additions and 176 deletions
9
Makefile
9
Makefile
|
@ -12,10 +12,11 @@ programs/sxmo_screenlock:
|
||||||
programs/sxmo_megiaudioroute:
|
programs/sxmo_megiaudioroute:
|
||||||
gcc -o programs/sxmo_megiaudioroute programs/sxmo_megiaudioroute.c
|
gcc -o programs/sxmo_megiaudioroute programs/sxmo_megiaudioroute.c
|
||||||
|
|
||||||
programs/sxmo_pdudecode:
|
programs/sxmo_vibratepine:
|
||||||
gcc -o programs/sxmo_pdudecode programs/sxmo_pdudecode.c -I/usr/include/gammu -lGammu -lm
|
gcc -o programs/sxmo_vibratepine programs/sxmo_vibratepine.c
|
||||||
|
|
||||||
install: programs/sxmo_setpineled programs/sxmo_setpinebacklight programs/sxmo_screenlock programs/sxmo_megiaudioroute programs/sxmo_pdudecode
|
|
||||||
|
install: programs/sxmo_setpineled programs/sxmo_setpinebacklight programs/sxmo_screenlock programs/sxmo_megiaudioroute programs/sxmo_vibratepine
|
||||||
mkdir -p $(PREFIX)/usr/share/sxmo
|
mkdir -p $(PREFIX)/usr/share/sxmo
|
||||||
cp configs/* $(PREFIX)/usr/share/sxmo
|
cp configs/* $(PREFIX)/usr/share/sxmo
|
||||||
|
|
||||||
|
@ -38,4 +39,4 @@ install: programs/sxmo_setpineled programs/sxmo_setpinebacklight programs/sxmo_s
|
||||||
cp programs/sxmo_screenlock $(PREFIX)/usr/bin
|
cp programs/sxmo_screenlock $(PREFIX)/usr/bin
|
||||||
|
|
||||||
cp programs/sxmo_megiaudioroute $(PREFIX)/usr/bin
|
cp programs/sxmo_megiaudioroute $(PREFIX)/usr/bin
|
||||||
cp programs/sxmo_pdudecode $(PREFIX)/usr/bin
|
cp programs/sxmo_vibratepine $(PREFIX)/usr/bin
|
||||||
|
|
|
@ -380,7 +380,7 @@ int main(int ac, char* av[])
|
||||||
audio_setup.dai2_en = 1;
|
audio_setup.dai2_en = 1;
|
||||||
break;
|
break;
|
||||||
default: /* '?' */
|
default: /* '?' */
|
||||||
fprintf(stderr, "Usage: %s [-s] [-m] [-h] [-e] [-2]\n", av[0]);
|
fprintf(stderr, "Usage: %s [-s] [-m] [-h] [-e] [-2] [-z]\n", av[0]);
|
||||||
exit(EXIT_FAILURE);
|
exit(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,26 +0,0 @@
|
||||||
#include <gammu.h>
|
|
||||||
#include <gammu-message.h>
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <string.h>
|
|
||||||
|
|
||||||
int main(int argc, char **argv) {
|
|
||||||
GSM_SMSMessage m;
|
|
||||||
GSM_Error err;
|
|
||||||
int i;
|
|
||||||
char timestamp[50];
|
|
||||||
char * hexstring;
|
|
||||||
|
|
||||||
hexstring = malloc(strlen(argv[1]) / 2);
|
|
||||||
for (i = 0; i < strlen(argv[1]) / 2; i++) {
|
|
||||||
sscanf(argv[1] + i*2, "%2hhx", &hexstring[i]);
|
|
||||||
}
|
|
||||||
err = GSM_DecodePDUFrame(NULL, &m, hexstring, strlen(argv[1]) / 2, NULL, 1);
|
|
||||||
if (err != ERR_NONE) {
|
|
||||||
fprintf(stderr, "Failure to parse string: %s\n", GSM_ErrorString(err));
|
|
||||||
}
|
|
||||||
GSM_DateTimeToTimestamp(&m.DateTime, timestamp);
|
|
||||||
|
|
||||||
printf("Date: %s\n", timestamp);
|
|
||||||
printf("Number: %s\n", DecodeUnicodeConsole(m.Number));
|
|
||||||
printf("Message:\n%s\n", DecodeUnicodeConsole(m.Text));
|
|
||||||
}
|
|
|
@ -3,8 +3,18 @@
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
|
||||||
|
char * pbpScreen = "/sys/class/backlight/edp-backlight/brightness";
|
||||||
|
char * ppScreen = "/sys/devices/platform/backlight/backlight/backlight/brightness";
|
||||||
|
|
||||||
void usage() {
|
void usage() {
|
||||||
fprintf(stderr, "Usage: setpinebacklight [0-10]\n");
|
fprintf(stderr, "Usage: sxmo_setpinebacklight [number]\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
void writeFile(char *filepath, int brightness) {
|
||||||
|
FILE *f;
|
||||||
|
f = fopen(filepath, "w+");
|
||||||
|
fprintf(f, "%d\n", brightness);
|
||||||
|
fclose(f);
|
||||||
}
|
}
|
||||||
|
|
||||||
int main(int argc, char *argv[]) {
|
int main(int argc, char *argv[]) {
|
||||||
|
@ -18,20 +28,18 @@ int main(int argc, char *argv[]) {
|
||||||
argc--;
|
argc--;
|
||||||
brightness = atoi(argv[argc--]);
|
brightness = atoi(argv[argc--]);
|
||||||
|
|
||||||
if (brightness < 0 || brightness > 10) {
|
if (setuid(0)) {
|
||||||
usage();
|
fprintf(stderr, "setuid(0) failed\n");
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
command = malloc(100);
|
if (access(pbpScreen, F_OK) != -1) {
|
||||||
sprintf(
|
writeFile(pbpScreen, brightness);
|
||||||
command,
|
fprintf(stderr, "Set PBP brightness to %d\n", brightness);
|
||||||
"sh -c 'echo %d > /sys/devices/platform/backlight/backlight/backlight/brightness'",
|
} else if (access(ppScreen, F_OK) != -1) {
|
||||||
brightness
|
writeFile(ppScreen, brightness);
|
||||||
);
|
fprintf(stderr, "Set PP brightness to %d\n", brightness);
|
||||||
if (setuid(0)) {
|
|
||||||
fprintf(stderr, "setuid(0) failed\n");
|
|
||||||
} else {
|
} else {
|
||||||
return system(command);
|
fprintf(stderr, "Neither PP or PBP Screen found!\n");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
110
programs/sxmo_vibratepine.c
Normal file
110
programs/sxmo_vibratepine.c
Normal file
|
@ -0,0 +1,110 @@
|
||||||
|
/* Based on: https://xnux.eu/devices/feature/vibrator.html#toc-example-program-to-control-the-vibration-motor */
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <stdarg.h>
|
||||||
|
#include <stdbool.h>
|
||||||
|
#include <errno.h>
|
||||||
|
#include <fcntl.h>
|
||||||
|
#include <poll.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <sys/ioctl.h>
|
||||||
|
#include <linux/input.h>
|
||||||
|
|
||||||
|
|
||||||
|
void syscall_error(int is_err, const char* fmt, ...)
|
||||||
|
{
|
||||||
|
va_list ap;
|
||||||
|
|
||||||
|
if (!is_err)
|
||||||
|
return;
|
||||||
|
|
||||||
|
printf("ERROR: ");
|
||||||
|
va_start(ap, fmt);
|
||||||
|
vprintf(fmt, ap);
|
||||||
|
va_end(ap);
|
||||||
|
printf(": %s\n", strerror(errno));
|
||||||
|
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
int open_event_dev(const char* name_needle, int flags)
|
||||||
|
{
|
||||||
|
char path[256];
|
||||||
|
char name[256];
|
||||||
|
int fd, ret;
|
||||||
|
|
||||||
|
// find the right device and open it
|
||||||
|
for (int i = 0; i < 10; i++) {
|
||||||
|
snprintf(path, sizeof path, "/dev/input/event%d", i);
|
||||||
|
fd = open(path, flags);
|
||||||
|
if (fd < 0)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
ret = ioctl(fd, EVIOCGNAME(256), name);
|
||||||
|
if (ret < 0)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (strstr(name, name_needle))
|
||||||
|
return fd;
|
||||||
|
|
||||||
|
close(fd);
|
||||||
|
}
|
||||||
|
|
||||||
|
errno = ENOENT;
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
void usage() {
|
||||||
|
fprintf(stderr, "Usage: sxmo_vibratepine duration_ms\n");
|
||||||
|
fprintf(stderr, " sxmo_vibratepine duration_ms strength_number\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
int main(int argc, char* argv[])
|
||||||
|
{
|
||||||
|
int fd, ret;
|
||||||
|
struct pollfd pfds[1];
|
||||||
|
int effects;
|
||||||
|
|
||||||
|
int durationMs, strength;
|
||||||
|
|
||||||
|
if (argc < 1) {
|
||||||
|
usage();
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
argc--;
|
||||||
|
|
||||||
|
if (argc > 1) {
|
||||||
|
strength = atoi(argv[argc--]);
|
||||||
|
} else {
|
||||||
|
strength = 4000;
|
||||||
|
}
|
||||||
|
|
||||||
|
durationMs = atoi(argv[argc--]);
|
||||||
|
|
||||||
|
fd = open_event_dev("vibrator", O_RDWR | O_CLOEXEC);
|
||||||
|
syscall_error(fd < 0, "Can't open vibrator event device");
|
||||||
|
ret = ioctl(fd, EVIOCGEFFECTS, &effects);
|
||||||
|
syscall_error(ret < 0, "EVIOCGEFFECTS failed");
|
||||||
|
|
||||||
|
struct ff_effect e = {
|
||||||
|
.type = FF_RUMBLE,
|
||||||
|
.id = -1,
|
||||||
|
.u.rumble = { .strong_magnitude = strength },
|
||||||
|
};
|
||||||
|
|
||||||
|
ret = ioctl(fd, EVIOCSFF, &e);
|
||||||
|
syscall_error(ret < 0, "EVIOCSFF failed");
|
||||||
|
|
||||||
|
struct input_event play = { .type = EV_FF, .code = e.id, .value = 3 };
|
||||||
|
ret = write(fd, &play, sizeof play);
|
||||||
|
syscall_error(ret < 0, "write failed");
|
||||||
|
|
||||||
|
usleep(durationMs * 1000);
|
||||||
|
|
||||||
|
ret = ioctl(fd, EVIOCRMFF, e.id);
|
||||||
|
syscall_error(ret < 0, "EVIOCRMFF failed");
|
||||||
|
|
||||||
|
close(fd);
|
||||||
|
return 0;
|
||||||
|
}
|
|
@ -1,30 +1,24 @@
|
||||||
#!/usr/bin/env sh
|
#!/usr/bin/env sh
|
||||||
WIN=$(xdotool getwindowfocus)
|
WIN=$(xdotool getwindowfocus)
|
||||||
INCOMINGCALL=$(cat /tmp/sxmo_incomingcall || echo NOCALL)
|
|
||||||
|
|
||||||
programchoicesinit() {
|
programchoicesinit() {
|
||||||
WMCLASS="${1:-$(xprop -id $(xdotool getactivewindow) | grep WM_CLASS | cut -d ' ' -f3-)}"
|
WMCLASS="${1:-$(xprop -id $(xdotool getactivewindow) | grep WM_CLASS | cut -d ' ' -f3-)}"
|
||||||
|
|
||||||
# Default
|
# Default system menu (no matches)
|
||||||
CHOICES="$(echo "
|
CHOICES="$(echo "
|
||||||
Scripts ^ 0 ^ sxmo_appmenu.sh scripts
|
Scripts ^ 0 ^ sxmo_appmenu.sh scripts
|
||||||
Apps ^ 0 ^ sxmo_appmenu.sh applications
|
Apps ^ 0 ^ sxmo_appmenu.sh applications
|
||||||
Volume ↑ ^ 1 ^ sxmo_vol.sh up
|
Volume ↑ ^ 1 ^ sxmo_vol.sh up
|
||||||
Volume ↓ ^ 1 ^ sxmo_vol.sh down
|
Volume ↓ ^ 1 ^ sxmo_vol.sh down
|
||||||
Dialer ^ 1 ^ sxmo_phonecaller.exp dial
|
Dialer ^ 1 ^ sxmo_modemcall.sh dial
|
||||||
Texts ^ 0 ^ sxmo_readtexts.sh
|
Texts ^ 0 ^ sxmo_readtexts.sh
|
||||||
Camera ^ 0 ^ sxmo_camera.sh
|
Camera ^ 0 ^ sxmo_camera.sh
|
||||||
Wifi ^ 0 ^ st -e "nmtui"
|
Wifi ^ 0 ^ st -e "nmtui"
|
||||||
System Config ^ 0 ^ sxmo_appmenu.sh control
|
System Config ^ 0 ^ sxmo_appmenu.sh control
|
||||||
Logout ^ 0 ^ pkill -9 dwm
|
Logout ^ 0 ^ pkill -9 dwm
|
||||||
Close Menu ^ 0 ^ quit
|
|
||||||
")" && WINNAME=Sys
|
")" && WINNAME=Sys
|
||||||
|
|
||||||
# E.g. for the system menu if there's an incoming call pop it on top of menu
|
# Apps menu
|
||||||
echo "$INCOMINGCALL" | grep -v NOCALL && CHOICES="$(echo "
|
|
||||||
Pickup $INCOMINGCALL ^ 0 ^ sxmo_phonecaller.exp pickup $INCOMINGCALL
|
|
||||||
")""$CHOICES"
|
|
||||||
|
|
||||||
echo $WMCLASS | grep -i "applications" && CHOICES="$(echo "
|
echo $WMCLASS | grep -i "applications" && CHOICES="$(echo "
|
||||||
Surf ^ 0 ^ surf
|
Surf ^ 0 ^ surf
|
||||||
NetSurf ^ 0 ^ netsurf
|
NetSurf ^ 0 ^ netsurf
|
||||||
|
@ -33,30 +27,31 @@ programchoicesinit() {
|
||||||
St ^ 0 ^ st
|
St ^ 0 ^ st
|
||||||
Firefox ^ 0 ^ firefox
|
Firefox ^ 0 ^ firefox
|
||||||
Foxtrotgps ^ 0 ^ foxtrotgps
|
Foxtrotgps ^ 0 ^ foxtrotgps
|
||||||
Close Menu ^ 0 ^ quit
|
")" && WINNAME=Apps && return
|
||||||
")" && WINNAME=Apps
|
|
||||||
|
|
||||||
|
# Scripts menu
|
||||||
echo $WMCLASS | grep -i "scripts" && CHOICES="$(echo "
|
echo $WMCLASS | grep -i "scripts" && CHOICES="$(echo "
|
||||||
Timer ^ 0 ^ sxmo_timermenu.sh
|
Timer ^ 0 ^ sxmo_timermenu.sh
|
||||||
Youtube ^ 0 ^ sxmo_youtube.sh
|
Youtube ^ 0 ^ sxmo_youtube.sh
|
||||||
Youtube (Audio) ^ 0 ^ sxmo_youtube.sh --no-video
|
Youtube (Audio) ^ 0 ^ sxmo_youtube.sh --no-video
|
||||||
Weather ^ 0 ^ sxmo_weather.sh
|
Weather ^ 0 ^ sxmo_weather.sh
|
||||||
RSS ^ 0 ^ sxmo_rss.sh
|
RSS ^ 0 ^ sxmo_rss.sh
|
||||||
Close Menu ^ 0 ^ quit
|
")" && WINNAME=Scripts && return
|
||||||
")" && WINNAME=Scripts
|
|
||||||
|
|
||||||
|
# System Control menu
|
||||||
echo $WMCLASS | grep -i "control" && CHOICES="$(echo "
|
echo $WMCLASS | grep -i "control" && CHOICES="$(echo "
|
||||||
Volume ↑ ^ 1 ^ sxmo_vol.sh up
|
Volume ↑ ^ 1 ^ sxmo_vol.sh up
|
||||||
Volume ↓ ^ 1 ^ sxmo_vol.sh down
|
Volume ↓ ^ 1 ^ sxmo_vol.sh down
|
||||||
Brightesss ↑ ^ 1 ^ sxmo_brightness.sh up
|
Brightesss ↑ ^ 1 ^ sxmo_brightness.sh up
|
||||||
Brightness ↓ ^ 1 ^ sxmo_brightness.sh down
|
Brightness ↓ ^ 1 ^ sxmo_brightness.sh down
|
||||||
Modem Info ^ 1 ^ st -e 'mmcli -m 0 && read'
|
Modem $(pgrep -f sxmo_modemmonitor.sh >/dev/null && echo -n "On → Off" || echo -n "Off → On") ^ 1 ^ sxmo_modemmonitortoggle.sh
|
||||||
Rotate ^ 1 ^ rotate
|
Modem Info ^ 1 ^ sxmo_modeminfo.sh
|
||||||
Wifi ^ 0 ^ st -e "nmtui"
|
Rotate ^ 1 ^ rotate
|
||||||
Upgrade Pkgs ^ 0 ^ st -e sxmo_upgrade.sh
|
Wifi ^ 0 ^ st -e "nmtui"
|
||||||
Close Menu ^ 0 ^ quit
|
Upgrade Pkgs ^ 0 ^ st -e sxmo_upgrade.sh
|
||||||
")" && WINNAME=Control
|
")" && WINNAME=Control && return
|
||||||
|
|
||||||
|
# MPV
|
||||||
echo $WMCLASS | grep -i "mpv" && CHOICES="$(echo "
|
echo $WMCLASS | grep -i "mpv" && CHOICES="$(echo "
|
||||||
Pause ^ 0 ^ key space
|
Pause ^ 0 ^ key space
|
||||||
Seek ← ^ 1 ^ key Left
|
Seek ← ^ 1 ^ key Left
|
||||||
|
@ -69,30 +64,27 @@ programchoicesinit() {
|
||||||
Loopmark ^ 1 ^ key l
|
Loopmark ^ 1 ^ key l
|
||||||
Info ^ 1 ^ key i
|
Info ^ 1 ^ key i
|
||||||
Seek Info ^ 1 ^ key o
|
Seek Info ^ 1 ^ key o
|
||||||
Close Menu ^ 0 ^ quit
|
")" && WINNAME=Mpv && return
|
||||||
")" && WINNAME=Mpv
|
|
||||||
|
|
||||||
# St
|
# St
|
||||||
echo $WMCLASS | grep -i "st-256color" && CHOICES="$(echo "
|
echo $WMCLASS | grep -i "st-256color" && CHOICES="$(echo "
|
||||||
Pastecomplete ^ 0 ^ key Ctrl+Shift+u
|
Pastecomplete ^ 0 ^ key Ctrl+Shift+u
|
||||||
|
Copycomplete ^ 0 ^ key Ctrl+Shift+i
|
||||||
Paste ^ 0 ^ key Ctrl+Shift+v
|
Paste ^ 0 ^ key Ctrl+Shift+v
|
||||||
Pipe Data ^ 0 ^
|
|
||||||
Zoom + ^ 1 ^ key Ctrl+Shift+Prior
|
Zoom + ^ 1 ^ key Ctrl+Shift+Prior
|
||||||
Zoom - ^ 1 ^ key Ctrl+Shift+Next
|
Zoom - ^ 1 ^ key Ctrl+Shift+Next
|
||||||
Scroll ↑ ^ 1 ^ key Shift+Prior
|
Scroll ↑ ^ 1 ^ key Ctrl+Shift+b
|
||||||
Scroll ↓ ^ 1 ^ key Shift+Next
|
Scroll ↓ ^ 1 ^ key Ctrl+Shift+f
|
||||||
Invert ^ 1 ^ key Ctrl+Shift+x
|
Invert ^ 1 ^ key Ctrl+Shift+x
|
||||||
Hotkeys ^ 0 ^ sxmo_appmenu.sh sthotkeys
|
Hotkeys ^ 0 ^ sxmo_appmenu.sh sthotkeys
|
||||||
Close Menu ^ 0 ^ quit
|
")" && WINNAME=st && return
|
||||||
")" && WINNAME=st
|
|
||||||
|
|
||||||
# St hotkeys
|
# St hotkeys
|
||||||
echo $WMCLASS | grep -i "sthotkeys" && CHOICES="$(echo "
|
echo $WMCLASS | grep -i "sthotkeys" && CHOICES="$(echo "
|
||||||
Send Ctrl-C ^ 0 ^ key Ctrl+c
|
Send Ctrl-C ^ 0 ^ key Ctrl+c
|
||||||
Send Ctrl-L ^ 0 ^ key Ctrl+l
|
Send Ctrl-L ^ 0 ^ key Ctrl+l
|
||||||
Send Ctrl-D ^ 0 ^ key Ctrl+d
|
Send Ctrl-D ^ 0 ^ key Ctrl+d
|
||||||
Close Menu ^ 0 ^ quit
|
")" && WINNAME=st && return
|
||||||
")" && WINNAME=st
|
|
||||||
|
|
||||||
# Surf
|
# Surf
|
||||||
echo $WMCLASS | grep surf && CHOICES="$(echo "
|
echo $WMCLASS | grep surf && CHOICES="$(echo "
|
||||||
|
@ -107,18 +99,27 @@ programchoicesinit() {
|
||||||
Search ^ 1 ^ key Ctrl+f
|
Search ^ 1 ^ key Ctrl+f
|
||||||
History ← ^ 1 ^ key Ctrl+h
|
History ← ^ 1 ^ key Ctrl+h
|
||||||
History → ^ 1 ^ key Ctrl+l
|
History → ^ 1 ^ key Ctrl+l
|
||||||
Close Menu ^ 0 ^ quit
|
")" && WINNAME=surf && return
|
||||||
")" && WINNAME=surf
|
|
||||||
|
|
||||||
|
# Netsurf
|
||||||
echo $WMCLASS | grep -i netsurf && CHOICES="$(echo "
|
echo $WMCLASS | grep -i netsurf && CHOICES="$(echo "
|
||||||
Pipe URL ^ 0 ^ sxmo_urlhandler.sh
|
Pipe URL ^ 0 ^ sxmo_urlhandler.sh
|
||||||
Zoom + ^ 1 ^ key Ctrl+plus
|
Zoom + ^ 1 ^ key Ctrl+plus
|
||||||
Zoom - ^ 1 ^ key Ctrl+minus
|
Zoom - ^ 1 ^ key Ctrl+minus
|
||||||
History ← ^ 1 ^ key Alt+Left
|
History ← ^ 1 ^ key Alt+Left
|
||||||
History → ^ 1 ^ key Alt+Right
|
History → ^ 1 ^ key Alt+Right
|
||||||
Close Menu ^ 0 ^ quit
|
")" && WINNAME=netsurf && return
|
||||||
")" && WINNAME=netsurf
|
|
||||||
|
|
||||||
|
# Firefox
|
||||||
|
echo $WMCLASS | grep -i firefox && CHOICES="$(echo "
|
||||||
|
Pipe URL ^ 0 ^ sxmo_urlhandler.sh
|
||||||
|
Zoom + ^ 1 ^ key Ctrl+plus
|
||||||
|
Zoom - ^ 1 ^ key Ctrl+minus
|
||||||
|
History ← ^ 1 ^ key Alt+Left
|
||||||
|
History → ^ 1 ^ key Alt+Right
|
||||||
|
")" && WINNAME=netsurf && return
|
||||||
|
|
||||||
|
# Foxtrot GPS
|
||||||
echo $WMCLASS | grep -i foxtrot && CHOICES="$(echo "
|
echo $WMCLASS | grep -i foxtrot && CHOICES="$(echo "
|
||||||
Zoom + ^ 1 ^ key i
|
Zoom + ^ 1 ^ key i
|
||||||
Zoom - ^ 1 ^ key o
|
Zoom - ^ 1 ^ key o
|
||||||
|
@ -127,8 +128,33 @@ programchoicesinit() {
|
||||||
Route ^ 0 ^ key r
|
Route ^ 0 ^ key r
|
||||||
Gmaps Transfer ^ 0 ^ key o
|
Gmaps Transfer ^ 0 ^ key o
|
||||||
Copy Cords ^ 0 ^ key o
|
Copy Cords ^ 0 ^ key o
|
||||||
Close Menu ^ 0 ^ quit
|
")" && WINNAME=gps && return
|
||||||
")" && WINNAME=gps
|
}
|
||||||
|
|
||||||
|
getprogchoices() {
|
||||||
|
# E.g. sets CHOICES var
|
||||||
|
programchoicesinit $@
|
||||||
|
|
||||||
|
# Decorate menu at top w/ incoming call entry if present
|
||||||
|
INCOMINGCALL=$(cat /tmp/sxmo_incomingcall || echo NOCALL)
|
||||||
|
echo "$INCOMINGCALL" | grep -v NOCALL && CHOICES="$(echo "
|
||||||
|
Pickup $(echo $INCOMINGCALL | cut -d: -f2) ^ 0 ^ sxmo_modemcall.sh pickup $(echo $INCOMINGCALL | cut -d: -f1)
|
||||||
|
$CHOICES
|
||||||
|
")"
|
||||||
|
|
||||||
|
# Decorate menu at bottom w/ system menu entry if not system menu
|
||||||
|
echo $WINNAME | grep -v Sys && CHOICES="
|
||||||
|
$CHOICES
|
||||||
|
System Menu ^ 0 ^ sxmo_appmenu.sh sys
|
||||||
|
"
|
||||||
|
|
||||||
|
# Decorate menu at bottom w/ close menu entry
|
||||||
|
CHOICES="
|
||||||
|
$CHOICES
|
||||||
|
Close Menu ^ 0 ^ quit
|
||||||
|
"
|
||||||
|
|
||||||
|
PROGCHOICES="$(echo "$CHOICES" | xargs -0 echo | sed '/^[[:space:]]*$/d' | awk '{$1=$1};1')"
|
||||||
}
|
}
|
||||||
|
|
||||||
rotate() {
|
rotate() {
|
||||||
|
@ -145,33 +171,30 @@ quit() {
|
||||||
exit 0
|
exit 0
|
||||||
}
|
}
|
||||||
|
|
||||||
boot() {
|
mainloop() {
|
||||||
DMENUIDX=0
|
DMENUIDX=0
|
||||||
PICKED=""
|
PICKED=""
|
||||||
pgrep -f sxmo_appmenu.sh | grep -Ev "^${$}$" | xargs kill -9
|
ARGS="$@"
|
||||||
pkill -9 dmenu
|
|
||||||
}
|
|
||||||
|
|
||||||
mainloop() {
|
|
||||||
while :
|
while :
|
||||||
do
|
do
|
||||||
PICKED=$(
|
# E.g. sets PROGCHOICES
|
||||||
echo "$CHOICES" |
|
getprogchoices $ARGS
|
||||||
xargs -0 echo |
|
|
||||||
|
PICKED="$(
|
||||||
|
echo "$PROGCHOICES" |
|
||||||
cut -d'^' -f1 |
|
cut -d'^' -f1 |
|
||||||
sed '/^[[:space:]]*$/d' |
|
|
||||||
awk '{$1=$1};1' |
|
|
||||||
dmenu -idx $DMENUIDX -l 14 -c -fn "Terminus-30" -p "$WINNAME"
|
dmenu -idx $DMENUIDX -l 14 -c -fn "Terminus-30" -p "$WINNAME"
|
||||||
)
|
)"
|
||||||
LOOP=$(echo "$CHOICES" | grep "$PICKED" | cut -d '^' -f2)
|
LOOP="$(echo "$PROGCHOICES" | grep -F "$PICKED" | cut -d '^' -f2)"
|
||||||
CMD=$(echo "$CHOICES" | grep "$PICKED" | cut -d '^' -f3)
|
CMD="$(echo "$PROGCHOICES" | grep -F "$PICKED" | cut -d '^' -f3)"
|
||||||
DMENUIDX=$(echo $(echo "$CHOICES" | grep -n "$PICKED" | cut -d ':' -f1) - 1 | bc)
|
DMENUIDX="$(echo "$PROGCHOICES" | grep -F -n "$PICKED" | cut -d ':' -f1)"
|
||||||
|
echo "Eval: <$CMD> from picked <$PICKED> with loop <$LOOP>"
|
||||||
eval $CMD
|
eval $CMD
|
||||||
echo $LOOP | grep 1 || quit
|
echo $LOOP | grep 1 || quit
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
boot
|
pgrep -f sxmo_appmenu.sh | grep -Ev "^${$}$" | xargs kill -9
|
||||||
programchoicesinit $@
|
pkill -9 dmenu
|
||||||
mainloop
|
mainloop $@
|
||||||
|
|
||||||
|
|
|
@ -1,25 +1,29 @@
|
||||||
#!/usr/bin/env sh
|
#!/usr/bin/env sh
|
||||||
MAX=10
|
[ -e /sys/class/backlight/edp-backlight ] && DEV=/sys/class/backlight/edp-backlight
|
||||||
|
[ -e /sys/devices/platform/backlight/backlight/backlight ] && DEV=/sys/devices/platform/backlight/backlight/backlight
|
||||||
|
|
||||||
|
MAX=$(cat $DEV/max_brightness)
|
||||||
MIN=2
|
MIN=2
|
||||||
|
STEP=$(echo "($MAX - $MIN) / 10" | bc)
|
||||||
|
|
||||||
setdelta() {
|
setdelta() {
|
||||||
sxmo_setpinebacklight $(
|
sxmo_setpinebacklight $(
|
||||||
cat /sys/class/backlight/backlight/brightness |
|
cat $DEV/brightness |
|
||||||
xargs -IB echo B $1 |
|
xargs -IB echo B $1 |
|
||||||
bc |
|
bc |
|
||||||
xargs -INUM echo -e "$MIN\nNUM" | sort -n | tail -n1 |
|
xargs -INUM echo -e "$MIN\nNUM" | sort -n | tail -n1 |
|
||||||
xargs -INUM echo -e "$MAX\nNUM" | sort -n | head -n1
|
xargs -INUM echo -e "$MAX\nNUM" | sort -n | head -n1
|
||||||
)
|
)
|
||||||
sxmo_notify.sh 200 "Backlight $(cat /sys/class/backlight/backlight/brightness)/10"
|
sxmo_notify.sh 200 "Backlight $(cat $DEV/brightness)/${MAX}"
|
||||||
}
|
}
|
||||||
|
|
||||||
up() {
|
up() {
|
||||||
setdelta "+1"
|
setdelta "+${STEP}"
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
down() {
|
down() {
|
||||||
setdelta "-1"
|
setdelta "-${STEP}"
|
||||||
}
|
}
|
||||||
|
|
||||||
$1 $2
|
$1 $2
|
|
@ -1,23 +0,0 @@
|
||||||
#!/usr/bin/env sh
|
|
||||||
INPUT="$(cat)"
|
|
||||||
|
|
||||||
pidof svkbd-sxmo || svkbd-sxmo &
|
|
||||||
|
|
||||||
RESULT="$(
|
|
||||||
echo "$(
|
|
||||||
echo "Close Menu" &&
|
|
||||||
echo "$INPUT" |\
|
|
||||||
grep -Eo '\S+' |\
|
|
||||||
tr -d '[:blank:]' |\
|
|
||||||
sort |\
|
|
||||||
uniq
|
|
||||||
)" | dmenu -p Type -l 10 -i -c -fn Terminus-20
|
|
||||||
)"
|
|
||||||
|
|
||||||
pkill svkbd-sxmo
|
|
||||||
|
|
||||||
if [[ "$RESULT" = "Close Menu" ]]; then
|
|
||||||
exit 0
|
|
||||||
else
|
|
||||||
xdotool type "$RESULT"
|
|
||||||
fi
|
|
39
scripts/core/sxmo_pipecomplete.sh
Executable file
39
scripts/core/sxmo_pipecomplete.sh
Executable file
|
@ -0,0 +1,39 @@
|
||||||
|
#!/usr/bin/env sh
|
||||||
|
INPUT="$(cat)"
|
||||||
|
|
||||||
|
pidof svkbd-sxmo || svkbd-sxmo &
|
||||||
|
|
||||||
|
capfirstchar() {
|
||||||
|
awk -F -vOFS= {$1=toupper($1);print $0}
|
||||||
|
}
|
||||||
|
|
||||||
|
RESULT="$(
|
||||||
|
echo "$(
|
||||||
|
echo "Close Menu" &&
|
||||||
|
echo "$INPUT" |\
|
||||||
|
grep -Eo '\S+' |\
|
||||||
|
tr -d '[:blank:]' |\
|
||||||
|
sort |\
|
||||||
|
uniq
|
||||||
|
)" | dmenu -p $(echo $1 | capfirstchar) -l 10 -i -c -fn Terminus-20
|
||||||
|
)"
|
||||||
|
|
||||||
|
pkill svkbd-sxmo
|
||||||
|
|
||||||
|
copy() {
|
||||||
|
if [[ "$RESULT" = "Close Menu" ]]; then
|
||||||
|
exit 0
|
||||||
|
else
|
||||||
|
echo "$RESULT" | xsel -i
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
type() {
|
||||||
|
if [[ "$RESULT" = "Close Menu" ]]; then
|
||||||
|
exit 0
|
||||||
|
else
|
||||||
|
xdotool type "$RESULT"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
$@
|
|
@ -1,15 +1,23 @@
|
||||||
#!/usr/bin/env sh
|
#!/usr/bin/env sh
|
||||||
|
pgrep -f sxmo_statusbar.sh | grep -v $$ | xargs kill -9
|
||||||
|
|
||||||
UPDATEFILE=/tmp/sxmo_bar
|
UPDATEFILE=/tmp/sxmo_bar
|
||||||
touch $UPDATEFILE
|
touch $UPDATEFILE
|
||||||
|
|
||||||
while :
|
while :
|
||||||
do
|
do
|
||||||
|
# M symbol if modem monitoring is on
|
||||||
|
MODEMMON=""
|
||||||
|
pgrep -f sxmo_modemmonitor.sh && MODEMMON="M "
|
||||||
|
|
||||||
|
# Battery pct
|
||||||
PCT=$(cat /sys/class/power_supply/*-battery/capacity)
|
PCT=$(cat /sys/class/power_supply/*-battery/capacity)
|
||||||
BATSTATUS=$(
|
BATSTATUS=$(
|
||||||
cat /sys/class/power_supply/*-battery/status |
|
cat /sys/class/power_supply/*-battery/status |
|
||||||
cut -c1
|
cut -c1
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# Volume
|
||||||
VOL=$(
|
VOL=$(
|
||||||
echo "$(amixer sget Headphone || amixer sget Speaker)" |
|
echo "$(amixer sget Headphone || amixer sget Speaker)" |
|
||||||
grep -oE '([0-9]+)%' |
|
grep -oE '([0-9]+)%' |
|
||||||
|
@ -18,11 +26,12 @@ do
|
||||||
xargs printf %.0f
|
xargs printf %.0f
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# Time
|
||||||
TIME=$(date +%R)
|
TIME=$(date +%R)
|
||||||
|
|
||||||
BAR=" V${VOL} ${BATSTATUS}${PCT}% ${TIME}"
|
BAR=" ${MODEMMON}V${VOL} ${BATSTATUS}${PCT}% ${TIME}"
|
||||||
xsetroot -name "$BAR"
|
xsetroot -name "$BAR"
|
||||||
|
|
||||||
inotifywait -e MODIFY $UPDATEFILE & sleep 5 & wait -n
|
inotifywait -e MODIFY $UPDATEFILE & sleep 30 & wait -n
|
||||||
pgrep -P $$ | xargs kill -9
|
pgrep -P $$ | xargs kill -9
|
||||||
done
|
done
|
|
@ -1,23 +1,26 @@
|
||||||
#!/usr/bin/env sh
|
#!/usr/bin/env sh
|
||||||
device() {
|
device() {
|
||||||
amixer sget Headphone && echo Headphone || echo Speaker
|
amixer sget Headphone > /dev/null && echo Headphone || echo Speaker
|
||||||
}
|
}
|
||||||
|
|
||||||
incvol() {
|
notify() {
|
||||||
|
sxmo_notify.sh 200 "Volume $(
|
||||||
|
amixer get "$(device)" |
|
||||||
|
grep -oE '([0-9]+)%' |
|
||||||
|
tr -d ' %' |
|
||||||
|
awk '{ s += $1; c++ } END { print s/c }' |
|
||||||
|
xargs printf %.0f
|
||||||
|
)"
|
||||||
|
echo 1 > /tmp/sxmo_bar
|
||||||
|
}
|
||||||
|
|
||||||
|
up() {
|
||||||
amixer set $(device) 1+
|
amixer set $(device) 1+
|
||||||
echo 1 > /tmp/sxmo_bar
|
notify
|
||||||
}
|
}
|
||||||
decvol() {
|
down() {
|
||||||
amixer set $(device) 1-
|
amixer set $(device) 1-
|
||||||
echo 1 > /tmp/sxmo_bar
|
notify
|
||||||
}
|
}
|
||||||
|
|
||||||
echo $1 | grep up && echo 1 > /tmp/sxmo_bar && incvol
|
$@
|
||||||
echo $1 | grep down && echo 1 > /tmp/sxmo_bar && decvol
|
|
||||||
sxmo_notify.sh 200 "Volume $(
|
|
||||||
echo "$(amixer sget Headphone || amixer sget Speaker)" |
|
|
||||||
grep -oE '([0-9]+)%' |
|
|
||||||
tr -d ' %' |
|
|
||||||
awk '{ s += $1; c++ } END { print s/c }' |
|
|
||||||
xargs printf %.0f
|
|
||||||
)"
|
|
||||||
|
|
|
@ -10,7 +10,7 @@ alsactl --file /usr/share/sxmo/default_alsa_sound.conf restore
|
||||||
#xset r off
|
#xset r off
|
||||||
|
|
||||||
# E.g. for PBP
|
# E.g. for PBP
|
||||||
synclient TapButton1=1 TapButton2=3 TapButton3=2
|
synclient TapButton1=1 TapButton2=3 TapButton3=2 MinSpeed=0.25
|
||||||
keynav &
|
keynav &
|
||||||
|
|
||||||
conky -c /usr/share/sxmo/conky.conf -d
|
conky -c /usr/share/sxmo/conky.conf -d
|
||||||
|
|
|
@ -5,6 +5,10 @@ err() {
|
||||||
exit 1
|
exit 1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
modem_n() {
|
||||||
|
mmcli -L | grep -oE 'Modem\/([0-9]+)' | cut -d'/' -f2
|
||||||
|
}
|
||||||
|
|
||||||
toggleflag() {
|
toggleflag() {
|
||||||
TOGGLEFLAG=$1
|
TOGGLEFLAG=$1
|
||||||
shift
|
shift
|
||||||
|
@ -29,30 +33,37 @@ dialmenu() {
|
||||||
tr -d -
|
tr -d -
|
||||||
)"
|
)"
|
||||||
echo "Attempting to dial: $NUMBER" >&2
|
echo "Attempting to dial: $NUMBER" >&2
|
||||||
VID=$(
|
VID="$(
|
||||||
sudo mmcli -m 0 --voice-create-call "number=$NUMBER" | grep -Eo Call/[0-9]+ | grep -oE [0-9]+
|
sudo mmcli -m $(modem_n) --voice-create-call "number=$NUMBER" | grep -Eo Call/[0-9]+ | grep -oE [0-9]+
|
||||||
)
|
)"
|
||||||
echo "Starting call with VID: $VID" >&2
|
echo "Starting call with VID: $VID" >&2
|
||||||
|
startcall $VID >&@
|
||||||
echo "$(startcall $VID)"
|
echo $VID
|
||||||
}
|
}
|
||||||
|
|
||||||
startcall() {
|
startcall() {
|
||||||
VID=$1
|
VID="$1"
|
||||||
sudo mmcli -m 0 -o $VID --start | grep "successfully started" || err "Couldn't start call!"
|
sudo mmcli --voice-status -o $VID
|
||||||
echo $VID
|
sudo mmcli -m $(modem_n) -o $VID --start | grep "successfully started" || err "Couldn't start call!"
|
||||||
|
}
|
||||||
|
|
||||||
|
acceptcall() {
|
||||||
|
VID="$1"
|
||||||
|
echo "Attempting to pickup VID $VID"
|
||||||
|
sudo mmcli --voice-status -o $VID
|
||||||
|
sudo mmcli -m $(modem_n) -o $VID --accept | grep "successfully" || err "Couldn't accept call!"
|
||||||
}
|
}
|
||||||
|
|
||||||
hangup() {
|
hangup() {
|
||||||
VID=$1
|
VID=$1
|
||||||
sudo mmcli -m 0 -o $VID --hangup
|
sudo mmcli -m $(modem_n) -o $VID --hangup | grep "successfully hung up" || err "Failed to hangup the call?"
|
||||||
exit 1
|
exit 1
|
||||||
}
|
}
|
||||||
|
|
||||||
incallmenu() {
|
incallmenu() {
|
||||||
DMENUIDX=0
|
DMENUIDX=0
|
||||||
VID="$1"
|
VID="$1"
|
||||||
|
NUMBER=$(mmcli -m $(modem_n) -o $VID -K | grep call.properties.number | cut -d ':' -f2 | tr -d ' ')
|
||||||
# E.g. Run once w/o -2, and then run once with -2
|
# E.g. Run once w/o -2, and then run once with -2
|
||||||
FLAGS="-e -m"
|
FLAGS="-e -m"
|
||||||
sxmo_megiaudioroute $FLAGS
|
sxmo_megiaudioroute $FLAGS
|
||||||
|
@ -77,7 +88,7 @@ incallmenu() {
|
||||||
TSPEAKER ^ FLAGS="$(toggleflag "-s" "$FLAGS")"
|
TSPEAKER ^ FLAGS="$(toggleflag "-s" "$FLAGS")"
|
||||||
DTMF Tones ^ dtmfmenu $VID
|
DTMF Tones ^ dtmfmenu $VID
|
||||||
Hangup ^ hangup $VID
|
Hangup ^ hangup $VID
|
||||||
Lock Screen ^ hangup
|
Lock Screen ^ sxmo_screenlock
|
||||||
' | sed "s/TMUTE/$TMUTE/;s/TECHO/$TECHO/;s/TEARPIECE/$TEARPIECE/;s/TLINEJACK/$TLINEJACK/;s/TSPEAKER/$TSPEAKER/"
|
' | sed "s/TMUTE/$TMUTE/;s/TECHO/$TECHO/;s/TEARPIECE/$TEARPIECE/;s/TLINEJACK/$TLINEJACK/;s/TSPEAKER/$TSPEAKER/"
|
||||||
)"
|
)"
|
||||||
|
|
||||||
|
@ -87,7 +98,7 @@ incallmenu() {
|
||||||
cut -d'^' -f1 |
|
cut -d'^' -f1 |
|
||||||
sed '/^[[:space:]]*$/d' |
|
sed '/^[[:space:]]*$/d' |
|
||||||
awk '{$1=$1};1' |
|
awk '{$1=$1};1' |
|
||||||
dmenu -idx $DMENUIDX -l 14 -c -fn "Terminus-30" -p "$VID"
|
dmenu -idx $DMENUIDX -l 14 -c -fn "Terminus-30" -p "$NUMBER"
|
||||||
)
|
)
|
||||||
CMD=$(echo "$CHOICES" | grep "$PICKED" | cut -d '^' -f2)
|
CMD=$(echo "$CHOICES" | grep "$PICKED" | cut -d '^' -f2)
|
||||||
DMENUIDX=$(echo $(echo "$CHOICES" | grep -n "$PICKED" | cut -d ':' -f1) - 1 | bc)
|
DMENUIDX=$(echo $(echo "$CHOICES" | grep -n "$PICKED" | cut -d ':' -f1) - 1 | bc)
|
||||||
|
@ -103,13 +114,13 @@ dtmfmenu() {
|
||||||
while true
|
while true
|
||||||
do
|
do
|
||||||
PICKED="$(
|
PICKED="$(
|
||||||
echo $NUMS | grep -o . | sed '1 iReturn to Call Menu' |
|
echo "$NUMS" | grep -o . | sed '1 iReturn to Call Menu' |
|
||||||
dmenu -l 20 -fn Terminus-20 -c -idx $DMENUIDX -p "DTMF Tone"
|
dmenu -l 20 -fn Terminus-20 -c -idx $DMENUIDX -p "DTMF Tone"
|
||||||
)"
|
)"
|
||||||
DMENUIDX=$(echo $NUMS | grep -bo $PICKED | cut -d: -f1 | xargs -IN echo 2+N | bc)
|
DMENUIDX=$(echo "$NUMS" | grep -bo "$PICKED" | cut -d: -f1 | xargs -IN echo 2+N | bc)
|
||||||
|
|
||||||
echo $PICKED | grep "Return to Call Menu" && break
|
echo "$PICKED" | grep "Return to Call Menu" && break
|
||||||
mmcli -m 0 -o $VID --send-dtmf="$PICKED"
|
sudo mmcli -m $(modem_n) -o $VID --send-dtmf="$PICKED"
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -120,7 +131,9 @@ dial() {
|
||||||
}
|
}
|
||||||
|
|
||||||
pickup() {
|
pickup() {
|
||||||
startcall $1
|
acceptcall $1
|
||||||
|
incallmenu $1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
modem_n || err "Couldn't determine modem number - is modem online?"
|
||||||
$@
|
$@
|
||||||
|
|
7
scripts/modem/sxmo_modeminfo.sh
Executable file
7
scripts/modem/sxmo_modeminfo.sh
Executable file
|
@ -0,0 +1,7 @@
|
||||||
|
#!/usr/bin/env sh
|
||||||
|
|
||||||
|
modem_n() {
|
||||||
|
mmcli -L | grep -oE 'Modem\/([0-9]+)' | cut -d'/' -f2
|
||||||
|
}
|
||||||
|
|
||||||
|
st -e sh -c "mmcli -m $(modem_n) && read"
|
|
@ -1,17 +1,26 @@
|
||||||
#!/usr/bin/env sh
|
#!/usr/bin/env sh
|
||||||
TIMEOUT=3
|
TIMEOUT=3
|
||||||
MODEM=$(mmcli -L | grep -o "Modem/[0-9]" | grep -o [0-9]$)
|
|
||||||
|
modem_n() {
|
||||||
|
mmcli -L | grep -oE 'Modem\/([0-9]+)' | cut -d'/' -f2
|
||||||
|
}
|
||||||
|
|
||||||
newcall() {
|
newcall() {
|
||||||
|
VID="$1"
|
||||||
sxmo_setpineled green 1
|
sxmo_setpineled green 1
|
||||||
|
|
||||||
|
for i in $(sudo mmcli -m $(modem_n) --voice-list-calls | grep terminated | grep -oE Call\/[0-9]+ | cut -d'/' -f2); do
|
||||||
|
sudo mmcli -m $(modem_n) --voice-delete-call $i
|
||||||
|
done
|
||||||
|
|
||||||
echo "Incoming Call:"
|
echo "Incoming Call:"
|
||||||
INCOMINGNUMBER=$(
|
INCOMINGNUMBER=$(
|
||||||
mmcli -m 0 --voice-list-calls -o 3 -K |
|
mmcli -m $(modem_n) --voice-list-calls -o "$VID" -K |
|
||||||
grep call.properties.number |
|
grep call.properties.number |
|
||||||
cut -d ':' -f 2
|
cut -d ':' -f 2
|
||||||
)
|
)
|
||||||
echo "Number: $INCOMINGNUMBER"
|
echo "$VID:$INCOMINGNUMBER" > /tmp/sxmo_incomingcall
|
||||||
|
echo "Number: $INCOMINGNUMBER (VID: $VID)"
|
||||||
}
|
}
|
||||||
|
|
||||||
newtexts() {
|
newtexts() {
|
||||||
|
@ -19,7 +28,7 @@ newtexts() {
|
||||||
|
|
||||||
echo "New Texts:"
|
echo "New Texts:"
|
||||||
for i in $(echo -e "$1") ; do
|
for i in $(echo -e "$1") ; do
|
||||||
DAT="$(mmcli -m 0 -s $i -K)"
|
DAT="$(mmcli -m $(modem_n) -s $i -K)"
|
||||||
|
|
||||||
TEXT="$(echo "$DAT" | grep sms.content.text | sed -E 's/^sms\.content\.text\s+:\s+//')"
|
TEXT="$(echo "$DAT" | grep sms.content.text | sed -E 's/^sms\.content\.text\s+:\s+//')"
|
||||||
NUM="$(echo "$DAT" | grep sms.content.number | sed -E 's/^sms\.content\.number\s+:\s+[+]?//')"
|
NUM="$(echo "$DAT" | grep sms.content.number | sed -E 's/^sms\.content\.number\s+:\s+[+]?//')"
|
||||||
|
@ -29,7 +38,7 @@ newtexts() {
|
||||||
mkdir -p ~/.sxmo/$NUM
|
mkdir -p ~/.sxmo/$NUM
|
||||||
echo -ne "$NUM at $TIME:\n$TEXT\n\n" >> ~/.sxmo/$NUM/sms.txt
|
echo -ne "$NUM at $TIME:\n$TEXT\n\n" >> ~/.sxmo/$NUM/sms.txt
|
||||||
echo -ne "$TIME\trecv_txt\t$NUM\t$TEXTSIZE chars\n" >> ~/.sxmo/$NUM/log.tsv
|
echo -ne "$TIME\trecv_txt\t$NUM\t$TEXTSIZE chars\n" >> ~/.sxmo/$NUM/log.tsv
|
||||||
sudo mmcli -m $MODEM --messaging-delete-sms=$i
|
sudo mmcli -m $(modem_n) --messaging-delete-sms=$i
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -37,21 +46,21 @@ while true
|
||||||
do
|
do
|
||||||
sxmo_setpineled green 0
|
sxmo_setpineled green 0
|
||||||
VOICECALLID="$(
|
VOICECALLID="$(
|
||||||
mmcli -m 0 --voice-list-calls -a |
|
mmcli -m $(modem_n) --voice-list-calls -a |
|
||||||
grep -Eo '[0-9]+ incoming \(ringing-in\)' |
|
grep -Eo '[0-9]+ incoming \(ringing-in\)' |
|
||||||
grep -Eo '[0-9]+'
|
grep -Eo '[0-9]+'
|
||||||
)"
|
)"
|
||||||
|
|
||||||
TEXTIDS="$(
|
TEXTIDS="$(
|
||||||
mmcli -m 0 --messaging-list-sms |
|
mmcli -m $(modem_n) --messaging-list-sms |
|
||||||
grep -Eo '/SMS/[0-9] \(received\)' |
|
grep -Eo '/SMS/[0-9]+ \(received\)' |
|
||||||
grep -Eo '[0-9]+'
|
grep -Eo '[0-9]+'
|
||||||
)"
|
)"
|
||||||
|
|
||||||
echo VIDS $VOICECALLID
|
echo VIDS $VOICECALLID
|
||||||
echo TIDS $TEXTIDS
|
echo TIDS $TEXTIDS
|
||||||
|
|
||||||
echo "$VOICECALLID" | grep . && newcall "$VOICECALLID"
|
echo "$VOICECALLID" | grep . && newcall "$VOICECALLID" || rm /tmp/sxmo_incomingcall
|
||||||
echo "$TEXTIDS" | grep . && newtexts "$TEXTIDS"
|
echo "$TEXTIDS" | grep . && newtexts "$TEXTIDS"
|
||||||
sleep $TIMEOUT
|
sleep $TIMEOUT
|
||||||
done
|
done
|
||||||
|
|
8
scripts/modem/sxmo_modemmonitortoggle.sh
Executable file
8
scripts/modem/sxmo_modemmonitortoggle.sh
Executable file
|
@ -0,0 +1,8 @@
|
||||||
|
#!/usr/bin/env sh
|
||||||
|
pgrep -f sxmo_modemmonitor.sh && pkill -9 -f sxmo_modemmonitor.sh || sxmo_modemmonitor.sh &
|
||||||
|
rm /tmp/sxmo_incomingcall
|
||||||
|
|
||||||
|
# E.g. wait until process killed or started -- maybe there's a better way..
|
||||||
|
sleep 0.2
|
||||||
|
|
||||||
|
echo 1 > /tmp/sxmo_bar
|
|
@ -1,8 +1,13 @@
|
||||||
#!/usr/bin/env sh
|
#!/usr/bin/env sh
|
||||||
EDITOR=vis
|
EDITOR=vis
|
||||||
|
|
||||||
modem() {
|
err() {
|
||||||
mmcli -L | grep -o "Modem/[0-9]" | grep -o [0-9]$
|
echo $1 | dmenu -fn Terminus-20 -c -l 10
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
modem_n() {
|
||||||
|
mmcli -L | grep -oE 'Modem\/([0-9]+)' | cut -d'/' -f2
|
||||||
}
|
}
|
||||||
|
|
||||||
editmsg() {
|
editmsg() {
|
||||||
|
@ -13,7 +18,7 @@ editmsg() {
|
||||||
}
|
}
|
||||||
|
|
||||||
sendmsg() {
|
sendmsg() {
|
||||||
MODEM=$(modem)
|
MODEM=$(modem_n)
|
||||||
SMSNO=$(
|
SMSNO=$(
|
||||||
sudo mmcli -m $MODEM --messaging-create-sms="text='$2',number=$1" |
|
sudo mmcli -m $MODEM --messaging-create-sms="text='$2',number=$1" |
|
||||||
grep -o [0-9]*$
|
grep -o [0-9]*$
|
||||||
|
@ -25,7 +30,7 @@ sendmsg() {
|
||||||
}
|
}
|
||||||
|
|
||||||
main() {
|
main() {
|
||||||
modem || st -e "echo Couldn't determine modem number - is modem online?"
|
modem_n || err "Couldn't determine modem number - is modem online?"
|
||||||
|
|
||||||
# Prompt for number
|
# Prompt for number
|
||||||
NUMBER=$(
|
NUMBER=$(
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue