[no ci] Package: update autonight source (#1372)

pull/1375/head
viktorxda 2024-04-02 10:50:14 +02:00 committed by GitHub
parent 790b0c40a8
commit a3190bef7a
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 44 additions and 60 deletions

View File

@ -1,4 +1,4 @@
config BR2_PACKAGE_AUTONIGHT
bool "autonight"
help
autonight - automatic switching of day/night modes depending on the readings of the IR Sensor
Automatic day/night mode switcher for Ingenic devices.

View File

@ -4,22 +4,18 @@
#
################################################################################
AUTONIGHT_SITE_METHOD = local
AUTONIGHT_SITE = $(AUTONIGHT_PKGDIR)/src
AUTONIGHT_LICENSE = MIT
AUTONIGHT_LICENSE_FILES = LICENSE
define AUTONIGHT_EXTRACT_CMDS
cp -avr $(AUTONIGHT_PKGDIR)/src/* $(@D)/
endef
AUTONIGHT_MAKE_OPTS = \
CC="$(TARGET_CC)"
define AUTONIGHT_BUILD_CMDS
$(MAKE) $(AUTONIGHT_MAKE_OPTS) -C $(@D)
$(TARGET_CC) $(@D)/autonight.c -o $(@D)/autonight -s
endef
define AUTONIGHT_INSTALL_TARGET_CMDS
install -m 0755 -D $(@D)/autonight $(TARGET_DIR)/usr/bin/autonight
$(INSTALL) -m 0755 -t $(TARGET_DIR)/usr/bin $(@D)/autonight
endef
$(eval $(generic-package))

View File

@ -1,9 +0,0 @@
.PHONY: all clean
all: autonight
autonight: autonight.o
$(CC) -o $@ $^
clean:
-rm -rf *.o

View File

@ -9,107 +9,104 @@
#define BUF_SIZE 256
const char *device = "/dev/jz_adc_aux_0";
const char *nightModeCmd = "curl localhost/night/";
const char *nightModeCmd = "curl localhost/night";
int delayBetweenReads = 3;
int thresholdOn = 900;
int thresholdOff = 1000;
int thresholdOn = 800;
int thresholdOff = 1200;
bool nightModeEnabled = false;
void
jzAuxRead(const char *device, int *value)
{
void jzAuxRead(const char *device, int *value) {
int fd, size, count;
fd = open(device, O_RDONLY);
if(fd < 0){
if (fd < 0) {
perror(device);
exit(EXIT_FAILURE);
}
size = sizeof(*value);
count = read(fd, (void *)value, size);
close(fd);
if(count != size){
if (count != size) {
perror("read()");
exit(EXIT_FAILURE);
}
}
void
updateNightMode()
{
void updateNightMode() {
int ret;
char buf[BUF_SIZE];
printf("Night Mode %s\n", nightModeEnabled ? "Enabled" : "Disabled");
snprintf(buf, BUF_SIZE, "%s%s\n", nightModeCmd, nightModeEnabled ? "on" : "off");
printf("> Mode: %s\n", nightModeEnabled ? "Night" : "Day");
snprintf(buf, BUF_SIZE, "%s/%s\n", nightModeCmd, nightModeEnabled ? "on" : "off");
ret = system(buf);
if(ret != 0){
if (ret != 0) {
perror("system()");
exit(EXIT_FAILURE);
}
}
void
usage(const char *argv0)
{
fprintf(stderr, "\nusage: %s [options]\n\n"
"options:\n"
" -D sets jz_adc_aux device (default: %s)\n"
" -c sets the command to call to set night mode (default: %s)\n"
" -d delay (in seconds) between ADC reads (default: %d)\n"
" -O turn on night mode when ADC value drops below this threshold (default: %d)\n"
" -F turn off night mode when ADC value goes above this threshold (default: %d)\n"
" -h print this usage statement and exit\n\n", argv0, device, nightModeCmd, delayBetweenReads, thresholdOn, thresholdOff);
void usage(const char *argv) {
fprintf(stderr, "Usage: %s [option]\n\n"
"Options:\n"
" -D sets jz_adc_aux device (default: %s)\n"
" -c sets the command to call to set night mode (default: %s)\n"
" -d delay (in seconds) between ADC reads (default: %d)\n"
" -O turn on night mode when ADC drops below threshold (default: %d)\n"
" -F turn off night mode when ADC goes above threshold (default: %d)\n"
" -h print this usage statement and exit\n\n",
argv, device, nightModeCmd, delayBetweenReads, thresholdOn, thresholdOff);
}
int
main(int argc, char *argv[])
{
int main(int argc, char **argv) {
int opt, value;
while((opt = getopt(argc, argv, "D:c:d:O:F:h:")) != -1){
switch(opt){
while ((opt = getopt(argc, argv, "D:c:d:O:F:h:")) != -1) {
switch (opt) {
case 'D':
device = optarg;
break;
case 'c':
nightModeCmd = optarg;
break;
case 'd':
delayBetweenReads = atoi(optarg);
break;
case 'O':
thresholdOn = atoi(optarg);
break;
case 'F':
thresholdOff = atoi(optarg);
break;
case 'h':
usage(argv[0]);
exit(EXIT_SUCCESS);
default:
usage(argv[0]);
exit(EXIT_FAILURE);
}
}
if(daemon(0, 0) < 0){
perror("daemon()");
exit(EXIT_FAILURE);
}
sleep(5);
while(true){
while (true) {
jzAuxRead(device, &value);
printf("Current value: %d\n", value);
if(!nightModeEnabled && value >= thresholdOn){
printf("> Value: %d\n", value);
if (!nightModeEnabled && value >= thresholdOn) {
nightModeEnabled = true;
updateNightMode();
} else if(nightModeEnabled && value < thresholdOff){
} else if (nightModeEnabled && value < thresholdOff) {
nightModeEnabled = false;
updateNightMode();
}
sleep(delayBetweenReads);
}