Compare commits
11 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
bbce4dc8fe | ||
|
|
9c4425ff54 | ||
|
|
2e0ee84ca7 | ||
|
|
f868074f0c | ||
|
|
2fdd9fa13b | ||
|
|
40eec1fb23 | ||
|
|
42f93ba026 | ||
|
|
44ddaae28d | ||
|
|
5986fa8133 | ||
|
|
479e7c1f17 | ||
|
|
2dd52c32b7 |
@@ -23,9 +23,7 @@ if(PYTHONINTERP_FOUND)
|
|||||||
add_custom_command(
|
add_custom_command(
|
||||||
OUTPUT ${GIT_VERSION_TMP_FILE}
|
OUTPUT ${GIT_VERSION_TMP_FILE}
|
||||||
COMMAND ${CMAKE_COMMAND} -E echo "//File generated by CMake. Do not edit!" > ${GIT_VERSION_TMP_FILE}
|
COMMAND ${CMAKE_COMMAND} -E echo "//File generated by CMake. Do not edit!" > ${GIT_VERSION_TMP_FILE}
|
||||||
COMMAND ${PYTHON_EXECUTABLE} ${SCRIPT_DIR}/git_branch_name.py >> ${GIT_VERSION_TMP_FILE}
|
COMMAND ${CMAKE_COMMAND} -E echo "#define GIT_TAG_NAME \"v1.5.1\"" > ${GIT_VERSION_TMP_FILE}
|
||||||
COMMAND ${PYTHON_EXECUTABLE} ${SCRIPT_DIR}/git_commit_hash.py >> ${GIT_VERSION_TMP_FILE}
|
|
||||||
COMMAND ${PYTHON_EXECUTABLE} ${SCRIPT_DIR}/git_tag_name.py >> ${GIT_VERSION_TMP_FILE}
|
|
||||||
COMMAND ${CMAKE_COMMAND} -E copy_if_different ${GIT_VERSION_TMP_FILE} ${GIT_VERSION_FILE}
|
COMMAND ${CMAKE_COMMAND} -E copy_if_different ${GIT_VERSION_TMP_FILE} ${GIT_VERSION_FILE}
|
||||||
COMMAND ${CMAKE_COMMAND} -E remove ${GIT_VERSION_TMP_FILE}
|
COMMAND ${CMAKE_COMMAND} -E remove ${GIT_VERSION_TMP_FILE}
|
||||||
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
||||||
@@ -36,9 +34,7 @@ elseif(UNIX)
|
|||||||
add_custom_command(
|
add_custom_command(
|
||||||
OUTPUT ${GIT_VERSION_TMP_FILE}
|
OUTPUT ${GIT_VERSION_TMP_FILE}
|
||||||
COMMAND ${CMAKE_COMMAND} -E echo "//File generated by CMake. Do not edit!" > ${GIT_VERSION_TMP_FILE}
|
COMMAND ${CMAKE_COMMAND} -E echo "//File generated by CMake. Do not edit!" > ${GIT_VERSION_TMP_FILE}
|
||||||
COMMAND ${SCRIPT_DIR}/git_branch_name.sh >> ${GIT_VERSION_TMP_FILE}
|
COMMAND ${CMAKE_COMMAND} -E echo "#define GIT_TAG_NAME \"v1.5.1\"" > ${GIT_VERSION_TMP_FILE}
|
||||||
COMMAND ${SCRIPT_DIR}/git_commit_hash.sh >> ${GIT_VERSION_TMP_FILE}
|
|
||||||
COMMAND ${SCRIPT_DIR}/git_tag_name.sh >> ${GIT_VERSION_TMP_FILE}
|
|
||||||
COMMAND ${CMAKE_COMMAND} -E copy_if_different ${GIT_VERSION_TMP_FILE} ${GIT_VERSION_FILE}
|
COMMAND ${CMAKE_COMMAND} -E copy_if_different ${GIT_VERSION_TMP_FILE} ${GIT_VERSION_FILE}
|
||||||
COMMAND ${CMAKE_COMMAND} -E remove ${GIT_VERSION_TMP_FILE}
|
COMMAND ${CMAKE_COMMAND} -E remove ${GIT_VERSION_TMP_FILE}
|
||||||
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
||||||
@@ -82,11 +78,11 @@ if(BUILD_REXLEDCTL)
|
|||||||
add_executable (rexledctl src/rexbacklight.c)
|
add_executable (rexledctl src/rexbacklight.c)
|
||||||
add_dependencies(rexledctl common_srcs) #force common_srcs to be built first
|
add_dependencies(rexledctl common_srcs) #force common_srcs to be built first
|
||||||
target_compile_definitions(rexledctl PRIVATE REXLEDCTL) #define REXLEDCTL in C files
|
target_compile_definitions(rexledctl PRIVATE REXLEDCTL) #define REXLEDCTL in C files
|
||||||
|
target_link_libraries(rexledctl PRIVATE $<TARGET_OBJECTS:common_srcs>) #link with the common_srcs "library"
|
||||||
if(ENABLE_RESTORE_FILE)
|
if(ENABLE_RESTORE_FILE)
|
||||||
target_link_libraries(rexledctl PRIVATE "${RJP_LIB}") #link with rjp
|
target_link_libraries(rexledctl PRIVATE "${RJP_LIB}") #link with rjp
|
||||||
target_include_directories(rexledctl PUBLIC "${RJP_HEADER_DIR}") #include rjp.h directory
|
target_include_directories(rexledctl PUBLIC "${RJP_HEADER_DIR}") #include rjp.h directory
|
||||||
endif()
|
endif()
|
||||||
target_link_libraries(rexledctl PRIVATE $<TARGET_OBJECTS:common_srcs>) #link with the common_srcs "library"
|
|
||||||
install(TARGETS rexledctl RUNTIME DESTINATION bin)
|
install(TARGETS rexledctl RUNTIME DESTINATION bin)
|
||||||
if(INSTALL_UDEV_LED_RULE)
|
if(INSTALL_UDEV_LED_RULE)
|
||||||
install(FILES ${CMAKE_SOURCE_DIR}/rules/91-leds.rules DESTINATION ${UDEV_DIR})
|
install(FILES ${CMAKE_SOURCE_DIR}/rules/91-leds.rules DESTINATION ${UDEV_DIR})
|
||||||
@@ -95,13 +91,13 @@ endif()
|
|||||||
#build backlight control program
|
#build backlight control program
|
||||||
if(BUILD_REXBACKLIGHT)
|
if(BUILD_REXBACKLIGHT)
|
||||||
add_executable (rexbacklight src/rexbacklight.c)
|
add_executable (rexbacklight src/rexbacklight.c)
|
||||||
add_dependencies(rexledctl common_srcs)
|
add_dependencies(rexbacklight common_srcs)
|
||||||
target_compile_definitions(rexbacklight PRIVATE REXBACKLIGHT)
|
target_compile_definitions(rexbacklight PRIVATE REXBACKLIGHT)
|
||||||
|
target_link_libraries(rexbacklight PRIVATE $<TARGET_OBJECTS:common_srcs>)
|
||||||
if(ENABLE_RESTORE_FILE)
|
if(ENABLE_RESTORE_FILE)
|
||||||
target_link_libraries(rexbacklight PRIVATE "${RJP_LIB}")
|
target_link_libraries(rexbacklight PRIVATE "${RJP_LIB}")
|
||||||
target_include_directories(rexbacklight PUBLIC "${RJP_HEADER_DIR}")
|
target_include_directories(rexbacklight PUBLIC "${RJP_HEADER_DIR}")
|
||||||
endif()
|
endif()
|
||||||
target_link_libraries(rexbacklight PRIVATE $<TARGET_OBJECTS:common_srcs>)
|
|
||||||
install(TARGETS rexbacklight RUNTIME DESTINATION bin)
|
install(TARGETS rexbacklight RUNTIME DESTINATION bin)
|
||||||
if(INSTALL_UDEV_BACKLIGHT_RULE)
|
if(INSTALL_UDEV_BACKLIGHT_RULE)
|
||||||
install(FILES ${CMAKE_SOURCE_DIR}/rules/91-backlight.rules DESTINATION ${UDEV_DIR})
|
install(FILES ${CMAKE_SOURCE_DIR}/rules/91-backlight.rules DESTINATION ${UDEV_DIR})
|
||||||
|
|||||||
@@ -155,7 +155,7 @@ struct arg_values process_cmd_args(int argc, char** argv){
|
|||||||
|
|
||||||
//Check for switches
|
//Check for switches
|
||||||
if(CHECK_OPTION(GET, argv[i])){
|
if(CHECK_OPTION(GET, argv[i])){
|
||||||
curr->operation |= OP_GET;
|
curr->operation = OP_GET;
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
}else if(CHECK_OPTION(FADE, argv[i])){
|
}else if(CHECK_OPTION(FADE, argv[i])){
|
||||||
|
|||||||
@@ -93,8 +93,10 @@ static RJP_value* restore_file_handle(void){
|
|||||||
}
|
}
|
||||||
|
|
||||||
RJP_value* find_matching_json_device(const char* name, RJP_value* root){
|
RJP_value* find_matching_json_device(const char* name, RJP_value* root){
|
||||||
for(RJP_value* curr = rjp_get_member(root);curr;curr = rjp_next_member(curr)){
|
RJP_object_iterator it;
|
||||||
if(!strcmp(rjp_member_name(curr), name)){
|
rjp_init_object_iterator(&it, root);
|
||||||
|
for(RJP_value* curr = rjp_object_iterator_current(&it);curr;curr = rjp_object_iterator_next(&it)){
|
||||||
|
if(!strcmp(rjp_member_key(curr)->value, name)){
|
||||||
return curr;
|
return curr;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -114,7 +116,7 @@ int restore_to_delta(struct arg_values* curr){
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
curr->operation = OP_SET;
|
curr->operation = OP_SET;
|
||||||
curr->delta = rjp_value_dfloat(match);
|
curr->delta = rjp_get_float(match);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
void prep_restore(struct arg_values* a){
|
void prep_restore(struct arg_values* a){
|
||||||
@@ -124,10 +126,12 @@ void prep_restore(struct arg_values* a){
|
|||||||
}
|
}
|
||||||
|
|
||||||
void save_restore_file(struct string_array* devices, struct arg_values* args){
|
void save_restore_file(struct string_array* devices, struct arg_values* args){
|
||||||
|
RJP_object_iterator it;
|
||||||
RJP_value* rf = restore_file_handle();
|
RJP_value* rf = restore_file_handle();
|
||||||
if(!rf)
|
if(!rf)
|
||||||
rf = rjp_init_json();
|
rf = rjp_new_object();
|
||||||
for(RJP_value* mem = rjp_get_member(rf);mem;mem = rjp_next_member(mem)){
|
rjp_init_object_iterator(&it, rf);
|
||||||
|
for(RJP_value* mem = rjp_object_iterator_current(&it);mem;mem = rjp_object_iterator_next(&it)){
|
||||||
for(struct arg_values* curr = args->next, *prev = args;curr;prev = curr, curr = curr->next){
|
for(struct arg_values* curr = args->next, *prev = args;curr;prev = curr, curr = curr->next){
|
||||||
if(curr->operation != OP_SET || curr->flags & ARG_FLAG_NO_SAVE){
|
if(curr->operation != OP_SET || curr->flags & ARG_FLAG_NO_SAVE){
|
||||||
prev->next = curr->next;
|
prev->next = curr->next;
|
||||||
@@ -135,8 +139,8 @@ void save_restore_file(struct string_array* devices, struct arg_values* args){
|
|||||||
curr = prev;
|
curr = prev;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if(!strcmp(rjp_member_name(mem), curr->device)){
|
if(!strcmp(rjp_member_key(mem)->value, curr->device)){
|
||||||
rjp_set_value(mem, rjp_dfloat(curr->delta));
|
rjp_set_float(mem, curr->delta);
|
||||||
prev->next = curr->next;
|
prev->next = curr->next;
|
||||||
free(curr);
|
free(curr);
|
||||||
break;
|
break;
|
||||||
@@ -144,12 +148,14 @@ void save_restore_file(struct string_array* devices, struct arg_values* args){
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
for(struct arg_values* curr = args->next;curr;curr = curr->next){
|
for(struct arg_values* curr = args->next;curr;curr = curr->next){
|
||||||
if(curr->operation == OP_SET)
|
if(curr->operation == OP_SET){
|
||||||
rjp_add_member(rf, curr->device, 0, rjp_dfloat(curr->delta));
|
RJP_value* newmem = rjp_add_member_key_copy(rf, curr->device, 0);
|
||||||
|
rjp_set_float(newmem, curr->delta);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
free_cmd_args(args);
|
free_cmd_args(args);
|
||||||
|
|
||||||
char* tmp = rjp_to_json(rf);
|
char* tmp = rjp_to_json(rf, RJP_FORMAT_NONE);
|
||||||
char* rfil = restore_file();
|
char* rfil = restore_file();
|
||||||
FILE* restf = fopen(rfil, "w");
|
FILE* restf = fopen(rfil, "w");
|
||||||
if(!restf){
|
if(!restf){
|
||||||
|
|||||||
@@ -264,7 +264,8 @@ void do_list(struct arg_values* args){
|
|||||||
}
|
}
|
||||||
|
|
||||||
//Run requested operation on a per device basis
|
//Run requested operation on a per device basis
|
||||||
void run_device_operations(struct arg_values* a){
|
int run_device_operations(struct arg_values* a){
|
||||||
|
int changes = 0;
|
||||||
for(a = a->next;a;a = a->next){
|
for(a = a->next;a;a = a->next){
|
||||||
switch(a->operation){
|
switch(a->operation){
|
||||||
case OP_LIST:
|
case OP_LIST:
|
||||||
@@ -284,10 +285,12 @@ void run_device_operations(struct arg_values* a){
|
|||||||
case OP_SET:
|
case OP_SET:
|
||||||
if(prep_offset(a))
|
if(prep_offset(a))
|
||||||
break;
|
break;
|
||||||
|
++changes;
|
||||||
fade_out(a);
|
fade_out(a);
|
||||||
break;
|
break;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
return changes;
|
||||||
}
|
}
|
||||||
|
|
||||||
//If a global operation is requested, run this to fill arg with all devices, each with the global operation
|
//If a global operation is requested, run this to fill arg with all devices, each with the global operation
|
||||||
@@ -312,6 +315,7 @@ int main(int argc, char** argv){
|
|||||||
|
|
||||||
struct arg_values args; //A linked list of devices and the requested settings.
|
struct arg_values args; //A linked list of devices and the requested settings.
|
||||||
struct string_array device_names; //List of all led/backlight devices in sysfs.
|
struct string_array device_names; //List of all led/backlight devices in sysfs.
|
||||||
|
int should_save = 0;
|
||||||
|
|
||||||
args = process_cmd_args(argc, argv);
|
args = process_cmd_args(argc, argv);
|
||||||
if(args.operation == OP_USAGE){
|
if(args.operation == OP_USAGE){
|
||||||
@@ -360,9 +364,14 @@ int main(int argc, char** argv){
|
|||||||
if(!args.next){
|
if(!args.next){
|
||||||
populate_args(&args, &device_names);
|
populate_args(&args, &device_names);
|
||||||
}
|
}
|
||||||
run_device_operations(&args);
|
should_save = (run_device_operations(&args) > 0);
|
||||||
#ifdef ENABLE_RESTORE_FILE
|
#ifdef ENABLE_RESTORE_FILE
|
||||||
save_restore_file(&device_names, &args); //performs cleanup on args
|
if(should_save)
|
||||||
|
save_restore_file(&device_names, &args); //performs cleanup on args
|
||||||
|
else
|
||||||
|
free_cmd_args(&args);
|
||||||
|
#else
|
||||||
|
free_cmd_args(&args);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
free_string_array(&device_names);
|
free_string_array(&device_names);
|
||||||
|
|||||||
Reference in New Issue
Block a user