├── .gitignore ├── Changelog.md ├── License ├── README.md ├── cli ├── .gitignore ├── Makefile ├── README.md ├── bin │ ├── addlicense │ └── stripwhite ├── buildsystem │ ├── autodep.mk │ ├── colorizebuild │ ├── cross.mk │ ├── func.mk │ ├── gen_analyzer_report │ ├── git.mk │ ├── main.mk │ ├── rules.mk │ └── target.mk ├── include │ ├── cmds.h │ ├── dict.h │ ├── getline.h │ ├── hexdump.h │ ├── ll.h │ ├── logging.h │ ├── prjutil.h │ ├── semver.h │ └── timelib.h ├── lib │ ├── cmds.c │ ├── cmds_script.c │ ├── cmds_shell.c │ ├── dict.c │ ├── getline.c │ ├── hexdump.c │ ├── logging.c │ ├── semver.c │ └── timelib.c ├── m ├── src │ ├── app.h │ ├── cmds │ │ ├── flirc_cmds.c │ │ └── ir_transmit.c │ ├── entry.m │ ├── main.c │ └── prepost.c └── targets │ ├── flirc_util.mk │ └── install ├── ir ├── .gitignore ├── Makefile ├── README.md ├── cross.mk └── main.c └── libs ├── Darwin_arm64 ├── libflirc.3.27.15.dylib ├── libflirc.a ├── libflirc.dylib ├── libir.3.27.15.dylib ├── libir.a └── libir.dylib ├── Darwin_x86_64 ├── libflirc.3.27.16.dylib ├── libflirc.a ├── libir.3.27.16.dylib └── libir.a ├── Linux_aarch64 ├── libflirc.a ├── libflirc.so.3.27.16 ├── libir.a └── libir.so.3.27.16 ├── Linux_arm ├── Linux_arm ├── libflirc.a ├── libflirc.so.3.27.16 ├── libir.a └── libir.so.3.27.16 ├── Linux_i686 └── libflirc.a ├── Linux_x86_64 ├── libflirc.a ├── libflirc.so.3.27.16 ├── libir.a └── libir.so.3.27.16 ├── Win ├── README.md ├── libflirc.a ├── libflirc.dll ├── libflirc.lib ├── libir.a ├── libir.dll └── libir.lib ├── Win64 ├── README.md ├── libflirc.a ├── libflirc.dll ├── libflirc.lib ├── libir.a ├── libir.dll └── libir.lib └── include ├── flirc └── flirc.h ├── ir └── ir.h └── ll.h /.gitignore: -------------------------------------------------------------------------------- 1 | *.d 2 | *o 3 | *.swp 4 | *.tmp 5 | cscope.* 6 | buildresults/* 7 | tags 8 | .DS_Store 9 | *.dSYM* 10 | *.swo 11 | -------------------------------------------------------------------------------- /Changelog.md: -------------------------------------------------------------------------------- 1 | # 3.27.16 2 | 3 | - Adding License 4 | - [libflirc] translate spelling fixes, cleanup, and error checks 5 | - [libflirc] add delete index into libflirc 6 | - [libflirc] fix missing 'k' in flirc_util record command 7 | - [libflirc] flirc header documentation update 8 | - [libflirc] bug fixes 9 | - [libflirc] pre-processor fixes for ll.h 10 | - [libir] GAP25 protocol edition with decoding and transmission 11 | - [libir] fix to create pronto code with unknown code 12 | - [libir] ensure we create a hash when no IR code is found 13 | - [libir] fix NEC32 wrong description 14 | - [libir] corrects apple NEC detection 15 | - [libir] IR documentation cleanup 16 | - [libir] ensure we create a similar hash as flirc_usb 17 | - [libir] Nokia encoder and transmit 18 | - [libir] Nokia 12/24/32 decoder 19 | - [ir] IR example code cleanup 20 | - [flirc_util] adding delete_index 21 | 22 | # 3.27.15 23 | 24 | - [libir] Denonk decoder and encoder support 25 | - [libir] Example code cleanup 26 | - [libir] Flirc Protocol support 27 | - [libir] Iterative approach for more accurate detection 28 | - [libir] Log fixes 29 | - [libir] MCE build fix 30 | - [libir] NEC should fail on count mismatch 31 | - [libir] NEC48 encoder and decoder support 32 | - [libir] NECext and NEC protocol detection fix 33 | - [libir] Nokia 12/24/32 decoder and encoder support 34 | - [libir] Panasonic encoder fixes 35 | - [libir] RC6 decoder fixes 36 | - [libir] RC6 encoder support 37 | - [libir] Win64 addition 38 | - [libir] XMP updates 39 | - [libir] XMP should fail on count mismatch 40 | - [libflirc] Win64 addition 41 | -------------------------------------------------------------------------------- /License: -------------------------------------------------------------------------------- 1 | # License 2 | 3 | Copyright (c) 2024 Flirc Inc. 4 | 5 | All rights reserved. 6 | 7 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to use the Software solely in conjunction with Flirc manufactured hardware in commercial environments, subject to the following conditions: 8 | 9 | 1. The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 10 | 2. The Software may not be used, copied, modified, merged, published, distributed, sublicensed, or sold except as permitted by this license. 11 | 3. The Software is provided "as is", without warranty of any kind, express or implied, including but not limited to the warranties of merchantability, fitness for a particular purpose, and noninfringement. In no event shall the authors or copyright holders be liable for any claim, damages, or other liability, whether in an action of contract, tort, or otherwise, arising from, out of, or in connection with the Software or the use or other dealings in the Software. 12 | 4. Any use of the Software outside of the specified commercial environment with Flirc manufactured hardware is strictly prohibited. 13 | 14 | For further information, please contact Flirc Inc. 15 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Flirc SDK 2 | 3 | Currently only for flirc usb with eventual support for the skip line of 4 | remotes. 5 | 6 | ## [cli](./cli/README.md) 7 | 8 | This is the same flirc_util as the publicly released binary distributed 9 | through the [downloads section](https://www.flirc.tv) website. All apps 10 | are built using our own SDK. Feel free to build your own using this example. 11 | 12 | ## [ir](./ir/README.md) 13 | 14 | This is a new example project which is a minimal example of using flirc usb 15 | to capture IR signals into a buffer. Also included is a new libir library 16 | which is a general purpose IR decoder and IR encoder library. 17 | 18 | This minimal application is to demonstrate how to use the library. 19 | 20 | libir is also the same DLL powering a new IR Decoding [website](https://ir.flirc.io) 21 | for general public usage. 22 | 23 | The website will be constantly updated as libir gets updated. 24 | -------------------------------------------------------------------------------- /cli/.gitignore: -------------------------------------------------------------------------------- 1 | *.swp 2 | *.tmp 3 | cscope.* 4 | buildresults/* 5 | -------------------------------------------------------------------------------- /cli/Makefile: -------------------------------------------------------------------------------- 1 | include buildsystem/func.mk 2 | 3 | # Host OS 4 | export HOSTOS ?= $(call TOUPPER,$(call USCORESUB,$(shell uname -s))) 5 | 6 | # Verbose Option 7 | ifeq ($(VERBOSE),1) 8 | export Q := 9 | export VERBOSE := 1 10 | else 11 | export Q := @ 12 | export VERBOSE := 0 13 | endif 14 | 15 | # Machine Name and Tool Versions 16 | export MACHINE := $(call USCORESUB,$(shell uname -sm)) 17 | export CCNAME := $(call USCORESUB,$(notdir $(realpath $(shell which $(CC))))) 18 | export MARCH := $(shell uname -m) 19 | 20 | # Build Directory 21 | export BUILDDIR_ROOT := buildresults 22 | export BUILDDIR := $(BUILDDIR_ROOT)/$(MACHINE)/$(CCNAME)/$(HOSTOS) 23 | 24 | # Target Directory 25 | TARGETDIR := targets 26 | 27 | # Build Target List 28 | TARGETS := $(basename $(notdir $(wildcard $(TARGETDIR)/*.mk))) 29 | 30 | ifeq ($(TARGETMK),) 31 | .DEFAULT_GOAL := help 32 | else 33 | .DEFAULT_GOAL := buildtarget 34 | endif 35 | 36 | .PHONY : help 37 | help : 38 | @echo "usage: make " 39 | @echo " make TARGETMK= [CONFIG=]" 40 | @echo " make all" 41 | @echo " make clean" 42 | @echo "other options:" 43 | @echo " ISHELL setting this to 1 enables interactive shell" 44 | @echo " support" 45 | @echo " VERBOSE setting this to 1 enables verbose output" 46 | @echo " INSTALL setting this to 1 runs the install script for" 47 | @echo " each goal specified" 48 | @echo " ANALYZE run static analysis (only works with clang)" 49 | @echo " HOSTOS override compile target supported targets:" 50 | @echo " WIN, LINUX, DARWIN, LIBREELEC" 51 | @echo "targets:" 52 | $(call PRINTLIST,$(TARGETS), * ) 53 | 54 | all : $(TARGETS) 55 | 56 | # rule (all configs) 57 | .PHONY : $(TARGETS) 58 | $(TARGETS) : 59 | $(Q)$(MAKE) -f buildsystem/target.mk \ 60 | TARGETMK="$(TARGETDIR)/$@.mk" 61 | 62 | # . rule 63 | $(addsuffix .%,$(TARGETS)) : 64 | $(Q)$(MAKE) -f buildsystem/target.mk \ 65 | CONFIG=$(call EXTRACT_CONFIG,$@) \ 66 | TARGETMK="$(TARGETDIR)/$(call EXTRACT_TARGET,$@).mk" 67 | 68 | # Rule for situations where environment is passed in 69 | .PHONY : buildtarget 70 | buildtarget : 71 | $(Q)$(MAKE) -f buildsystem/target.mk 72 | 73 | ### Utility Rules ### 74 | .PHONY : clean 75 | clean : 76 | $(Q)-rm -rf $(BUILDDIR_ROOT) 77 | $(call OUTPUTINFO,CLEAN,$(BUILDDIR_ROOT)) 78 | -------------------------------------------------------------------------------- /cli/README.md: -------------------------------------------------------------------------------- 1 | ========= 2 | Flirc CLI 3 | ========= 4 | 5 | flirc_util is a generic C project framework based on prjstart by 6 | Robert Curtis. The buildsystem supports. This is the entire source 7 | code for the public flirc_util application that ships with flirc. 8 | 9 | This should be used as an exmaple to interface with flirc. 10 | 11 | Please see ../lib/flirc.h for provided API functions. Further 12 | documentation will be provided shortly. 13 | 14 | For windows installation, please make sure mingw is installed 15 | and in the path. Please use the 32 bit version, to ensure 16 | compatibility with 64 bit systems. To complie for windows: 17 | 18 | $ make HOSTOS=win 19 | 20 | ----------- 21 | Buildsystem 22 | ----------- 23 | 24 | The Makefile and files under `buildsystem' should not need to be 25 | modified. Targets are configured with target makefiles. One is 26 | provided to build flirc_util. 27 | 28 | Running make alone will provide a help and list of detected targets. 29 | 30 | :: 31 | 32 | $ make 33 | usage: make 34 | make TARGETMK= [CONFIG=] 35 | make all 36 | make clean 37 | other options: 38 | VERBOSE setting this to 1 enables verbose output 39 | INSTALL setting this to 1 runs the install script for 40 | each goal specified 41 | targets: 42 | * flirc_util 43 | 44 | Target Makefiles 45 | ++++++++++++++++ 46 | 47 | TARGET 48 | The target makefile's basename is used to create this variable unless 49 | it is defined in the environment. 50 | 51 | SOURCES 52 | List of all sources to compile for the target. 53 | 54 | LIBRARIES 55 | List of all required libraries to link against. Each library 56 | becomes a -l flag during the link stage. 57 | NOTE: If you are using the standard C++ libary (e.g. iostream), 58 | you must add stdc++ to this list. 59 | 60 | OPTIONS 61 | Global build options for all configurations. Each option becomes 62 | a -D