inital commit
This commit is contained in:
commit
acaf867434
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
/debug
|
||||||
|
/domeTimer
|
||||||
16
Makefile
Normal file
16
Makefile
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
CC := gcc
|
||||||
|
CURDIR := $(shell pwd)
|
||||||
|
|
||||||
|
DEBUGDIR := $(CURDIR)/debug
|
||||||
|
SRCDIR := $(CURDIR)/src
|
||||||
|
|
||||||
|
main.o: src/main.c
|
||||||
|
$(CC) -c $(SRCDIR)/main.c -o $(DEBUGDIR)/main.o
|
||||||
|
|
||||||
|
domeTimer: main.o
|
||||||
|
$(CC) $(SRCDIR)/main.c -o $(CURDIR)/domeTimer
|
||||||
|
|
||||||
|
all: domeTimer
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -p domeTimer $(DEBUGDIR)/*
|
||||||
115
src/main.c
Normal file
115
src/main.c
Normal file
@ -0,0 +1,115 @@
|
|||||||
|
#include <stdio.h>
|
||||||
|
#include <stdint.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <dirent.h>
|
||||||
|
#include <pthread.h>
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
uint32_t scheduler[5];
|
||||||
|
uint32_t next;
|
||||||
|
char extention[4];
|
||||||
|
} Script_t;
|
||||||
|
Script_t *Scripts[128];
|
||||||
|
|
||||||
|
//TODO: add devide option
|
||||||
|
//TOOD: add full file name instad of only extention
|
||||||
|
Script_t *getSchedule(char *str){
|
||||||
|
uint8_t is = 0;
|
||||||
|
Script_t scit;
|
||||||
|
scit.scheduler[0] =
|
||||||
|
scit.scheduler[1] =
|
||||||
|
scit.scheduler[2] =
|
||||||
|
scit.scheduler[3] =
|
||||||
|
scit.scheduler[4] = 0;
|
||||||
|
scit.extention[3] = 0;
|
||||||
|
int8_t cmd[3];
|
||||||
|
cmd[0] = cmd[1] = cmd[2] = 0;
|
||||||
|
printf("filename: %s\n", str);
|
||||||
|
|
||||||
|
// read the filename
|
||||||
|
for(uint8_t ic=0; ic<strlen(str); ic++){
|
||||||
|
switch ((char)*(str+ic)){
|
||||||
|
case ' ':
|
||||||
|
switch (cmd[0])
|
||||||
|
{
|
||||||
|
case '-':
|
||||||
|
for(uint8_t i=cmd[2]; i>cmd[1]; i--){
|
||||||
|
scit.scheduler[is] |= 1<<i;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
scit.scheduler[is] |= (is == 0) ? 1<<(cmd[1]/2) : 1<<cmd[1];
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
is++;
|
||||||
|
cmd[0] = 0;
|
||||||
|
cmd[1] = 0;
|
||||||
|
break;
|
||||||
|
case '*':
|
||||||
|
scit.scheduler[is] = ~0;
|
||||||
|
break;
|
||||||
|
case '0' ... '9':
|
||||||
|
printf("number detected. char: %c, cmd: [%c, %d, %d], ", (char)*(str+ic), cmd[0], cmd[1], cmd[2]);
|
||||||
|
if(cmd[0] == '-'){
|
||||||
|
cmd[2] *= 10;
|
||||||
|
cmd[2] += (char)*(str+ic) - '0';
|
||||||
|
}else{
|
||||||
|
cmd[1] *= 10;
|
||||||
|
cmd[1] += (char)*(str+ic) - '0';
|
||||||
|
}
|
||||||
|
printf("cmd: [%c, %d, %d]\n", cmd[0], cmd[1], cmd[2]);
|
||||||
|
break;
|
||||||
|
case ',':
|
||||||
|
cmd[0] = ',';
|
||||||
|
scit.scheduler[is] |= (is == 0) ? 1<<(cmd[1]/2) : 1<<cmd[1];
|
||||||
|
cmd[1] = 0;
|
||||||
|
break;
|
||||||
|
case '-':
|
||||||
|
if(is == 0)
|
||||||
|
cmd[1] /= 2;
|
||||||
|
cmd[0] = '-';
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if((char)*(str+ic) == '.'){
|
||||||
|
uint8_t i = 0;
|
||||||
|
if(ic+3 >= strlen(str)){
|
||||||
|
memcpy(&scit.extention, str+ic+1, strlen(str) - ic);
|
||||||
|
scit.extention[strlen(str) - ic] = 0;
|
||||||
|
}else
|
||||||
|
memcpy(&scit.extention, str + strlen(str) - 3, 3);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if(is == 5)
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
printf("scheduler: [\n 0x%x\n 0x%x\n 0x%x\n 0x%x\n 0x%x\n]\nextention: %s\n",
|
||||||
|
scit.scheduler[0],
|
||||||
|
scit.scheduler[1],
|
||||||
|
scit.scheduler[2],
|
||||||
|
scit.scheduler[3],
|
||||||
|
scit.scheduler[4],
|
||||||
|
scit.extention
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
void getScripts(){
|
||||||
|
DIR *ScriptDir = opendir("./scripts");
|
||||||
|
uint8_t i=0;
|
||||||
|
while(i < 128){
|
||||||
|
struct dirent *script = readdir(ScriptDir);
|
||||||
|
|
||||||
|
if(script == NULL)
|
||||||
|
break;
|
||||||
|
|
||||||
|
//TODO: add simbolic link suport
|
||||||
|
if(script->d_type != DT_REG)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
Scripts[i] = getSchedule(script->d_name);
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void main(){
|
||||||
|
getScripts();
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user