;;; -*- lexical-binding: t -*- ;; ;; this file: ;; https://dataswamp.org/~incal/terror-3/ev3-ir.el (require 'cl-lib) (require 'ev3-base) (require 'file-write-to) (defvar ir-path nil) (let ((ir-mode) (ir-mode-file) (ir-modes) (ir-modes-file) (ir-prox-value-file) (ir-rem-a-value-file) (ir-remote-value-files) (ir-seek-value-files) (ir-value-files) (ir-value0-file) ) (defun ir-init () (setq ir-value-files (mapcar (lambda (n) (format "%s/value%d" ir-path n) ) (number-sequence 0 7) )) (setq ir-value0-file (car ir-value-files)) (setq ir-prox-value-file ir-value0-file) (setq ir-rem-a-value-file ir-value0-file) (setq ir-remote-value-files (cl-subseq ir-value-files 0 3)) (setq ir-seek-value-files ir-value-files) (setq ir-mode-file (format "%s/mode" ir-path)) (setq ir-modes-file (format "%s/modes" ir-path)) (setq ir-mode (file-to-string ir-mode-file)) (setq ir-modes (ir-get-modes)) ) (declare-function ir-init nil) (defun ir-get-modes () (let*((modes-string (file-to-string ir-modes-file)) (modes-string-list (split-string modes-string) )) modes-string-list) ) (declare-function ir-get-modes nil) (defun ir-set-mode (mode) (unless (string= ir-mode mode) (when (member mode ir-modes) (setq ir-mode mode) (write-to-file ir-mode-file ir-mode) ))) (declare-function ir-set-mode nil) (defun ir-get-prox () (ir-set-mode "IR-PROX") (file-to-integer ir-prox-value-file) ) (declare-function ir-get-prox nil) (defun ir-get-rem-a () (ir-set-mode "IR-REM-A") (file-to-integer ir-rem-a-value-file) ) (declare-function ir-get-rem-a nil) (defun ir-get-remote () (ir-set-mode "IR-REMOTE") (mapcar (lambda (f) (file-to-integer f)) ir-remote-value-files) ) (declare-function ir-get-remote nil) (defun ir-get-seek () (ir-set-mode "IR-SEEK") (mapcar (lambda (f) (file-to-integer f)) ir-seek-value-files) ) (declare-function ir-get-seek nil) ) (defun ir-monitor () (interactive) (format "[prox %d%%] [remote %s %s] [seek %s]" (ir-get-prox) (ir-get-rem-a) (ir-get-remote) (ir-get-seek) )) (provide 'ev3-ir)